Skip to content

Ingrid

Ingrid

Ingrid offers a Delivery Platform that lets merchants configure and present tailored delivery options to their customers based on their own shipping rules and carrier setup.

Our partnership with Ingrid allows merchants using Ingrid to surface their available shipping options directly in Kustom Checkout. Ingrid provides Kustom with delivery options — including split-shipment scenarios — based on the rules and carriers the merchant has configured in their Ingrid account.

You can read more about Ingrid at ingrid.com.


Integrating Ingrid with Kustom Checkout

This guide is for platform partners and integration engineers connecting Ingrid as the shipping provider behind Kustom Checkout. It covers how to set up the integration, what shipping data is exposed before and after purchase, and how split-shipping changes the order structure.

Ingrid is integrated through Kustom Shipping Assistant (KSA) using the Ingrid Headless Transport Management System (TMS) connector. KSA fetches shipping options from Ingrid during checkout and maps them onto Kustom's order model, so the merchant works with a single, consistent order representation.

For exact request and response details, refer to the linked API reference pages in each section.

Overview

A complete Ingrid + Kustom checkout has two cooperating systems:

  • Ingrid owns the carriers, delivery options, pickup locations, addons, and the merchant-facing tooling in the Ingrid Merchant Platform (IMP).
  • Kustom Checkout, through KSA and the Ingrid Headless TMS connector, requests shipping options from Ingrid, renders them to the buyer, and records the buyer's choice on the order.

The end-to-end flow — order creation, shipping selection, completion, and shipment booking — is illustrated below.

Ingrid integration flow

Open the Ingrid integration flow diagram

The rest of this guide is organised around the order lifecycle: setting up the connection, the pre-purchase flow while the order is still checkout_incomplete, the post-purchase flow once the order is complete, and split-shipping for orders fulfilled by more than one shipment.

Setting up

Setting up the integration is done in two places: Ingrid and Kustom.

1. Set up Ingrid

Sign up for the Ingrid Merchant Platform (IMP) and configure your carriers, delivery options, and other shipping settings there. See Ingrid's Access to Ingrid Merchant Platform article and the setup guides available within Ingrid.

You will need the following from Ingrid to complete the Kustom setup:

  • Your Ingrid Site ID.
  • Your Ingrid private key — the plain key, not the base64-encoded variant.

2. Set up Kustom Checkout

The general Shipping Assistant setup is documented in How to Set Up Shipping Assistant in Kustom Checkout. Follow that guide, with the following Ingrid-specific details.

Preparation. The general guide's note on digital products does not apply to the Ingrid integration — digital products are handled on Ingrid's side by tagging them with a digital tag rather than through Kustom configuration. You can skip the digital-products step when integrating Ingrid.

Shipping credentials. When activating KSA in the Kustom Portal, configure the connection as follows:

FieldValue
TMSSelect Ingrid Headless. Available in both Playground and Production.
IdentifierYour Ingrid Site ID.
KeyYour Ingrid private key — the plain key, not base64-encoded.

In Playground, the Ingrid Headless TMS connects to Ingrid's staging environment; in Production, it connects to Ingrid's production environment.

The remaining setup steps — activating KSA in the Portal, triggering KSA in the checkout payload, and verifying the setup in Playground — are unchanged from the general Shipping Assistant guide.

Merchants running a dual-iframe checkout

Some merchants currently run a dual-iframe checkout during a transition period — an Ingrid iframe on top and a Kustom iframe below. Such merchants may need to keep collecting a separate shipping address while not yet showing shipping options sourced from Ingrid inside Kustom.

To suppress option fetching, pass options.tms_configuration_override.disabled as true when creating the order. Kustom will then collect the address but will not fetch shipping options from Ingrid.

Pre-purchase

The pre-purchase flow covers everything after the order is created but before it is completed — that is, while the order's status is checkout_incomplete.

Selected shipping option

The selected_shipping_option attribute — present both in the order response and in callbacks — describes the shipping option the buyer chose. Its fields are populated from Ingrid as follows:

FieldMapped from
idThe shipping option ID generated by Ingrid
nameThe display_name of the Ingrid delivery_category
descriptionNot provided
promoNot provided
priceThe price of the Ingrid delivery_option
preselectedNot provided
tax_rateDefaults to 25% — see Tax calculation on shipping options
tax_amountCalculated from the defaulted 25% tax_rate
shipping_methodKSA's representation of Ingrid's delivery type and location type — see the table below
tms_referenceIngrid's session ID
tos_idAvailable post-purchase only

Shipping method mapping

shipping_method is derived from Ingrid's delivery_type and, where available, location_type:

Ingrid delivery typeIngrid location typeKSA shipping_method
LOCATION_TYPE_UNSPECIFIEDUndefined
LOCKERPickUpPoint
STOREPickUpPoint
POSTOFFICEPickUpPoint
MANNEDPickUpPoint
DELIVERY_TYPE_UNSPECIFIEDUndefined
DELIVERYHome
MAILBOXPostal
PICKUPPickUpPoint, or Home if no locations are available
INSTOREPickUpStore, or Home if no locations are available

