StatusPrivate betaPublic testnets — test tokens, no real valueMainnet rolls out per jurisdiction

After payment

Reporting

List your transactions and roll up volume for reconciliation. Every figure traces back to a public on-chain event — there is no private ledger you have to trust.

List transactions

GET/api/v1/merchant/transactions

Returns your intents and their settlement state, newest first, paginated. Filter by status or currency to reconcile.

Query paramNotes
statusOne of pending · paid · completed · expired · cancelled · review · refunded · partial · overpaid. Anything else is rejected with 400 INVALID_STATUS — never silently ignored
currencySettlement token filter, e.g. USDC. Exact match
pagePage number, ≥ 1. Default 1
per_pageResults per page, 1–100. Default 20
GET /api/v1/merchant/transactions?status=completed
{
  "total": 128,
  "page": 1,
  "per_page": 20,
  "records": [
    {
      "intent_id": "pi_9f1c4a7e2b5d8036c1e94ab7d2508f63",
      "onchain_invoice_id": "0x9f…",
      "amount": 100.0,
      "amount_received": "100",
      "overpaid_amount": null,
      "underpaid_amount": null,
      "currency": "USDC",
      "chain": "base_sepolia",
      "status": "completed",
      "recipient": "0xyourdestinationwallet00000000000000000000",
      "tx_hash": "0x…",
      "matched_tx_hash": "0x…",
      "completed_late": false,
      "late_minutes": null,
      "metadata": { "order_id": "ORD-1024" },
      "created_at": "2026-08-06T12:00:00+00:00",
      "expires_at": "2026-08-06T12:30:00+00:00",
      "completed_at": "2026-08-06T12:00:05+00:00"
    }
  ]
}

Results are scoped to your account and your key's environment: a test key never sees live intents, and vice versa. Newest first.

Where the numbers come from

Each completed record corresponds to a PaymentMade event that the RSends indexer read from the chain and matched to your intent by onchain_invoice_id. Reporting is a view over indexed on-chain events, not an internal balance sheet.

Reconcile against the chain

For any record, take its tx_hash to BaseScan and confirm the PaymentMade event yourself — amount, recipient, payer. Your books and the chain should match exactly, because the chain is what RSends indexed in the first place.

What you receive

The amount you see settled is the whole principal you asked for. Nothing is ever deducted from a settlement: RSends never takes custody, and its pricing is a flat off-chain subscription. Where the deployed router charges an on-chain flat fee, the payer pays it on top of your amount — it is never netted out of what reaches you. The fee-less router arriving at the mainnet cutover removes it from the flow entirely.

FigureMeaning
amountWhat you requested — and exactly what landed in your wallet
amount_receivedThe matched on-chain amount (equals amount within your tolerance)

No withholding

Because RSends never takes custody, nothing is held back from a payment. There is no reserve, no rolling withholding, and no reserve_withheld line — every settled payment is final and whole the moment it confirms.

Volume summary

Aggregate by paging through completed records and summing amount per currency, or filter by date range using created_at / completed_at. Because the underlying truth is on-chain, a periodic chain-vs-report reconciliation is straightforward and worth automating.