Skip to main content
POST
/
withdrawal
/
crypto
curl --request POST \
  --url https://app.cryptoprocessing.com/api/v2/withdrawal/crypto \
  --header 'Content-Type: application/json' \
  --header 'X-Processing-Key: <api-key>' \
  --header 'X-Processing-Signature: <x-processing-signature>' \
  --data '
{
  "currency": "BTC",
  "foreign_id": "test_foreign_id_0148",
  "end_user_reference": "test_end_user_reference",
  "sender_type": "legal",
  "sender_data": {
    "legal_name": "Example GmbH",
    "country_of_registration": "DEU"
  },
  "receiver_type": "natural",
  "receiver_data": {
    "first_name": "Friedrich",
    "last_name": "Müller",
    "date_of_birth": "1995-08-17"
  },
  "address": "tb1qfdxh6gkfr0qgyatnlkd8khcnxph9tw06n6qwjc",
  "amount": "0.00020000"
}
'
{
  "data": {
    "id": 134702815,
    "foreign_id": "test_foreign_id_0148",
    "end_user_reference": "test_end_user_reference",
    "type": "withdrawal",
    "status": "processing",
    "amount": "0.00020000",
    "sender_amount": "0.00020000",
    "sender_currency": "BTC",
    "receiver_currency": "BTC",
    "receiver_amount": "0.00020000"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.cryptoprocessing.com/llms.txt

Use this file to discover all available pages before exploring further.

CryptoProcessing is required to collect sender data in compliance with the MiCA regulations. For more details, see User data collection. The sender_data and the end_user_reference you provide must be associated with the same customer.

Authorizations

X-Processing-Key
string
header
required

Your API key.

Headers

X-Processing-Signature
string
required

Hex-encoded HMAC-SHA512 signature of the request body, generated using your secret key.

Body

application/json
currency
string
required

Currency to withdraw. For a list of all available currencies, see API currency codes.

amount
number
required

Amount to withdraw in the source currency. You can only specify either amount_to or amount.

address
string
required

Cryptocurrency address where you want to send funds.

foreign_id
any
required

Unique ID of the withdrawal request.

end_user_reference
string
required

Persistent internal ID of the merchant's end 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
enum<string>
required

Type of the merchant's end 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.

Available options:
natural,
legal
sender_data
object
required

Details of the merchant's end 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.

You can optionally include email for either sender type.

receiver_type
enum<string>
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.

Available options:
natural,
legal,
self
receiver_data
object
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.

convert_to
string

Target currency to convert funds into before sending. If omitted, funds are sent in the source currency without conversion.

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.

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.

Response

Created

data
object
Last modified on May 4, 2026