completed only once the purchased crypto has landed on-chain as a deposit, not merely when the provider reports sending it. After that, the deposit follows the standard pipeline to the account’s target.
Order stages
Every order moves money through four stages:deliveryissubmittedwith atxHashonce the provider reports the transfer, andcompletedwith adepositIdonly once that transfer landed as a deposit on the account.on_holdandfailedcarry areason: for examplekyc_requiredwhile the user still has to verify, orcancelledanddeclinedwhen a payment fails.returnstaysnoneunless money goes back; acompletedreturn carries anoutcome(full_refund,adjustment, orunresolved).
status derived from its stages, and terminal once no stage will change again:
Exchange orders reach
completed the same way as fiat orders, once the transfer lands.
Get an order
id accepts either the order’s id or the orderId returned when you started it. It returns 404 until the provider first reports the order, which happens when the user starts paying, and for another project’s order.
- Fiat figures:
chargedis what the user paid in their own currency;euris comparable across every order;usdis present when the provider reports it. Each has atotalincluding fees and anetbefore fees, and any of them isnullwhen the provider didn’t state it. rail: the payment method or exchange, orprovider_selectedwhen the provider didn’t say.providerStatus: the provider’s own status, for support; don’t branch on it.
GET /onramp/orders/{id}.
List orders
List your project’s orders, newest first by when each began, optionally for one account:nextCursor as cursor for the next page; it is null on the last one. Orders are kept for good, including pending and cancelled ones. Full schema: GET /onramp/orders.
Push updates
Each stage move sends aramp-order webhook carrying the whole order in the shape above, so you can store the latest one rather than fetch after each event. The delivery’s txHash reappears as the transactionHash on the deposit-received event, followed by the usual bridge events. Card and Apple Pay orders typically complete within minutes; bank transfers can take days. Exchange timing depends on the provider flow.
Processing caveats
- Session coverage — on-ramp purchases land on Base, so the account’s session set must include Base. The default registration flow covers every supported chain; if you restrict
sessionChainIds, include Base or landed funds can’t be bridged. - Deposit whitelist — if you restrict accepted deposits, allow USDC on Base above your minimum. Otherwise every on-ramp purchase is rejected with
deposit-rejected. - Same-chain target — when the account’s target is USDC on Base paid to the account itself, the purchase is already at its destination: no bridge events fire, and the order’s
completedstatus is your terminal signal. - KYC and limits — identity verification and purchase limits are handled by Swapped inside the hosted UI.
Migrate from the deprecated route
GET /onramp/swapped/status/{smartAccount} and the onramp-order webhook keep working unchanged until their retirement is announced. They report only the account’s latest order, for seven days, with Swapped’s own statuses. Exchange orders never leave processing there. Move to GET /onramp/orders and ramp-order, which cover every order, for good, stage by stage.