rightrates
Start Inquiry

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.

POST/v1/checkout/sessionsCreate a session on the best route
GET/v1/quotesRanked quotes across available routes
GET/v1/transactions/:idNormalised transaction state
GET/v1/routesRails available to your project

Environments & 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_9f2ea41c

Checkout 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 route

type 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 | refunded

Webhooks

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

400invalid_requestMalformed body or missing field
401invalid_keyUnknown or revoked project key
403route_unavailableCorridor not open to this project
409session_expiredQuote or session past its expiry
429rate_limitedBack off and retry with jitter

Go-live checklist

  1. Complete KYB and receive production keys.
  2. Verify webhook signatures and idempotent handling.
  3. Confirm settlement preference per corridor.
  4. Run one end-to-end sandbox flow per rail you enable.
  5. 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