Skip to Content

Transfer Tokens

Transfer tokens from your BLOX wallet to an external wallet address.

POST /v1/wallet/token/transfer

Authentication

This endpoint requires API Key + RFC 9421 Signature.

HeaderRequiredDescription
blox-api-keyYesYour API key
Content-TypeYesapplication/json
Content-DigestYesSHA-256 hash of request body
Signature-InputYesRFC 9421 signature parameters
SignatureYesRFC 9421 cryptographic signature

Learn how to sign requests →

Request Body

{ "tokenId": "550e8400-e29b-41d4-a716-446655440000", "addressTo": "0x742d35Cc6634C0532925a3b844Bc9e7595f8bD21", "amount": 10000, "reference": "PAYOUT-2026-001", "note": "Monthly payout" }

Parameters

ParameterTypeRequiredDescription
tokenIdstring (UUID)YesToken ID to transfer (e.g., MYRC token ID)
addressTostringYesRecipient wallet address (Ethereum or Solana format)
amountintegerYesAmount in cents (min 1000 = 10.00, max 100000000 = 1,000,000.00)
referencestringNoYour reference ID (max 32 chars)
notestringNoInternal note for this transfer

Address Formats

NetworkFormatExample
Ethereum/Arbitrum0x + 40 hex chars0x742d35Cc6634C0532925a3b844Bc9e7595f8bD21
SolanaBase58 public keyDRpbCBMxVnDK7maPM5tGv6MvB3v1sRMC86PZ8okm21hy

Response

Success Response (201 Created)

{ "id": "txf_clxyz1234567890abcdef", "status": "PENDING", "type": "TOKEN_WITHDRAWAL", "amount": "10000", "token": { "id": "550e8400-e29b-41d4-a716-446655440000", "symbol": "MYRC", "name": "MYRC" }, "addressTo": "0x742d35Cc6634C0532925a3b844Bc9e7595f8bD21", "reference": "PAYOUT-2026-001", "createdAt": "2026-01-16T10:30:00.000Z" }

Response Fields

FieldTypeDescription
idstringUnique transfer ID
statusstringCurrent transfer status
typestringTransaction type (TOKEN_WITHDRAWAL)
amountstringAmount transferred (in cents)
tokenobjectToken details (id, symbol, name)
addressTostringRecipient wallet address
referencestringYour reference ID
createdAtstringISO 8601 creation timestamp

Transfer Status Values

StatusDescription
CREATEDTransfer request received
PENDINGTransaction submitted to blockchain
PROCESSINGAwaiting confirmations
COMPLETEDSuccessfully delivered
FAILEDTransfer failed

Error Responses

Insufficient Balance (400)

{ "statusCode": 400, "error": "Bad Request", "message": "Insufficient balance", "details": { "available": "5000", "requested": "10000" } }

Invalid Address (400)

{ "statusCode": 400, "error": "Bad Request", "message": "Invalid destination address" }

Rate Limited (429)

{ "statusCode": 429, "error": "Too Many Requests", "message": "Rate limit exceeded", "retryAfter": 60 }

Example

Create Transfer

curl -X POST "https://api.blox.my/v1/wallet/token/transfer" \ -H "blox-api-key: $BLOX_API_KEY" \ -H "Content-Type: application/json" \ -H "Content-Digest: sha-256=:$CONTENT_DIGEST:" \ -H "Signature-Input: sig1=(@method @path content-digest content-type);created=$TIMESTAMP;keyid=\"$KEY_ID\";alg=\"ed25519\"" \ -H "Signature: sig1=:$SIGNATURE:" \ -d '{ "tokenId": "550e8400-e29b-41d4-a716-446655440000", "addressTo": "0x742d35Cc6634C0532925a3b844Bc9e7595f8bD21", "amount": 10000, "reference": "PAYOUT-2026-001" }'

Check Transfer Status

Use the wallet transactions endpoint to check transfer status:

curl "https://api.blox.my/v1/wallet/transactions" \ -H "blox-api-key: $BLOX_API_KEY"

Best Practices

  1. Verify addresses — Validate destination addresses before sending
  2. Use references — Add reference IDs for reconciliation
  3. Monitor status — Use the transactions endpoint to track completion
  4. Handle failures — Implement retry logic for transient errors
Last updated