API reference · Webhooks
Order refunded
order.refundedSnapcaster sends this event when a shipped or delivered order, or some of its lines, is refunded. The platform receives it even if it requested the refund. The envelope, signing, and delivery behavior match order.created; see https://developers.snapcaster.ca/guide/webhook-signing.
Subscriptions orders and both receive this event. Subscriptions that receive inventory events receive a positive inventory.adjusted only when restock=true.
An order can have multiple refunds over time. Each refund has its own event_id; deduplicate by this id to process each refund once. Refunds specify lines and quantities rather than money amounts.
Example
{
"event_id": "evt_sandbox_01K4A9FY6Z3N8H2W5S7M1Q0CVR",
"type": "order.refunded",
"created_at": "2026-09-04T20:12:00.000Z",
"data": {
"order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
"seller_id": 42,
"restock": true,
"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-Timestampstring requiredUnix seconds when the request was signed; reject if outside a ±5 minute window.
X-Snapcaster-Signaturestring requiredsha256=+ lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).
Delivery payload
The signed order.refunded event.
Payload type: Order
Envelope fields
event_idstring requiredA globally unique event id that stays the same across retries. Each refund has its own event id, even for the same order. Deduplicate by event id so you can process multiple refunds for one order (STABLE).
Example
evt_sandbox_01K4A9FY6Z3N8H2W5S7M1Q0CVRtypestring requiredThe event type (STABLE).
Constraints: allowed values:
order.refundedExampleorder.refundedcreated_atstring requiredISO-8601 UTC instant of the refund itself (STABLE).
Example
2026-09-04T20:12:00.000ZdataOrderrequiredRefunded Data The operation or event payload.
api_versionstring requiredThe 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-10Example2026-10
Payload fields
data.string requiredorder_id The refunded order id. Use it to reconcile events for the same order (STABLE).
Example
ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VWdata.integer requiredseller_id The seller that owns the API key. Use this id to route the event to the right store (STABLE).
Example
42data.boolean requiredrestock Whether the seller declared that the physical units came back and can be sold again. Snapcaster does not infer this value. A value of
false, for example for lost mail or a wrong card, leaves stock unchanged (STABLE).Example
truedata.lines TerminationrequiredLine[] The refunded lines and quantities (STABLE).
Constraints: minimum items: 1
Show child fieldsHide child fields
data.string or null requiredlines[]. line_ref The purchase-line reference of the terminated line, the same
line_refthe order body carries. Reconcile on this field: an order can hold two lines of onesku_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_1f0c8a4d7e2b45c9a1d6f3b8e07c9241data.integer requiredlines[]. sku_id Canonical TCGplayer SKU id, the same id as the order line (STABLE).
Example
14602data.string or null requiredlines[]. external_ref Echo of the seller's opaque listing ref; null if the listing carried none (STABLE).
Example
platform-listing-1042data.integer requiredlines[]. quantity 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.