Create an onramp quote
Creates an onramp quote — a short-lived, priced offer to convert fiat into the
crypto held by the wallet identified by wallet_id.
source_currency is the fiat being paid in (e.g. NGN); the wallet’s own currency
(e.g. USDC) is the destination. source_network is the fiat rail (e.g. bank,
mobile_money). destination_network is optional — when omitted it is derived from
the wallet’s newest active credential, defaulting to solana when the wallet has no
active credential; when supplied it must be a network the wallet currency supports.
country_code (optional, ISO 3166-1 alpha-2, e.g. NG) disambiguates
source_currency when the same code is supported in multiple countries. If the code
is only supported in one country, country_code can be omitted. If the code is
supported in two or more countries and country_code is omitted, the request is
rejected with a 400 listing the available countries. country_code no longer needs
to match the customer’s registered country — the payer may transact from a country
other than their KYC country.
phone_number (optional, international/E.164 format) and provider_id (optional,
a prov_… id) are accepted. When source_network is mobile_money, a payer phone
must be resolvable — either phone_number is supplied or the customer has a phone on
their profile — and provider_id is required.
full_name (optional, 2–128 characters) is the full name of the phone owner. It is
required when source_network is mobile_money and either phone_number is
supplied on the request (the phone owner may differ from the customer) or the
customer is a business (whose sender payload otherwise carries no individual name).
full_name is stored on the quote’s metadata under fullName and forwarded to the
payout rail as the sender name. Supplying full_name on a non-mobile-money onramp
is rejected with a 400.
reference is optional and echoed back as the quote reference.
The quote is created with status: active and an expires_at in the near future.
Authorizations
API key issued during merchant onboarding.
Headers
Optional client-supplied key. Identical key + identical body within 24h replays the original response. Identical key + different body returns 409 idempotency_conflict. The hash is over raw bytes — clients retrying must send the byte-identical body; a re-serialised JSON payload will produce a different hash and a 409. Strongly recommended for retry-safe clients.
^[A-Za-z0-9_\-]{8,255}$Body
CreateOnrampQuoteDto
64^[A-Z0-9]{2,8}$^\d+(\.\d+)?$mobile_money, bank, solana, base, ethereum ^[A-Z]{2}$mobile_money, bank, solana, base, ethereum ^\+[1-9]\d{6,14}$642 - 128128