---
title: "Create withdrawal request"
method: POST
path: "/withdrawals/requests"
tags: ["Withdrawals"]
---

# Create withdrawal request

`POST /withdrawals/requests`

Creates new withdrawal requests to be settled. Withdrawal requests created through the API go directly into an APPROVED state. 
To retrieve withdrawal account IDs use the `GET /withdrawals/digital_asset_addresses` and `GET /withdrawals/fiat_accounts` endpoints.

## Headers

- `X-SCX-SIGNED` string, required
- `X-SCX-TIMESTAMP` string, required

## Request body

- union
  - PostWithdrawalRequestsBody
    - `client_withdrawal_request_id` string — A unique identifier for the withdrawal, generally produced by the Platform on which the trade was executed Note: this must be unique, per platform, per 24 hour period
    - `withdrawal_account_id` string — The whitelisted withdrawal account or address to withdraw funds to Note: only one of withdrawal_account_id, address or account{} can be submitted per withdrawal, but zerohash will always respond with withdrawal_account_id
    - `address` string — The whitelisted withdrawal account or address to withdraw funds to Note: only one of withdrawal_account_id, address or account{} can be submitted per withdrawal, but zerohash will always respond with withdrawal_account_id
    - `account` object — The whitelisted withdrawal account or address to withdraw funds to Note: only one of withdrawal_account_id, address or account{} can be submitted per withdrawal, but zerohash will always respond with withdrawal_account_id
      - `name` string — The nickname given to the withdrawal account Note: zerohash will append the last 4 digits of the account number to this when saving it
      - `limit` number — The limit applied to the account on a per-withdrawal basis
      - `type` string — The type of account: REAL_TIME_FIAT for 24/7 USD withdrawals, DOMESTIC_FIAT for US wires or INTERNATIONAL_FIAT for international wires
      - `beneficiary_name` string — The owner of the account at the withdrawal destination
      - `account_number` string — The unique IBAN or account number for the final withdrawal destination
      - `bank_name` string — The name of the destination financial institution
      - `routing_number` string — For US wires, the ABA routing number identifies the destination financial institution
      - `swift_code` string — SWIFT code, if applicable
      - `recipient_instructions` string — Per-request memo or wire reference for this withdrawal. Overrides the account-level default if provided. An empty string explicitly clears the memo. Omitting this field leaves the account-level value unchanged. Max 255 characters.
      - `intermediary_bank` boolean — Whether or not an intermediary bank is used
      - `intermediary_bank_name` string — Intermediary bank name, if applicable
      - `intermediary_bank_code_type` string — Intermediary bank identifier code type, if applicable Options include SWIFT
      - `intermediary_bank_code` string — Intermediary bank identifier that corresponds to intermediary_bank_code_type, if applicable
      - `intermediary_bank_account_number` string — Intermediary bank IBAN or account number, if applicable
      - `correspondent_bank_name` string — Correspondent bank name, if applicable
      - `correspondent_bank_code_type` string — Correspondent bank identifier code type, if applicable Options include SWIFT
      - `correspondent_bank_code` string — Correspondent bank identifier that corresponds to correspondent_bank_code_type, if applicable
      - `correspondent_bank_account_number` string — Correspondent bank IBAN or account number, if applicable
    - `participant_code` string — The participant code against whom the withdrawal will be made
    - `beneficiary_participant_code` string — The identifier of the participant benefiting from the withdrawal request.
    - `sender_participant_code` string — The identifier of the participant initiating the withdrawal on behalf of `participant_code`. Only applicable when operating on behalf of a third party.
    - `beneficiary_first_name` string — The first name of the participant benefiting from the quote request Only applies to individual beneficiaries. Cannot be used along with business_beneficiary_name. Note: Redundant if beneficiary_participant_code is provided in request
    - `beneficiary_last_name` string — The last name of the participant benefiting from the quote request Only applies to individual beneficiaries. Cannot be used along with business_beneficiary_name. Note: Redundant if beneficiary_participant_code is provided in request
    - `beneficiary_business_name` string — The name of the the business participant benefiting from the quote request Only applies to business beneficiaries. Cannot be used along with first/last_beneficiary_name. Note: Redundant if beneficiary_participant_code is provided in request
    - `account_group` string — The account group to withdraw against, e.g. 00SCXM for the Seed Digital Commodities Market account group
    - `account_label` string — The account label associated with the account
    - `amount` string — The amount to withdraw
    - `asset` 'XRP' | 'XLM' | 'EOS' | 'ADA' | 'ALGO' — The asset code for the withdrawal request, e.g. XRP.
    - `destination_tag` string — The destination tag or memo ID associated with the transaction If the asset is EOS, XLM or XRP and no_destination_tag is false, then this is required
    - `no_destination_tag` boolean — Whether or not the specific withdrawal and destination address requires a destination tag.If the asset `model` is `tag`, this field is required **Note: zerohash requires that `no_destination_tag` be `false` for `EOS`**.
    - `gas_price` string — Applicable only for ERC-20 tokens, the transaction fee payable on the Ethereum network - refer to our FAQ on how this works
    - `input_data` string — Applicable only for smart contract executions on the Ethereum blockchain. This is the ABI encoding of the function and its arguments in RLP format.
    - `trade_id` string — If provided will apply the earlier agreed-upon network fee amount from the provided trade.
  - object — Withdrawal request body for assets with the account `model` as `utxo` or `account_based`.
    - `client_withdrawal_request_id` string — A unique identifier for the withdrawal, generally produced by the Platform on which the trade was executed Note: this must be unique, per platform, per 24 hour period
    - `participant_code` string, required — The participant code against whom the withdrawal will be made
    - `account_group` string, required — The account group to withdraw against, e.g. 00SCXM for the Seed Digital Commodities Market account group
    - `account_label` string, required — The account label associated with the account
    - `amount` string, required — The amount to withdraw
    - `asset` 'BTC' | 'BCH' | 'ADA' | 'DOGE' | 'LTC' | 'ETH.BASE' | 'USDC.BASE' | 'AAVE.ETH' | 'BAT.ETH' | 'COMP.ETH' | 'CRV.ETH' | 'DAI.ETH' | 'ETH' | 'GALA.ETH' | 'GYEN.ETH' | 'KNC.ETH' | 'LDO.ETH' | 'LINK.ETH' | 'MATIC.ETH' | 'MKR.ETH' | 'PEPE.ETH' | 'POL.ETH' | 'PYUSD.ETH' | 'RLUSD.ETH' | 'SAND.ETH' | 'SHIB.ETH' | 'UNI.ETH' | 'USDC.ETH' | 'USDP.ETH' | 'USDT.ETH' | 'WBTC.ETH' | 'WETH.ETH' | 'ZRX.ETH' | 'ZUSD.ETH' | 'PYUSD.SOL' | 'SOL' | 'USDC.SOL' | 'USDP.SOL' | 'ARB.ARBITRUM' | 'ETH.ARBITRUM' | 'USDC.ARBITRUM' | 'USDT.ARBITRUM' | 'AVAX' | 'USDC.AVAX' | 'MATIC.POLYGON' | 'USDC.POLYGON' | 'ETH.OPTIMISM' | 'OP.OPTIMISM' | 'USDC.OPTIMISM' | 'USDT.OPTIMISM' | 'APT' | 'USDC.APT' | 'BNB' | 'EGLD' | 'ETC' | 'FIL' | 'NEAR' | 'USDT.XPL' | 'XPL' | 'DOT' | 'USDC.DOTHUB' | 'SEI' | 'USDC.SEI' | 'SUI' | 'USDC.SUI' | 'XTZ' | 'TON' | 'TRX' | 'USDT.TRX' | 'ETH.WORLDCHAIN' | 'USDC.WORLDCHAIN' | 'WLD.WORLDCHAIN' | 'ETH.ZKSYNC' | 'USDC.ZKSYNC', required — The asset code for the withdrawal request, e.g. BTC
    - `address` string, required — The whitelisted withdrawal account or address to withdraw funds to Note: only one of withdrawal_account_id, address or account{} can be submitted per withdrawal, but zerohash will always respond with withdrawal_account_id
  - object — Withdrawal request body for assets with the account `model` as `utxo` or `account_based`.
    - `client_withdrawal_request_id` string — A unique identifier for the withdrawal, generally produced by the Platform on which the trade was executed Note: this must be unique, per platform, per 24 hour period
    - `participant_code` string, required — The participant code against whom the withdrawal will be made
    - `address` string, required — The whitelisted withdrawal account or address to withdraw funds to Note: only one of withdrawal_account_id, address or account{} can be submitted per withdrawal, but zerohash will always respond with withdrawal_account_id
    - `amount` string, required — The amount to withdraw
    - `asset` 'XRP' | 'XLM' | 'EOS' | 'ADA' | 'ALGO' | 'CC' | 'TIA' | 'ATOM' | 'HBAR' | 'USDC.HBAR' | 'RLUSD.XRP' | 'USDC.XLM' | 'EURC.XLM', required — The asset code for the withdrawal request, e.g. XRP
    - `account_group` string, required — The account group to withdraw against, e.g. 00SCXM for the Seed Digital Commodities Market account group
    - `account_label` string — The account label associated with the account
    - `no_destination_tag` boolean, required — Whether or not the specific withdrawal and destination address requires a destination tag.If the asset `model` is `tag`, this field is required **Note: zerohash requires that `no_destination_tag` be `false` for `EOS`**.
    - `destination_tag` string — The destination tag or memo ID associated with the transaction If the asset is EOS, XLM or XRP and no_destination_tag is false, then this is required
  - object — Withdrawal request body for assets with the account `model` as `utxo` or `account_based`.
    - `client_withdrawal_request_id` string — A unique identifier for the withdrawal, generally produced by the Platform on which the trade was executed Note: this must be unique, per platform, per 24 hour period
    - `participant_code` string, required — The participant code against whom the withdrawal will be made
    - `asset` 'USD', required — The asset code for the withdrawal request, e.g. USD
    - `amount` string, required — The amount to withdraw
    - `account_group` string — The account group to withdraw against, e.g. 00SCXM for the Seed Digital Commodities Market account group
    - `account_label` string — The account label associated with the account
    - `account` object, required — The whitelisted withdrawal account or address to withdraw funds to
      - `type` string, required — The type of account: DOMESTIC_FIAT for US wires.
      - `name` string, required — The nickname given to the withdrawal account Note: zerohash will append the last 4 digits of the account number to this when saving it
      - `account_number` string, required — The unique `account_number` for the final withdrawal destination
      - `routing_number` string, required — The routing number for the final withdrawal destination
      - `beneficiary_name` string, required — The owner of the account at the withdrawal destination
      - `bank_name` string — The name of the destination financial institution
      - `recipient_instructions` string — Per-request memo or wire reference. Overrides the account-level default if provided. An empty string explicitly clears the memo. Omitting leaves the account-level value unchanged. Max 255 characters.
  - object — Withdrawal request body for assets with the account `model` as `utxo` or `account_based`.
    - `client_withdrawal_request_id` string — A unique identifier for the withdrawal, generally produced by the Platform on which the trade was executed Note: this must be unique, per platform, per 24 hour period
    - `participant_code` string, required — The participant code against whom the withdrawal will be made
    - `asset` 'AED' | 'AUD' | 'BRL' | 'CAD' | 'CHF' | 'CNY' | 'CZK' | 'DKK' | 'EUR' | 'GBP' | 'HKD' | 'HUF' | 'ILS' | 'JPY' | 'MAD' | 'MXN' | 'NOK' | 'NZD' | 'PLN' | 'RON' | 'SAR' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'USD' | 'ZAR', required — The asset code for the withdrawal request, e.g. `EUR`.
    - `amount` string, required — The amount to withdraw
    - `account_group` string — The account group to withdraw against, e.g. 00SCXM for the Seed Digital Commodities Market account group
    - `account_label` string — The account label associated with the account
    - `account` object, required — The whitelisted withdrawal account or address to withdraw funds to
      - `type` string, required — The type of account: INTERNATIONAL_FIAT for SWIFT payments.
      - `name` string, required — The nickname given to the withdrawal account Note: zerohash will append the last 4 digits of the account number to this when saving it
      - `account_number` string, required — The IBAN number for your account.
      - `swift_code` string, required — The SWIFT code for the final withdrawal destination
      - `beneficiary_name` string, required — The owner of the account at the withdrawal destination
      - `bank_name` string — The name of the destination financial institution
      - `intermediary_bank` boolean — Whether or not an intermediary bank is used
      - `intermediary_bank_account_number` string — The IBAN number for the intermediary bank account.
      - `intermediary_bank_name` string — The name of the intermediary bank.
      - `intermediary_bank_code_type` 'SWIFT' | 'ROUTING' | 'IBAN' | 'OTHER' — The type of code used to identify the intermediary bank.
      - `intermediary_bank_code` string — The code used to identify the intermediary bank.
      - `recipient_instructions` string — Per-request memo or wire reference. Overrides the account-level default if provided. An empty string explicitly clears the memo. Omitting leaves the account-level value unchanged. Max 255 characters.

