Skip to main content
POST
/
transfers
Create Transfer
curl --request POST \
  --url https://api.caminotreasury.com/v1/transfers \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "amount": "100.00",
  "source": {
    "currency": "usdc",
    "payment_rail": "ethereum",
    "from_address": "0x742d35cc6634c0532925a3b844bc454e4438f44e"
  },
  "destination": {
    "currency": "c0",
    "payment_rail": "ethereum",
    "to_address": "0x742d35cc6634c0532925a3b844bc454e4438f44e"
  }
}
'
{
  "id": "9c1a8b2e-4f3d-4a5b-8c6d-7e8f9a0b1c2d",
  "from": {
    "address": null,
    "bankAccount": {
      "id": "11111111-2222-3333-4444-555555555555",
      "bankName": "Acme Bank",
      "accountOwnerName": "Acme Corp",
      "accountNumberLast4": "1234"
    },
    "chainId": null,
    "currency": "usd",
    "amount": "100.00"
  },
  "to": {
    "address": "0x742d35cc6634c0532925a3b844bc454e4438f44e",
    "bankAccount": null,
    "chainId": 1,
    "currency": "usdc",
    "amount": "99.50"
  },
  "status": "pending",
  "transactionHash": null,
  "createdAt": "2026-05-20T12:00:00.000Z",
  "updatedAt": "2026-05-20T12:03:42.000Z"
}

Authorizations

x-api-key
string
header
required

API key for authentication. Pass your key in the x-api-key header.

Headers

Idempotency-Key
string
required

Caller-chosen string (≤256 chars) that uniquely identifies this request. Resending the same key replays the original response; reusing the same key with a different body returns 422. Keys are scoped per organization.

Required string length: 1 - 256

Body

application/json

Bridge-style transfer request. The (source.currency / source.payment_rail) → (destination.currency / destination.payment_rail) tuple selects the backend; only four pairings are valid.

amount
string
required

Human-decimal amount in the source currency.

source
object
required
destination
object
required
client_reference_id
string

Optional caller-supplied idempotency / correlation id.

Required string length: 1 - 256
developer_fee
string

Optional developer fee, in source currency units.

Response

Transfer created

A transfer initiated by the organization. Covers wallet→wallet (on-chain), bank→wallet (Bridge onramp), and wallet→bank (Bridge offramp) under one unified shape. Each row has a symmetric from and to side.

id
string<uuid>
required

Camino-owned UUID.

from
object
required

One side of a transfer. Exactly one of address (wallet) or bankAccount (bank) is populated.

to
object
required

One side of a transfer. Exactly one of address (wallet) or bankAccount (bank) is populated.

status
enum<string>
required
Available options:
pending,
submitted,
completed,
failed
transactionHash
string | null
required

On-chain hash once the wallet-side leg (if any) has been submitted; null otherwise.

createdAt
string<date-time>
required
updatedAt
string<date-time>
required