Airwallex logo

Customer Balance Transactions

Copy for LLMView as Markdown

A Customer Balance Transaction records a change in the balance of funds that Airwallex holds and returns on behalf of your customer. It is used to notify you when bank transfer funds are received or reversed, including in exceptional scenarios such as overpayment, underpayment, or unmatched funding.

For bank transfer payments , the payment instructions are displayed to the shopper, who then manually transfers the funds through their own bank. Because the transfer is completed outside of the Airwallex checkout flow, the received funds may not always match the original PaymentIntent or PaymentAttempt. Customer Balance Transactions give you clear visibility into every received fund, its status, and any reversal.

A Customer Balance Transaction has one of the following types:

  1. bank_transfer - Adds bank transfer funds to the customer balance.
  2. bank_transfer_reversal - Reverses a previous bank transfer transaction and deducts the corresponding amount from the customer balance.
  3. applied_to_payment - Applies bank transfer funds from the customer balance to a payment, reducing the available customer balance.

Airwallex emits customer_balance_transaction webhook events as funds progress. Refer to the product documentation for the full list of events and their payloads.

This resource applies to bank transfer payments only.

Endpoints
GET /api/v1/pa/customer_balance_transactions/{id}

Retrieve a Customer Balance Transaction

GET /api/v1/pa/customer_balance_transactions/{id}

Retrieve a Customer Balance Transaction by unique ID.

Path parameters
idrequiredstring

Customer Balance Transaction unique ID.

Response body - 200 OK
applied_to_paymentobject

Details of the funds applied to a payment. Present when type is applied_to_payment. If the funds are applied to several payments, a separate Customer Balance Transaction is created for each payment.

applied_to_payment.amountnumber

Matched payment amount.

applied_to_payment.currencystring

Matched payment currency.

applied_to_payment.customer_balance_transaction_idstring

ID of the Customer Balance Transaction the funds were applied from.

applied_to_payment.payment_attempt_idstring

PaymentAttempt ID that the funds were applied to.

applied_to_payment.payment_intent_amountnumber

Original amount of the PaymentIntent.

applied_to_payment.payment_intent_idstring

PaymentIntent ID that the funds were applied to.

bank_transferobject

Details of the bank transfer received. Present when type is bank_transfer.

bank_transfer.amountnumber

The bank transfer amount received from the customer. This may be more or less than the expected payment amount, for example in overpayment or underpayment scenarios.

bank_transfer.bank_transfer_instructionsobject

Bank transfer instructions provided by Airwallex for the customer to transfer the funds to.

bank_transfer.bank_transfer_instructions.account_namestring

Account holder name of the Airwallex bank account the customer transfers the funds to.

bank_transfer.bank_transfer_instructions.account_numberstring

Account number of the Airwallex bank account the customer transfers the funds to.

bank_transfer.bank_transfer_instructions.bank_namestring

Bank name of the Airwallex bank account the customer transfers the funds to.

bank_transfer.currencystring

Payment currency in 3-letter ISO 4217 currency code. Please refer to supported currencies .

bank_transfer.payerobject

Details of the bank transfer payer.

bank_transfer.payer.account_namestring

Payer bank account name.

bank_transfer.payer.account_numberstring

Payer bank account number.

bank_transfer.payer.bank_namestring

Payer bank name.

bank_transfer.payer.customer_idstring

Associated Customer ID if the payer is a registered customer.

bank_transfer.payer.payer_emailstring

Payer email address.

bank_transfer.payer.payer_namestring

Payer name.

bank_transfer.received_atstring

Time when the bank transfer funds were received.

bank_transfer.statusstring

Status of the bank transfer. One of:

  • RECEIVED - The funds have been received.
  • PENDING_REVIEW - The bank transfer requires review before it can be accepted. Airwallex will send you a Request for Information (RFI) — you must respond to the RFI for the fund to be applied to the payment. Review may take several days.
  • FAILED - The bank transfer was rejected during review or by the bank.
  • SUCCEEDED - The bank transfer has been accepted.
RECEIVED
PENDING_REVIEW
FAILED
SUCCEEDED
bank_transfer_reversalobject

Details of the bank transfer reversal. Present when type is bank_transfer_reversal.

bank_transfer_reversal.amountnumber

Reversal amount.

bank_transfer_reversal.beneficiaryobject

The beneficiary of the bank transfer reversal, that is, the payer who receives the reversed funds.

bank_transfer_reversal.beneficiary.account_namestring

Beneficiary bank account holder name.