## Response `200`

Successfully created withdrawal request. Returns the created resource with generated IDs and timestamps.

- PostWithdrawalRequestsResponse
  - `message` WithdrawalRequestEntity
    - `id` string, uuid — Unique identifier (UUID v4) for the withdrawal request.
    - `withdrawal_account_id` number — The ID of the whitelisted withdrawal account or address the funds were sent to.
    - `participant_code` string — The participant the request belongs to, e.g. ABCDEF.
    - `beneficiary_participant_code` string, nullable — The participant code of the beneficiary when the withdrawal is being made on behalf of another participant. Null for standard withdrawals.
    - `sender_participant_code` string, nullable — The participant code of the sender when the request was initiated on behalf of a third party. Null for standard withdrawals.
    - `requestor_participant_code` string — The participant code of the platform or participant that initiated the request, e.g. ABCDEF.
    - `requested_amount` string — The initially requested amount, e.g. 100.10.
    - `settled_amount` string, nullable — The settled amount. This can be less than or equal to the requested_amount. Null while the withdrawal is still in an APPROVED state.
    - `status` 'PENDING' | 'APPROVED' | 'REJECTED' | 'SETTLED' — The current status of the withdrawal request.
    - `asset` 'AAVE.ETH' | 'ADA' | 'ALGO' | 'AVAX' | 'BAT.ETH' | 'BCH' | 'BTC' | 'BUSD.ETH' | 'COMP.ETH' | 'DAI.ETH' | 'DOGE' | 'DOT' | 'EGLD' | 'EOS' | 'ETC' | 'ETH' | 'ETH.ARBITRUM' | 'GRT.ETH' | 'GYEN.ETH' | 'HBAR' | 'LINK.ETH' | 'LTC' | 'LUNA' | 'MATIC.ETH' | 'MATIC.POLYGON' | 'MKR.ETH' | 'MOB' | 'SAND.ETH' | 'SOL' | 'UNI.ETH' | 'USDC.ETH' | 'USDC.ALGO' | 'USDC.POLYGON' | 'USDC.SOL' | 'USDC.HBAR' | 'USDC.XLM' | 'USDC.AVAX' | 'USDT.ETH' | 'UST' | 'WBTC.ETH' | 'XEM' | 'XLM' | 'XRP' | 'XTZ' | 'ZUSD.ETH' — The asset code for the request, e.g. `BTC`.
    - `account_group` string — The account group the request was made against, e.g. 00SCXM for the Seed Digital Commodities Market account group.
    - `account_label` string, nullable — The account label associated with the account. Null when the request targets the default (unlabeled) account.
    - `transaction_id` string, nullable — The on-chain transaction hash once the withdrawal has been broadcast. Null until the transaction has been sent to the network.
    - `input_data` string, nullable — Applicable only for smart-contract executions on the Ethereum blockchain. The ABI encoding of the function and its arguments in RLP format. Null for standard transfers.
    - `requested_timestamp` number — Unix timestamp in milliseconds for when the withdrawal request was last updated. Changes with status updates.
    - `created_timestamp` string, date-time — RFC 3339 / ISO 8601 timestamp (UTC) of when the withdrawal request was originally created. Immutable.
    - `gas_price` string, nullable — The transaction fee payable on the Ethereum network. Null when the asset is not an ERC-20 token or when the fee was not client-supplied.
    - `client_withdrawal_request_id` string, nullable — A unique identifier for the withdrawal, generally produced by the Platform on which the trade was executed. Must be unique per platform per 24-hour period. Null when not provided by the client.
    - `on_chain_status` 'PENDING' | 'CONFIRMED' | 'null', nullable — Indicates whether the crypto withdrawal has been confirmed on-chain. Null for fiat withdrawals or while the request is still APPROVED and has not been broadcast.
    - `fee_amount` string, nullable — The network fee (denominated in the network fee asset) associated with the withdrawal. Null until the fee has been determined.
    - `withdrawal_fee` string, nullable — The withdrawal fee (denominated in the withdrawn asset) charged by zerohash. Returned as an empty string or null when no withdrawal fee applies.
    - `quoted_fee_amount` string, nullable — The fee paid by the customer in crypto terms as quoted. Null when the withdrawal did not go through the quoted-fee flow.
    - `quoted_fee_notional` string, nullable — The fee paid by the customer in USD terms as quoted. Null when the withdrawal did not go through the quoted-fee flow.
    - `quoted_fee_asset` string, nullable — The asset in which the quoted fee was charged. Null when the withdrawal did not go through the quoted-fee flow.
    - `trade_id` string, uuid, nullable — When a fee-locked `trade_id` was supplied on the withdrawal request, the associated trade identifier. Null otherwise.
    - `parent_link_id` string, nullable — Identifier linking this withdrawal to a parent request (for example a convert-and-withdraw quote execution). Null for standalone withdrawals.
    - `parent_link_id_source` string, nullable — The source context of the `parent_link_id` when present. Null when `parent_link_id` is null.
    - `amount_in_usd` number, nullable — Indicative USD value of the withdrawal at the time the record was returned. Present on list responses for all consumers; conditionally omitted on single-request responses for non-portal origins.
    - `contract_validation_id` string, uuid, nullable — Identifier of the EVM smart-contract execution validation record linked to the withdrawal. Null unless the withdrawal targets a validated contract call.
    - `recipient_instructions` string, nullable — Recipient instructions for this withdrawal request (e.g. wire memo). Returns the request-level memo if provided, otherwise the account default, or null when none is set.

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `404` — Not Found
- `500` — Internal Server Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/zerohash/apis/zerohash-api.md) · [All operations](https://skmtc.net/zerohash/apis/zerohash-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zerohash/zerohash-api/revisions/8b647d934363/schema)
