First Party Payout

Overview

Each CP/CP+ will only be allowed to withdraw to a verified customer profile bank account. Payouts in different currencies have different processing time, with SGD being near-instant and USD taking up to 2 business days depending on the beneficiary bank and country. Similar to payments, a webhook callback will be triggered to your system to indicate the transaction status when it's updated.

Sequence Diagram

Processing Payouts

When your user submits a withdrawal request on your platform, create a customer profile withdrawal request via our bank transfer payout endpoint. Withdrawal request can only be made to a verified customer profile bank account. 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.

For payout in USD via SWIFT, there may be request for additional information (RFI) before the payout can be completed due to our internal controls as well as our banking partners' controls. Our team will reach out to you in such scenarios to gather the necessary information and proof before processing the transaction.

ℹ️

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:30 AM",
  "bank_abbrev": "SCB",
  "created_at": "2024-03-12T01:30:48.420Z",
  "currency": "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"
}
{
  "account_no": "434343DSE",
  "amount": 100.0,
  "arrival": "",
  "bank_abbrev": "SWIFT",
  "bank_account_holder_name": "John Doe",
  "beneficiary_address": "Northside 18th, Singapore, Singapore, SG, 8809",
  "created_at": "2025-01-17T08:58:18.807Z",
  "currency": "xusd",
  "description": "sample description",
  "express": "FAST",
  "external_reference": "sample external ref",
  "failure_reason": "",
  "fees": 0.0,
  "id": "contract_b0efcd48df41475babb29dd22664ec29",
  "idempotency_id": "withdrawal_unique_id1231213",
  "intermediary_swift_bic": "",
  "payout_invoice_id": "withdrawal_unique_id1231213",
  "routing_code": "",
  "status": "pending",
  "swift_bic": "ZZZSSGSG",
  "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/xusd xsgd
description Transaction description Only applicable for USD payout
express Legacy field FAST
external_reference External reference if provided
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
intermediary_swift_bic Intermediary SWIFT if provided
payout_invoice_id Same as idempotency_id Test_CR001_6
routing_code Routing code if provided
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