---
title: "Create a first party bank transfer payout"
method: POST
path: "/{customer_profile_id}/withdrawals"
---

# Create a first party bank transfer payout

`POST /{customer_profile_id}/withdrawals`

[Available in Production/Sandbox environment] Send funds back to your user's verified bank account

## Path parameters

- `customer_profile_id` string, required

## Headers

- `X-XFERS-APP-API-KEY` string, required
- `X-PUBLIC-KEY-ID` string
- `X-TIMESTAMP` string
- `X-NONCE` string
- `X-SIGNATURE` string

## Request body

- object
  - `bank_account_id` string, required — Bank Account ID is retrieved from the response of Get a list of customer profile bank accounts API
  - `wallet_source` 'xusd' | 'xsgd' | 'sgd' | 'usd' — Accepts `xsgd`, `xusd`, `sgd` or `usd`
  - `amount` number, float, required — Transaction amount (Positive up to 2 d.p.). For SGD withdrawals, the maximum amount is 200k which is the FAST network limit.<br>Regex: `/^([0-9]*[.])?[0-9]+$/`
  - `idempotency_id` string, required — Unique reference number provided by you to prevent double transaction, this cannot be repeated.<br>Regex: `/^\s*.{1,191}\s*$/`
  - `description` string — Description of this transaction (contract) according to merchant.<br /><br />The following character sets are the only acceptable ones:<br />- Lowercase letters: **a-z**<br />- Uppercase letters: **A-Z**<br />- Numerals: **0-9 **<br />- Special characters: **/ - ? : ( ) . , ' +**<br />- Space character
  - `external_reference` string — External transaction reference which will be seen by the recipient.<br>Regex: `/^\s*.{1,150}\s*$/`
  - `charge_option` string — <strong>Charge Option (`SHA` or `OUR`)</strong><br> Only applicable for withdrawals via SWIFT.<br><br> <strong>SHA (Shared Charges):</strong> You pay our fees; the beneficiary pays the agent/intermediary bank charges.<br> <strong>OUR (All Charges Paid by Sender):</strong> You cover all fees, including agent/intermediary bank charges, so the beneficiary receives the full amount.<br><br> <strong>Note:</strong> Please check with your commercial team to confirm the agreed pricing for both SHA and OUR before deciding which option to use.
  - `purpose_code` string — Regex: `/^[A-Za-z0-9]{1,6}$/`<br><br><strong>Note:</strong> Applicable to SGD payouts (via FAST network) and payments to UAE. Defaults to `OTHR` if omitted. Full list of supported purpose codes can be found [here](https://docs.straitsx.com/docs/remittance-purpose-code).
  - `callback_url` string — Regex: `%r{^(https?://)?(([0-9]{1,3}(\.[0-9]{1,3}){3,5})|(([-\p{L}_0-9]{1,256}\.)+[-\p{L}_]{2,6}))(:[0-9]+)?([/?].*)?$}i`
  - `disbursement_method` string — Accepts `swift` or `meps` or `bank_transfer`<br><br> <strong>Note:</strong><ul><li>`bank_transfer`: Supported only for SGD payouts via the FAST network. This is the default value for SGD.</li><li>`meps`: Available for SGD only.</li><li>`swift`: Available for both SGD and USD. This is the default value for USD.</li></ul>

## Response `200`

200

- union
  - object
    - `withdrawal_request` object
      - `id` string — Payout contract ID.
      - `type` string — Request type.
      - `idempotency_id` string — Idempotency ID for the transaction.
      - `amount` string — Transaction amount.
      - `fees` string — Fees charged for the transaction.
      - `status` string — Transaction status.
      - `account_no` string — Bank account number.
      - `bank_abbrev` string — Bank abbreviation.
      - `failure_reason` string — Reason for failure (if applicable).
      - `arrival` string — Estimated arrival time of the transaction.
      - `currency` string — Transaction currency.
      - `express` string — Transfer method (e.g. `FAST`).
      - `payout_invoice_id` string — Associated payout invoice ID.
      - `wallet_name` string — Wallet from which funds are deducted.
      - `created_at` string — Timestamp when the transaction was created.
      - `external_reference` string — External transaction reference which will be seen by the recipient.
    - `available_balance` number — Available balance after the payout request.
    - `ledger_balance` number — Ledger balance after the payout request.
  - object
    - `withdrawal_request` object
      - `id` string — Payout contract ID.
      - `type` string — Request type.
      - `idempotency_id` string — Idempotency ID for the transaction.
      - `amount` string — Transaction amount.
      - `fees` string — Fees charged for the transaction.
      - `status` string — Transaction status.
      - `account_no` string — Bank account number.
      - `bank_abbrev` string — Bank abbreviation.
      - `failure_reason` string — Reason for failure (if applicable).
      - `arrival` string — Estimated arrival time of the transaction.
      - `currency` string — Transaction currency.
      - `express` string — Transfer method (e.g. `FAST`).
      - `payout_invoice_id` string — Associated payout invoice ID.
      - `wallet_name` string — Wallet from which funds are deducted.
      - `created_at` string — Timestamp when the transaction was created.
      - `bank_account_holder_name` string — Beneficiary bank account holder name.
      - `swift_bic` string — Beneficiary bank SWIFT/BIC code.
      - `beneficiary_address` string — Beneficiary address.
      - `routing_code` unknown
      - `intermediary_swift_bic` unknown
      - `description` string — Description of this transaction (contract) according to merchant.
      - `external_reference` string — External transaction reference which will be seen by the recipient.
    - `available_balance` number — Available balance after the payout request.
    - `ledger_balance` number — Ledger balance after the payout request.

---

[API](https://skmtc.net/straitsx/apis/straitsx-sandbox-base-url.md) · [All operations](https://skmtc.net/straitsx/apis/straitsx-sandbox-base-url/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/straitsx/straitsx-sandbox-base-url/versions/9ceee2969aeb/schema)
