The onramp flow lets your users pay in local currency (NGN, GHS, KES) and receive crypto (USDT, USDC, BTC, ETH) in their wallet. Partna handles the payment collection, currency conversion, and crypto delivery. If you want full control over the experience, use this API flow. If you would rather redirect users to a Partna checkout, use the Onramp Widget instead.Documentation Index
Fetch the complete documentation index at: https://docs.getpartna.com/llms.txt
Use this file to discover all available pages before exploring further.
How it works
Create a user account
Register your user with Partna using Create Account. This creates a permanent account that can receive payments at any time.
Complete KYC
Your user must verify their identity before transacting. See Accounts and KYC for the full verification flow. Users only need to verify once.
Fetch a rate
Call Get Rate with
fromCurrency=NGN and toCurrency=USDT (or your desired fiat/crypto). Save the key from the response.Initiate the onramp
Call Onramp and Offramp with The response includes a bank account (
type: "fiatToCrypto". Include the rate key, amounts, currency pair, and the user’s crypto wallet address.accountName, accountNumber, bankName) where the user should send their NGN payment.User makes payment
The user transfers the specified NGN amount to the bank account returned in step 4. This can be done via bank transfer or any supported local payment method.
Example response (step 4)
Key parameters
| Parameter | Description |
|---|---|
type | Must be fiatToCrypto for onramp |
fromCurrency | The local currency the user is paying in (e.g., NGN) |
fromNetwork | The payment network for the local currency (e.g., naira, mobileMoney, mpesa) |
toCurrency | The crypto the user will receive (e.g., USDT, USDC, BTC) |
toNetwork | The blockchain network for delivery (e.g., tron, ethereum, solana) |
cryptoAddress | The user’s wallet address to receive crypto |
rateKey | The rate key from Get Rate |
rampReference | Your unique reference for this transaction (use for idempotency) |
fromAmount | The amount in local currency |
cancelPendingRampRequest | Set to true to cancel any existing pending request for this user. Default: false. |
expireAction | What happens if the rate expires: useCurrentRate (default) or deposit |
rampExpTime | Custom expiration time in seconds. Default: 1 hour. |
Handling pending requests
Each user can only have one active ramp request at a time. If you need to create a new request while one is pending, setcancelPendingRampRequest: true in your request body.