Third Party Payout
Overview
Payouts can be made to a payout recipient created. Different recipient types and countries will have different data requirements for a payout recipient to be valid. Similar to payments, a webhook callback will be triggered to your system to indicate the transaction status when it's updated.
Sequence Diagram
Payout Recipients
In order to create a payout, you first need to provide your users with the ability to add and manage recipients on your platform. When your user adds a recipient on your platform, call our create payout recipient endpoint. Depending on the recipient country and disbursement method, the required fields for the payout recipient are different - for bank transfer recipient, bankAccountNo
and bankShortCode
are required; for PayNow recipient, proxyType
and proxyValue
are required.
Processing Payouts
Once a recipient is added, your user should submit a payout request on your platform to the selected recipient. Create a customer profile payout request via our third party payout endpoint. A contract (i.e. transaction) will be created in pending
status and returned in the response. Upon processing the payout, StraitsX will send a callback notification to you via the callback URL indicated on the StraitsX Business Dashboard. Learn more about callback configuration.
Note: At the moment, third party payout in USD is not supported.
Sandbox Testing
To test your integration, you could initiate a withdrawal in sandbox and mock its status. Callback will also be sent in the sandbox environment.
Webhooks
Webhook callbacks use HTTP POST
request with the event in string format and expects 200 OK in the response. Each failed webhook callback is retried up to 20 times with a 5-minute interval. If you need to retrigger callback for a single contract or a list of contracts, you can do so via our callback event endpoints.
For payouts, a sample webhook callback looks like the following:
account_no=12345678&amount=40.5&arrival=12+Mar+2024+-++9%3A30+AM&bank_abbrev=SCB&created_at=2024-03-12T01%3A30%3A48.420Z¤cy=xsgd&express=FAST&failure_reason=&fees=0.5&id=contract_1205f142caa14d1f9e5deabfb64ec1df&idempotency_id=Test_CR001_6&payout_invoice_id=Test_CR001_6&status=completed&type=Withdrawal+on+behalf&wallet_name=Digital+Goods
Parameter | Description | Sample Value | Remarks |
---|---|---|---|
account_no | Recipient's bank account number | 12345678 | |
amount | Amount transferred | 40.5 | |
arrival | Time of confirmation | 12+Mar+2024+-++9%3A30+AM | |
bank_abbrev | Recipient's bank abbreviation | SCB | |
bank_account_holder_name | Recipient's name | Jane+Doe | Only applicable for USD payout |
beneficiary_address | Recipient's address | ABC+Crescent%2C+Singapore%2C+Singapore%2C+SG%2C+123456 | Only applicable for USD payout |
created_at | Datetime of creation | 2024-03-12T01%3A30%3A48.420Z | |
currency | Currency of transaction: xsgd/usdc | xsgd | |
description | Transaction description | Only applicable for USD payout | |
express | Legacy field | FAST | |
failure_reason | Reason for transaction failure | ||
fees | Transaction fee | 0.5 | |
id | Transaction id | contract_1205f142caa14d1f9e5deabfb64ec1df | |
idempotency_id | Unique idempotency id provided when triggering the payout | Test_CR001_6 | |
payout_invoice_id | Same as idempotency_id | Test_CR001_6 | |
status | Transaction status: completed/pending/cancelled | completed | |
swift_bic | SWIFT of the recipient's bank | DBSSSGSGXXX | Only applicable for USD payout |
type | Type of transaction | Withdrawal+on+behalf | |
wallet_name | Wallet name | Digital+Goods |
Updated about 1 month ago