Master Wallet
curl --request POST \
--url https://api.blockradar.co/v1/wallets/{walletId}/withdraw \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"assets": [
{
"address": "0xRecipient1Address",
"amount": "10.5",
"id": "{{assetId1}}",
"metadata": {
"employeeId": "EMP001"
},
"note": "Salary payment",
"reference": "payout-001"
},
{
"address": "0xRecipient2Address",
"amount": "25.0",
"id": "{{assetId2}}",
"metadata": {
"invoiceId": "INV-123"
},
"note": "Vendor payment",
"reference": "payout-002"
}
]
}
'import requests
url = "https://api.blockradar.co/v1/wallets/{walletId}/withdraw"
payload = { "assets": [
{
"address": "0xRecipient1Address",
"amount": "10.5",
"id": "{{assetId1}}",
"metadata": { "employeeId": "EMP001" },
"note": "Salary payment",
"reference": "payout-001"
},
{
"address": "0xRecipient2Address",
"amount": "25.0",
"id": "{{assetId2}}",
"metadata": { "invoiceId": "INV-123" },
"note": "Vendor payment",
"reference": "payout-002"
}
] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
assets: [
{
address: '0xRecipient1Address',
amount: '10.5',
id: '{{assetId1}}',
metadata: {employeeId: 'EMP001'},
note: 'Salary payment',
reference: 'payout-001'
},
{
address: '0xRecipient2Address',
amount: '25.0',
id: '{{assetId2}}',
metadata: {invoiceId: 'INV-123'},
note: 'Vendor payment',
reference: 'payout-002'
}
]
})
};
fetch('https://api.blockradar.co/v1/wallets/{walletId}/withdraw', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.blockradar.co/v1/wallets/{walletId}/withdraw",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'assets' => [
[
'address' => '0xRecipient1Address',
'amount' => '10.5',
'id' => '{{assetId1}}',
'metadata' => [
'employeeId' => 'EMP001'
],
'note' => 'Salary payment',
'reference' => 'payout-001'
],
[
'address' => '0xRecipient2Address',
'amount' => '25.0',
'id' => '{{assetId2}}',
'metadata' => [
'invoiceId' => 'INV-123'
],
'note' => 'Vendor payment',
'reference' => 'payout-002'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.blockradar.co/v1/wallets/{walletId}/withdraw"
payload := strings.NewReader("{\n \"assets\": [\n {\n \"address\": \"0xRecipient1Address\",\n \"amount\": \"10.5\",\n \"id\": \"{{assetId1}}\",\n \"metadata\": {\n \"employeeId\": \"EMP001\"\n },\n \"note\": \"Salary payment\",\n \"reference\": \"payout-001\"\n },\n {\n \"address\": \"0xRecipient2Address\",\n \"amount\": \"25.0\",\n \"id\": \"{{assetId2}}\",\n \"metadata\": {\n \"invoiceId\": \"INV-123\"\n },\n \"note\": \"Vendor payment\",\n \"reference\": \"payout-002\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.blockradar.co/v1/wallets/{walletId}/withdraw")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"assets\": [\n {\n \"address\": \"0xRecipient1Address\",\n \"amount\": \"10.5\",\n \"id\": \"{{assetId1}}\",\n \"metadata\": {\n \"employeeId\": \"EMP001\"\n },\n \"note\": \"Salary payment\",\n \"reference\": \"payout-001\"\n },\n {\n \"address\": \"0xRecipient2Address\",\n \"amount\": \"25.0\",\n \"id\": \"{{assetId2}}\",\n \"metadata\": {\n \"invoiceId\": \"INV-123\"\n },\n \"note\": \"Vendor payment\",\n \"reference\": \"payout-002\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockradar.co/v1/wallets/{walletId}/withdraw")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"assets\": [\n {\n \"address\": \"0xRecipient1Address\",\n \"amount\": \"10.5\",\n \"id\": \"{{assetId1}}\",\n \"metadata\": {\n \"employeeId\": \"EMP001\"\n },\n \"note\": \"Salary payment\",\n \"reference\": \"payout-001\"\n },\n {\n \"address\": \"0xRecipient2Address\",\n \"amount\": \"25.0\",\n \"id\": \"{{assetId2}}\",\n \"metadata\": {\n \"invoiceId\": \"INV-123\"\n },\n \"note\": \"Vendor payment\",\n \"reference\": \"payout-002\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"amlScreening": null,
"amount": "10",
"amountPaid": "10",
"asset": {
"address": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
"blockchain": {
"createdAt": "2024-05-14T11:53:33.095Z",
"derivationPath": "m/44'/60'/0'/0",
"id": "85ffc132-3972-4c9e-99a5-5cf0ccb688bf",
"isActive": true,
"isEvmCompatible": true,
"logoUrl": "https://res.cloudinary.com/blockradar/image/upload/v1716800081/crypto-assets/ethereum-eth-logo_idraq2.png",
"name": "ethereum",
"slug": "ethereum",
"symbol": "eth",
"tokenStandard": "ERC20",
"updatedAt": "2024-06-14T22:32:11.983Z"
},
"createdAt": "2024-05-14T11:53:33.682Z",
"decimals": 6,
"id": "fe04a28c-c615-4e41-8eda-f84c862864f5",
"isActive": true,
"logoUrl": "https://res.cloudinary.com/blockradar/image/upload/v1716800083/crypto-assets/usd-coin-usdc-logo_fs9mhv.png",
"name": "USDC Coin",
"network": "testnet",
"standard": "ERC20",
"symbol": "USDC",
"updatedAt": "2024-06-14T22:32:12.589Z"
},
"assetSwept": null,
"assetSweptAmount": null,
"assetSweptAt": null,
"assetSweptGasFee": null,
"assetSweptHash": null,
"assetSweptRecipientAddress": null,
"assetSweptResponse": null,
"assetSweptSenderAddress": null,
"blockHash": null,
"blockNumber": null,
"blockchain": {
"createdAt": "2024-05-14T11:53:33.095Z",
"derivationPath": "m/44'/60'/0'/0",
"id": "85ffc132-3972-4c9e-99a5-5cf0ccb688bf",
"isActive": true,
"isEvmCompatible": true,
"logoUrl": "https://res.cloudinary.com/blockradar/image/upload/v1716800081/crypto-assets/ethereum-eth-logo_idraq2.png",
"name": "ethereum",
"slug": "ethereum",
"symbol": "eth",
"tokenStandard": "ERC20",
"updatedAt": "2024-06-14T22:32:11.983Z"
},
"chainId": null,
"confirmations": null,
"confirmed": false,
"createdAt": "2024-10-23T11:33:58.765Z",
"currency": "USD",
"fee": null,
"feeMetadata": null,
"gasFee": null,
"gasPrice": null,
"gasUsed": null,
"hash": "0xded90bc7f3d98f5ff0c3a97f711717192e83e01d89ac1ff4483ae6fd9d229e6d",
"id": "081d6315-159f-4c38-b02a-c4708836c5bd",
"metadata": null,
"network": "testnet",
"note": null,
"reason": null,
"recipientAddress": "0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22",
"senderAddress": "0x947514e4B803e312C312da0F1B41fEDdbe15ae7a",
"status": "PENDING",
"tokenAddress": null,
"type": "WITHDRAW",
"updatedAt": "2024-10-23T11:33:58.765Z",
"wallet": {
"id": "d236a191-c1d4-423c-a439-54ce6542ca41"
}
},
"message": "Withdrawal request initiated successfully",
"statusCode": 200
}Withdraw
Master Wallet
This endpoint allows you to initiate a withdrawal from a specific wallet.
Body Parameters
| Key | Required | Type | Description |
|---|---|---|---|
| assetId | true* | string (UUID) | The ID of the asset to withdraw. Required if assets array is not provided. |
| address | true* | string | The destination wallet address for the withdrawal. Required if assets array is not provided. |
| amount | true* | string | The withdrawal amount. Must be greater than 0. Required if assets array is not provided. |
| reference | false | string | An optional reference note for the withdrawal. |
| note | false | string | A short message or internal remark to associate with this withdrawal. Not visible on-chain, except on Stellar, where it is attached as the transaction memo. |
| metadata | false | object | Optional metadata (key-value pairs) for additional transaction details. |
| assets | false | array of Asset | Used for batch withdrawals. Required if assetId, amount, and address are not provided. |
Asset (for Batch Withdrawals)
| Key | Required | Type | Description |
|---|---|---|---|
| id | true | string (UUID) | The ID of the asset to withdraw. |
| amount | true | string | The withdrawal amount. Must be greater than 0. |
| address | true | string | The destination wallet address for the withdrawal. |
| reference | false | string | Optional reference note for this asset withdrawal. |
| note | false | string | A short message or internal remark for this asset withdrawal. Not visible on-chain, except on Stellar, where it is attached as the transaction memo. |
| metadata | false | object | Optional metadata (key-value pairs) for this asset withdrawal. |
Notes
- Single withdrawal: Provide
assetId,amount, andaddressat the top level. - Batch withdrawal: Omit top-level
assetId,amount, andaddress, and instead provide an array ofassets(each followingAsset).
POST
/
v1
/
wallets
/
{walletId}
/
withdraw
Master Wallet
curl --request POST \
--url https://api.blockradar.co/v1/wallets/{walletId}/withdraw \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"assets": [
{
"address": "0xRecipient1Address",
"amount": "10.5",
"id": "{{assetId1}}",
"metadata": {
"employeeId": "EMP001"
},
"note": "Salary payment",
"reference": "payout-001"
},
{
"address": "0xRecipient2Address",
"amount": "25.0",
"id": "{{assetId2}}",
"metadata": {
"invoiceId": "INV-123"
},
"note": "Vendor payment",
"reference": "payout-002"
}
]
}
'import requests
url = "https://api.blockradar.co/v1/wallets/{walletId}/withdraw"
payload = { "assets": [
{
"address": "0xRecipient1Address",
"amount": "10.5",
"id": "{{assetId1}}",
"metadata": { "employeeId": "EMP001" },
"note": "Salary payment",
"reference": "payout-001"
},
{
"address": "0xRecipient2Address",
"amount": "25.0",
"id": "{{assetId2}}",
"metadata": { "invoiceId": "INV-123" },
"note": "Vendor payment",
"reference": "payout-002"
}
] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
assets: [
{
address: '0xRecipient1Address',
amount: '10.5',
id: '{{assetId1}}',
metadata: {employeeId: 'EMP001'},
note: 'Salary payment',
reference: 'payout-001'
},
{
address: '0xRecipient2Address',
amount: '25.0',
id: '{{assetId2}}',
metadata: {invoiceId: 'INV-123'},
note: 'Vendor payment',
reference: 'payout-002'
}
]
})
};
fetch('https://api.blockradar.co/v1/wallets/{walletId}/withdraw', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.blockradar.co/v1/wallets/{walletId}/withdraw",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'assets' => [
[
'address' => '0xRecipient1Address',
'amount' => '10.5',
'id' => '{{assetId1}}',
'metadata' => [
'employeeId' => 'EMP001'
],
'note' => 'Salary payment',
'reference' => 'payout-001'
],
[
'address' => '0xRecipient2Address',
'amount' => '25.0',
'id' => '{{assetId2}}',
'metadata' => [
'invoiceId' => 'INV-123'
],
'note' => 'Vendor payment',
'reference' => 'payout-002'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.blockradar.co/v1/wallets/{walletId}/withdraw"
payload := strings.NewReader("{\n \"assets\": [\n {\n \"address\": \"0xRecipient1Address\",\n \"amount\": \"10.5\",\n \"id\": \"{{assetId1}}\",\n \"metadata\": {\n \"employeeId\": \"EMP001\"\n },\n \"note\": \"Salary payment\",\n \"reference\": \"payout-001\"\n },\n {\n \"address\": \"0xRecipient2Address\",\n \"amount\": \"25.0\",\n \"id\": \"{{assetId2}}\",\n \"metadata\": {\n \"invoiceId\": \"INV-123\"\n },\n \"note\": \"Vendor payment\",\n \"reference\": \"payout-002\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.blockradar.co/v1/wallets/{walletId}/withdraw")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"assets\": [\n {\n \"address\": \"0xRecipient1Address\",\n \"amount\": \"10.5\",\n \"id\": \"{{assetId1}}\",\n \"metadata\": {\n \"employeeId\": \"EMP001\"\n },\n \"note\": \"Salary payment\",\n \"reference\": \"payout-001\"\n },\n {\n \"address\": \"0xRecipient2Address\",\n \"amount\": \"25.0\",\n \"id\": \"{{assetId2}}\",\n \"metadata\": {\n \"invoiceId\": \"INV-123\"\n },\n \"note\": \"Vendor payment\",\n \"reference\": \"payout-002\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockradar.co/v1/wallets/{walletId}/withdraw")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"assets\": [\n {\n \"address\": \"0xRecipient1Address\",\n \"amount\": \"10.5\",\n \"id\": \"{{assetId1}}\",\n \"metadata\": {\n \"employeeId\": \"EMP001\"\n },\n \"note\": \"Salary payment\",\n \"reference\": \"payout-001\"\n },\n {\n \"address\": \"0xRecipient2Address\",\n \"amount\": \"25.0\",\n \"id\": \"{{assetId2}}\",\n \"metadata\": {\n \"invoiceId\": \"INV-123\"\n },\n \"note\": \"Vendor payment\",\n \"reference\": \"payout-002\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"amlScreening": null,
"amount": "10",
"amountPaid": "10",
"asset": {
"address": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
"blockchain": {
"createdAt": "2024-05-14T11:53:33.095Z",
"derivationPath": "m/44'/60'/0'/0",
"id": "85ffc132-3972-4c9e-99a5-5cf0ccb688bf",
"isActive": true,
"isEvmCompatible": true,
"logoUrl": "https://res.cloudinary.com/blockradar/image/upload/v1716800081/crypto-assets/ethereum-eth-logo_idraq2.png",
"name": "ethereum",
"slug": "ethereum",
"symbol": "eth",
"tokenStandard": "ERC20",
"updatedAt": "2024-06-14T22:32:11.983Z"
},
"createdAt": "2024-05-14T11:53:33.682Z",
"decimals": 6,
"id": "fe04a28c-c615-4e41-8eda-f84c862864f5",
"isActive": true,
"logoUrl": "https://res.cloudinary.com/blockradar/image/upload/v1716800083/crypto-assets/usd-coin-usdc-logo_fs9mhv.png",
"name": "USDC Coin",
"network": "testnet",
"standard": "ERC20",
"symbol": "USDC",
"updatedAt": "2024-06-14T22:32:12.589Z"
},
"assetSwept": null,
"assetSweptAmount": null,
"assetSweptAt": null,
"assetSweptGasFee": null,
"assetSweptHash": null,
"assetSweptRecipientAddress": null,
"assetSweptResponse": null,
"assetSweptSenderAddress": null,
"blockHash": null,
"blockNumber": null,
"blockchain": {
"createdAt": "2024-05-14T11:53:33.095Z",
"derivationPath": "m/44'/60'/0'/0",
"id": "85ffc132-3972-4c9e-99a5-5cf0ccb688bf",
"isActive": true,
"isEvmCompatible": true,
"logoUrl": "https://res.cloudinary.com/blockradar/image/upload/v1716800081/crypto-assets/ethereum-eth-logo_idraq2.png",
"name": "ethereum",
"slug": "ethereum",
"symbol": "eth",
"tokenStandard": "ERC20",
"updatedAt": "2024-06-14T22:32:11.983Z"
},
"chainId": null,
"confirmations": null,
"confirmed": false,
"createdAt": "2024-10-23T11:33:58.765Z",
"currency": "USD",
"fee": null,
"feeMetadata": null,
"gasFee": null,
"gasPrice": null,
"gasUsed": null,
"hash": "0xded90bc7f3d98f5ff0c3a97f711717192e83e01d89ac1ff4483ae6fd9d229e6d",
"id": "081d6315-159f-4c38-b02a-c4708836c5bd",
"metadata": null,
"network": "testnet",
"note": null,
"reason": null,
"recipientAddress": "0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22",
"senderAddress": "0x947514e4B803e312C312da0F1B41fEDdbe15ae7a",
"status": "PENDING",
"tokenAddress": null,
"type": "WITHDRAW",
"updatedAt": "2024-10-23T11:33:58.765Z",
"wallet": {
"id": "d236a191-c1d4-423c-a439-54ce6542ca41"
}
},
"message": "Withdrawal request initiated successfully",
"statusCode": 200
}Authorizations
Path Parameters
Example:
"YOUR_WALLET_ID"
Body
application/json
The destination wallet address. Stellar accepts classic (G...), muxed (M...), and Soroban contract (C...) recipients. Contract recipients are valid for token assets only, not native XLM.
Show child attributes
Show child attributes
Example:
[
{
"address": "0xRecipient1Address",
"amount": "10.5",
"id": "{{assetId1}}",
"metadata": { "employeeId": "EMP001" },
"note": "Salary payment",
"reference": "payout-001"
},
{
"address": "0xRecipient2Address",
"amount": "25.0",
"id": "{{assetId2}}",
"metadata": { "invoiceId": "INV-123" },
"note": "Vendor payment",
"reference": "payout-002"
}
]
⌘I

