We have just rolled out another exciting new update: the ability to make SGD payouts via PayNow! You can now make SGD payouts to either mobile number, NRIC, UEN or VPA. This is an addition to the current ability of making SGD payouts via bank transfer.

Added the following endpoints:

  • POST /customer_profile/{customer_profile_id}/payouts
  • GET /customer_profile/{customer_profile_id}/payouts/{contract_id}
  • GET /customer_profile/{customer_profile_id}/payouts
  • PUT /sandbox/customer_profile/{customer_profile_id}/payouts/{contract_id}

We have just rolled out an exciting new update: the ability to receive SGD payments via PayNow! This is an addition to the current ability to receive SGD payments via bank transfer, which offers even more convenience to your end users through either persistent or dynamic PayNow. Learn more about PayNow in our Payment Guide.

Added the following endpoints:

  • POST /payment_methods/paynow
  • GET /payment_methods/paynow/{paynow_id}
  • POST /payments/paynow
  • GET /payments/paynow/{paynow_id}
  • POST /sandbox/paynow_simulations
  • GET /customer_profile/{customer_profile_id}/payment_methods
  • POST /blockchain_transfer/withdrawals/ and the relevant callback now returns idempotency_id
  • Webhook attempts have been increased from 5 to 20
  • description field for POST /customer_profile/{customer_profile_id}/withdrawals now only accepts:
    • Lowercase letters: a-z
    • Uppercase letters: A-Z
    • Numerals: 0-9
    • Special characters: / - ? : ( ) . , ' +
    • Space character

  • POST /webhook/{contractId}/resend & POST /webhook/resend - new endpoints that allows you to trigger resending of callback for a single contract or a list of contracts
  • POST /customer_profile/{customer_profile_id}/withdrawals now accepts external_reference - the reference you passed in will be reflected on recipient's statement

Removed redundant field expiresAt from the response from POST a swap transaction & GET swap transaction/list of swap transactions endpoints

4 Apr 24 - Swap API

by Lim Zi Xuan

Swap API is now live! You can now swap between our supported currencies easily via API - refer to our Swap API Guide to learn more!

All of the following changes are now available under v0.2.0 of our API documentation.


Added the following endpoints:

Swap API:

  • GET /swap/pairs
  • POST /swap/quotes
  • GET /swap/quotes/{quoteId}
  • POST /swap/quotes/{quoteId}
  • GET /swap/transactions/{contractId}
  • GET /swap/transactions

Blockchain API:

  • POST /blockchain_transfer/withdrawals/{blockchain}/estimate_network_fee

Modifications to existing endpoints:

GET a payment/list of payments and payment callback:

  • Sender information are now available: sender_bank, sender_bank_account_holder_name, sender_bank_account_no, sender_bank_swift_bic

Other changes:

  • Missing authorisation token error now returns 401 instead of 500

We have just rolled out an exciting new update: the ability to send and receive payments in USD! This enhancement is designed to provide more flexibility and convenience to your end-users. You can now make changes to your API requests to support USD rails on your platform.

Aside from this, we also rolled out the first phase of Blockchain API that supports blockchain transfer out to your whitelisted addresses. To help you understand what you can do with these new blockchain-related endpoints, we have also written a simple Blockchain API guide.

All of the following changes are now available under v0.1.0 of our API documentation.


Added the following endpoints:
PATCH /kyc/customer_profiles/{customer_profile_id}

  • New PATCH endpoint that allows you to update customer profile details. Note that registrationType of an existing customer profile cannot be updated.

GET /kyc/customer_profiles

  • New GET endpoint that allows you to get a list of all customer profiles

GET /api/v3/customer_profile/{customer_profile_id}/payment_methods

  • New GET endpoint that allows you to get the list of virtual accounts created for a particular customer profile

PUT /sandbox/customer_profile/{customer_profile_id}/virtual_bank_accounts/{virtual_bank_account_id}

  • New PUT endpoint in Sandbox that allows you to update the status of the virtual account created (note: this is only applicable to USD VA)

GET /customer_profile/deposits

  • New GET endpoint that allows you to get a list of all customer profile deposits

GET /blockchain_transfer/blockchains

  • New GET endpoint that shows you a list of supported blockchains for the various tokens on StraitsX

GET /blockchain_transfer/addresses

  • New GET endpoint that returns a list of blockchain wallet addresses you have added via the StraitsX dashboard

POST /blockchain_transfer/withdrawals

  • New POST endpoint that allows you to make a blockchain transfer out of XSGD or USDC to your whitelisted address

GET /merchant/account-balance

  • New GET endpoint that supports getting balances of both XSGD and USDC
  • Updated version of Get account balance v1 - v1 will continue to be supported for now and deprecation notice will be provided in due course

Modifications to existing endpoints:

POST /kyc/customer_profiles

  • The following parameters are now optional:
    • countryOfResidence
    • dateOfBirth
    • nationality
  • Additional parameters are now accepted to enable customer profile for USD capability:
    • registrationIdType
    • registrationIdCountry
    • address
    • placeofBiz
    • placeofBizCountry
    • countryOfIncorporation
    • dateOfIncorporation
  • Other modifications:
    • registrationId no longer allows special characters - only alphanumeric characters are accepted

POST /payment_methods/virtual_bank_accounts

  • The following parameter is now optional:
    • bankShortCode
  • Additional parameter now accepted:
    • currency- defaulted to SGD
  • Added status for USD VA's response
  • Added callback for USD virtual bank account's status update

GET /payment_methods/virtual_bank_accounts/{virtual_account_id}

  • Returns status, currency, and a more detailed instructions for USD VA

POST /customer_profile/{customer_profile_id}/withdrawals

  • Added optional parameter wallet_source that takes usdc as value for USD payout via SWIFT
  • Included swift_bic, bank_account_holder_name and beneficiary_address in the response for USD payout
  • Callback modified for USD payout

GET /customer_profile/{customer_profile_id}/withdrawals/{withdrawal_id} & GET /customer_profile/{customer_profile_id}/withdrawals

  • Included swift_bic, bank_account_holder_name and beneficiary_address in the response for USD payout

POST /sandbox/customer_profile/:unique_id/bank_transfer_simulations

  • Included currency to support bank transfer simulation for both SGD and USD
  • destination_bank_short_code is now no longer required

GET /customer_profile/{customer_profile_id}/deposits/{deposit_id} & GET /customer_profile/{customer_profile_id}/deposits

  • Included sender_bank, sender_bank_account_no, sender_bank_account_holder_name, and sender_bank_swift_bic in the response and callback
  • Allow new query params status and currency

POST /customer_profile/{customer_profile_id}/bank_accounts &GET /customer_profile/{customer_profile_id}/bank_accounts

  • Included swift_code in the response