Delivery details

selected_shipping_option.delivery_details carries the carrier and logistics detail:

  • carrier — KSA's supported carrier, decoded from Ingrid's carrier name
  • class — always STANDARD
  • product
    • identifier — Ingrid's carrier product ID
    • name — Ingrid's carrier name
  • timeslot
    • id — Ingrid's generated shipping option ID for the timeslot
    • start — timeslot start time
    • end — timeslot end time
  • pickup_location
    • id — the numeric ID of the location, as per Ingrid
    • name — the name of the location
    • address — the address of the location

Selected addons

selected_shipping_option.selected_addons is an array, with one entry per chosen addon:

  • type — Ingrid's ID of the addon
  • price — the price of the addon
  • external_id — the external_id of the addon as defined in Ingrid

Tax calculation on shipping options

Ingrid does not calculate tax, so KSA defaults tax_rate on the selected shipping option to 25% (and derives tax_amount from it). To avoid overpaying tax, merchants and platforms should apply the correct tax for the shipping option based on the cart.

To do this, implement the shipping option update callback and return one or more shipping_fee order lines on the order in the callback response. These override the defaulted tax_rate and tax_amount.

Merchant references

The merchant's order references — merchant_reference1 and merchant_reference2 — are propagated to Ingrid so that orders can be found easily in the Ingrid Merchant Platform.

⚠️ Important — send merchant references before completion.

  • Provide the merchant references before the order is completed so that they can be sent to Ingrid.
    • If they are missing at completion time, Kustom passes its own order_id as the external_id of the Ingrid session instead.
  • Kustom does not update the Ingrid session after the order is completed. Sending merchant references to the Order Management API afterwards will therefore not propagate them to Ingrid.

Post-purchase

The post-purchase flow covers the order once it is complete, including retrieving shipping information and booking the shipment with Ingrid.

Shipping information from Kustom

Shipping information remains available after the order is complete. Both tms_reference and tos_id are found on the selected_shipping_option, in the Checkout API and the Order Management API alike.

The tos_id is usually all that is needed to book a shipment, since Ingrid auto-fills the remaining information. If another system needs more detail, the tos_id can be used to fetch the full shipment information from Ingrid via the sessions_summaries.list API.

Booking shipments with Ingrid

Because the Ingrid Headless API shares much of its model with the Ingrid delivery checkout API, the tos_id is enough for Ingrid to have all the information required to create a shipment.

To fulfil the order, the merchant creates and books the shipment with Ingrid using Ingrid's SOM API, providing the tos_id from the order's selected_shipping_option.

Split shipments

A single order can be fulfilled by more than one shipment. For example, when goods come from multiple warehouses, or need to be shipped separately for any other reason, split-shipping is the way to model that.

The split-shipping flow is illustrated in the split-shipping flow diagram.

How it differs from a single shipment

The pre-purchase and post-purchase flows are nearly identical for split-shipping. The differences are in how the order is set up and in the structure of the selected shipping options.

Deliveries

The deliveries array holds information about each shipment. Every order line — except lines of type gift_card and store_credit — must be assigned to a delivery via order_lines[].shipping_attributes.delivery_id.

{
  ...
  "deliveries": [
    {
      "id": "Shipment-1",
      "title": "Shipment 1",
      "description": "Refrigerated goods",
      "readiness": [
        {
          "earliest": "2026-03-16T08:40:34.865Z",
          "latest": "2026-03-17T08:40:34.865Z",
          "attributes": [ "premium" ]
        }
      ],
      "origins": [
        { "external_id": "cold-storage-1" }
      ]
    },
    {
      "id": "Shipment-2",
      "title": "Shipment 2",
      "description": "Dry goods",
      "readiness": [
        {
          "earliest": "2026-03-16T08:40:34.865Z",
          "latest": "2026-03-17T08:40:34.865Z",
          "attributes": [ "economy" ]
        }
      ],
      "origins": [
        { "external_id": "warehouse-1" }
      ]
    }
  ],
  "order_lines": [
    {
      "type": "physical",
      "reference": "salmon-001",
      "name": "Fresh Salmon Fillet",
      "quantity": 1,
      "shipping_attributes": { "delivery_id": "Shipment-1" }
    },
    {
      "type": "physical",
      "reference": "pasta-001",
      "name": "Spaghetti 500g",
      "quantity": 3,
      "shipping_attributes": { "delivery_id": "Shipment-2" }
    }
  ]
}
   ...
}

There is no enforced limit on the number of deliveries an order can have.

Selected shipping options

A split-shipping order naturally has more than one selected shipping option. The Checkout API, the callback API, and the Order Management API therefore expose an additional selected_shipping_options attribute: an array whose entries have the same structure as selected_shipping_option, one per selected shipping option.