# Rasto Business ## Documentation - [Introduction](https://docs.rasto.co/introduction.md): Rasto Business turns a bank payment into an on-chain stablecoin delivery, and gives your customers non-custodial wallets to hold the result. - [What You Can Build](https://docs.rasto.co/use-cases.md): Four products partners build on Rasto Business, and which half of the platform each one leans on. - [Implementation Overview](https://docs.rasto.co/implementation-overview.md): The whole integration in one page: what you configure once, what you build per customer, and what has to be in place before real money moves. - [FAQ](https://docs.rasto.co/faq.md): The questions that come up in the first week of integrating. - [Quickstart](https://docs.rasto.co/quickstart/overview.md): Five short guides that take you from an API key to delivered USDC and an authorized wallet send, all in the sandbox. - [1. Get set up](https://docs.rasto.co/quickstart/get-set-up.md): Keys, hosts, the two headers every request needs, and your first call. - [2. Onboard a customer](https://docs.rasto.co/quickstart/onboard-a-customer.md): Terms, the customer with its documents, the explicit submit, and the endorsement that opens everything else. - [3. Receive a payment](https://docs.rasto.co/quickstart/receive-a-payment.md): A USD virtual account with a stablecoin destination, then a simulated ACH credit that converts and delivers. - [4. Send from a wallet](https://docs.rasto.co/quickstart/send-from-a-wallet.md): Register your keys, create a wallet, and take one send through verify, sign, and authorize. - [5. Set up webhooks](https://docs.rasto.co/quickstart/set-up-webhooks.md): Register an endpoint, verify a signature, and replay an event to prove your dedupe works. - [Objects & Terminology](https://docs.rasto.co/concepts/terminology.md): The object model in one page: who is who, which object gates which, and the vocabulary the rest of these docs assume. - [Terms of Service](https://docs.rasto.co/concepts/terms-of-service.md): Terms come before the customer: a hosted acceptance page, or a programmatic attestation from your own UI. - [Customers](https://docs.rasto.co/concepts/customers.md): Individuals and businesses, and how the customer object doubles as the verification intake. - [Verification & Endorsements](https://docs.rasto.co/concepts/verification.md): One permanent applicant per customer, endorsements as the single source of readiness, and every ask a bare documented code. - [Virtual Accounts](https://docs.rasto.co/concepts/virtual-accounts.md): A dedicated bank account per customer with a standing stablecoin destination, so deposits convert and deliver without another API call. - [Money Movement](https://docs.rasto.co/concepts/money-movement.md): Deposit, conversion, payout: what happens when fiat arrives on a virtual account, and how to read each record. - [Wallets](https://docs.rasto.co/concepts/wallets.md): Non-custodial stablecoin wallets for your customers, funded by a plain on-chain send, with balances read from the chain itself. - [Sending Funds](https://docs.rasto.co/concepts/sending-funds.md): Every send is an operation you verify and authorize with your own key. We prepare it, you approve it, then we execute. - [Fees & Quotes](https://docs.rasto.co/concepts/fees-and-quotes.md): What a conversion costs, how to preview it, and how to price your own customers per account. - [Coverage](https://docs.rasto.co/coverage.md): Supported stablecoins, chains, and fiat rails, and how to discover your account's live corridors programmatically. - [Contractor payouts](https://docs.rasto.co/use-cases/contractor-payouts.md): Pay contractors in stablecoins by giving each one a dedicated USD account that converts and delivers automatically. - [B2B invoicing and settlement](https://docs.rasto.co/use-cases/b2b-invoicing.md): Onboard businesses through KYB, give each one a receiving account, and settle invoices on chain. - [Dollar accounts in your app](https://docs.rasto.co/use-cases/dollar-accounts.md): Give customers a balance they fund by bank transfer, hold as stablecoins, and spend from. - [Treasury and self-custody](https://docs.rasto.co/use-cases/treasury.md): Onboard your own entity, receive into your own accounts, and hold the result in wallets only your Recovery Key controls. - [Custody Architecture](https://docs.rasto.co/security/architecture.md): How non-custodial works here: what we can never do, what you can verify yourself, and what each compromise scenario actually costs. - [Signing Guide](https://docs.rasto.co/security/signing-guide.md): The complete verify-and-sign procedure: rebuild every operation from values you trust, compare byte for byte, and only then let your key touch it. - [Webhooks](https://docs.rasto.co/webhooks/overview.md): Register an endpoint, understand the delivery guarantees, and debug what was sent. - [Event structure](https://docs.rasto.co/webhooks/structure.md): The webhook envelope, every event kind we emit, and what rides inside data.object. - [Verifying signatures](https://docs.rasto.co/webhooks/signature.md): Authenticate every delivery against the raw body before you parse it, and reject replays. - [Sandbox Testing](https://docs.rasto.co/testing/sandbox.md): Simulate verification decisions, treasury funding, and deposits, and rehearse every failure path before real money moves. - [MCP Server](https://docs.rasto.co/mcp.md): Connect your coding agent to these docs over the Model Context Protocol, so it answers from the current documentation instead of guessing. - [Building with AI](https://docs.rasto.co/building-with-ai.md): These docs are machine-readable by design. Point your coding assistant at them, and check what it writes against the rules on this page. ## API Reference - [Introduction](https://docs.rasto.co/api-reference/introduction.md): The conventions every Rasto Business endpoint follows, and where to find each one documented. - [Authentication](https://docs.rasto.co/api-reference/authentication.md): API keys, key scopes, and the account checks that can refuse an otherwise valid request. - [Environments](https://docs.rasto.co/api-reference/environments.md): Two hosts, two key prefixes, fully partitioned data, and how versioning works. - [Idempotency](https://docs.rasto.co/api-reference/idempotency.md): Retry any POST safely. The Idempotency-Key header turns "did my request go through?" into a non-question. - [Errors](https://docs.rasto.co/api-reference/errors.md): One error envelope everywhere, a coarse kind, a specific code, and a request id for support. - [Statuses & Lifecycles](https://docs.rasto.co/api-reference/lifecycles.md): Every state machine in one place: what each status means, which are terminal, and which webhook fires on each transition. - [Pagination & Filtering](https://docs.rasto.co/api-reference/pagination.md): Cursor pagination on every list endpoint, stable under concurrent inserts, plus the filters worth knowing. - [Amounts & Precision](https://docs.rasto.co/api-reference/amounts.md): Money is decimal strings, rates are basis points, and every rounding decision is made where you can see it. - [List Customers](https://docs.rasto.co/api-reference/get-api-customers.md): List customers newest-first, optionally filtered by partner_reference_id. - [Create Customer](https://docs.rasto.co/api-reference/post-api-customers.md): Create a customer, terms must already be accepted via one of the two ToS paths. - [Get Customer](https://docs.rasto.co/api-reference/get-api-customers-customer_id.md): Fetch one customer. - [Update Customer](https://docs.rasto.co/api-reference/patch-api-customers-customer_id.md): Update a customer's editable fields; new verification material rides the same PATCH. - [Submit the customer for verification](https://docs.rasto.co/api-reference/post-api-customers-customer_id-verifications-submit.md): Submit the customer for verification, the ONLY call that starts a review. Documents arrive earlier, on create or PATCH, and wait in our archive; the body carries nothing but the customer id. Refuses with 422 `verification_incomplete` rather than failing opaquely further down. Safe to repeat: a new round on the SAME applicant, never a second identity. `requested_info` opens a scoped round instead, exempt from that check. - [List Verifications](https://docs.rasto.co/api-reference/get-api-customers-customer_id-verifications.md): List the customer's verification sessions, newest first. - [Create Tos Link](https://docs.rasto.co/api-reference/post-api-tos_links.md): Mint a hosted-acceptance link. Untargeted it precedes the customer, pass the signed_tos_id its acceptance yields into POST /api/customers. Pre-targeting a `customer_id` serves RE-acceptance after a terms-version bump (creation already required an agreement, so the customer exists): acceptance binds straight onto that customer with no follow-up call, the hosted twin of `tos_acceptance` on PATCH /api/customers/{id}, and refused the same way (409) when that customer is already on the current version. - [Get Tos Link](https://docs.rasto.co/api-reference/get-api-tos_links-tos_link_id.md): Poll for acceptance: `signed_tos_id` appears once accepted. - [List Virtual Accounts](https://docs.rasto.co/api-reference/get-api-customers-customer_id-virtual_accounts.md): List one customer's virtual accounts, newest first. - [Create Virtual Account](https://docs.rasto.co/api-reference/post-api-customers-customer_id-virtual_accounts.md): Create a virtual account with its stablecoin destination. - [List All Virtual Accounts](https://docs.rasto.co/api-reference/get-api-virtual_accounts.md): List every virtual account for the partner, newest first. Flat listing, consistent with deposits/conversions/payouts (the nested /api/customers/{id}/virtual_accounts form also remains). Filterable by customer_id and partner_reference_id. - [Get Virtual Account](https://docs.rasto.co/api-reference/get-api-virtual_accounts-va_id.md): Fetch one virtual account. - [Update Virtual Account](https://docs.rasto.co/api-reference/patch-api-virtual_accounts-va_id.md): Reprice partner fees and/or change the destination. - [List Customer Wallets](https://docs.rasto.co/api-reference/get-api-customers-customer_id-wallets.md): List one customer's wallets, newest first (no balances, GET one for those). - [Create Wallet](https://docs.rasto.co/api-reference/post-api-customers-customer_id-wallets.md): Provision a new wallet for the customer on the requested chain. - [Get Customer Wallet](https://docs.rasto.co/api-reference/get-api-customers-customer_id-wallets-wallet_id.md): Fetch one wallet with its balances (the customer-scoped form). - [List All Wallets](https://docs.rasto.co/api-reference/get-api-wallets.md): List every wallet for the partner, newest first. Flat listing, consistent with virtual_accounts; filterable by customer_id and partner_reference_id. No balances on list rows. - [Get Total Balances](https://docs.rasto.co/api-reference/get-api-wallets-total_balances.md): Aggregate balances across every wallet of the partner. - [Get Wallet](https://docs.rasto.co/api-reference/get-api-wallets-wallet_id.md): Fetch one wallet with its balances. - [Wallet History](https://docs.rasto.co/api-reference/get-api-wallets-wallet_id-history.md): The wallet's balance-affecting events, newest first. - [List Operations](https://docs.rasto.co/api-reference/get-api-wallets-wallet_id-operations.md): The wallet's operations, newest first. - [Create Operation](https://docs.rasto.co/api-reference/post-api-wallets-wallet_id-operations.md): Create a send, returns the authorization for the partner to verify and sign. - [Authorize Operation](https://docs.rasto.co/api-reference/post-api-wallets-wallet_id-operations-operation_id-authorize.md): Authorize an operation with the partner's signature; execution starts. - [Get Operation](https://docs.rasto.co/api-reference/get-api-wallets-wallet_id-operations-operation_id.md): Fetch one operation's status. - [List Resource](https://docs.rasto.co/api-reference/get-api-deposits.md): List the resource newest first, optionally filtered by customer_id. - [Get Resource](https://docs.rasto.co/api-reference/get-api-deposits-resource_id.md): Fetch one row (404 outside this partner + environment). - [List Resource](https://docs.rasto.co/api-reference/get-api-conversions.md): List the resource newest first, optionally filtered by customer_id. - [Get Resource](https://docs.rasto.co/api-reference/get-api-conversions-resource_id.md): Fetch one row (404 outside this partner + environment). - [List Resource](https://docs.rasto.co/api-reference/get-api-payouts.md): List the resource newest first, optionally filtered by customer_id. - [Get Resource](https://docs.rasto.co/api-reference/get-api-payouts-resource_id.md): Fetch one row (404 outside this partner + environment). - [List Resource](https://docs.rasto.co/api-reference/get-api-transactions.md): List the resource newest first, optionally filtered by customer_id. - [Get Resource](https://docs.rasto.co/api-reference/get-api-transactions-resource_id.md): Fetch one row (404 outside this partner + environment). - [Partner Balances](https://docs.rasto.co/api-reference/get-api-balances.md): List every customer balance for the partner, straight from the ledger. - [Customer Balances](https://docs.rasto.co/api-reference/get-api-customers-customer_id-balances.md): List one customer's balances. - [List Corridors](https://docs.rasto.co/api-reference/get-api-corridors.md): List the enabled corridors with this partner's pricing. - [Quote Estimate](https://docs.rasto.co/api-reference/get-api-quotes-estimate.md): Return an indicative, NON-BINDING price estimate, two-directional (Conduit-style). Source-based (?amount=100): "my user sends 100 USD, what lands?" Target-based (?target_amount=100): "my user wants exactly 100 USDC, how much USD must they send?" Fee lines are itemized so partners can show the full cost breakdown. Partner fees are per-virtual-account, so pass the account's fee pair to include it in the preview. Not a rate lock: ACH and wire deposits arrive hours later and convert at the rate current when the money lands. `source_asset` defaults to the launch currency, it was left at "eur" through the 2026-08-08 USA-first pivot, which disabled the EUR corridors and so turned every defaulted call into 400 unsupported_corridor. - [List Webhooks](https://docs.rasto.co/api-reference/get-api-webhooks.md): List the partner's webhooks. - [Create Webhook](https://docs.rasto.co/api-reference/post-api-webhooks.md): Register a webhook. - [Portal](https://docs.rasto.co/api-reference/get-api-webhooks-portal.md): Link to the delivery-debugging portal for this partner's webhooks. - [Delete Webhook](https://docs.rasto.co/api-reference/delete-api-webhooks-webhook_id.md): Remove a webhook. - [List Events](https://docs.rasto.co/api-reference/get-api-webhook_events.md): List outbox events, newest first. - [Replay Event](https://docs.rasto.co/api-reference/post-api-webhook_events-event_id-replay.md): Re-deliver one event. - [Simulate Verification Decision](https://docs.rasto.co/api-reference/post-api-sandbox-simulate-verification_decision.md): Decide the customer's latest verification session. Accepts approved / rejected / request_for_information. - [Simulate Treasury Funding](https://docs.rasto.co/api-reference/post-api-sandbox-simulate-treasury_funding.md): Fund the sandbox treasury float so quotes have inventory. - [Simulate Wallet Deposit](https://docs.rasto.co/api-reference/post-api-sandbox-simulate-wallet_deposit.md): Credit a held wallet directly, as if a deposit landed on-chain. - [Simulate Fiat Deposit](https://docs.rasto.co/api-reference/post-api-sandbox-simulate-fiat_deposit.md): Fire a fake fiat deposit (on the account's own rail) through the full pipeline. ## Help Center - [Help Center](https://docs.rasto.co/help-center.md): Answers to the questions integrators actually hit, and the two guides worth reading before launch. - [Going Live](https://docs.rasto.co/help-center/guides/going-live.md): The checklist between a green sandbox and production traffic. - [Reconciliation](https://docs.rasto.co/help-center/guides/reconciliation.md): Consume webhooks so nothing is missed or double-processed, and reconcile against the API as the source of truth. - [Verification needs more information](https://docs.rasto.co/help-center/faq/verification-awaiting-info.md): request_for_information is a fixable outcome, not a rejection. Read the reasons, supply the fix with a PATCH, and submit again. - [Why can't I create a virtual account?](https://docs.rasto.co/help-center/faq/cannot-create-virtual-account.md): The four gates on virtual-account creation, the error each one returns, and the exact fix. - [422: Idempotency-Key was already used](https://docs.rasto.co/help-center/troubleshooting/idempotency-key-reused.md): Why the error happens, what the message tells you, and the one-line fix. - [An operation expired before signing](https://docs.rasto.co/help-center/troubleshooting/operation-expired.md): Why the window is 30 seconds, what expiry costs, and how to restructure a flow that keeps missing it. ## Changelog - [Changelog](https://docs.rasto.co/changelog.md): API changes, new capabilities, and anything you might need to act on.