Payment Guide
Guide to receive SGD payments via bank transfer or PayNow and USD payments via SWIFT.
Learn how to receive SGD payments via bank transfer or PayNow and USD payments via SWIFT.
Overview
In order for your users to make payments to you, they will either need to perform a bank transfer (SGD/USD) or a PayNow transfer (SGD only). When the payment reaches us, we check the sender's name against the customer profile's name to ensure the payment is being made by the declared customer. Thereafter, we will credit your StraitsX business account with the funds.
Step 1 — Create Virtual Account or Generate PayNow QR
To accept payment, you can either create a virtual bank account or create a persistent/dynamic PayNow QR
- Virtual Bank Account (SGD/USD): You can create a virtual bank account to obtain bank transfer instructions and display it to your user. This enables your user to add a payee in their bank app and subsequently make the bank transfer.
- SGD Virtual Bank Account: The virtual bank account will be created instantly.
- USD Virtual Bank Account: The virtual bank account will generally take 1 day to be activated and StraitsX will send a callback notification to you via the callback URL indicated on the StraitsX Business Dashboard when the VA status is updated. In certain cases,
- PayNow QR (SGD)
- Persistent PayNow: You can create a persistent PayNow payment method and display the QR code to your user. This enables your user to make multiple PayNow payments into the same QR code. Like virtual bank account, each user can only have one persistent PayNow payment method.
- Dynamic PayNow: You can create a dynamic PayNow payment and display a unique QR code to your user for each separate payment. In this case, you will need to pass in amount and expiry date when calling the endpoint to generate the PayNow QR. After the user make payment to a dynamic PayNow QR, no new payments can be made to it.
- Note: It is important that you remind the users to not modify the reference that is auto-populated after scanning the PayNow QR or the payment will be rejected.
Step 2 — Add callback URL
On a successful completion of a deposit transaction, StraitsX will send a callback notification to you via the callback URL indicated on the StraitsX Business Dashboard.
Add the callback URL on the dashboard to receive a callback when the transaction has been completed.
Step 3a — [Sandbox] Create a mock bank transfer or PayNow
- In the sandbox environment, you can initiate a mock bank transfer or mock PayNow payment to test the payment feature
- 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 — [Production] Make an actual bank transfer or PayNow
Bank Account Verification
Bank accounts will be verified on the first deposit when the sender name from bank matches with the customer profile name.
To make payment, your users can make a bank transfer or scan the PayNow QR via their bank apps. Note that if a payment is less than the transaction fees charged, no amount will be credited to your account.
Step 4 — Confirm payment has been received
Securing your callback
When the payment status is updated, 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=0.01&bank_account_no=3225300696000&created_at=2024-06-03T07%3A28%3A09.908Z¤cy=xsgd&customer_profile_id=customer_profile_6972bb6a-2a5f-48dd-8ea7-2e07c50e94b3&end_to_end_ref=Transfer&fees=0.01&id=contract_d176576dfb1a498ead53d2b5f77e4122&idempotency_id=SUBSCRIPTION_0cd2163dc32dfdb76250db29f58da2ec&merchant_ref=ref_0d1w4m0xepp40&sender_bank=DBS+Bank+Ltd&sender_bank_account_holder_name=JOHN+DOE&sender_bank_account_no=01234567&sender_bank_swift_bic=DBSSSGSGXXX&status=completed&type=Direct+bank+transfer
Parameter Name | Description | Example Value |
---|---|---|
amount | Amount transferred | 0.01 |
bank_account_no | Virtual account number receiving the payment | 3225300696000 |
created_at | Transaction created time | 2024-06-03T07%3A28%3A09.908Z |
currency | Transaction currency | xsgd |
customer_profile_id | Customer profile ID | customer_profile_6972bb6a-2a5f-48dd-8ea7-2e07c50e94b3 |
end_to_end_ref | Sender's transaction remarks | Transfer |
fees | Fees incurred | 0.01 |
id | Contract ID | contract_d176576dfb1a498ead53d2b5f77e4122 |
idempotency_id | Unique reference no | SUBSCRIPTION_0cd2163dc32dfdb76250db29f58da2ec |
merchant_ref | Unique referenceId indicated in Create a virtual bank account API | ref_0d1w4m0xepp40 |
sender_bank | Sender's bank | DBS+Bank+Ltd |
sender_bank_account_holder_name | Sender's name | JOHN+DOE |
sender_bank_account_no | Sender's bank account no | 01234567 |
sender_bank_swift_bic | Sender's bank SWIFT (if available) | DBSSSGSGXXX |
status | Transaction Status: completed/pending | completed |
type | Type of transaction | Direct+bank+transfer |
Summary
![payment_api_flow.png 2184](https://files.readme.io/1c80baf-payment_api_flow.png)
Click to enlarge
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!
Updated about 1 month ago
Learn more about how to send a payout to your user's bank account.