Bank Transfer Payments Guide (SG)

Customer Profile API

πŸ“—

Learn how to use the Payment API to enable Singapore 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 β†’

UI example of bank transfer instructionsUI example of bank transfer instructions

UI example of bank transfer instructions

Payment Type

From

To

Bank Transfer Payment

User's bank account

Business Account

curl --location --request POST 'https://sandbox.xfers.io/api/v3/payment_methods/virtual_bank_accounts' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-XFERS-APP-API-KEY: t4wsjxpwtk6o9tz20j4baj4ifwibin100py1vrvfsqh' \
--form 'data[attributes][referenceId]="hello_world"' \
--form 'data[attributes][bankShortCode]="CIMB"' \
--form 'data[relationships][customerProfile][data][id]="customer_profile_08d5ffe5-8a02-4dc2-aabb-9057b8ab3c65"'
curl --location --request POST 'https://www.xfers.io/api/v3/payment_methods/virtual_bank_accounts' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-XFERS-APP-API-KEY: {{APP_API_KEY}}' \
--form 'data[attributes][referenceId]="{{MERCHANT_REF}}"' \
--form 'data[attributes][bankShortCode]="CIMB"' \
--form 'data[relationships][customerProfile][data][id]="{{CP_ID}}"'
  • To provide payee details for your user, initiate a request to create a virtual bank account 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 modeAdding a callback URL in sandbox mode

Adding a callback URL in sandbox mode

πŸ“˜

Add the callback URL on the dashboard to receive a callback when the transaction has been completed.

curl --location --request PUT 'https://sandbox.xfers.io/api/v3/sandbox/customer_profile/customer_profile_08d5ffe5-8a02-4dc2-aabb-9057b8ab3c65/bank_accounts/?verification_status=verified' \
--header 'X-XFERS-APP-API-KEY: t4wsjxpwtk6o9tz20j4baj4ifwibin100py1vrvfsqh'
  • 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)Adding a payee to make a fund transfer (Last Updated: 13 Mar 2022)

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 verified using the HMAC-SHA256 algorithm.

Learn more about how to secure your callback β†’

Callback Response
amount=89.35&bank_account_no=0393123432&created_at=2022-03-09T11%3A56%3A17%2B08%3A00&fees=0.49&id=contract_7mowjipsez3ryhs9auko03eajihpbeop&idempotency_id=ETA2022030911561153700&merchant_ref=ref_0d1w4m0xepp40&status=completed&type=Direct+bank+transfer

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

Transaction Status: completed/pending/cancelled

completed

type

Type of transaction

Direct+bank+transfer

πŸ‘

You may use the merchant_ref parameter to match the incoming bank transfers to verify if you have received the correct amount.

Summary

Click to enlargeClick to enlarge

Click to enlarge

Next step β€” Sending a payout

Learn more about how to send a payout to your user's bank account.


Try it out!

Getting started with StraitsX APIs is easy. Our business development and integration teams will be with you every step of the way. If you have any questions or would like to connect with our team, please do so via Support!


Did this page help you?