Introduction
Webhooks enable your app get notified of events and state changes when interacting with Onboard’s widget or API. For instance, you’ll receive a webhook notification when an order transitions fromINITIATED to DEPOSITED.
Setting up a webhook
To get started, configure a publicly accessible webhook URL from Onboard Connect’s Settings in the Business portal dashboard.
- Return a
200 OKHTTP status code with no responsebody. - Accept the webhook payload (see structure below).
- Verify the authenticity of the sender using the signature in the request header.
If the webhook endpoint does not specify a
Number of retry attempts is currently set at 3.
200 0K HTTP response code on receipt of webhook data, there will be subsequent attempts to resend it until the retry attempts are exhausted.Number of retry attempts is currently set at 3.
Verifying webhook origin
Since your webhook URL is publicly available, you need to verify that events originate from Onboard and not a bad actor. To ensure this, each webhook attempt makes use of signed HTTP headers, which contain values you can use to verify the authenticity of the data being transmitted between Onboard and your application. The following signed headers can be used:x-signature
- Here’s an example, in Javascript, of how this parameter can be verified:
The
apiSecret is the same as the one configured from your Business portal dashboard.x-timestamp
- This is the timestamp used to generate the signature
Webhook payload structure
A webhook payload will typically conform to the structure below:data is an object which is peculiar to the specific webhook context.Sample payload
order.state_transition
order.state_transition
Supported webhook events
| Event | Description |
|---|---|
| order.state_transition | Triggered when an order’s state changes, such as from INITIATED to DEPOSITED. Includes detailed payload data for tracking. |
Order states
| State | Description | Is terminal | Allowed transition |
|---|---|---|---|
PENDING | This is an order’s initial state when instantiated by a user | No | AWAITING_ACCEPTANCEINITIATEDCANCELLED |
AWAITING_ACCEPTANCE | For orders that require prior acceptance before being initiated, this state indicates that the merchant is yet to accept the order. This is usually because the merchant turned off auto-escrow on their ad, or the customer is selling an ERC-20 token. | No | CANCELLEDINITIATED |
INITIATED | The order has been create onchain, but the buyer hasn’t confirmed sending fiat to the seller | No | CANCELLEDDEPOSITEDIN_DISPUTE |
DEPOSITED | This indicates that the buyer has confirmed making a fiat transfer to the seller | No | CONFIRMEDCANCELLEDIN_DISPUTE |
CONFIRMED | The seller has confirmed receipt of fiat | No | COMPLETED |
IN_DISPUTE | A participant in the transaction has raised a dispute | No | CANCELLEDCONFIRMED |
COMPLETED | The order has been completed and closed on chain | Yes | N/A |
CANCELLED | The order was cancelled | Yes | N/A |
A
It usually means the order has terminated, either as completed or cancelled.
terminal state indicates that the state/status cannot be reversed, or transition to a different state.It usually means the order has terminated, either as completed or cancelled.