Skip to main content
The gateway takes stablecoin payments — USDT and USDC on Ethereum, BNB Chain, Polygon, Base, Arbitrum, Avalanche, Celo, TRON and Solana — and credits them to your Rach balance once the chain has confirmed them. Use Rach’s hosted checkout, or build your own pay page on the same API.
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.
string
Where Rach POSTs the webhook when the payment confirms.
object
Key/values echoed back to you.
The deposit address belongs to this session only. Ask the customer to send exactly the coin and network shown — a coin sent on another network cannot be credited automatically.

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).
Typical time from the customer sending to 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 expired by its timer is still watched for 24 hours. A payment that arrives in that window confirms the session.
  • Partial payments. The session stays pending until 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).