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.00003000"
}
'
{
  "data": {
    "id": 134702815,
    "foreign_id": "test_foreign_id_0148",
    "end_user_reference": "test_end_user_reference",
    "type": "withdrawal",
    "status": "processing",
    "amount": "0.00003000",
    "sender_amount": "0.00003000",
    "sender_currency": "BTC",
    "receiver_currency": "BTC",
    "receiver_amount": "0.00003000"
  }
}
CryptoProcessing is required to collect sender data in compliance with the MiCA regulations. For more details, see About 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

A persistent internal user ID used to track all requests for the same end user. Must be consistent across requests and must not contain personal data, such as the user's name or email address. Put customer personal details in sender_data.

sender_type
enum<string>
required

Whether the sender is a natural person (natural) or a legal entity (legal).

Available options:
natural,
legal
sender_data
object
required

If the sender is a natural person, include their first_name, last_name, date_of_birth and email. If the sender is a legal entity, include their legal_name, country_of_registration and email.

receiver_type
enum<string>
required

Whether the recipient is a natural person (natural) or a legal entity (legal). For internal transfers, set this to self.

Available options:
natural,
legal,
self
receiver_data
object
required

If the recipient is a natural person, include their first_name, last_name and date_of_birth. If the sender is a legal entity, include the legal_name and country_of_registration. If receiver_type is set to self, do not include this object.

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 April 28, 2026