refund.created
Money on an order went back to the customer — to the card, in cash or as club credit — or the club lost a card dispute (method: chargeback). Once per refund: refunding an order in three steps sends three signals. data.object is the refund, with order embedded AS IT IS NOW, so order.amount_refunded never goes down from one refund signal to the next. A refund recorded more than a day before OpenCourt could announce it is not announced late; GET /v1/orders/{id} still lists it. Returning an order paid in full with points moves no money and sends nothing.
Scope: the webhook endpoint’s scopes must include orders:read. Missed a delivery? The same signal is available from GET /v1/signals.
Header Parameters
The message id — stable across retries of the same message. Deduplicate on the body’s id (the signal id), not on this: an endpoint whose api_version changes while a signal is being retried can receive that signal once per version, as two messages with two message ids.
When this attempt was sent, in Unix seconds.
Signature over the id, timestamp and raw body, made with your endpoint’s secret. Verify it with any Standard Webhooks library before trusting the payload.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/refund.created