Skip to content
snapcasterDevelopers

Update fulfillment

PATCH/orders/{orderId}/fulfillment

Drive a forward Lifecycle progression (`accepted` → `shipped` → `delivered`; `accepted` is skippable). Marking a tracked Order shipped requires `trackingCompany` and `trackingNumber` together and accepts an optional syntactically valid `trackingUrl`. Marking an untracked Order shipped accepts no Tracking and records the Seller Dispatch declaration instead. Tracking can be entered only on the ship transition and cannot be replaced by the optional informational `delivered` transition. The terminations are not reachable here: `cancelled` and `refunded` have their own endpoints, so naming one in this body is a validation error (400), not an illegal transition (422). Returns the post-transition Order.

When to use

Use this operation to update fulfillment.

Endpoint

PATCH /orders/{orderId}/fulfillment

EnvironmentBase URL
Sandboxhttps://api-sandbox.snapcaster.ca/api/v1/marketplace
Productionhttps://api.snapcaster.ca/api/v1/marketplace
Authentication
  • marketplaceApiKey - http bearer. Seller-scoped Marketplace API key, presented as `Authorization: Bearer mp_{sellerCode}_{hex}`. The `mp_{sellerCode}_` prefix identifies the Seller; the trailing hex is the secret. Generated by the Seller and pasted into its Platform.

Request

FieldInTypeConstraintsMeaningExample
orderIdrequiredpathstringminimum length: 1The opaque public Order id (the webhook/poll `order_id`).ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW

Request body (application/json)

FieldTypeConstraintsMeaningExample
statusrequiredstringallowed values: accepted, shipped, deliveredThe current lifecycle or policy state of the resource.shipped
trackingCompanystringminimum length: 1; maximum length: 255Tracking Company supplied to or returned by this operation.Canada Post
trackingNumberstringminimum length: 1; maximum length: 255Tracking Number supplied to or returned by this operation.CX123456789CA
trackingUrlstring or nullmaximum length: 2048; format: uriTracking Url supplied to or returned by this operation.https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA

Example

Sandbox is the default. These requests use the contract's canonical field examples.

cURL request - Sandbox: Mark a tracked Order shipped
curl --request PATCH \
--url 'https://api-sandbox.snapcaster.ca/api/v1/marketplace/orders/ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW/fulfillment' \
--header "Authorization: Bearer $MARKETPLACE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"status": "shipped",
"trackingCompany": "Canada Post",
"trackingNumber": "CX123456789CA",
"trackingUrl": "https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA"
}'

Response

200

The post-transition Order, as the shared order body.

