Skip to main content
Offramp is money moving out of crypto: a token arrives, naira lands in a bank account. Paj gives you two ways to arrange that, and the choice is really about whether you know the amount in advance.

Two routes to the same payout

The bank account address is the standing option. Register an account once, get an address, and anything ever sent there is converted and paid out. There is no order to open and no amount to state — the deposit is the instruction. It suits a payout destination you show a user repeatedly, or one you hand to a third party who will pay it on their own schedule. Creating an offramp order is the explicit option. You state the amount up front, Paj prices it and returns a one-off funding address, and you send the tokens there. It suits the moment where the figure matters — a checkout where you have quoted someone a specific naira amount, or a payout you need tied to one deposit rather than to an address anyone can pay at any time.
The standing address is the simpler integration and the one most products reach for. Orders exist for when a specific amount has to be quoted, accepted, and settled as a unit.

Which chain

The standing address is Solana only. Orders work on every supported chain — Solana, TON, Ethereum, Base, BNB Smart Chain, Monad and Arc — so if your users hold funds anywhere other than Solana, the order is the route to use, whatever the amount. Name the chain with chain (it defaults to SOLANA) and the token with mint. The chain’s settlement stablecoin — USDC everywhere except TON, where it is USDT — pays out directly; any other token is priced at its USD value when the deposit lands.

Pricing

Both routes settle at the offRampRate live when the deposit is observed, not when you asked. An order gives you a quote to show a user, but it does not lock anything — see Rates for why the number can move underneath you and how to present it honestly.

The life of an order

An order opens at INIT and sits there waiting for funds. When the deposit is seen on-chain it moves to PROCESSING, and once the naira has left for the bank account it ends at COMPLETED. ERROR is the other terminal state. Each of those transitions is posted to a webhook as it happens, in the same shape as the response that created the order. Name one per order with webhookURL, or leave it out and the rampWebhookURL configured on your API key is used — set that once with Update your webhook URLs and every order is covered. With neither, you are polling.

Funding addresses are borrowed, not owned

The address on an order comes from a shared pool and goes back to it. An order that sits unfunded for two hours is treated as abandoned and its address is released for reuse, and the order record itself is deleted after 72 hours.
Always send to the address on the response you are acting on. An address you cached from an earlier order may since have been reassigned, and funds sent there will settle somebody else’s order.
This is the sharpest difference between the two routes. A bank account address is derived from the account itself and is permanent — safe to store next to the user, safe to display again tomorrow. A funding address is temporary and safe for exactly one order. A funding address also belongs to one chain. On the EVM chains the same address exists on all five networks, but it is only watched on the chain the order names — send there.

Who the payout belongs to

Orders take an optional bvn identifying the end user behind the payout. Send one and Paj traces it to that user’s KYC record, verifying and registering them if the BVN is new. Leave it out and the order is attributed to your business alone — the payout still works, but nothing ties it to an individual.