chain field used by Polygon, Base, and BNB Smart
Chain: use the dedicated /v1/solana/* endpoints.
This guide applies when Solana is enabled for your Rach environment. Check
GET /health/ready first. solana: INBOUND_READY means zero-SOL wallet
provisioning and balance reads passed and receipt monitoring is configured.
It does not prove that the separately operated scanner worker has observed a
deposit or that a webhook was delivered. With monitoring disabled, Solana reports
DEGRADED even where balance reads work. solana: READY additionally permits
sponsored sends. Treat a confirmed deposit record or signed transfer.received
webhook as evidence of an observed credit.What your customer needs
Nothing native. Rach pays the Solana transaction fee and creates the customer’s USDC and USDT Associated Token Accounts (ATAs) before a provision request succeeds. Your customer can receive, hold, and send USDC/USDT while their owner address holds 0 SOL. This differs from an ordinary raw Solana address: SPL tokens need a recipient token account, and many exchanges will not create one for an empty recipient. Rach creates both supported ATAs first, so the address is ready for USDC and USDT deposits from the moment you receive it.1. Provision a deposit-ready customer address
token_accounts_ready is true. A 503
means Rach’s sponsor capacity is being restored; retry the same provision
request before giving the address to your customer or an exchange. The retry
uses the same customer key and idempotent ATA creation.
Use address as the customer’s normal Solana owner address. The ATA values are
included for a deposit provider that explicitly asks for a token-account
address. They are deterministic and belong to the customer, not to Rach.
2. Read both balances
3. Receive and reconcile deposits
When receipt monitoring is enabled for your environment, Rach scans finalized Solana receipts and writes an immutable deposit record before it sendstransfer.received. The notification is at-least-once, so deduplicate on
transfer_id—the durable Rach deposit UUID—not on the Solana signature alone.
One Solana transaction can credit USDC and USDT, or more than one customer
account. Do not treat health status alone as proof of a specific deposit.
X-Rach-Signature HMAC and keep webhook
processing idempotent; see Webhooks.
4. Send USDC or USDT without customer SOL
Once readiness reportssolana: READY, submit a sponsored send:
created_recipient_ata: true.
Use a normal on-curve wallet address as recipient_address; Rach rejects
program-derived addresses because funds sent to one can be unrecoverable to a
customer. Reuse the same idempotency_key on every retry. SETTLED and
FAILED are terminal; never issue a new key while a transfer is QUEUED,
SUBMITTING, SUBMITTED, or SUBMISSION_UNKNOWN.

