Skip to main content
POST

Authorizations

Authorization
string
header
required

Session JWT (from register/login) or API key (pk_...). X-API-Key: <token> is accepted as an alternative header.

Headers

Idempotency-Key
string

Alternative to the idempotency_key body field.

Body

application/json
amount
string
required

Positive decimal string, up to the currency's decimals (6 for USDT/USDC/GOLD, 8 for BTC).

Example:

"10.500000"

to_account_id
string<uuid>
to_email
string<email>
to_phone
string

E.164 phone of the destination account. Only accounts with an OTP-verified phone resolve (404 recipient_not_found otherwise; 422 recipient_ambiguous if more than one account shares the number).

to_contact_id
string<uuid>

Send straight to a contact from your book (uses its linked CBPay account, or its verified phone).

to_qr_token
string

Profile QR token of the destination account (scanned from its CBPay QR). Also accepts the extended checkout QR payload (cbpay:pay?to=…&checkout=…) — the embedded checkout token is honored automatically.

checkout_token
string

Optional token of a universal checkout link to pay directly. The destination is forced to the link's account and the amount must cover the due quoted server-side in the chosen asset (422 checkout_amount_mismatch with the updated due otherwise). On completion the link is settled and auto-converted to its settlement_asset.

asset
enum<string>
default:USDT

Balance currency to move; the destination receives in this same currency.

Available options:
USDT,
USDC,
BTC,
GOLD
description
string
idempotency_key
string
save_contact
boolean
default:true

The destination is saved as a contact automatically; send false to skip it.

Response

Idempotency replay.

transfer_id
string<uuid>
from_account_id
string<uuid>
to_account_id
string<uuid>
asset
string
Example:

"USDT"

amount
string
description
string
status
string
Example:

"completed"

created_at
string<date-time>
idempotency_hit
boolean
Last modified on July 18, 2026