Webhook Events Coming Soon
Crossborder payments are coming soon. This preview gives you an early look at the expected experience so you can begin planning your integration.
Crossborder integrations emit quote.* events for the quote lifecycle and standard payment.* events for payments.
The quote relationship references a Crossborder Quote resource with JSON:API type quote.
The payment relationship references a Crossborder Payment resource with JSON:API type crossborderPayment.
| Event type | Fired when |
|---|---|
quote.created | Quote successfully created (→ New). |
quote.used | Quote consumed by a payment (→ Used). |
payment.created | Payment successfully created (→ Pending). |
payment.pendingReview | Additional information is required (→ PendingReview). |
payment.sent | Funds dispatched to the recipient's bank (→ Sent). |
payment.rejected | Payment rejected at any stage (→ Rejected). Includes rejectionReason attribute. |
payment.returned | Payment returned by the beneficiary bank after being sent or completed (→ Returned). Includes returnReason attribute. |
transaction.created | Ledger transaction (type originatedCrossborderTransaction) created for the payment. |
Status transitions to Initiated and Completed do not emit separate webhook events.
Poll GET /payments/{paymentId} or inspect the payment resource on subsequent payment.* events to track progress through those statuses.
See Quote Lifecycle and Payment Lifecycle for status definitions. See Rejection reasons and Return reasons for payment rejection and return values.
quote.created
Occurs when a Crossborder Quote is successfully created and enters New status.
{
"data": [
{
"id": "1338",
"type": "quote.created",
"attributes": {
"createdAt": "2024-01-15T10:05:00.000Z",
"status": "New",
"sourceAmount": 10850,
"sourceCurrency": "USD",
"destinationAmount": 10000,
"destinationCurrency": "EUR",
"exchangeRate": "1.085",
"expiresAt": "2024-01-15T10:20:00.000Z"
},
"relationships": {
"quote": {
"data": {
"id": "300",
"type": "quote"
}
},
"customer": {
"data": {
"id": "1000",
"type": "individualCustomer"
}
},
"counterparty": {
"data": {
"id": "200",
"type": "swiftCounterparty"
}
}
}
}
]
}
quote.used
Occurs when a quote is consumed by a Crossborder Payment and moves to Used status.
{
"data": [
{
"id": "1339",
"type": "quote.used",
"attributes": {
"createdAt": "2024-01-15T10:10:00.000Z",
"status": "Used",
"sourceAmount": 10850,
"sourceCurrency": "USD",
"destinationAmount": 10000,
"destinationCurrency": "EUR",
"exchangeRate": "1.085"
},
"relationships": {
"quote": {
"data": {
"id": "300",
"type": "quote"
}
},
"payment": {
"data": {
"id": "400",
"type": "crossborderPayment"
}
},
"customer": {
"data": {
"id": "1000",
"type": "individualCustomer"
}
},
"counterparty": {
"data": {
"id": "200",
"type": "swiftCounterparty"
}
}
}
}
]
}
payment.created
Occurs when a Crossborder Payment is successfully created and enters Pending status.
This event does not fire for rejected payments — see
payment.rejected instead.
See the full payment.created event documentation for the complete payload structure.
payment.pendingReview
Occurs when a crossborder payment requires additional information and moves to PendingReview.
After the information is submitted, the payment returns to Pending and processing continues.
See the full payment.pendingReview event documentation for the complete payload structure.
payment.sent
Occurs when funds are dispatched to the recipient's bank and the payment moves to Sent.
See the full payment.sent event documentation for the complete payload structure.
payment.rejected
Occurs when a crossborder payment is rejected at any stage.
The event attributes include rejectionReason.
See Rejection reasons.
See the full payment.rejected event documentation for the complete payload structure.
payment.returned
Occurs when a crossborder payment is returned by the beneficiary bank after it was sent or completed.
The event attributes include returnReason.
See Return reasons.
See the full payment.returned event documentation for the complete payload structure.
transaction.created
Occurs when the ledger transaction (type originatedCrossborderTransaction) is created for the payment.
See the full transaction.created event documentation for the complete payload structure.