Both USDT and USDC are supported for USD onramp.
1
Create User
user_id β every subsequent call needs it as the X-User-Id header.2
KYC
Request a Partner KYC URL:Headers: Poll the same endpoint again after a few seconds until the status becomes Redirect the user to
X-User-Id: <user_id>This call is asynchronous. The first response may come back pending:ACTIVE, at which point the response includes the KYC URL:url to complete identity verification. See Partner URL for the full reference.To return the user to your app afterwards, append redirect-uri as the last query parameter on the returned Persona URL:3
Bank Account Linkage
USD bank accounts are linked through Plaid, using the Bank Account Widget:The URL is valid for 10 minutes from generation. The user selects and authorizes their bank account via Plaid on this page.To return the user to your app once they exit the Plaid flow, append Once the user adds their bank account and itβs successfully linked and approved, the client can fetch the list of approved bank accounts:See Bank Account β Through Hosted Widget for setup details.
redirect_url as the last query parameter:4
Transaction
Two variants:Two kinds of quotes are available β a Live Quote (informational, executes at market rate) or a Locked Quote (rate held ~30-60s, supplied as Locked quote:Save
- Pool Buy β collected funds are converted to stablecoin and deposited into the pool wallet on the Saber system.
- External Buy β collected funds are converted to stablecoin and sent to a specified wallet address on a given network.
wallet_address and network in the request. See Available Networks and Tokens for supported networks and per-network limits.The request body must also include
source_id β the ID of the linked, approved bank account funds should be pulled from.quote_id in the buy request):Live quote:id from the locked-quote response as quote_id.- Pool Buy
- External Buy
quote_id is only required when using a Locked Quote β omit it when using a Live Quote.Checking status
CREATED, PROCESSING, COMPLETED, FAILED, CANCELLED, REFUND_INITIATED, REFUND_COMPLETED, etc.).
Poll until the status reaches a terminal state, or configure a webhook URL to receive completion pushes instead β see Order Lifecycle and Webhooks.
User limits and EDD
SSN is optional at KYC time, so limits are tiered based on whether an SSN was submitted:There is no EDD widget for USD. For higher limits, the client requests an EDD link via the same async Partner URL pattern as KYC (
POST β poll until status: ACTIVE β receive url):- If an SSN was already submitted at KYC, the user is taken directly to a broader questionnaire with a Persona link, where they upload the relevant supporting documents.
- If no SSN was submitted, the first EDD pass collects the SSN; the second pass then runs the actual EDD process (questionnaire and document upload).