USDC ramp
Turn US dollars into USDC and back, and send USDC to a wallet you own.
In sandbox
The ramp works with test money only. Writes answer 403 sandbox_only on a
live deployment or a live workspace.
Scopes
- Reads need
read:treasury. - Writes need
write:rampson the key itself (an old*key isn't enough). - Wallet proofs are signed in the dashboard by a workspace owner or admin, never with an API key.
Flow
- Link the account:
POST /api/ramp/account(one time).GETshows its status. - Quote:
POST /api/ramp/quoteswithdirection(onramp,offramporwithdraw) andamount(a decimal with at most 2 places, for example"250.00"). A quote is single-use and includes the most the fee can be. - Order:
POST /api/ramp/orderswith{"quoteId": "…"}for an on-ramp or off-ramp.GET /api/ramp/ordersand/api/ramp/orders/{id}show status. - Withdraw to a wallet you own: quote with
direction: "withdraw"and thewalletId, thenPOST /api/ramp/withdrawalswith thequoteId. The wallet must be proven (signed in the dashboard), approved by SorenPay, and registered withPOST /api/ramp/wallets.
Limits
- Withdrawals of $3,000 or more answer
422 travel_rule_unsupported, because Travel Rule information exchange isn't built yet. - Any unavailable step answers
422 capability_unavailablebefore anything is written.
Retired routes
POST /api/ramp/onramp/sessions, POST /api/ramp/offramp/sessions and
POST /api/ramp/quote answer 410 with {"error":"gone","use":"/api/ramp/orders"}.
GET /api/ramp/onramp/sessions and GET /api/ramp/sessions/{id} still return
old sessions.
The full request and response fields are in the OpenAPI spec.