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
/api/v1/merchant/transactionsReturns your intents and their settlement state, newest first, paginated. Filter by status or currency to reconcile.
| Query param | Notes |
|---|---|
status | One of pending · paid · completed · expired · cancelled · review · refunded · partial · overpaid. Anything else is rejected with 400 INVALID_STATUS — never silently ignored |
currency | Settlement token filter, e.g. USDC. Exact match |
page | Page number, ≥ 1. Default 1 |
per_page | Results per page, 1–100. Default 20 |
{
"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
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.
| Figure | Meaning |
|---|---|
amount | What you requested — and exactly what landed in your wallet |
amount_received | The matched on-chain amount (equals amount within your tolerance) |
No withholding
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.