Webhook event
payment_instruction.created
A payer chose an asset and was shown an address (or opened Pay with Orrerie).
- Type
payment_instruction.created- The object it carries
- the
payment_instructionobject - Subscribe with
payment_instruction.created,payment_instruction.*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_ae5yftt5n8rxbwmmk84704cg",
"object": "event",
"livemode": true,
"created": "2026-10-11T14:04:10.902Z",
"type": "payment_instruction.created",
"api_version": "2026-10-11",
"data": {
"object": {
"id": "pin_h73hkjr8dyp4zymaet5e2gbv",
"object": "payment_instruction",
"livemode": true,
"created": "2026-10-11T14:04:10.902Z",
"order": "ord_0zymngngvf12b8b2cra7tb8e",
"status": "waiting",
"rail": "relay",
"provider": "relay",
"pay_asset": "ethereum:usdc",
"pay_amount": "22.410000",
"amount_mode": "exact",
"address": {
"id": "addr_x76q8chyjk6j34he4jrcbb7v",
"address": "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359",
"network": "ethereum",
"owner": "provider",
"solana_pay_reference": null,
"derivation": null
},
"payment_uri": "ethereum:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48@1/transfer?address=0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359&uint256=22410000",
"quote": {
"id": "qt_0fymhdf3w7nem8m9f6rfjtgw",
"price_amount": "21.99",
"price_currency": "USD",
"rate": "1.000200",
"route_fee": {
"amount": "0.42",
"currency": "USD",
"bearer": "payer"
},
"created": "2026-10-11T14:04:10.902Z",
"expires_at": "2026-10-11T14:19:10.902Z"
},
"settle_asset": "base:usdc",
"settle_amount_expected": "21.990000",
"confirmations_required": 12,
"in_transit_notice": "While a payment is being routed it is held by Relay, a separate company. Orrerie never holds it.",
"wrong_asset_warning": "Send only USDC on Ethereum to this address. Anything else may be lost.",
"expires_at": "2026-10-11T14:19:10.902Z",
"late_until": "2026-11-10T14:19:10.902Z",
"failure_code": null,
"test_simulation_url": null
}
},
"request": {
"id": null,
"idempotency_key": null
},
"pending_webhooks": 1
}Fields of data.object
| Field | In this example |
|---|---|
id | "pin_ |
object | "payment_instruction" |
livemode | true |
created | "2026-10-11T14: |
order | "ord_ |
status | "waiting" |
rail | "relay" |
provider | "relay" |
pay_asset | "ethereum:usdc" |
pay_amount | "22.410000" |
amount_mode | "exact" |
address | An object with id, address, network, owner, solana_pay_reference, derivation |
payment_uri | "ethereum: |
quote | An object with id, price_amount, price_currency, rate, route_fee, created, expires_at |
settle_asset | "base:usdc" |
settle_amount_expected | "21.990000" |
confirmations_required | 12 |
in_transit_notice | "While a payment is being routed it is held by Relay, a separate company. Orrerie never holds it." |
wrong_asset_warning | "Send only USDC on Ethereum to this address. Anything else may be lost." |
expires_at | "2026-10-11T14: |
late_until | "2026-11-10T14: |
failure_code | null |
test_simulation_url | null |
What each field means is on the page of the payment_instruction object. This event carries no data.previous_attributes.
Endpoints behind it
Calls that change orders. 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.
- POSTCreate an order/v1/orders
- PATCHUpdate an order/v1/orders/{id}
- POSTCancel an order/v1/orders/{id}/cancel
- POSTCreate a payment instruction/v1/orders/{id}/instructions
- POSTAccept an underpaid order as paid/v1/orders/{id}/accept_underpayment
- POSTKeep an overpayment as customer credit/v1/orders/{id}/keep_overpayment