bank_transfer_reversal.beneficiary.account_numberstring

Beneficiary bank account number. Either the account number or the IBAN is provided.

bank_transfer_reversal.beneficiary.bank_namestring

Bank name of the beneficiary's bank account.

bank_transfer_reversal.currencystring

Payment currency in 3-letter ISO 4217 currency code. Please refer to supported currencies .

bank_transfer_reversal.customer_balance_transaction_idstring

ID of the Customer Balance Transaction (the original bank transfer fund record) being reversed.

bank_transfer_reversal.failure_codestring

The failure code for the bank transfer reversal. Returned only when the reversal failed.

bank_transfer_reversal.failure_reasonstring

The reason the bank transfer reversal failed. Returned only when the reversal failed.

bank_transfer_reversal.payment_attempt_idstring

Associated PaymentAttempt ID.

bank_transfer_reversal.payment_intent_idstring

Associated PaymentIntent ID.

bank_transfer_reversal.refund_idstring

Associated Refund ID.

bank_transfer_reversal.remitterobject

The remitting bank account that Airwallex sends the reversal from.

bank_transfer_reversal.remitter.account_namestring

Name on the remitting bank account that Airwallex sends the reversal from.

bank_transfer_reversal.remitter.account_numberstring

Number of the remitting bank account that Airwallex sends the reversal from.

bank_transfer_reversal.remitter.bank_referencestring

Reference that the merchant and payer can use to track bank transfer reversal progress with the payer's bank.

bank_transfer_reversal.reversal_feenumber

Fee charged for this bank transfer reversal.

bank_transfer_reversal.reversal_reasonstring

The reason the bank transfer reversal occurred.

bank_transfer_reversal.statusstring

Status of the bank transfer reversal. One of:

  • CREATED - The reversal has been created.
  • PENDING_REVIEW - The reversal requires review before it can proceed. Airwallex will send you a Request for Information (RFI) — you must respond to the RFI for the funds to be returned to the payer. Review may take several days.
  • FAILED - The reversal failed and the funds were not returned to the payer. It was rejected during Airwallex review or by the bank. See failure_reason and failure_code for details.
  • SUCCEEDED - The reversal has succeeded.
CREATED
PENDING_REVIEW
FAILED
SUCCEEDED
created_atstring

Time at which the Customer Balance Transaction was created.

idstring

Unique ID for the Customer Balance Transaction.

typestring

The transaction type. One of:

  • bank_transfer - Adds bank transfer funds to the customer balance.
  • bank_transfer_reversal - Reverses a previous bank transfer transaction and deducts the corresponding amount from the customer balance.
  • applied_to_payment - Applies bank transfer funds from the customer balance to a payment, reducing the available customer balance. If the funds are applied to several payments, a separate Customer Balance Transaction is created for each payment.
bank_transfer
bank_transfer_reversal
applied_to_payment
updated_atstring

Time at which the Customer Balance Transaction was last updated or operated on.

Errors
Error statusDescription
400

Bad Request. Possible error codes: validation_error

401

Unauthorized. Possible error codes: unauthorized

403

Forbidden

404

Not Found. Possible error codes: not_found(invalid url), resource_not_found

500

Server Error. Possible error codes: internal_error

GET /api/v1/pa/customer_balance_transactions/{id}
$curl --request GET \
> --url 'https://api.sandbox.airwallex.com/api/v1/pa/customer_balance_transactions/cbt_sgst8pzlnhkkf18vp0a' \
> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
> --header 'Content-Type: application/json'
Response (200 OK)
1{
2 "id": "cbt_sgst8pzlnhkkf18vp0a",
3 "type": "bank_transfer",
4 "created_at": "2024-06-01T10:30:05+00:00",
5 "updated_at": "2024-06-01T10:30:05+00:00",
6 "bank_transfer": {
7 "amount": 100,
8 "currency": "USD",
9 "received_at": "2024-06-01T10:30:00+00:00",
10 "status": "RECEIVED",
11 "payer": {
12 "customer_id": "cus_sgstcq8tphkfma1574m",
13 "payer_name": "John Smith",
14 "payer_email": "[email protected]",
15 "bank_name": "Bank of America",
16 "account_name": "John Smith Checking Account",
17 "account_number": "1234567890"
18 },
19 "bank_transfer_instructions": {
20 "bank_name": "Bank of America",
21 "account_name": "Merchant Settlement Account",
22 "account_number": "9876543210"
23 }
24 }
25}
Was this section helpful?