---
title: "Withdraw crypto"
method: POST
path: "/withdrawal/crypto"
tags: ["Withdrawal"]
---

# Withdraw crypto

`POST /withdrawal/crypto`

Withdraw in crypto to any address.

## Headers

- `X-Processing-Signature` string, required

## Request body

- object
  - `currency` string, required — Currency to withdraw. For a list of all available currencies, see [API currency codes](/api-reference/currency-codes).
  - `convert_to` string — Target currency to convert funds into before sending. If omitted, funds are sent in the source `currency` without conversion.
  - `amount` number, required — Amount to withdraw in the source `currency`. You can only specify either `amount_to` or `amount`.
  - `amount_to` number — Amount to send in the `convert_to` currency. Use this field when you want to convert funds and send a specific amount in the target currency set in `convert_to`. You can only specify either `amount_to` or `amount`.
  - `address` string, required — Cryptocurrency address where you want to send funds.
  - `tag` string — Tag/memo for currencies and destination wallets that support or require it. On withdrawal forms, display this field to the user, but allow it to be empty because some wallets do not require a tag/memo. Warn the user that if the destination wallet requires a tag/memo and it is not provided, the funds may be lost.
  - `foreign_id` unknown, required
  - `end_user_reference` string, required — Persistent internal ID of the merchant's customer who initiates the withdrawal. Use the same value for the same customer across all requests. This value must refer to the same customer described in `sender_data`. Do not include personal data, such as the customer's name or email address. Put personal details in `sender_data`.
  - `sender_type` 'natural' | 'legal', required — Type of the merchant's customer who initiates the withdrawal. The sender must be the same customer identified by `end_user_reference`. Use `natural` if the sender is an individual person and `legal` if the sender is a legal entity. The selected type determines which fields must be included in `sender_data`.
  - `sender_data` SenderDataWithdrawals, required — Must contain the details of the merchant's customer who initiates the withdrawal. - If `sender_type` is `natural`, include `first_name`, `last_name`, and `date_of_birth`. Do not include `legal_name` or `country_of_registration`. - If `sender_type` is `legal`, include `legal_name` and `country_of_registration`. Do not include `first_name`, `last_name`, or `date_of_birth`.
    - `first_name` string, required — The sender's first name. This is required for a natural person. For a legal entity, do not include this parameter.
    - `last_name` string, required — The sender's last name. This is required for a natural person. For a legal entity, do not include this parameter.
    - `date_of_birth` string, required — The sender's date of birth, YYYY-MM-DD. This is required for a natural person. For a legal entity, do not include this parameter.
    - `legal_name` string, required — The company's name. This is required for a legal entity. For a natural person, do not include this parameter.
    - `country_of_registration` string, required — The company's country of registration (ISO alpha-3 format, three characters). This is required for a legal entity. For a natural person, do not include this parameter.
  - `receiver_type` 'natural' | 'legal' | 'self', required — Type of the withdrawal recipient. Use `natural` if the recipient is an individual person, `legal` if the recipient is a legal entity, or `self` if the recipient is the same person or legal entity as the sender. The selected type determines whether `receiver_data` is required and which fields it must contain.
  - `receiver_data` ReceiverData, required — Details of the withdrawal recipient. - If `receiver_type` is `natural`, include `first_name`, `last_name`, and `date_of_birth`. Do not include `legal_name` or `country_of_registration`. - If `receiver_type` is `legal`, include `legal_name` and `country_of_registration`. Do not include `first_name`, `last_name`, or `date_of_birth`. - If `receiver_type` is `self`, do not include `receiver_data`.
    - `first_name` string, required — The recipient's first name. This is required for a natural person. For a legal entity, do not include this parameter.
    - `last_name` string, required — The recipient's last name. This is required for a natural person. For a legal entity, do not include this parameter.
    - `date_of_birth` string, required — The recipient's date of birth, YYYY-MM-DD. This is required for a natural person. For a legal entity, do not include this parameter.
    - `legal_name` string, required — The company's name. This is required for a legal entity. For a natural person, do not include this parameter.
    - `country_of_registration` string, required — The company's country of registration (ISO alpha-3 format, three characters). This is required for a legal entity. For a natural person, do not include this parameter.

## Response `201`

Created

- object
  - `data` object
    - `id` integer — Transaction ID.
    - `foreign_id` string — Unique ID of the withdrawal request.
    - `end_user_reference` string — Persistent internal ID of the merchant's customer who initiates the withdrawal. Use the same value for the same customer across all requests. This value must refer to the same customer described in `sender_data`. Do not include personal data, such as the customer's name or email address. Put personal details in `sender_data`.
    - `type` string — Transaction type (e.g., `withdrawal`, `withdrawal_exchange`).
    - `status` string — Transaction status.
    - `amount` string — Withdrawal amount in `sender_currency`.
    - `sender_amount` string — Same as `amount`. Withdrawal amount in the `sender_currency`. Present for withdrawals without conversion.
    - `sender_currency` string — Source currency ISO code.
    - `receiver_currency` string — Destination currency ISO code. Same as `sender_currency` for withdrawals without conversion.
    - `receiver_amount` string — Amount sent in `receiver_currency`. Present if the amount to be sent to the wallet is specified (`amount` for withdrawals without conversion, `amount_to` for withdrawals with conversion).

## Other responses

- `400` — Bad Request.
- `403` — Forbidden
- `422` — Unprocessable entity. An internal error occurred during processing. The request was understood but could not be completed. The `errors` field is an array of error messages. The `error_code` is always the string `"internal_error"`.

---

[API](https://skmtc.dev/cryptoprocessing/apis/merchant-backend-v2.md) · [All operations](https://skmtc.dev/cryptoprocessing/apis/merchant-backend-v2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cryptoprocessing/merchant-backend-v2/revisions/623a41f26c6b/schema)
