Skip to main content
POST
/
accounts
/
{senderAccountId}
/
transfers
/
crypto
Create crypto transfer
curl --request POST \
  --url https://api.venlyfinance.com/v1/accounts/{senderAccountId}/transfers/crypto \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "receiverAccountId": "c3b2a1f0-9d8c-4e3a-bf21-1a2b3c4d5e60",
  "chain": "BASE",
  "asset": "USDC",
  "amount": 25,
  "description": "Invoice settlement",
  "idempotencyKey": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
'
{
  "success": true,
  "result": {
    "id": "a1b2c3d4-e5f6-4789-9abc-def012345678",
    "senderAccountId": "b2a1f0e9-8c7d-4e3a-9f21-0a1b2c3d4e5f",
    "receiverAccountId": "c3b2a1f0-9d8c-4e3a-bf21-1a2b3c4d5e60",
    "chain": "BASE",
    "asset": "USDC",
    "amount": 25,
    "description": "Invoice settlement",
    "idempotencyKey": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "COMPLETED",
    "transactionHash": "0xa1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
    "createdAt": "2026-01-15T09:30:00Z",
    "updatedAt": "2026-01-15T09:30:02Z"
  }
}
Transfers a crypto asset on the given chain from the sender to a receiver account. Retrying with the same idempotencyKey returns the original transfer — no double-spend (see Idempotency). Concept guide: Transfers
The sender account must be verified, and (self-custody) its wallet ACTIVE with an allowance to the orchestration wallet. See Account verification and Approving transfers without gas.

Authorizations

Path Parameters

senderAccountId
string<uuid>
required

The account ID initiating the transfer

Body

application/json
chain
enum<string>
required

Supported blockchain network

Available options:
AVALANCHE,
BASE
asset
string
required

Cryptocurrency asset identifier (e.g. USDC)

Minimum string length: 1
amount
number
required

Transfer amount

idempotencyKey
string
required

Unique key to prevent duplicate operations on retry

Minimum string length: 1
receiverAccountId
string<uuid>

ID of the receiving account

receiverExternalId
string

External ID of the receiving account (alternative to receiverAccountId)

description
string

Optional transfer description

merchantReference
string

Optional merchant reference

Response

Crypto transfer created

success
boolean

Indicates whether the request was successful

result
object