> ## Documentation Index
> Fetch the complete documentation index at: https://docs.floris3.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook Events

> Supported event types, payloads, and milestones.

## 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:

```json theme={null}
{
  "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](/guides/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

```json theme={null}
{
  "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"
  }
}
```

<Note>
  Key order in `data` matches server serialization. Use the raw body for signature verification, not a manually reordered copy.
</Note>

***

## 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

```json theme={null}
{
  "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
  }
}
```

***
