Withdraw to a wallet

Send crypto from a Blacksheep balance to an on-chain wallet address.

Crypto withdrawals send funds from your Blacksheep balance to an external wallet address on the appropriate network.

Prerequisites

  • A wallet external account registered for the destination address
  • A non-zero balance of the crypto currency you're sending

1. Find the destination

POST /account.external.web3.getAll
{
    "data": [
        {
            "id": "b21189d4-e549-4d77-b76b-85bfbb45d42d",
            "created_at": "2026-05-12T04:15:39.841Z",
            "type": "WEB3",
            "is_active": true,
            "metadata": {
                "is_hidden": false,
                "address": "0xabc...123",
                "type": "evm",
                "nickname": "Treasury wallet"
            }
        }
    ]
}

The wallet's metadata.type indicates the address family (evm, tvm, sol, or btc). The destination must match the chain of the currency_out you send — for example, an EVM wallet for USDC on ethereum. There is no per-wallet supported-currencies list in the response; matching is by chain.

2. Execute the withdrawal

POST /transaction.submitWithdraw
Content-Type: application/json

{
    "external_account_id": "b21189d4-e549-4d77-b76b-85bfbb45d42d",
    "currency_out": { "value": "50000000", "code": "USDC", "decimals": 6, "chain": "ethereum" }
}

Network fees are deducted from the currency_out.value — the recipient receives slightly less than the requested amount. If you need the recipient to receive a specific amount, gross up on your side using your network fee estimate.

3. Track completion

Crypto withdrawals settle asynchronously. Track completion via a transaction.updated webhook reporting a terminal status, or by polling transaction.get.

The transaction object will include the on-chain reference in external_reference (with external_reference_type = CRYPTO_ETHEREUM) when available.

Pitfalls

  • Wrong chain. Sending USDC with currency_out.chain set to a chain the wallet can't receive on will fail or — worse — succeed on the wrong chain. Always verify the wallet's metadata.type matches the address family of the currency_out.chain you're sending.
  • Address typos cannot be reversed. Verify wallet addresses out-of-band before registering them.