Response 200: Order after shipment
{
"success": true,
"data": {
"order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
"seller_id": 42,
"created_at": "2026-09-04T18:42:17.000Z",
"currency": "CAD",
"customer": {
"name": "Alex Morgan",
"email": "alex.morgan@example.test",
"shipping_address": {
"line1": "123 Sandbox Avenue",
"line2": "Unit 4",
"city": "Toronto",
"province": "ON",
"postal_code": "M5V 2T6",
"country": "CA"
}
},
"lines": [
{
"sku_id": 427286,
"product_id": 24692,
"quantity": 1,
"unit_price": 2499,
"name": "Lightning Bolt",
"set": "Magic 2011",
"condition": "Near Mint",
"external_ref": "platform-listing-1042",
"language": "English",
"finish": "Non-Foil"
}
],
"totals": {
"subtotal": 2499,
"shipping": 599,
"tax": 403,
"grand_total": 3501
},
"tax": {
"lines": [
{
"label": "HST",
"rate": 0.13,
"amount": 403
}
]
},
"shipping": {
"method": "Tracked parcel",
"cost": 599
},
"buyer_notes": "Please protect the card with a top loader.",
"status": "shipped",
"fulfillment": {
"tracking_company": "Canada Post",
"tracking_number": "CX123456789CA",
"tracking_url": "https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA"
}
}
}
FieldTypeConstraintsMeaningExample
successrequiredbooleanallowed values: trueWhether the operation completed as requested.true
datarequiredobjectNoneThe operation or event payload.{ "order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW", "seller_id": 42, "created_at": "2026-09-04T18:42:17.000Z", "currency": "CAD", "customer": { "name": "Alex Morgan", "email": "alex.morgan@example.test", "shipping_address": { "line1": "123 Sandbox Avenue", "line2": "Unit 4", "city": "Toronto", "province": "ON", "postal_code": "M5V 2T6", "country": "CA" } }, "lines": [ { "sku_id": 427286, "product_id": 24692, "quantity": 1, "unit_price": 2499, "name": "Lightning Bolt", "set": "Magic 2011", "condition": "Near Mint", "external_ref": "platform-listing-1042", "language": "English", "finish": "Non-Foil" } ], "totals": { "subtotal": 2499, "shipping": 599, "tax": 403, "grand_total": 3501 }, "tax": { "lines": [ { "label": "HST", "rate": 0.13, "amount": 403 } ] }, "shipping": { "method": "Tracked parcel", "cost": 599 }, "buyer_notes": "Please protect the card with a top loader.", "status": "shipped", "fulfillment": { "tracking_company": "Canada Post", "tracking_number": "CX123456789CA", "tracking_url": "https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA" } }
data.order_idrequiredstringNoneSnapcaster order id; stable per Seller-order, the reconcile key (STABLE).ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW
data.seller_idrequiredintegerNoneRouting target: the Seller that owns the inbound API key (STABLE).42
data.created_atrequiredstringNoneISO-8601 UTC instant the order was created (STABLE).2026-09-04T18:42:17.000Z
data.currencyrequiredstringNoneISO 4217 currency code, e.g. CAD (STABLE).CAD
data.customerrequiredobjectNoneThe buyer identity and delivery snapshot frozen for the Order.{ "name": "Alex Morgan", "email": "alex.morgan@example.test", "shipping_address": { "line1": "123 Sandbox Avenue", "line2": "Unit 4", "city": "Toronto", "province": "ON", "postal_code": "M5V 2T6", "country": "CA" } }
data.customer.namerequiredstringNoneThe human-readable name of the resource.Alex Morgan
data.customer.emailrequiredstringNoneThe contact email for the person represented by this record.alex.morgan@example.test
data.customer.shipping_addressrequiredobjectNoneThe delivery address snapshot frozen for the Order.{ "line1": "123 Sandbox Avenue", "line2": "Unit 4", "city": "Toronto", "province": "ON", "postal_code": "M5V 2T6", "country": "CA" }
data.customer.shipping_address.line1requiredstringNoneThe primary street-address line.123 Sandbox Avenue
data.customer.shipping_address.line2requiredstring or nullNoneThe optional unit, suite, or secondary address line.Unit 4
data.customer.shipping_address.cityrequiredstringNoneThe municipality in the delivery address.Toronto
data.customer.shipping_address.provincerequiredstringNoneThe Canadian province or territory in the delivery address.ON
data.customer.shipping_address.postal_coderequiredstringNoneThe Canadian postal code in the delivery address.M5V 2T6
data.customer.shipping_address.countryrequiredstringNoneISO 3166-1 alpha-2 country code.CA
data.linesrequiredarray of objectminimum items: 1One or more line snapshots (STABLE).[ { "sku_id": 427286, "product_id": 24692, "quantity": 1, "unit_price": 2499, "name": "Lightning Bolt", "set": "Magic 2011", "condition": "Near Mint", "external_ref": "platform-listing-1042", "language": "English", "finish": "Non-Foil" } ]
data.lines[].sku_idrequiredintegerNoneCanonical TCGplayer sku id (STABLE).427286
data.lines[].product_idrequiredintegerNoneCanonical TCGplayer product id (STABLE).24692
data.lines[].quantityrequiredintegerNoneThe number of inventory units represented by this record.1
data.lines[].unit_pricerequiredintegerNoneInteger minor units (cents) in the order currency (STABLE).2499
data.lines[].namerequiredstringNoneDescriptive snapshot, frozen at order time (STABLE).Lightning Bolt
data.lines[].setrequiredstringNoneThe card set or expansion.Magic 2011
data.lines[].conditionrequiredstringNoneThe normalized condition assigned to the card.Near Mint
data.lines[].external_refrequiredstring or nullNoneEcho of the Seller's opaque listing ref; null if none (STABLE).platform-listing-1042
data.lines[].languagestring or nullNoneThe language of the card printing.English
data.lines[].finishstring or nullNoneThe physical finish or foil treatment of the card.Non-Foil
data.lines[].disclosuresobjectNoneProvenance, grading, and authenticity statements shown to the buyer.{ "image_source": "catalog", "condition_source": "seller_declared", "authenticity_source": "seller_attestation", "snapcaster_inspected": false, "snapcaster_graded": false, "snapcaster_authenticated": false, "grading_standard": "string", "declared_grade": "string", "buyer_protection": "string" } (generated)
data.lines[].disclosures.image_sourcerequiredstringallowed values: catalogWho supplied the product image shown to the buyer.catalog (generated)
data.lines[].disclosures.condition_sourcerequiredstringallowed values: seller_declaredWho assigned the displayed card condition.seller_declared (generated)
data.lines[].disclosures.authenticity_sourcerequiredstringallowed values: seller_attestationWho supplied the authenticity determination.seller_attestation (generated)
data.lines[].disclosures.snapcaster_inspectedrequiredbooleanallowed values: falseWhether Snapcaster physically inspected the card.false (generated)
data.lines[].disclosures.snapcaster_gradedrequiredbooleanallowed values: falseWhether Snapcaster assigned the displayed grade.false (generated)
data.lines[].disclosures.snapcaster_authenticatedrequiredbooleanallowed values: falseWhether Snapcaster authenticated the card.false (generated)
data.lines[].disclosures.grading_standardrequiredstringNoneThe grading standard used for the declared grade.string (generated)
data.lines[].disclosures.declared_graderequiredstring or nullNoneThe grade declared for the card under the named standard.string (generated)
data.lines[].disclosures.buyer_protectionrequiredstringNoneThe buyer-protection coverage attached to this offering.string (generated)
data.lines[].fulfillment_obligationobjectNoneThe exact item characteristics the Seller must fulfill.{ "sku": "exact", "printing": "exact", "language": "exact", "finish": "exact", "condition": "declared-or-better" } (generated)
data.lines[].fulfillment_obligation.skurequiredstringallowed values: exactThe stock-keeping identity for the exact card offering.exact (generated)
data.lines[].fulfillment_obligation.printingrequiredstringallowed values: exactThe exact card printing the Seller is obligated to supply.exact (generated)
data.lines[].fulfillment_obligation.languagerequiredstringallowed values: exactThe language of the card printing.exact (generated)
data.lines[].fulfillment_obligation.finishrequiredstringallowed values: exactThe physical finish or foil treatment of the card.exact (generated)
data.lines[].fulfillment_obligation.conditionrequiredstringallowed values: declared-or-betterThe normalized condition assigned to the card.declared-or-better (generated)
data.totalsobjectNoneOrder-level money rollup, integer minor units (cents) in the order currency: `grand_total = subtotal + shipping + tax`. When present, carries all four sums (STABLE).{ "subtotal": 2499, "shipping": 599, "tax": 403, "grand_total": 3501 }
data.totals.subtotalrequiredintegerNoneThe line-item total before shipping and tax, in minor currency units.2499
data.totals.shippingrequiredintegerNoneThe shipping charge or delivery details for the Order.599
data.totals.taxrequiredintegerNoneThe tax total or breakdown applied to the Order.403
data.totals.grand_totalrequiredintegerNoneThe complete Order total including shipping and tax, in minor currency units.3501
data.taxobjectNoneTax breakdown: one `{label, rate, amount}` line per applied tax. The whole block is absent exactly when there is no tax (absent if and only if `totals.tax` = 0) (STABLE).{ "lines": [ { "label": "HST", "rate": 0.13, "amount": 403 } ] }
data.tax.linesrequiredarray of objectNoneThe individual records carried by this request, response, or event.[ { "label": "HST", "rate": 0.13, "amount": 403 } ]
data.tax.lines[].labelrequiredstringNoneThe human-readable label for this entry.HST
data.tax.lines[].raterequirednumberNoneThe decimal tax rate applied to the taxable amount.0.13
data.tax.lines[].amountrequiredintegerNoneThe monetary amount in minor currency units.403
data.shippingobjectNoneChosen shipping option: `method` is a plain free-text string (not an enum) and `cost` is integer minor units (cents), mirroring `totals.shipping` (STABLE).{ "method": "Tracked parcel", "cost": 599 }
data.shipping.methodrequiredstringNoneThe method used to carry out the surrounding action.Tracked parcel
data.shipping.costrequiredintegerNoneThe shipping cost in minor currency units.599
data.buyer_notesstringNoneOptional free-text buyer note; absent when the buyer left none (STABLE).Please protect the card with a top loader.
data.statusstringallowed values: accepted, shipped, delivered, cancelled, refundedThe Lifecycle state. Absent until the Order first transitions: an absent status means `created`, and an `order.created` delivery never carries it (STABLE).shipped
data.fulfillmentobjectNoneTracking block; present once Tracking has been attached at fulfillment (STABLE).{ "tracking_company": "Canada Post", "tracking_number": "CX123456789CA", "tracking_url": "https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA" }
data.fulfillment.tracking_companyrequiredstringNoneCarrier/company name, as the fulfiller entered it (STABLE).Canada Post
data.fulfillment.tracking_numberrequiredstringNoneCarrier tracking number (STABLE).CX123456789CA
data.fulfillment.tracking_urlrequiredstring or nullNoneTracking link; null if the fulfiller supplied none (STABLE).https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA

