Webhooks
Receive real-time event notifications when invoice, payment, transaction, payout, and refund states change.
Use webhooks to keep your system in sync without polling.
Webhook references
Choose a page for the event family you need:
Before you go live
Verify the webhook signature on every request.
Return a
2xxresponse as soon as you accept the event.Use
X-CoinCircuit-Delivery-Idto handle retries safely.
Event flow
Most payment flows follow this order:
transaction.receivedtransaction.confirmedOne of the payment events
Any follow-up invoice, payout, or refund events
Use transaction events for blockchain state.
Use payment and invoice events for business state.
Delivery format
All webhook deliveries are sent as POST requests to your webhook endpoint.
Standard headers
X-CoinCircuit-Event
Event name for the current delivery.
X-CoinCircuit-Delivery-Id
Unique ID for this delivery attempt.
X-CoinCircuit-Signature
HMAC-SHA256 signature for the request body.
X-CoinCircuit-Timestamp
Unix timestamp used during signing.
Retry behavior
If your endpoint does not return a 2xx response, delivery is retried with backoff.
Build handlers to be idempotent.
Use the delivery ID to detect duplicates safely.
Verify signatures
Verify signatures against the raw request body.
Reject invalid requests before you process the payload.
Use the raw request body for signature verification.
Do not reformat the JSON before calculating the HMAC.
Shared payload shape
Every delivery includes:
event— the event namedata— the event payload
The object inside data changes by event family:
invoice events use
data.invoicepayment events use
data.sessiontransaction events use
data.transactionanddata.sessionpayout events use
data.payoutrefund events use
data.refund
Last updated
Was this helpful?