Webhook event
conversion.failed
The transaction failed on chain or the route failed and the funds are back in the merchant wallet. The reserve is released. Failure codes are in the failure codes of money out.
- Type
conversion.failed- The object it carries
- the
conversionobject - Subscribe with
conversion.failed,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_94r13203dk1kdja3whct0yfs",
"object": "event",
"livemode": true,
"created": "2026-10-12T10:13:40.000Z",
"type": "conversion.failed",
"api_version": "2026-10-11",
"data": {
"object": {
"id": "cv_ban2ezvpwf4j4d09h4htv42j",
"object": "conversion",
"livemode": true,
"created": "2026-10-12T11:00:30.000Z",
"updated": "2026-10-12T10:13:40.000Z",
"status": "failed",
"pending_reason": null,
"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": "mem_ceh1wpzdrpk13cnpcjy9w0fa",
"approval_url": null,
"approval_expires_at": "2026-10-19T11:00:30.000Z",
"send_transaction_hash": "0x1f3cb18e896256d7d6bb8c11a6ec71f005c75de05e39beae5d93bbd1e2c8b7a9",
"receive_transaction_hash": null,
"failure_code": "transaction_reverted",
"cancellation_reason": null,
"approved_at": "2026-10-12T10:12:00.000Z",
"sent_at": "2026-10-12T10:12:09.000Z",
"confirmed_at": null,
"metadata": {}
},
"previous_attributes": {
"status": "sent",
"failure_code": 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-12T10: |
status | "failed" |
pending_reason | null |
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 | "mem_ |
approval_url | null |
approval_expires_at | "2026-10-19T11: |
send_transaction_hash | "0x1f3cb18e896256d7d6bb8c11a6ec71f005c75de05e39beae5d93bbd1e2c8b7a9" |
receive_transaction_hash | null |
failure_code | "transaction_reverted" |
cancellation_reason | null |
approved_at | "2026-10-12T10: |
sent_at | "2026-10-12T10: |
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, failure_code.
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.