Developers
RightRates API
One versioned REST API with predictable objects — projects, sessions, quotes, transactions, events. This page is a working preview of the integration surface; sandbox and production credentials are issued during onboarding, subject to compliance approval.
Overview
Everything routes through a checkout session: you describe the corridor (fiat, asset, network, amount), we price it across approved routes, return the best available route and a hosted or embedded flow, and stream signed status events until settlement completes.
/v1/checkout/sessionsCreate a session on the best route/v1/quotesRanked quotes across available routes/v1/transactions/:idNormalised transaction state/v1/routesRails available to your projectEnvironments & auth
Two environments, two key prefixes. Keys are project-scoped and sent as a bearer token. Never expose a live key in client code — hosted checkout and the embedded widget only ever require your public project ID.
ENVIRONMENTS
sandbox rr_test_... full API, simulated settlement
production rr_live_... issued after onboarding approval
Authorization: Bearer rr_live_9f2ea41cCheckout sessions
CREATE A SESSION — NODE
const rightrates = new RightRates({
projectId: "rr_live_9f2ea41c",
environment: "production"
})
const session = await rightrates.checkout.create({
type: "fiat_to_crypto",
fiatCurrency: "GBP",
cryptoCurrency: "USDT",
network: "tron",
amount: "1000",
redirectUrl: "https://merchant.com/complete"
})
// session.url → hosted checkout on the best routetype accepts fiat_to_crypto, crypto_to_fiat or fiat_to_fiat where supported. Sessions expire after 30 minutes if unpaid.
Quotes
RANKED QUOTES — RESPONSE
GET /v1/quotes?from=GBP&to=USDT&network=tron&amount=1000
{
"quotes": [
{ "route": "open_banking_uk", "receive": "1208.40",
"fee": "0.62%", "eta": "~90s", "score": 98 },
{ "route": "cards_unionpay", "receive": "1196.20",
"fee": "2.10%", "eta": "~45s", "score": 91 }
],
"expiresAt": "2026-07-03T14:07:00Z"
}Transaction lifecycle
States are normalised across every underlying provider, in order:
STATES
created → awaiting_payment → processing → converting
→ settling → completed
↘ failed | expired | refundedWebhooks
Every state change is delivered as a signed event. Verify the signature before trusting a payload; retries use exponential backoff for 24 hours.
SIGNED EVENT — POST /your-endpoint
{
"event": "settlement.completed",
"orderId": "ord_7d31c9",
"route": "open_banking_uk",
"settled": { "asset": "USDT", "network": "tron" },
"signature": "sha256=9f2e…a41"
}Errors
invalid_requestMalformed body or missing fieldinvalid_keyUnknown or revoked project keyroute_unavailableCorridor not open to this projectsession_expiredQuote or session past its expiryrate_limitedBack off and retry with jitterGo-live checklist
- Complete KYB and receive production keys.
- Verify webhook signatures and idempotent handling.
- Confirm settlement preference per corridor.
- Run one end-to-end sandbox flow per rail you enable.
- Agree ramp-up limits with your onboarding contact.
THIS IS AN API PREVIEW. OBJECT SHAPES ARE STABLE BUT FIELDS MAY BE ADDED. AVAILABILITY OF ANY ROUTE IS SUBJECT TO REGION, MERCHANT CATEGORY AND COMPLIANCE APPROVAL.
© 2026 RIGHTRATES™ — ALL RIGHTS RESERVED