- Auto-ramp accounts (this guide): a dedicated virtual bank account for the user. Anything paid into it over ACH, FedNow, wire, or SEPA auto-converts to crypto and lands at a wallet address. Good for recurring or third-party funding, like payroll or invoices.
- Linked bank on-ramp: link the user’s bank and pull funds on demand via ACH debit.
Before you start
- Authenticate as an integrator and act on behalf of a verified user. See Authentication and Onboarding.
- Confirm the user’s
fiat_to_cryptocapability isactive— read it fromGET /v1/users/me, don’t assume it from KYC status. US users typically seerequirements_neededwith aterms_acceptancerequirement first: send the user through the requirement’sactionUrlhosted flow, then record the acceptance withPOST /v1/users/me/terms.
The provider activates the user’s account asynchronously after terms acceptance.
The capability can already read
active while the provider is still catching up — for
up to about 30 seconds, creation fails with 400 and detail The customer account is not active. Retry with backoff instead of surfacing it to the user.Create an auto-ramp account
token on network and settles to
address — no further API call is needed to trigger the conversion.
Three things that catch people out:
- The account is keyed to the (token + network + destination wallet) triple. You are
not creating “a virtual account for the user” — you’re creating “a virtual account for
USDC on Base going to
0xABC…”. Change the destination wallet and you get a whole new virtual account with new deposit details; the old one doesn’t follow. Store the destination address alongside the account in your database, and when a user changes their receiving wallet, expect to create a new auto-ramp account and update the deposit instructions everywhere you’ve shown them — including any saved payee the user set up at their own bank. That last one is the real-world failure mode: a recurring transfer pointed at the old details. - The beneficiary is the end user, not Spritz and not you. The user is sending money to an account in their own name — exactly what their bank expects to see. Present it that way in your UI.
- Check
statusbefore showing deposit instructions. Onlyactiveaccounts should receive money. Confirm it on every render.
Valid combinations and sizes
CallGET /v1/on-ramps/supported-pairs for the network, token, and rail combinations the
user’s region supports, with each pair’s minAmount — don’t hardcode the list. An
unsupported combination returns 400 (Unsupported Configuration), and an
unsupported-region request tells you the same way.
To preview a deposit before the user sends it, call
GET /v1/auto-ramp-accounts/{id}/estimate?amount=100:
Track conversions
Each deposit that converts produces an on-ramp record. List withGET /v1/on-ramps,
read one with GET /v1/on-ramps/{id}, or react to webhooks:
onramp.created, onramp.updated, and onramp.completed fire as deposits are detected,
converted, and delivered.
Wire deposits settle the same banking day; ACH takes one to two banking days; FedNow is
near-instant. See Settlement timing.
Sandbox testing
The sandbox simulates a deposit arriving at an auto-ramp account — no real funds move, but the full conversion path runs and fires realonramp.* webhooks:
completed immediately. Terms acceptance is also
headless in sandbox: POST /v1/users/me/terms accepts any opaque agreementId.
See Sandbox & Testing.
Integration checklist
- UI is driven from
capabilities, andterms_acceptanceis completed before account creation - Creation retries (or defers) through the provider’s asynchronous activation window
instead of surfacing
The customer account is not activeto users - Deposit instructions are only shown for
activeaccounts - The (token + network + wallet) triple is stored with the account, and a wallet change creates a new account plus new instructions everywhere they’re saved
- The beneficiary is presented as the end user
- Valid pairs and minimums come from
GET /v1/on-ramps/supported-pairs, not a hardcoded list -
onramp.*webhooks drive updates;GET /v1/on-rampsreconciles misses
Related
Linked bank on-ramp
Pull funds from a linked bank account instead.
Off-ramp: crypto to bank
The reverse direction: crypto in, fiat out.
What we support
Networks, tokens, and currencies.
Settlement timing
How long each rail takes.