Bank Account Callbacks
StraitsX sends callbacks to your registered URL when bank accounts are created or their verification status changes. This applies to both Customer Profile Bank Accounts (CPBA) and User Bank Accounts (UBA).
When these callback fire
This page covers the following events:
| Event | Description |
|---|---|
cpbaCreated | A new customer profile bank account is created |
cpbaVerificationStatusUpdated | A customer profile bank account verification status changes. Moves from pending → verified or rejected |
ubaCreated | A new user bank account is created |
ubaVerificationStatusUpdated | A user bank account verification status changes. Moves from pending → verified or rejected |
Status values
All bank account events share the same status values:
| Status | Meaning |
|---|---|
pending | Bank account submitted, verification in progress |
verified | Bank account successfully verified — can be used for payouts |
rejected | Bank account verification failed — cannot be used |
Bank account lifecycle
All bank accounts (CPBA and UBA) follow the same lifecycle:
- Bank account is created → you receive a
cpbaCreatedorubaCreatedcallback withverification_status: "pending" - Verification completes → you receive a
cpbaVerificationStatusUpdatedorubaVerificationStatusUpdatedcallback with the final status
Payload structure
{
"id": 1,
"account_no": "26862672670",
"account_holder_name": "John Doe",
"bank_abbrev": "BCA",
"disabled": false,
"verification_status": "pending",
"bank_account_proof": "bankAccountProofPlaceholder.png",
"updated_at": "2026-02-03T10:13:25.237Z",
"payment_reason": "Invoice #12345"
}{
"id": 1,
"account_no": "26862672670",
"account_holder_name": "John Doe",
"bank_abbrev": "BCA",
"disabled": false,
"verification_status": "verified",
"bank_account_proof": "bankAccountProofPlaceholder.png",
"updated_at": "2026-02-03T10:13:25.237Z",
"payment_reason": "Invoice #12345"
}{
"id": 67890,
"account_no": "1234567890",
"account_holder_name": "John Doe",
"bank_abbrev": "DBS",
"disabled": false,
"verification_status": "pending",
"bank_account_proof": "https://example.com/bank-proof.png",
"swift_bic": "DBSSSGSG",
"updated_at": "2026-05-11T10:00:00.000+08:00"
}{
"id": 67890,
"account_no": "1234567890",
"account_holder_name": "John Doe",
"bank_abbrev": "DBS",
"disabled": false,
"verification_status": "verified",
"bank_account_proof": "https://example.com/bank-proof.png",
"swift_bic": "DBSSSGSG",
"updated_at": "2026-05-11T14:30:00.000+08:00"
}Field reference
All four events use the same field structure:
| Field | Scope | Type | Description |
|---|---|---|---|
id | Common fields | String | Bank account record ID. |
account_no | Common fields | String | Bank account number. |
account_holder_name | Common fields | String | Name of the account holder. |
bank_abbrev | Common fields | String | Bank short code. |
disabled | Common fields | String | Whether the bank account has been deleted/disabled. |
verification_status | Common fields | String | Bank account verification status. |
bank_account_proof | Common fields | String | URL of the uploaded bank account proof document. |
swift_bic | Common fields | String | SWIFT/BIC code (if applicable). |
intermediary_swift_bic | Common fields | String | Intermediary bank SWIFT code (if applicable). |
routing_code | Common fields | String | Bank routing code (if applicable). |
updated_at | Common fields | String | ISO 8601 timestamp when the status last changed. |
payment_reason | CPBA only | String | Purpose of payment (if applicable). |
Optional fields:
Fields like
swift_bic,intermediary_swift_bic,routing_code, andpayment_reasonare only present when applicable (e.g., for international bank accounts). They may be omitted entirely from the payload if not relevant.
Updated 2 months ago
Did this page help you?

