Creating an on-ramp
Move fiat into crypto with KiiChain Pay. Quote a rail, open the on-ramp, have the user pay off-platform, and track the activity to completion.
An on-ramp converts fiat into crypto. You quote a rail, open the on-ramp, and the user pays fiat off-platform — through a provider checkout URL or by depositing to a set of instructions (a PIX key, a CLABE, a wallet address). There is no on-chain transaction for you to sign: once the fiat lands, the provider settles the crypto and the activity moves to fulfilled.
At a glance
Direction
Fiat → Crypto
Create endpoint
POST /market/v1/products-providers/{id}/onramp (market module)
User acts
Off-chain — pays fiat via a URL or deposit instructions
On-chain signing
None
You need
A KYC-verified account, an on-ramp products_provider_id, a destination_id (wallet that receives the crypto), and a write-enabled API key
Tracks via
display_status on the activity
Prerequisites
A KiiChain Pay account that has completed KYC.
An API key; write calls must be signed (see Sign write requests).
Your
account_idand a wallet destination that will receive the crypto — see Discovering rails & IDs. The examples assumeKII_API_KEY,KII_ACCOUNT_ID, andKII_DESTINATION_IDare set.
Some providers require their own KYC in certain countries. If so, the create call will tell you — see Provider KYC / KYB.
Step 1 — Get a quote
Find an on-ramp rail (a products-provider whose type is "onramp") and quote it for the fiat amount the user wants to spend. For an on-ramp the amount is fiat in decimal units.
The response is a signed quote envelope. You pass it back unchanged in the next step.
Quotes expire (expiration_date / exp). Create the on-ramp promptly, and request a fresh quote if it lapses.
Step 2 — Create the on-ramp
Send the quote, your account_id, and the destination_id (the wallet that receives the crypto) to the on-ramp endpoint. This is a write request, so it must be signed.
The response gives you the new activity's ticket_id and one of two payment payloads:
A checkout URL (url_payload) — send the user to a hosted provider flow (e.g. a card checkout):
Deposit instructions (deposit_payload) — show the user where to send the fiat:
deposit_key is the rail-agnostic destination (a PIX key, a CLABE, a bank reference); deposit_code is an optional copy-and-paste / QR value (for example, a PIX BR Code). Render whichever fields are present.
Step 3 — The user pays
The user completes payment off-platform — on the checkout URL, or by sending fiat to the deposit instructions. Nothing to sign on your side. KiiChain Pay detects the incoming payment and advances the activity through provider processing.
Step 4 — Track to completion
Poll the activity by its ticket_id and watch display_status.
display_status moves pending → processing → fulfilled once the provider settles the crypto to the destination wallet. Terminal values are fulfilled, failed, canceled, refunded, and expired. If you need to re-show the payment instructions while the activity is still open, call GET /tickets/v1/{ticketId}/pending_user_actions — for an on-ramp it returns the url_payload again.
Full example
An end-to-end on-ramp with deposit instructions, using the signing helper from Generating API keys (kiiFetch handles the Authorization, x-timestamp and x-signature headers).
Related
Creating an off-ramp — the reverse: crypto → fiat.
Guides overview — discovering rails, destinations, and IDs.
KYC — account levels, limits, and provider verification.
Last updated