Supported events
| Event | Status | Description |
|---|
order.created | Active | A new order was created |
order.status_updated | Active | An order status changed or a milestone was reached |
Events marked Configured can be selected when creating a webhook but are not yet emitted by all backend flows. order.created and order.status_updated are actively emitted today.
Envelope
All events share this structure:
{
"id": "131a1559-3723-4c6b-b133-f5d5747c2bfa",
"type": "order.created",
"data": { ... }
}
| Field | Description |
|---|
id | Unique outbox event ID (also in x-st-webhook-id header) |
type | Event type string |
data | Event-specific payload |
order.created
Emitted when a new order is created.
Payload (data)
| Field | Type | Description |
|---|
orderId | string (UUID) | Order identifier |
offeringId | string (UUID) | Offering identifier |
accountId | string (UUID) | Account identifier |
status | string | Order status (e.g. ORDERED) |
units | string | Token amount in smallest unit. Divide by 10^decimals for the human-readable amount. Example: "98700000000" with 8 decimals = 987 tokens. See Units and decimals. |
amount | number | null | Order amount in currency |
currency | string | null | Currency code (e.g. USD) |
walletId | string | null | Linked wallet ID |
walletAddress | string | null | Blockchain wallet address |
createdAt | string | ISO 8601 creation timestamp |
Example
{
"id": "131a1559-3723-4c6b-b133-f5d5747c2bfa",
"type": "order.created",
"data": {
"orderId": "f85ff5bd-b923-49d3-ad03-c89f62cbecef",
"offeringId": "540e3424-ec22-4d69-9821-001fe1d1ac2f",
"accountId": "dabc6029-db0e-422e-a151-007cda958bf6",
"status": "ORDERED",
"units": "98700000000",
"amount": 98700,
"currency": "USD",
"walletId": null,
"walletAddress": null,
"createdAt": "2026-07-12T01:30:09.064Z"
}
}
Key order in data matches server serialization. Use the raw body for signature verification, not a manually reordered copy.
order.status_updated
Emitted when an order transitions status or reaches a milestone.
Payload (data)
| Field | Type | Description |
|---|
orderId | string (UUID) | Order identifier |
milestone | string | Milestone name (see below) |
previousStatus | string | null | Previous order status |
currentStatus | string | Current order status |
updatedAt | string | ISO 8601 timestamp |
walletId | string | null | Wallet ID (when relevant) |
walletAddress | string | null | Wallet address (when relevant) |
Milestones
| Milestone | Description |
|---|
issuer_approved | Order confirmed by issuer |
issuer_rejected | Order cancelled before payment |
whitelisted | Account whitelisted |
no_payment | Marked as no payment required |
paid | Payment received |
ready_to_mint | Ready for tokenization |
tokenization_started | Minting in progress |
tokenization_completed | Tokens minted |
wallet_added | Wallet linked to a paid order |
Example
{
"id": "a2b3c4d5-e6f7-8901-abcd-ef1234567890",
"type": "order.status_updated",
"data": {
"orderId": "f85ff5bd-b923-49d3-ad03-c89f62cbecef",
"milestone": "paid",
"previousStatus": "READYTOPAY",
"currentStatus": "PAID",
"updatedAt": "2026-07-12T02:15:00.000Z",
"walletId": null,
"walletAddress": null
}
}