1. Webhooks
Partner API
  • Getting Started
    • Introduction
    • Authentication
    • Business Use Cases
  • API References
    • Balances & History
      • Get Balances
      • Get Balance History
    • Crypto Deposits
      • Get Crypto Deposit Details
      • Update Travel Rule
    • Crypto Withdrawals
      • Add Whitelisted Wallet
      • Get Whitelisted Wallets
      • Delete Whitelisted Wallet
      • Create Crypto Withdrawal
      • Get Crypto Withdrawal Details
    • SEPA Deposits
      • Get SEPA Payment Details
      • Get SEPA Deposit Details
    • SEPA Withdrawals
      • Create SEPA Withdrawal
      • Get SEPA Withdrawal Details
    • Currency Exchange
      • Get Rates
      • Create Lock
      • Create Exchange
      • Get Exchange Details
  • Integration
    • Integration Guides
    • Transaction Processing
    • Error Handling
    • Rate Limiting
    • Webhooks
      • Crypto Deposit Webhook
      • Crypto Withdrawal Webhook
      • SEPA Deposit Webhook
      • SEPA Withdrawal Webhook
      • Exchange Webhook
  • Reference
    • Supported Currencies
    • Fees
    • FAQ
    • Changelog
    • Support
  1. Webhooks

Exchange Webhook

Webhook
POST
EXCHANGE_UPDATE
This event is emitted on each currency exchange lifecycle update or execution failure event. A single exchange request can produce multiple webhook notifications over time, from initial queuing to final balance conversion.
Use this webhook as the primary real-time source for tracking currency conversion outcomes. The initial exchange response confirms that the swap request was queued for asynchronous processing. Final execution, rate calculation, balance updates, and failure details are reported asynchronously via this webhook.

Payload Variants#

The webhook payload is delivered inside the data object and follows one of two distinct structures:
1.
State Progress Payload: Emitted during normal processing and completion. Contains full exchange details (transactionId, externalId, status, sourceAmount, destinationAmount, sourceCurrency, destinationCurrency, rate, fee, createdAt).
2.
Failure Payload: Emitted when conversion fails (e.g., due to market volatility or insufficient balance). Contains transactionId and the specific error code in the error string field.

Event Fields Breakdown#

transactionId: Internal partner transaction identifier (UUID).
externalId: External reference identifier for the exchange (UUID).
status: Current processing state (e.g., started, pending, successful).
sourceAmount: Amount deducted from the source balance (as a decimal string).
destinationAmount: Amount credited to the destination balance (as a decimal string).
sourceCurrency: Asset code being converted (e.g., EUR, BTC).
destinationCurrency: Target asset code received (e.g., USDT, EUR).
rate: Executed exchange conversion rate (as a decimal string).
fee: Provision/fee applied to the operation (as a decimal string).
createdAt: ISO 8601 UTC creation timestamp.

Status Lifecycle#

started: Exchange request initiated and entered execution queue.
pending: Order queued or waiting for liquidity execution.
successful: Conversion executed; source and destination balances successfully updated.
unsuccessful / rejected-by-reviewer: Exchange failed to execute or was cancelled.

Recommended Integration Behavior#

Balance Updates: Wait for the successful status before updating internal ledger accounts.
Error Handling: When error is present, handle the execution rejection immediately without waiting for standard status fields.
Reconciliation: Log rate, fee, and amount parameters to ensure precise audit records.
Do Not Treat API Acceptance As Final Execution
The initial swap endpoint response only confirms request acceptance. Always wait for terminal webhook events (successful or error) or query the exchange details endpoint to confirm final execution.

Request

Body Params application/json

Examples

Responses

🟢200Success
application/json
Bodyapplication/json

Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location 'https://your-api-server.com' \
--header 'Content-Type: application/json' \
--data '{
  "type": "EXCHANGE_UPDATE",
  "data": {
    "transactionId": "7f8b9e10-3c2a-4b5d-9e8f-1a2b3c4d5e6f",
    "externalId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "status": "successful",
    "sourceAmount": "1000.00",
    "destinationAmount": "1085.50",
    "sourceCurrency": "EUR",
    "destinationCurrency": "USDT",
    "rate": "1.0855",
    "fee": "2.00",
    "createdAt": "2026-09-14T09:15:00.123Z"
  }
}'
Response Response Example
{}
Previous
SEPA Withdrawal Webhook
Next
Supported Currencies
Built with