Webhook event
conversion.approval_lapsed
Nobody approved within 7 days. The request is back in draft and its reserve is released; send it again with POST .../submit or cancel it.
- Type
conversion.approval_lapsed- The object it carries
- the
conversionobject - Subscribe with
conversion.approval_lapsed,conversion.*or*
Example payload
The body of the request your endpoint receives, shown here over several lines. On the wire it is compact JSON; check its signature over the bytes exactly as they arrive.
Example payload
{
"id": "evt_3tvbdbcrvkgpj3db99tzf51v",
"object": "event",
"livemode": true,
"created": "2026-10-19T10:00:00.000Z",
"type": "conversion.approval_lapsed",
"api_version": "2026-10-11",
"data": {
"object": {
"id": "cv_ban2ezvpwf4j4d09h4htv42j",
"object": "conversion",
"livemode": true,
"created": "2026-10-12T11:00:30.000Z",
"updated": "2026-10-19T10:00:00.000Z",
"status": "draft",
"pending_reason": "approval_lapsed",
"venue": "relay",
"venue_progress": null,
"from": {
"wallet": "wal_zjdztygt4g73zm0cdcjjf43k",
"asset": "bitcoin:btc",
"amount": "0.01000000"
},
"to": {
"wallet": "wal_bsfw07hymawmda7gg8jsyy3g",
"asset": "base:usdc",
"amount_estimated": "1168.420000",
"amount_minimum": "1162.577900",
"amount_received": null
},
"rate": "116842.00",
"max_slippage_bps": 50,
"fees": [
{
"kind": "route_fee",
"amount": "1.38",
"currency": "USD"
},
{
"kind": "network_fee",
"amount": "0.61",
"currency": "USD"
}
],
"in_transit_notice": "While a conversion is being routed it is held by Relay, a separate company. Orrerie never holds it.",
"requested_by": {
"type": "api_key",
"id": "key_6e3gg2c6ea176xxdek2nar6v"
},
"approved_by": null,
"approval_url": null,
"approval_expires_at": null,
"send_transaction_hash": null,
"receive_transaction_hash": null,
"failure_code": null,
"cancellation_reason": null,
"approved_at": null,
"sent_at": null,
"confirmed_at": null,
"metadata": {}
},
"previous_attributes": {
"status": "awaiting_approval",
"pending_reason": null
}
},
"request": {
"id": null,
"idempotency_key": null
},
"pending_webhooks": 1
}Fields of data.object
| Field | In this example |
|---|---|
id | "cv_ |
object | "conversion" |
livemode | true |
created | "2026-10-12T11: |
updated | "2026-10-19T10: |
status | "draft" |
pending_reason | "approval_lapsed" |
venue | "relay" |
venue_progress | null |
from | An object with wallet, asset, amount |
to | An object with wallet, asset, amount_estimated, amount_minimum, amount_received |
rate | "116842.00" |
max_slippage_bps | 50 |
fees | A list of 2 items |
in_transit_notice | "While a conversion is being routed it is held by Relay, a separate company. Orrerie never holds it." |
requested_by | An object with type, id |
approved_by | null |
approval_url | null |
approval_expires_at | null |
send_transaction_hash | null |
receive_transaction_hash | null |
failure_code | null |
cancellation_reason | null |
approved_at | null |
sent_at | null |
confirmed_at | null |
metadata | An object with no fields |
What each field means is on the page of the conversion object. data.previous_attributes holds the old values of exactly the fields that changed: here status, pending_reason.
Endpoints behind it
Calls that change conversions. An event is also sent when a payer, the network, a timer or a person in the dashboard causes the change; the sentence above says which.