Update fulfillment
/orders/{orderId}/fulfillmentDrive 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
| Environment | Base URL |
|---|---|
| Sandbox | https://api-sandbox.snapcaster.ca/api/v1/marketplace |
| Production | https://api.snapcaster.ca/api/v1/marketplace |
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
| Field | In | Type | Constraints | Meaning | Example |
|---|---|---|---|---|---|
orderIdrequired | path | string | minimum length: 1 | The opaque public Order id (the webhook/poll `order_id`). | ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW |
Request body (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
statusrequired | string | allowed values: accepted, shipped, delivered | The current lifecycle or policy state of the resource. | shipped |
trackingCompany | string | minimum length: 1; maximum length: 255 | Tracking Company supplied to or returned by this operation. | Canada Post |
trackingNumber | string | minimum length: 1; maximum length: 255 | Tracking Number supplied to or returned by this operation. | CX123456789CA |
trackingUrl | string or null | maximum length: 2048; format: uri | Tracking 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 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.
{ "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" } }}| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: true | Whether the operation completed as requested. | true |
datarequired | object | None | The 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_idrequired | string | None | Snapcaster order id; stable per Seller-order, the reconcile key (STABLE). | ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW |
data.seller_idrequired | integer | None | Routing target: the Seller that owns the inbound API key (STABLE). | 42 |
data.created_atrequired | string | None | ISO-8601 UTC instant the order was created (STABLE). | 2026-09-04T18:42:17.000Z |
data.currencyrequired | string | None | ISO 4217 currency code, e.g. CAD (STABLE). | CAD |
data.customerrequired | object | None | The 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.namerequired | string | None | The human-readable name of the resource. | Alex Morgan |
data.customer.emailrequired | string | None | The contact email for the person represented by this record. | alex.morgan@example.test |
data.customer.shipping_addressrequired | object | None | The 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.line1required | string | None | The primary street-address line. | 123 Sandbox Avenue |
data.customer.shipping_address.line2required | string or null | None | The optional unit, suite, or secondary address line. | Unit 4 |
data.customer.shipping_address.cityrequired | string | None | The municipality in the delivery address. | Toronto |
data.customer.shipping_address.provincerequired | string | None | The Canadian province or territory in the delivery address. | ON |
data.customer.shipping_address.postal_coderequired | string | None | The Canadian postal code in the delivery address. | M5V 2T6 |
data.customer.shipping_address.countryrequired | string | None | ISO 3166-1 alpha-2 country code. | CA |
data.linesrequired | array of object | minimum items: 1 | One 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_idrequired | integer | None | Canonical TCGplayer sku id (STABLE). | 427286 |
data.lines[].product_idrequired | integer | None | Canonical TCGplayer product id (STABLE). | 24692 |
data.lines[].quantityrequired | integer | None | The number of inventory units represented by this record. | 1 |
data.lines[].unit_pricerequired | integer | None | Integer minor units (cents) in the order currency (STABLE). | 2499 |
data.lines[].namerequired | string | None | Descriptive snapshot, frozen at order time (STABLE). | Lightning Bolt |
data.lines[].setrequired | string | None | The card set or expansion. | Magic 2011 |
data.lines[].conditionrequired | string | None | The normalized condition assigned to the card. | Near Mint |
data.lines[].external_refrequired | string or null | None | Echo of the Seller's opaque listing ref; null if none (STABLE). | platform-listing-1042 |
data.lines[].language | string or null | None | The language of the card printing. | English |
data.lines[].finish | string or null | None | The physical finish or foil treatment of the card. | Non-Foil |
data.lines[].disclosures | object | None | Provenance, 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_sourcerequired | string | allowed values: catalog | Who supplied the product image shown to the buyer. | catalog (generated) |
data.lines[].disclosures.condition_sourcerequired | string | allowed values: seller_declared | Who assigned the displayed card condition. | seller_declared (generated) |
data.lines[].disclosures.authenticity_sourcerequired | string | allowed values: seller_attestation | Who supplied the authenticity determination. | seller_attestation (generated) |
data.lines[].disclosures.snapcaster_inspectedrequired | boolean | allowed values: false | Whether Snapcaster physically inspected the card. | false (generated) |
data.lines[].disclosures.snapcaster_gradedrequired | boolean | allowed values: false | Whether Snapcaster assigned the displayed grade. | false (generated) |
data.lines[].disclosures.snapcaster_authenticatedrequired | boolean | allowed values: false | Whether Snapcaster authenticated the card. | false (generated) |
data.lines[].disclosures.grading_standardrequired | string | None | The grading standard used for the declared grade. | string (generated) |
data.lines[].disclosures.declared_graderequired | string or null | None | The grade declared for the card under the named standard. | string (generated) |
data.lines[].disclosures.buyer_protectionrequired | string | None | The buyer-protection coverage attached to this offering. | string (generated) |
data.lines[].fulfillment_obligation | object | None | The exact item characteristics the Seller must fulfill. | {
"sku": "exact",
"printing": "exact",
"language": "exact",
"finish": "exact",
"condition": "declared-or-better"
} (generated) |
data.lines[].fulfillment_obligation.skurequired | string | allowed values: exact | The stock-keeping identity for the exact card offering. | exact (generated) |
data.lines[].fulfillment_obligation.printingrequired | string | allowed values: exact | The exact card printing the Seller is obligated to supply. | exact (generated) |
data.lines[].fulfillment_obligation.languagerequired | string | allowed values: exact | The language of the card printing. | exact (generated) |
data.lines[].fulfillment_obligation.finishrequired | string | allowed values: exact | The physical finish or foil treatment of the card. | exact (generated) |
data.lines[].fulfillment_obligation.conditionrequired | string | allowed values: declared-or-better | The normalized condition assigned to the card. | declared-or-better (generated) |
data.totals | object | None | Order-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.subtotalrequired | integer | None | The line-item total before shipping and tax, in minor currency units. | 2499 |
data.totals.shippingrequired | integer | None | The shipping charge or delivery details for the Order. | 599 |
data.totals.taxrequired | integer | None | The tax total or breakdown applied to the Order. | 403 |
data.totals.grand_totalrequired | integer | None | The complete Order total including shipping and tax, in minor currency units. | 3501 |
data.tax | object | None | Tax 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.linesrequired | array of object | None | The individual records carried by this request, response, or event. | [
{
"label": "HST",
"rate": 0.13,
"amount": 403
}
] |
data.tax.lines[].labelrequired | string | None | The human-readable label for this entry. | HST |
data.tax.lines[].raterequired | number | None | The decimal tax rate applied to the taxable amount. | 0.13 |
data.tax.lines[].amountrequired | integer | None | The monetary amount in minor currency units. | 403 |
data.shipping | object | None | Chosen 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.methodrequired | string | None | The method used to carry out the surrounding action. | Tracked parcel |
data.shipping.costrequired | integer | None | The shipping cost in minor currency units. | 599 |
data.buyer_notes | string | None | Optional free-text buyer note; absent when the buyer left none (STABLE). | Please protect the card with a top loader. |
data.status | string | allowed values: accepted, shipped, delivered, cancelled, refunded | The Lifecycle state. Absent until the Order first transitions: an absent status means `created`, and an `order.created` delivery never carries it (STABLE). | shipped |
data.fulfillment | object | None | Tracking 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_companyrequired | string | None | Carrier/company name, as the fulfiller entered it (STABLE). | Canada Post |
data.fulfillment.tracking_numberrequired | string | None | Carrier tracking number (STABLE). | CX123456789CA |
data.fulfillment.tracking_urlrequired | string or null | None | Tracking link; null if the fulfiller supplied none (STABLE). | https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA |
Errors
| Status | Code | Meaning | Do this |
|---|---|---|---|
| 400 | INVALID_REQUEST | The request failed validation (`INVALID_REQUEST`). | Correct the fields named in the error details, then retry the request. |
| 401 | UNAUTHORIZED | Missing or invalid Marketplace API key (`UNAUTHORIZED`). | Send the Marketplace API key for this Seller as a Bearer token, then retry. |
| 404 | ORDER_NOT_FOUND | No 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. |
| 422 | INVALID_TRANSITION, INVALID_REQUEST | The 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. |
Related
Operations
Concepts
Changelog
None.
Schema
Full schema details (87 fields)
Parameters
| Field | In | Type | Constraints | Meaning | Example |
|---|---|---|---|---|---|
orderIdrequired | path | string | minimum length: 1 | The opaque public Order id (the webhook/poll `order_id`). | ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW |
Request
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
statusrequired | string | allowed values: accepted, shipped, delivered | The current lifecycle or policy state of the resource. | shipped |
trackingCompany | string | minimum length: 1; maximum length: 255 | Tracking Company supplied to or returned by this operation. | Canada Post |
trackingNumber | string | minimum length: 1; maximum length: 255 | Tracking Number supplied to or returned by this operation. | CX123456789CA |
trackingUrl | string or null | maximum length: 2048; format: uri | Tracking Url supplied to or returned by this operation. | https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA |
Response 200 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: true | Whether the operation completed as requested. | true |
datarequired | object | None | The 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_idrequired | string | None | Snapcaster order id; stable per Seller-order, the reconcile key (STABLE). | ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW |
data.seller_idrequired | integer | None | Routing target: the Seller that owns the inbound API key (STABLE). | 42 |
data.created_atrequired | string | None | ISO-8601 UTC instant the order was created (STABLE). | 2026-09-04T18:42:17.000Z |
data.currencyrequired | string | None | ISO 4217 currency code, e.g. CAD (STABLE). | CAD |
data.customerrequired | object | None | The 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.namerequired | string | None | The human-readable name of the resource. | Alex Morgan |
data.customer.emailrequired | string | None | The contact email for the person represented by this record. | alex.morgan@example.test |
data.customer.shipping_addressrequired | object | None | The 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.line1required | string | None | The primary street-address line. | 123 Sandbox Avenue |
data.customer.shipping_address.line2required | string or null | None | The optional unit, suite, or secondary address line. | Unit 4 |
data.customer.shipping_address.cityrequired | string | None | The municipality in the delivery address. | Toronto |
data.customer.shipping_address.provincerequired | string | None | The Canadian province or territory in the delivery address. | ON |
data.customer.shipping_address.postal_coderequired | string | None | The Canadian postal code in the delivery address. | M5V 2T6 |
data.customer.shipping_address.countryrequired | string | None | ISO 3166-1 alpha-2 country code. | CA |
data.linesrequired | array of object | minimum items: 1 | One 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_idrequired | integer | None | Canonical TCGplayer sku id (STABLE). | 427286 |
data.lines[].product_idrequired | integer | None | Canonical TCGplayer product id (STABLE). | 24692 |
data.lines[].quantityrequired | integer | None | The number of inventory units represented by this record. | 1 |
data.lines[].unit_pricerequired | integer | None | Integer minor units (cents) in the order currency (STABLE). | 2499 |
data.lines[].namerequired | string | None | Descriptive snapshot, frozen at order time (STABLE). | Lightning Bolt |
data.lines[].setrequired | string | None | The card set or expansion. | Magic 2011 |
data.lines[].conditionrequired | string | None | The normalized condition assigned to the card. | Near Mint |
data.lines[].external_refrequired | string or null | None | Echo of the Seller's opaque listing ref; null if none (STABLE). | platform-listing-1042 |
data.lines[].language | string or null | None | The language of the card printing. | English |
data.lines[].finish | string or null | None | The physical finish or foil treatment of the card. | Non-Foil |
data.lines[].disclosures | object | None | Provenance, 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_sourcerequired | string | allowed values: catalog | Who supplied the product image shown to the buyer. | catalog (generated) |
data.lines[].disclosures.condition_sourcerequired | string | allowed values: seller_declared | Who assigned the displayed card condition. | seller_declared (generated) |
data.lines[].disclosures.authenticity_sourcerequired | string | allowed values: seller_attestation | Who supplied the authenticity determination. | seller_attestation (generated) |
data.lines[].disclosures.snapcaster_inspectedrequired | boolean | allowed values: false | Whether Snapcaster physically inspected the card. | false (generated) |
data.lines[].disclosures.snapcaster_gradedrequired | boolean | allowed values: false | Whether Snapcaster assigned the displayed grade. | false (generated) |
data.lines[].disclosures.snapcaster_authenticatedrequired | boolean | allowed values: false | Whether Snapcaster authenticated the card. | false (generated) |
data.lines[].disclosures.grading_standardrequired | string | None | The grading standard used for the declared grade. | string (generated) |
data.lines[].disclosures.declared_graderequired | string or null | None | The grade declared for the card under the named standard. | string (generated) |
data.lines[].disclosures.buyer_protectionrequired | string | None | The buyer-protection coverage attached to this offering. | string (generated) |
data.lines[].fulfillment_obligation | object | None | The exact item characteristics the Seller must fulfill. | {
"sku": "exact",
"printing": "exact",
"language": "exact",
"finish": "exact",
"condition": "declared-or-better"
} (generated) |
data.lines[].fulfillment_obligation.skurequired | string | allowed values: exact | The stock-keeping identity for the exact card offering. | exact (generated) |
data.lines[].fulfillment_obligation.printingrequired | string | allowed values: exact | The exact card printing the Seller is obligated to supply. | exact (generated) |
data.lines[].fulfillment_obligation.languagerequired | string | allowed values: exact | The language of the card printing. | exact (generated) |
data.lines[].fulfillment_obligation.finishrequired | string | allowed values: exact | The physical finish or foil treatment of the card. | exact (generated) |
data.lines[].fulfillment_obligation.conditionrequired | string | allowed values: declared-or-better | The normalized condition assigned to the card. | declared-or-better (generated) |
data.totals | object | None | Order-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.subtotalrequired | integer | None | The line-item total before shipping and tax, in minor currency units. | 2499 |
data.totals.shippingrequired | integer | None | The shipping charge or delivery details for the Order. | 599 |
data.totals.taxrequired | integer | None | The tax total or breakdown applied to the Order. | 403 |
data.totals.grand_totalrequired | integer | None | The complete Order total including shipping and tax, in minor currency units. | 3501 |
data.tax | object | None | Tax 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.linesrequired | array of object | None | The individual records carried by this request, response, or event. | [
{
"label": "HST",
"rate": 0.13,
"amount": 403
}
] |
data.tax.lines[].labelrequired | string | None | The human-readable label for this entry. | HST |
data.tax.lines[].raterequired | number | None | The decimal tax rate applied to the taxable amount. | 0.13 |
data.tax.lines[].amountrequired | integer | None | The monetary amount in minor currency units. | 403 |
data.shipping | object | None | Chosen 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.methodrequired | string | None | The method used to carry out the surrounding action. | Tracked parcel |
data.shipping.costrequired | integer | None | The shipping cost in minor currency units. | 599 |
data.buyer_notes | string | None | Optional free-text buyer note; absent when the buyer left none (STABLE). | Please protect the card with a top loader. |
data.status | string | allowed values: accepted, shipped, delivered, cancelled, refunded | The Lifecycle state. Absent until the Order first transitions: an absent status means `created`, and an `order.created` delivery never carries it (STABLE). | shipped |
data.fulfillment | object | None | Tracking 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_companyrequired | string | None | Carrier/company name, as the fulfiller entered it (STABLE). | Canada Post |
data.fulfillment.tracking_numberrequired | string | None | Carrier tracking number (STABLE). | CX123456789CA |
data.fulfillment.tracking_urlrequired | string or null | None | Tracking link; null if the fulfiller supplied none (STABLE). | https://www.canadapost-postescanada.ca/track-reperage/en#/details/CX123456789CA |
Error 400 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed 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_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |
Error 401 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed 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_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |
Error 404 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed 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_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |
Error 422 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed 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_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |