Fulfilment
Fulfilment closes the loop on an order: as the shipping shop the store reports every package it ships, and as the selling shop it receives that tracking on the seller order, so the customer gets one shipment notification with a real tracking number.
1. The online store sends fulfillment.shipped
fulfillment.shipped- The online store. The store packs the shipping order SKUU created and hands the parcel to the carrier.
- The store's platform. Sends one
fulfillment.shippedevent per package with the shipping order id, SKUU's order reference, every line in the package, and the tracking number, carrier and tracking URL. - SKUU. Checks the signature and matches the package to the shipping order: the store's
order_id, SKUU'sexternal_ref, and per line SKUU's lineexternal_ref, the variant and the full quantity of the line. A package that does not match is rejected with422 invalid_fulfillmentand is not recorded. - SKUU. Stores the package once, even if the event arrives twice.
- SKUU. Puts the tracking on the seller order at the selling shop; that is direction 2 below.
- SKUU. Answers
200. When SKUU cannot finish, for example because the shipping order is not visible yet or the tracking did not reach the selling shop, it answers503: send the same event again, with the sameevent_id. A package that was already stored is never stored twice. If the503keeps coming back past the retry window, contact SKUU: the package may already be stored and only the last step failed.
Example: the fulfillment.shipped event
{
"spec_version": "1",
"event": "fulfillment.shipped",
"event_id": "evt_ship_01JABC",
"occurred_at": "2026-09-02T08:30:00Z",
"data": {
"fulfillment_id": "FUL-5001",
"order_id": "5001",
"external_ref": "skuu-order-01JABC",
"created_at": "2026-09-02T08:29:50Z",
"line_items": [
{
"line_item_id": "SHIPPING-LINE-1",
"external_ref": "skuu-line-01JABC",
"variant_id": "V-123-38-BLK",
"quantity": 1
}
],
"tracking_number": "TRACK123",
"tracking_company": "Carrier",
"tracking_url": "https://carrier.example.com/track/TRACK123",
"shipment_status": "in_transit"
}
}All fields in `data`
Field in data | Required | What it means |
|---|---|---|
fulfillment_id | Required | The store's stable id for this package. The same id again is applied once. |
order_id | Required | The order_id returned from POST /orders. Finds the shipping order. |
external_ref | Required | SKUU's order external_ref from that request. Must match the order named in order_id. |
created_at | Required | When the package was shipped. Passed on to the selling shop. |
line_items[] | Required | Every line in this package. One package can hold several lines; a line is always shipped whole, so quantity equals the quantity on the shipping order line. |
line_items[].external_ref | Required | SKUU's line external_ref from the shipping order. Finds the line. |
line_items[].line_item_id | Required | The store's own id for the shipping order line. |
line_items[].variant_id | Required | The variant on the line, by the store's variant_id. Must match the shipping order. |
line_items[].quantity | Required | Quantity in this package. Must equal the full line quantity. |
tracking_number, tracking_company | Required | Passed on to the selling shop and shown to the customer. |
tracking_url | Optional | Public tracking link, passed on as given. |
shipment_status | Optional | The store's own status label. Stored, not interpreted. |
2. SKUU calls PUT /orders/{order_id}/tracking
PUT /orders/{order_id}/tracking- SKUU. Receives a package from the shipping shop, as in direction 1.
- SKUU. Calls
PUT /orders/{order_id}/trackingon the store's API, once per package.order_idin the path is the seller order id fromorder.created; the lines are the store's ownline_item_idvalues from that event. An order with lines from several shipping shops gets one request per package, so the same order can receive more than one. - The store's platform. Adds the tracking to those lines, marks them shipped, and sends the customer one shipment notification for this package. When the request carries
note, keep that text with the order: it tells the customer where to send a return. - The store's platform. Answers
200with the required receipt fields. The sameexternal_refagain must return the same answer without a second notification.
Example: the tracking request
PUT {your_api_root}/orders/ORD-10045/tracking
{
"external_ref": "skuu-fulfillment-01JABC",
"created_at": "2026-09-02T08:29:50Z",
"line_items": [
{
"line_item_id": "LINE-1",
"variant_id": "V-123-38-BLK",
"quantity": 1
}
],
"tracking_number": "TRACK123",
"tracking_company": "Carrier",
"tracking_url": "https://carrier.example.com/track/TRACK123",
"note": "Return instructions: send returns for this package to Return 5001, Teststraat 1, 1000 AA Amsterdam, NL. Items: 1x V-123-38-BLK."
}All fields in the request
| Field in the request | Always present | What it means |
|---|---|---|
external_ref | Yes | SKUU's reference for this package and the idempotency key. |
created_at | Yes | When the package was shipped. |
line_items[].line_item_id | Yes | The store's line_item_id from order.created. Update only the lines listed. |
line_items[].variant_id, quantity | Yes | The variant and the quantity covered by this package. |
tracking_number, tracking_company | Yes | Carrier tracking number and carrier name. |
tracking_url | Yes | Public tracking link, or null when the carrier has none. |
note | No | Return instructions for the customer as plain text: where to send the items in this package and which items. Show it on the order or in the store's return flow. Absent when SKUU has no return address for the shipping shop. |
{
"success": true,
"message": "Successfully updated order tracking information.",
"external_ref": "skuu-fulfillment-01JABC",
"order_id": "ORD-10045",
"status": "tracking_updated"
}The response, field by field
| Field in the response | What it must be |
|---|---|
success | true |
message | Optional text for people; SKUU does not check its wording. |
external_ref | The reference from the request, unchanged |
order_id | The seller order id from the path, unchanged |
status | tracking_updated |
Return 200 with success: true, the unchanged references and status: "tracking_updated". The message is optional and extra response fields are ignored. SKUU retries 429, 5xx and timeouts three times. Any other answer stops the update: the package stays stored at SKUU and SKUU customer service retries by hand.
The next page is Cancellation. The exact contract is on Send an event and Add tracking to an order.
Updated 22 days ago
Did this page help you?
