Changelog
API changes, new capabilities, and anything you might need to act on.
How to read this
Additive changes (new fields, new endpoints, new event kinds) ship without
notice and are always safe, so build your parsers to ignore unknown fields.
Anything breaking gets an entry here with a migration note before it
reaches the live environment, and rides the Api-Version header. Omitting
that header pins you to the oldest supported version, so a deploy can never
move you onto a breaking change.
2026-08-26: the product is Rasto Business
The API and every object, field, status, and error code are unchanged. Only the name is.
- Rasto Business is the product name across this site and in the API
Reference, whose
info.titlenow readsRasto Business API. The company is still Rasto, so anything referring to us by company name is unchanged, and no endpoint, id prefix, or field name moved. - Descriptions throughout the reference were reworded to drop internal vocabulary. Where a page previously said a third party did something, it now says what we do, which matches the contract you actually integrate against: every status, code, and message you receive is one we defined.
Nothing here requires a change on your side.
2026-08-26: documentation rewrite, corrections, and a restructure
These docs were rewritten against the live API surface and reorganized. Nothing in the API changed, so this entry is a map for anyone who bookmarked a page or built against the earlier text.
Pages moved
The mechanics of calling the API now live in the API Reference tab, beside the endpoints, rather than in the Documentation tab.
| Was | Is now |
|---|---|
/essentials/authentication | /api-reference/authentication and /api-reference/environments |
/essentials/idempotency | /api-reference/idempotency |
/essentials/errors | /api-reference/errors |
/essentials/lifecycles | /api-reference/lifecycles |
/essentials/pagination | /api-reference/pagination |
/quickstart | /quickstart/overview plus five numbered guides |
/webhooks | /webhooks/overview, /webhooks/structure, /webhooks/signature |
Pages added
- Quickstart is now five short guides run in order: get set up, onboard a customer, receive a payment, send from a wallet, set up webhooks.
- Use cases has a page each for contractor payouts, B2B invoicing, dollar accounts, and treasury.
- Verifying signatures carries the full verification procedure with runnable Python and TypeScript.
- MCP Server: these docs now expose a Model Context Protocol
endpoint at
https://docs.rasto.co/_mcp, so a coding agent can search the current documentation while it works. No authentication, read only, and the page carries install commands for Claude Code, Cursor, VS Code, Claude Desktop, Codex CLI, Gemini CLI, Windsurf, and Cline. - Amounts & Precision, FAQ, Building with AI, Implementation Overview, and two help-center entries covering virtual-account gating and expired operations.
Corrections
Several pages had drifted from the code. Every item below is a fix.
- Verification submission is explicit. Documents sent on customer
create or PATCH are staged, never submitted. The only call that starts a
review is
POST /api/customers/{id}/verifications/submit. Earlier pages described automatic submission, which does not happen. Submitting with inputs still outstanding returns422 verification_incompletenaming them. - The sandbox verification decision is
request_for_information, notawaiting_info. Accepted values areapproved,rejected, andrequest_for_information. - Corrected error codes:
invalid_signed_tos_id(notsigned_tos_id_invalid),no_rate_available(notno_route_available),missing_idempotency_keyis a 400. New codes documented:endorsement_not_approved,customer_name_required,virtual_account_exists,unsupported_rail,amount_out_of_range,unknown_endorsement,document_rejected,invalid_signature,keys_required,keys_already_registered,invalid_public_key,activation_rejected,invalid_cursor,unsupported_api_version. - Corrected ids: payouts are
pay_, webhook events arewev_. - Corrected defaults: list
limitdefaults to 25. - Business customers use
controllers, one array with role flags (has_ownership,has_control,is_signer,is_director), not parallel owner, representative, and director lists. The business discriminator field isbusiness_kind. - Virtual account destinations can target a held wallet:
{"kind": "wallet", "asset": "usdc", "wallet_id": "wal_..."}. - Wallet objects publish
signing_reference, the immutable derivation reference your verifier compares against. Store it at creation. - Corridor fees are
{bps, spread_bps, min, collection}. - Virtual account statuses are
pending,active,frozen,closed. - New pages: What You Can Build, Implementation Overview, Amounts & Precision, and two help-center entries covering virtual-account gating and expired operations.
2026-08-22: wallets
Customer-held stablecoin wallets, non-custodial. Additive: nothing in the existing surface changed.
- Wallets: chain-scoped wallets, as many per customer as you need. We hold no key that can move the funds. Every address derives from your own Recovery Key, so a full compromise of our systems still cannot spend from one.
- Funded by a plain on-chain send: no transfer object to create first,
and balances are read from the chain, so directly received funds are
immediately spendable. Create, list, read balances (single GET plus a
total_balancesroll-up), and paginate history. - Register two keys first: a Primary Signing Key (hot, rotatable) and a
Recovery Key (cold, permanent, and the identity your addresses derive
from). You send us only the public halves, and wallet creation returns
400 public_keys_requireduntil they are on file. - One address across EVM chains:
address_wallet_idreuses an existing wallet's derivation so the same address extends onto another EVM chain. EVM only on both sides. - Sending funds: every send is an operation you verify and authorize with your own key. We build the exact transaction and hand back an authorization carrying the full intent plus everything needed to rebuild it independently, never a bare hash to sign blind.
- New lifecycles:
walletandwallet_operation, both in Statuses & Lifecycles. - New events:
wallet.created,wallet.deposit_received,wallet.withdrawal_created,wallet.deposit_returned,wallet.operation_confirmed,wallet.operation_failed.
2026-08-13: endorsements as the one KYC channel
- Endorsements are requested explicitly:
endorsements: ["endo_usd"]on customer create or PATCH. Requestingendo_usdneedsemail,phone,economic_profile.tin, andeconomic_profile.tax_residence_countryin the same request, otherwise422 endorsement_profile_required. - Decisions arrive as
endorsement.approved,endorsement.request_for_information, andendorsement.rejected. There are noverification.*events. - Every ask is a bare documented code in one of five
requirementsbuckets. The customer'srequirements_due, theissuesobject list, andprofile_dueare all gone: one channel, not three. - Payloads are lean on PII. The customer object no longer echoes phone, date of birth, nationality, id documents, economic profile, or controllers. The address trims to state and country, and verification payloads drop every internal name and all extracted data.
2026-08-08: USD launch shape
- USD first: launch fiat-in is USD over ACH and Fedwire.
currencyandrailare both required on every virtual-account create, anddeposit_instructionscarryaccount_numberandrouting_number. EUR over SEPA returns later. Coverage is the live matrix. - Solana first: wallets and deliveries launch on Solana. Base,
Ethereum, and Polygon are built and enable next, returning
400 unsupported_chainuntil then.
2026-07-29: initial API surface
- Onboarding: hosted terms links and programmatic attestations. Customers (individuals and businesses) with API document sharing as the verification intake.
- Accounts and money: virtual accounts with versioned stablecoin
destinations. Deposits, conversions, and payouts with itemized
fee_linesand a frozenexchange_rate. A unifiedtransactionsfeed and ledger-truthbalances. - Pricing: per-account partner fees (
partner_fee_bpsandpartner_fee_flat) settled to your balance in real time. Two-directional fee-itemizedquotes/estimate. Account-scopedcorridors. - Platform:
Api-Keyauth with split sandbox and live hosts. Mandatory idempotency on every POST with byte-for-byte replays. One error envelope. Cursor pagination. Signed webhooks with a delivery portal and replay. - Sandbox: verification-decision, treasury-funding, and fiat-deposit
simulators, with magic amounts
666.00(returned) and777.00(on hold).