Errors

StatusCodeMeaningDo this
400INVALID_REQUESTThe request failed validation (`INVALID_REQUEST`).Correct the fields named in the error details, then retry the request.
401UNAUTHORIZEDMissing or invalid Marketplace API key (`UNAUTHORIZED`).Send the Marketplace API key for this Seller as a Bearer token, then retry.
404ORDER_NOT_FOUNDNo such Order for this Seller (`ORDER_NOT_FOUND`). A Seller-scoped miss (including another Seller’s order id) is always a 404, never a 403, so order ids don’t leak existence.Check the order_id against GET /orders for the authenticated Seller, then retry with that id.
422INVALID_TRANSITION, INVALID_REQUESTThe move violates the Lifecycle transition graph (`INVALID_TRANSITION`), or its Dispatch evidence conflicts with the frozen Shipping option (`INVALID_REQUEST`).Read the Order again, choose a legal next status, and supply Tracking only when its frozen Shipping option requires it.

Operations

Concepts

Changelog

None.

Schema

Full schema details (87 fields)

Parameters

FieldInTypeConstraintsMeaningExample
orderIdrequiredpathstringminimum length: 1The opaque public Order id (the webhook/poll `order_id`).ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW

Request

FieldTypeConstraintsMeaningExample
statusrequiredstringallowed values: accepted, shipped, deliveredThe current lifecycle or policy state of the resource.shipped
trackingCompanystringminimum length: 1; maximum length: 255Tracking Company supplied to or returned by this operation.Canada Post
trackingNumberstringminimum length: 1; maximum length: 255Tracking Number supplied to or returned by this operation.CX123456789CA
trackingUrlstring or nullmaximum length: 2048; format: uriTracking Url supplied to or returned by this operation.https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA

