Skip to main content
POST
Send to any phone or wallet (instant, on-chain)

Authorizations

X-API-Key
string
header
required

Your Rach B2B API key. Use rach_sk_live_* for production (on-chain) or rach_sk_test_* for sandbox (no-chain simulation).

Body

application/json

Transfer payload

idempotency_key
string
required
Example:

"txn_ref_abc123"

local_fiat_amount
string
required
Example:

"5500.00"

quote_id
string
required
Example:

"DIRECT_CRYPTO:USDC:0.50"

recipient_phone
string
required

RecipientPhone identifies the recipient — same dual format. Addressing by phone allows on-the-fly provisioning for a never-seen number; addressing by wallet address requires that wallet to already exist.

Example:

"+2250700000002"

sender_phone
string
required

SenderPhone identifies the sender — accepts EITHER an E.164 phone number (+2250700000001) OR a 0x-prefixed wallet address. No separate field needed: the format is auto-detected.

Example:

"+2250700000001"

target_token
enum<string>
required
Available options:
USDT,
USDC
Example:

"USDC"

Response

Accepted

created_at
string
message
string
recipient_status
string

RecipientStatus is "EXISTING" when the recipient already had a wallet, or "PROVISIONED_ON_THE_FLY" when Rach auto-created an unaffiliated wallet for their phone number (recipient gets an SMS with USSD access instructions).

Example:

"EXISTING"

status
string
transfer_id
string