Transaction Webhook
Business clients receive real-time notifications when transaction status changes occur. This webhook provides comprehensive information about all transaction types including deposits, withdrawals, exchanges, direct exchanges, and transfers.
When is this webhook sent?
The transaction webhook is sent when:
- A transaction status changes (e.g., from
PENDINGtoCOMPLETED,PROCESSINGtoFAILED) - The transaction belongs to a user associated with your business
- Your business API key has a webhook URL configured
- CAD Interac payout (non-autodeposit): a pending payout receives security credentials from the provider — you get an additional webhook while status is still
PROCESSING, withinterac_payout_instructionpopulated (before the finalCOMPLETEDorFAILEDwebhook)
Payload Schema
The transaction webhook uses a unified payload structure that works for all transaction types and currencies:
Payload Fields
Core Fields
Currency and Amount Fields
Party Information
Sender and Recipient Fields
The sender and recipient objects contain party details. Fields are included based on availability and transaction type:
CAD Interac payout instruction
For CAD Interac payouts to non-autodeposit beneficiaries, the provider returns a security question and answer asynchronously. When available, the outbound transaction webhook includes:
This object is omitted for:
- Non-CAD transactions (NGN, USD, EUR, GBP, etc.)
- CAD autodeposit Interac recipients
- CAD Interac payouts before the provider returns question/answer (e.g. immediately after accept)
Treat answer as confidential — share only with the intended beneficiary.
You may receive an additional transaction webhook while the payout is still PROCESSING (before the final COMPLETED or FAILED webhook) when these credentials become available.
Transaction Types
DEPOSIT
A deposit transaction represents funds being sent from an external party to your user.
- Sender: External party (may include payment sender name, email, or account number)
- Recipient: Your user (may include beneficiary account details if deposit is to a beneficiary account)
Example:
WITHDRAWAL
A withdrawal transaction represents funds being sent from your user to an external beneficiary.
- Sender: Your user
- Recipient: External beneficiary
Example:
EXCHANGE
An exchange transaction represents currency conversion within your user's account.
- Sender: Your user
- Recipient: Your user (same user, different currency)
Example:
DIRECT_EXCHANGE
A direct exchange transaction represents a deposit that is immediately converted to a different currency.
- Sender: External party (deposit sender)
- Recipient: Your user (in target currency)
Example:
TRANSFER
A transfer transaction represents funds being sent from your user to another user or beneficiary.
- Sender: Your user
- Recipient: Another user or beneficiary
Example:
Transaction Status Values
Example Payloads
Example 1: Completed Deposit
Example 2: Failed Withdrawal
Example 3: CAD Interac payout — security credentials (PROCESSING)
Sent when a CAD Interac payout targets a non-autodeposit beneficiary and the provider returns security question/answer. Status is still PROCESSING; a later webhook will carry COMPLETED or FAILED.
Example 4: Processing Exchange
Important Notes
-
Status Changes: This webhook is sent whenever a transaction status changes. You may receive multiple webhooks for the same transaction as it progresses through different statuses.
-
Idempotency: Implement idempotency handling in your webhook receiver. Use
transaction_idplusstatus(and whetherinterac_payout_instructionis present) to deduplicate events. CAD Interac payouts may deliver onePROCESSINGwebhook with credentials and a laterCOMPLETEDorFAILEDwebhook for the same transaction. -
Party Information: The
senderandrecipientfields are populated based on the transaction type. Some fields may be omitted if the information is not available. -
Exchange Rate: The
exchange_ratefield is only included for cross-currency transactions. For same-currency transactions (e.g., CAD to CAD), this field is omitted. -
Fees: The
feeandfee_currencyfields are omitted if there are no fees associated with the transaction. -
CAD Interac payout instruction:
interac_payout_instructionis omitted from the JSON payload unlesstarget_currencyisCADand payout security credentials are available. It is not included on accept-quote responses — only on the outbound transaction webhook. -
Webhook Security: This webhook uses the same security mechanism as other business webhooks:
- Signed with HMAC-SHA256 using your API key's secret
- Includes
X-Transfaar-Signatureheader for verification - Same retry logic applies (up to 10 attempts with exponential backoff, only retries if response is not 200 OK)