Response 200 (application/json)

FieldTypeConstraintsMeaningExample
successrequiredbooleanallowed values: trueWhether the operation completed as requested.true
datarequiredobjectNoneThe operation or event payload.{ "order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW", "seller_id": 42, "created_at": "2026-09-04T18:42:17.000Z", "currency": "CAD", "customer": { "name": "Alex Morgan", "email": "alex.morgan@example.test", "shipping_address": { "line1": "123 Sandbox Avenue", "line2": "Unit 4", "city": "Toronto", "province": "ON", "postal_code": "M5V 2T6", "country": "CA" } }, "lines": [ { "sku_id": 427286, "product_id": 24692, "quantity": 1, "unit_price": 2499, "name": "Lightning Bolt", "set": "Magic 2011", "condition": "Near Mint", "external_ref": "platform-listing-1042", "language": "English", "finish": "Non-Foil" } ], "totals": { "subtotal": 2499, "shipping": 599, "tax": 403, "grand_total": 3501 }, "tax": { "lines": [ { "label": "HST", "rate": 0.13, "amount": 403 } ] }, "shipping": { "method": "Tracked parcel", "cost": 599 }, "buyer_notes": "Please protect the card with a top loader.", "status": "shipped", "fulfillment": { "tracking_company": "Canada Post", "tracking_number": "CX123456789CA", "tracking_url": "https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA" } }
data.order_idrequiredstringNoneSnapcaster order id; stable per Seller-order, the reconcile key (STABLE).ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW
data.seller_idrequiredintegerNoneRouting target: the Seller that owns the inbound API key (STABLE).42
data.created_atrequiredstringNoneISO-8601 UTC instant the order was created (STABLE).2026-09-04T18:42:17.000Z
data.currencyrequiredstringNoneISO 4217 currency code, e.g. CAD (STABLE).CAD
data.customerrequiredobjectNoneThe buyer identity and delivery snapshot frozen for the Order.{ "name": "Alex Morgan", "email": "alex.morgan@example.test", "shipping_address": { "line1": "123 Sandbox Avenue", "line2": "Unit 4", "city": "Toronto", "province": "ON", "postal_code": "M5V 2T6", "country": "CA" } }
data.customer.namerequiredstringNoneThe human-readable name of the resource.Alex Morgan
data.customer.emailrequiredstringNoneThe contact email for the person represented by this record.alex.morgan@example.test
data.customer.shipping_addressrequiredobjectNoneThe delivery address snapshot frozen for the Order.{ "line1": "123 Sandbox Avenue", "line2": "Unit 4", "city": "Toronto", "province": "ON", "postal_code": "M5V 2T6", "country": "CA" }
data.customer.shipping_address.line1requiredstringNoneThe primary street-address line.123 Sandbox Avenue
data.customer.shipping_address.line2requiredstring or nullNoneThe optional unit, suite, or secondary address line.Unit 4
data.customer.shipping_address.cityrequiredstringNoneThe municipality in the delivery address.Toronto
data.customer.shipping_address.provincerequiredstringNoneThe Canadian province or territory in the delivery address.ON
data.customer.shipping_address.postal_coderequiredstringNoneThe Canadian postal code in the delivery address.M5V 2T6
data.customer.shipping_address.countryrequiredstringNoneISO 3166-1 alpha-2 country code.CA
data.linesrequiredarray of objectminimum items: 1One or more line snapshots (STABLE).[ { "sku_id": 427286, "product_id": 24692, "quantity": 1, "unit_price": 2499, "name": "Lightning Bolt", "set": "Magic 2011", "condition": "Near Mint", "external_ref": "platform-listing-1042", "language": "English", "finish": "Non-Foil" } ]
data.lines[].sku_idrequiredintegerNoneCanonical TCGplayer sku id (STABLE).427286
data.lines[].product_idrequiredintegerNoneCanonical TCGplayer product id (STABLE).24692
data.lines[].quantityrequiredintegerNoneThe number of inventory units represented by this record.1
data.lines[].unit_pricerequiredintegerNoneInteger minor units (cents) in the order currency (STABLE).2499
data.lines[].namerequiredstringNoneDescriptive snapshot, frozen at order time (STABLE).Lightning Bolt
data.lines[].setrequiredstringNoneThe card set or expansion.Magic 2011
data.lines[].conditionrequiredstringNoneThe normalized condition assigned to the card.Near Mint
data.lines[].external_refrequiredstring or nullNoneEcho of the Seller's opaque listing ref; null if none (STABLE).platform-listing-1042
data.lines[].languagestring or nullNoneThe language of the card printing.English
data.lines[].finishstring or nullNoneThe physical finish or foil treatment of the card.Non-Foil
data.lines[].disclosuresobjectNoneProvenance, grading, and authenticity statements shown to the buyer.{ "image_source": "catalog", "condition_source": "seller_declared", "authenticity_source": "seller_attestation", "snapcaster_inspected": false, "snapcaster_graded": false, "snapcaster_authenticated": false, "grading_standard": "string", "declared_grade": "string", "buyer_protection": "string" } (generated)
data.lines[].disclosures.image_sourcerequiredstringallowed values: catalogWho supplied the product image shown to the buyer.catalog (generated)
data.lines[].disclosures.condition_sourcerequiredstringallowed values: seller_declaredWho assigned the displayed card condition.seller_declared (generated)
data.lines[].disclosures.authenticity_sourcerequiredstringallowed values: seller_attestationWho supplied the authenticity determination.seller_attestation (generated)
data.lines[].disclosures.snapcaster_inspectedrequiredbooleanallowed values: falseWhether Snapcaster physically inspected the card.false (generated)
data.lines[].disclosures.snapcaster_gradedrequiredbooleanallowed values: falseWhether Snapcaster assigned the displayed grade.false (generated)
data.lines[].disclosures.snapcaster_authenticatedrequiredbooleanallowed values: falseWhether Snapcaster authenticated the card.false (generated)
data.lines[].disclosures.grading_standardrequiredstringNoneThe grading standard used for the declared grade.string (generated)
data.lines[].disclosures.declared_graderequiredstring or nullNoneThe grade declared for the card under the named standard.string (generated)
data.lines[].disclosures.buyer_protectionrequiredstringNoneThe buyer-protection coverage attached to this offering.string (generated)
data.lines[].fulfillment_obligationobjectNoneThe exact item characteristics the Seller must fulfill.{ "sku": "exact", "printing": "exact", "language": "exact", "finish": "exact", "condition": "declared-or-better" } (generated)
data.lines[].fulfillment_obligation.skurequiredstringallowed values: exactThe stock-keeping identity for the exact card offering.exact (generated)
data.lines[].fulfillment_obligation.printingrequiredstringallowed values: exactThe exact card printing the Seller is obligated to supply.exact (generated)
data.lines[].fulfillment_obligation.languagerequiredstringallowed values: exactThe language of the card printing.exact (generated)
data.lines[].fulfillment_obligation.finishrequiredstringallowed values: exactThe physical finish or foil treatment of the card.exact (generated)
data.lines[].fulfillment_obligation.conditionrequiredstringallowed values: declared-or-betterThe normalized condition assigned to the card.declared-or-better (generated)
data.totalsobjectNoneOrder-level money rollup, integer minor units (cents) in the order currency: `grand_total = subtotal + shipping + tax`. When present, carries all four sums (STABLE).{ "subtotal": 2499, "shipping": 599, "tax": 403, "grand_total": 3501 }
data.totals.subtotalrequiredintegerNoneThe line-item total before shipping and tax, in minor currency units.2499
data.totals.shippingrequiredintegerNoneThe shipping charge or delivery details for the Order.599
data.totals.taxrequiredintegerNoneThe tax total or breakdown applied to the Order.403
data.totals.grand_totalrequiredintegerNoneThe complete Order total including shipping and tax, in minor currency units.3501
data.taxobjectNoneTax breakdown: one `{label, rate, amount}` line per applied tax. The whole block is absent exactly when there is no tax (absent if and only if `totals.tax` = 0) (STABLE).{ "lines": [ { "label": "HST", "rate": 0.13, "amount": 403 } ] }
data.tax.linesrequiredarray of objectNoneThe individual records carried by this request, response, or event.[ { "label": "HST", "rate": 0.13, "amount": 403 } ]
data.tax.lines[].labelrequiredstringNoneThe human-readable label for this entry.HST
data.tax.lines[].raterequirednumberNoneThe decimal tax rate applied to the taxable amount.0.13
data.tax.lines[].amountrequiredintegerNoneThe monetary amount in minor currency units.403
data.shippingobjectNoneChosen shipping option: `method` is a plain free-text string (not an enum) and `cost` is integer minor units (cents), mirroring `totals.shipping` (STABLE).{ "method": "Tracked parcel", "cost": 599 }
data.shipping.methodrequiredstringNoneThe method used to carry out the surrounding action.Tracked parcel
data.shipping.costrequiredintegerNoneThe shipping cost in minor currency units.599
data.buyer_notesstringNoneOptional free-text buyer note; absent when the buyer left none (STABLE).Please protect the card with a top loader.
data.statusstringallowed values: accepted, shipped, delivered, cancelled, refundedThe Lifecycle state. Absent until the Order first transitions: an absent status means `created`, and an `order.created` delivery never carries it (STABLE).shipped
data.fulfillmentobjectNoneTracking block; present once Tracking has been attached at fulfillment (STABLE).{ "tracking_company": "Canada Post", "tracking_number": "CX123456789CA", "tracking_url": "https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA" }
data.fulfillment.tracking_companyrequiredstringNoneCarrier/company name, as the fulfiller entered it (STABLE).Canada Post
data.fulfillment.tracking_numberrequiredstringNoneCarrier tracking number (STABLE).CX123456789CA
data.fulfillment.tracking_urlrequiredstring or nullNoneTracking link; null if the fulfiller supplied none (STABLE).https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA

