Introduction
Rasto Business turns a bank payment into an on-chain stablecoin delivery, and gives your customers non-custodial wallets to hold the result.
What Rasto Business does
You onboard your end customers through our API. We verify them, issue each one a dedicated USD bank account, and attach a standing destination: a stablecoin, a chain, and an address. Every payment that arrives on that account is converted and delivered to the destination automatically, and your backend hears about each step over webhooks.
The same customers can hold non-custodial wallets. We derive the addresses, read the balances from the chain, and prepare every send, but only your own key can authorize one. See Custody Architecture for what that guarantees.
The building blocks
New to the object model? Objects & Terminology is the one-page map: who is who, which object gates which, and the vocabulary the rest of these docs assume.
Customers
Individuals and businesses. The customer object is also the verification intake: identity data and documents ride on it.
Verification
Request endorsements explicitly, submit when the intake is complete, and read readiness from five requirement buckets.
Virtual accounts
A dedicated USD bank account per customer with a stablecoin destination. Repointable, versioned, priced with your own fee.
Money movement
Deposits convert and deliver automatically, with itemized fees, the exact exchange rate, and a double-entry ledger underneath.
Wallets
Non-custodial stablecoin wallets your customers hold, funded by a plain on-chain send, with balances read from the chain itself.
Sending funds
Only your key can move funds. Every send is an operation you verify and authorize yourself.
What is supported at launch
| Supported today | |
|---|---|
| Fiat in | USD over ACH and Fedwire, a dedicated account per customer |
| Stablecoins out | USDC and USDT |
| Chains | Solana. Base, Ethereum, and Polygon are built and enable next |
| Wallets | Non-custodial customer wallets on Solana |
| Verification intake | API sharing: you collect documents, we relay them |
| Sandbox | Simulated verification decisions, treasury funding, fiat and wallet deposits |
EUR over SEPA, with EURC and EURe delivery, returns after the USD launch. The rail vocabulary in Coverage is already built for it.
A note on vocabulary. You are a partner, our tenant. Your end users
are customers. Everything behind the API is ours to run: verification
and banking rails never surface in the contract, so every status, code, and
message you handle is one we defined. GET /api/corridors lists the exact
fiat to stablecoin pairs enabled for your account.
Design decisions you will notice
- Amounts are decimal strings (
"100.50"), never floats. Rates are basis points, never percent:partner_fee_bps: "100"is 1%. See Amounts & Precision. - Every mutation is idempotent. POSTs require an
Idempotency-Key, and retries replay the stored response byte for byte. See Idempotency. - Webhook payloads match GET responses. The
data.objectinside an event is exactly what the matching GET returns. One serializer, no drift. - State is explicit. Every customer carries
endorsements, with per-currency readiness and five requirement buckets, so you never infer where onboarding stands. One channel, bare documented codes, no prose to parse. - Nothing is implicit about money. Virtual accounts need an explicit
currencyandrail. Wallet sends need your signature. Verification needs an explicit submit.
Start here
What you can build
Four common products, and which objects each one uses.
Implementation overview
The whole integration in one page, before you write any code.
Quickstart
Five short guides, from an API key to delivered USDC and an authorized wallet send.
Custody architecture
Why a full compromise of our systems still cannot move a customer's funds.
API reference
The conventions every endpoint follows, then every endpoint.
FAQ
The questions that come up in the first week.
MCP server
Connect your coding agent to these docs, so it answers from the current documentation instead of guessing.