Bank Transfer Payments Guide
Connect API
Learn how to use the Payment API to enable bank transfer deposits from your user.
Overview
Each connected user on your platform will be assigned a unique virtual account number for bank transfer payments. We check the sender's name against the user's name to ensure the payment is being made to the correct virtual account. This creates a secure and seamless experience for your users and makes it easy for your team to reconcile these transactions.
Learn more about virtual accounts β
Step 1 β Display bank transfer instructions

UI example of bank transfer instructions
curl --location --request GET 'https://sandbox.xfers.io/api/v3/user/transfer_info' \
--header 'X-XFERS-USER-API-KEY: TTMXHKWz8azyCIoswPNtrcNStc6P3rimI6nvXFRiqwY' \
--form 'merchant_ref="hello_world"'
curl --location --request GET 'https://www.xfers.io/api/v3/user/transfer_info' \
--header 'X-XFERS-USER-API-KEY: {{USER_API_KEY}}' \
--form 'merchant_ref="{{merchant_ref}}"'
- To provide payee details for your user, initiate a request to display bank transfer instructions.
- This enables your user to add a payee in their bank app using the fields: bank name, recipient name and bank account number.
Step 2 β Add callback URL
On a successful completion of a deposit transaction, StraitsX will send a callback notification to you via a callback URL indicated on the StraitsX Business Dashboard.

Adding a callback URL in sandbox mode
Add the callback URL on the dashboard to receive callbacks when the transaction has been completed.
Step 3a β Make a mock bank transfer (Sandbox)
curl --location --request POST 'https://sandbox.xfers.io/api/v3/sandbox/user/bank_transfer_simulations?destination_bank_account_no=0732386258984&destination_bank_short_code=CIMB&amount=1234&source_bank_account_holder_name
=John Ng' \
--header 'X-XFERS-USER-API-KEY: TTMXHKWz8azyCIoswPNtrcNStc6P3rimI6nvXFRiqwY'
- In the sandbox environment, you can make a mock bank transfer by initiating a mock bank transfer payment.
- Input a name under
source_bank_account_holder_name
to test if the sender name is matched correctly to your user's name.
Step 3b β Make a bank transfer (Production)
To make a bank transfer payment, your users will need to deposit funds via their personal bank.
Add payee details example

Adding a payee to make a fund transfer (Last Updated: 13 Mar 2022)
For a full list of bank accounts supported by StraitsX, click here.
Step 4 β Confirm deposit has been received
Securing your callback
When the payment is received, we will send a callback to the URL indicated on the StraitsX Business Dashboard. The callback can be decoded using the HMAC-SHA256
algorithm to display the Request Body.
Learn more about how to secure your callback β
Request Body Parameters
Parameter Name | Description | Example Value |
---|---|---|
amount | Amount transferred | 89.35 |
bank_account_no | FAST bank account number | 0393123432 |
created_at | Time of creation | 2022-03-09T11%3A56%3A17%2B08%3A00 |
fees | Fees incurred | 0.49 |
id | Contract ID | contract_7mowjipsez3ryhs9auko03eajihpbeop |
idempotency_id | Unique ref no to prevent double transaction | ETA2022030911561153700 |
merchant_ref | Unique ID indicated in Get bank transfer instructions API | ref_0d1w4m0xepp40 |
status | Status of the transaction: completed/pending/cancelled | completed |
type | Type of transaction | Direct+bank+transfer |
You may use the
merchant_ref
parameter to match with the incoming bank transfers from your users to check if the amount received was correct.
Updated 5 months ago