Base URL:
https://api.rach.finance/api/v1/ · Auth: X-API-Key (a test_sk_ or
live_sk_ key — see Environments)Two ways to take a payment
Hosted checkout
Create a session without a network. Send the customer to
payment_url; they
choose the coin and network on Rach’s page and pay. Least code.Your own pay page
Create the session with a
network and coin, and get a deposit address back
immediately. Show it in your UI; Rach does the rest.Create a checkout
POST /checkout/create
number
required
Amount to charge.
string
required
Hosted checkout: the price currency (e.g.
USD). With a network: the coin, USDT or USDC.string
required
Your unique order reference, for reconciliation. One per order.
string
required
Buyer’s email, for the receipt.
string
required
crypto.string
Optional. A network code from Supported networks —
ETH, BSC, POL,
BASE, ARB, AVAX, CELO, TRX or SOL. Omit it and the customer chooses.string
Buyer’s name.
string
Shown on the pay page.
object
Key/values echoed back to you.
Build your own pay page
These public endpoints take the session id and need no key, so your frontend can call them directly:How a payment is confirmed
1
Detected
Rach watches every open session’s address on-chain and records the incoming
transfer — only from the genuine USDT/USDC contract for that network.
2
Confirmed
Once the transaction has the network’s confirmation depth (see the
table), Rach re-reads the transaction itself to check what
it really delivered, then marks the session
paid.3
Credited and notified
The amount, less fees, is credited to your balance and Rach sends
payment.confirmed to your callback_url (webhooks).paid: about a minute on Base,
Arbitrum, Avalanche, Celo, BNB Chain, TRON and Solana; a few minutes on
Ethereum (12 blocks) and Polygon (128 blocks).
Edge cases, handled for you
- Late payments. A session
expiredby its timer is still watched for 24 hours. A payment that arrives in that window confirms the session. - Partial payments. The session stays
pendinguntil transfers to its address add up to the amount. - Old funds. A transfer that landed on the address before the session existed is never counted towards it.
- Wrong coin. USDC sent to a USDT session (or the reverse) is not counted.
Check a payment
Rely on the webhook, or poll:Response
status is pending, paid or expired.
Other endpoints
Collected funds are withdrawn from the dashboard — see
Settlement & withdrawals. The full schema is in the
Payments API Reference under Checkout (Crypto Gateway).

