HOOK order.refunded

Snapcaster 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

Delivery payload: Signed refund delivery payload
{
  "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-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.refunded event.

Payload type: OrderRefundedEvent

Envelope fields

event_id string required

A 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_01K4A9FY6Z3N8H2W5S7M1Q0CVR

type string required

The event type (STABLE).

Constraints: allowed values: order.refunded Example order.refunded

created_at string required

ISO-8601 UTC instant of the refund itself (STABLE).

Example 2026-09-04T20:12:00.000Z

data OrderRefundedData 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 refunded 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.restock boolean required

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 true

data.lines TerminationLine[] required

The refunded lines and quantities (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.