Error 400 (application/json)

FieldTypeConstraintsMeaningExample
successrequiredbooleanallowed values: falseWhether the operation completed as requested.false (generated)
errorrequiredobjectNoneStructured error information returned when the request cannot be completed.{ "code": "UNAUTHORIZED", "message": "string" } (generated)
error.coderequiredstringallowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLEDStable public error code the Platform can branch on.UNAUTHORIZED (generated)
error.messagerequiredstringNoneA human-readable explanation of the result.string (generated)
error.detailsunknownNoneAdditional structured context for diagnosing the result.{} (generated)

Error 401 (application/json)

FieldTypeConstraintsMeaningExample
successrequiredbooleanallowed values: falseWhether the operation completed as requested.false (generated)
errorrequiredobjectNoneStructured error information returned when the request cannot be completed.{ "code": "UNAUTHORIZED", "message": "string" } (generated)
error.coderequiredstringallowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLEDStable public error code the Platform can branch on.UNAUTHORIZED (generated)
error.messagerequiredstringNoneA human-readable explanation of the result.string (generated)
error.detailsunknownNoneAdditional structured context for diagnosing the result.{} (generated)

Error 404 (application/json)

FieldTypeConstraintsMeaningExample
successrequiredbooleanallowed values: falseWhether the operation completed as requested.false (generated)
errorrequiredobjectNoneStructured error information returned when the request cannot be completed.{ "code": "UNAUTHORIZED", "message": "string" } (generated)
error.coderequiredstringallowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLEDStable public error code the Platform can branch on.UNAUTHORIZED (generated)
error.messagerequiredstringNoneA human-readable explanation of the result.string (generated)
error.detailsunknownNoneAdditional structured context for diagnosing the result.{} (generated)

Error 422 (application/json)

FieldTypeConstraintsMeaningExample
successrequiredbooleanallowed values: falseWhether the operation completed as requested.false (generated)
errorrequiredobjectNoneStructured error information returned when the request cannot be completed.{ "code": "UNAUTHORIZED", "message": "string" } (generated)
error.coderequiredstringallowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLEDStable public error code the Platform can branch on.UNAUTHORIZED (generated)
error.messagerequiredstringNoneA human-readable explanation of the result.string (generated)
error.detailsunknownNoneAdditional structured context for diagnosing the result.{} (generated)