Smart Bank Transfers
The SMART_BANK_TRANSFER method enables real-time or delayed account-to-account (A2A) payments through domestic and international banking rails. It is widely used for:
- Push payments and invoice settlements
- Bank reference-based voucher payments
- Online banking integrations (e.g., iDEAL, POLi, FPX)
The Smart APM engine automatically routes each request to the most suitable provider based on the user’s region, bank account details, and merchant configuration, ensuring seamless local and cross-border bank transfers.
Supported Bank Transfer Methods
| Method | Markets Supported | Notes |
|---|---|---|
| iDEAL | Netherlands | Real-time payments in EUR only. |
| Sofort / Klarna Pay Now | Germany, Austria, Switzerland, EU-wide | Redirect-based flow with near-instant bank transfer. |
| giropay | Germany | Bank login via ELV debit system. |
| EPS | Austria | E-banking integration with Austrian banks. |
| Bancontact / MisterCash | Belgium | Domestic Belgian bank transfer network. |
| MyBank | Italy | Push transfers through Italian banks. |
| Trustly | EU & Nordics (SE, FI, etc.) | Instant account-to-account transfers across Europe. |
| SEPA Direct Debit | EU-wide | Debits user accounts with consent; for recurring billing. |
| Latvian, Estonian, Lithuanian Banks | Baltics | Includes Luminor, SEB, Revolut, Citadele. |
| MULTIBANCO | Portugal | Reference code-based ATM and online banking payments. |
| FPX | Malaysia | Real-time bank payments across Malaysian banks. |
| POLi | Australia, New Zealand | Redirect flow with secure bank login. |
| PSE | Colombia | Bank-linked online checkout. |
| SPEI | Mexico | Real-time domestic bank transfers. |
| PayU / Przelewy24 / BLIK | Poland | Includes BLIK instant mobile codes. |
| Qiwi | Russia / CIS | Supports combined bank transfer and wallet payments. |
| Bradesco / Santander / Itaú | Brazil | Local Brazilian bank transfer rails. |
| Interac / EFT (Canada) | Canada | Bank transfer with confirmation and optional vaulting. |
| ACH / RTP / FedNow | United States | Real-time and batch processing via US bank networks. |
| UK Open Banking (AmEx / Nuvei) | United Kingdom | Open banking routing; session token required. |
Request Payload: SmartBankTransferPayload
SmartBankTransferPayload| Field | Type | Required? | Description |
|---|---|---|---|
paymentMethod | ApmMethod | Yes (default) | Always set to SMART_BANK_TRANSFER. |
paymentType | ApmFlowType | Yes (default) | Always set to BANK_TRANSFER. |
accountHolderName | String? | Yes | Full name of the account owner. |
personalId | String? | No | National ID or tax number if required by local banking schemes. |
bankAccountType | String? | No | Account type (e.g., "checking", "savings"). |
accountNumber | String? | Region-specific | Domestic bank account number (mandatory in many regions). |
accountHolderPhoneNumber | String? | No | Contact phone number linked to the bank account. |
iban | String? | EU-only | Required for SEPA/EU-based transfers. |
bic | String? | EU-only | Bank Identifier Code, usually required with IBAN. |
swiftCode | String? | No | SWIFT code for international routing. |
routingNumber | String? | Region-specific | Routing number (e.g., ABA in the US, Canadian routing). |
sortCode | String? | UK-only | 6-digit UK-specific bank sort code. |
institutionNumber | String? | Canada | Institution code for Canadian banks. |
transitNumber | String? | Canada | Transit branch code for Canadian banks. |
bankCode | String? | No | Generic bank identifier for certain countries. |
branchCode | String? | No | Branch-level routing code. |
bankCleaningSystemId | String? | No | Clearing system ID used in some domestic bank networks. |
bankName | String? | No | Name of the beneficiary’s bank. |
bankCity | String? | No | City where the bank branch is located. |
Response Payload: SmartBankTransferResponseData
SmartBankTransferResponseData| Field | Type | Required? | Description |
|---|---|---|---|
paymentMethod | ApmMethod | Yes | Always returns SMART_BANK_TRANSFER. |
paymentType | ApmFlowType | Yes | Always returns BANK_TRANSFER. |
redirectUrl | String? | Optional | URL redirecting the user to their bank’s login or confirmation page. |
iframeUrl | String? | Optional | Embedded iframe URL for inline bank transfer checkout (if supported). |
providerTransactionId | String | Yes | Unique transaction reference from the payment provider. |
accountHolderName | String? | Optional | Name of the bank account holder making the transfer. |
maskedAccountNumber | String? | Optional | Masked representation of the account number for secure display/logging. |
branchCode | String? | Optional | Bank branch-specific code used in routing. |
bankCode | String? | Optional | Provider-specific bank identifier. |
iban | String? | Optional | International Bank Account Number used in EU and international transfers. |
bic | String? | Optional | Bank Identifier Code for EU transactions. |
routingNumber | String? | Optional | ABA or Fedwire routing number for US banks. |
sortCode | String? | Optional | UK-specific 6-digit sort code. |
swiftCode | String? | Optional | Returned SWIFT code for cross-border transfers. |
accountNumber | String? | Optional | Full or partially masked account number returned in the response. |
institutionNumber | String? | Optional | Institution code for Canadian banks. |
transitNumber | String? | Optional | Transit branch code for Canadian banks. |
bankName | String? | Optional | Name of the bank used for the transaction. |
bankCity | String? | Optional | City location of the bank branch. |
country | String? | Optional | ISO country code of the bank. |
bankAccountType | String? | Optional | Type of the bank account (e.g., "checking", "savings"). |
bankCleaningSystemId | String? | Optional | Identifier for domestic bank clearing systems. |
securityQuestion | String? | Optional | Challenge question required for some schemes (e.g., POLi or Interac). |
securityAnswer | String? | Optional | Answer to the security challenge question. |
bankMetadata | Map<String, String>? | Optional | Additional metadata from the provider for reconciliation or reporting. |
Best Practices
- Regional Fields: Use
iban+bicfor EU payments,routingNumber+accountNumberfor US/Canada, andsortCodefor UK transfers. - Reconciliation: Store
providerTransactionIdandbankMetadatafor reporting and dispute resolution. - Validation: Perform format validation (e.g., IBAN checksum, SWIFT length) before submitting requests.
- Security Prompts: Only request
securityQuestionandsecurityAnswerwhen explicitly required by the bank or payment scheme. - User Confirmation: Display
bankName,bankCity, andcountryin your checkout UI for user verification.
Updated 8 days ago
