Send to any phone or wallet (instant, on-chain)
Moves USDC between two customer SCWs on Polygon PoS via an ERC-4337 UserOperation. Settlement is on-chain and final within seconds — no banks, no correspondents, no cut-off times.
Addressing: sender_phone and recipient_phone each accept EITHER an E.164 phone number (+2250700000001) OR a 0x-prefixed 40-character SCW wallet address — the format is auto-detected, so there is no separate field to learn. Use whichever identifier you already have for that party.
Sender must be a user affiliated with your business (provisioned under or adopted by your account).
Recipient can be ANY phone number or existing wallet address — system-wide, merchant-agnostic. If the recipient belongs to another business, their business is notified by webhook. If addressed by phone and that number has never been provisioned by anyone, Rach creates an unaffiliated wallet on the fly (recipient_status: PROVISIONED_ON_THE_FLY) and notifies the recipient by SMS with instructions to access their money via Rach’s USSD service. Addressing by wallet address requires that wallet to already exist — it cannot be auto-provisioned, since there’s no phone number to derive a fresh identity from.
For fiat-denominated transfers supply a valid quote_id from POST /v1/fx/quote. For direct crypto amounts use quote_id format DIRECT_CRYPTO:USDC:{amount} (e.g. DIRECT_CRYPTO:USDC:10.50). AML daily/monthly limits apply per sender.
Authorizations
Your Rach B2B API key. Use rach_sk_live_* for production (on-chain) or rach_sk_test_* for sandbox (no-chain simulation).
Body
Transfer payload
"txn_ref_abc123"
"5500.00"
"DIRECT_CRYPTO:USDC:0.50"
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.
"+2250700000002"
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.
"+2250700000001"
USDT, USDC "USDC"
Response
Accepted
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).
"EXISTING"

