HOOK order.cancelled

Snapcaster sends this event when an order or some of its lines are cancelled before shipping. The platform receives it even if its own cancel request caused the cancellation. Deduplicate by event_id. The envelope, signing, and delivery behavior match order.created; see https://developers.snapcaster.ca/guide/webhook-signing and https://developers.snapcaster.ca/guide/path-b#delivery-semantics. Subscriptions orders and both receive this event. Subscriptions that receive inventory events also receive a positive inventory.adjusted; an inventory subscription receives only that adjustment. Events can arrive out of order: order.cancelled may arrive before a retry of order.created. Reconcile by order_id.

Example

Delivery payload: Signed cancellation delivery payload
{
  "event_id": "evt_sandbox_01K4A9CJK1F6S8M3Y2G5T7Q0PV",
  "type": "order.cancelled",
  "created_at": "2026-09-04T19:05:00.000Z",
  "data": {
    "order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
    "seller_id": 42,
    "lines": [
      {
        "line_ref": "oln_1f0c8a4d7e2b45c9a1d6f3b8e07c9241",
        "sku_id": 14602,
        "external_ref": "platform-listing-1042",
        "quantity": 1
      }
    ]
  },
  "api_version": "2026-10"
}

Signature headers

Snapcaster sends a POST to your webhook endpoint with these headers. Webhook signing shows how to verify them.

X-Snapcaster-Timestamp string required

Unix seconds when the request was signed; reject if outside a ±5 minute window.

X-Snapcaster-Signature string required

sha256= + lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).

Delivery payload

The signed order.cancelled event.

Payload type: OrderCancelledEvent

Envelope fields

event_id string required

A globally unique event id that stays the same across retries. Use it to deduplicate deliveries (STABLE).

Example evt_sandbox_01K4A9CJK1F6S8M3Y2G5T7Q0PV

type string required

The event type (STABLE).

Constraints: allowed values: order.cancelled Example order.cancelled

created_at string required

ISO-8601 UTC instant of the cancellation itself, not the order’s creation (STABLE).

Example 2026-09-04T19:05:00.000Z

data OrderCancelledData required

The operation or event payload.

api_version string required

The dated API version used for this payload, frozen when Snapcaster queued the delivery. Changing the platform pin does not change queued events or retries; they keep the same version. See https://developers.snapcaster.ca/guide/api-versioning (STABLE).

Constraints: allowed values: 2026-10 Example 2026-10

Payload fields

data.order_id string required

The cancelled order id. Use it to reconcile events for the same order (STABLE).

Example ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW

data.seller_id integer required

The seller that owns the API key. Use this id to route the event to the right store (STABLE).

Example 42

data.lines TerminationLine[] required

The cancelled lines and quantities. This field is always present. A whole-order cancellation includes every line (STABLE).

Constraints: minimum items: 1

Show child fieldsHide child fields
data.lines[].line_ref string or null required

The purchase-line reference of the terminated line, the same line_ref the order body carries. Reconcile on this field: an order can hold two lines of one sku_id, and only this says which of them was cancelled or refunded. Null only on an event Snapcaster froze before this field existed.

Example oln_1f0c8a4d7e2b45c9a1d6f3b8e07c9241

data.lines[].sku_id integer required

Canonical TCGplayer SKU id, the same id as the order line (STABLE).

Example 14602

data.lines[].external_ref string or null required

Echo of the seller's opaque listing ref; null if the listing carried none (STABLE).

Example platform-listing-1042

data.lines[].quantity integer required

The cancelled or refunded quantity. It may be less than the quantity ordered for this line (STABLE).

Example 1

Receiver response

200 - Return any 2xx after verifying the event and durably accepting it.