Skip to main content

Webhook Events

PAYMENT_SETTLED

Emitted when a payment is successfully settled.

{
"id": "evt_123",
"type": "PAYMENT_SETTLED",
"timestamp": "2026-04-03T10:00:00.000Z",
"data": {
"order": {
"id": "ord_abc",
"merchantId": "merchant_123",
"status": "FULFILLED",
"requestedUsdcAmount": "50.00"
},
"payment": {
"id": "pay_abc",
"orderId": "ord_abc",
"status": "SETTLED",
"netSettledUsdcAmount": "49.50"
}
}
}

Common fields used for reconciliation:

  • data.order.id
  • data.order.status
  • data.payment.id
  • data.payment.status
  • data.payment.netSettledUsdcAmount

PAYMENT_FAILED

Emitted for terminal payment failures.

Use data.payment.status (FAILED) plus data.order.id/data.payment.id for reconciliation.

PAYMENT_EXPIRED

Emitted when a payment quote expires before settlement.

PAYMENT_CANCELLED

Emitted when a payment is cancelled.

PAYMENT_CREATED

Emitted when a payment attempt is created for an order.

ORDER_CREATED

Emitted when an order is created.

ORDER_FULFILLED

Emitted when the order reaches fulfilled status.

ORDER_CANCELLED

Emitted when an order is cancelled before fulfillment.

Crypto Payment Events

Bridge lifecycle events for crypto payout settlement:

  • PAYMENT_BRIDGE_PENDING: bridge transfer queued
  • PAYMENT_BRIDGE_SUBMITTED: relay handoff submitted
  • PAYMENT_BRIDGE_COMPLETED: destination transfer confirmed
  • PAYMENT_BRIDGE_FAILED: destination transfer failed

For bridge events, data.paymentBridge carries status and destination transaction context.

Event Ordering Notes

  • PAYMENT_CREATED is emitted before terminal payment events.
  • PAYMENT_SETTLED may be followed by ORDER_FULFILLED.
  • Bridge events are optional and only emitted when bridge execution applies.