Skip to main content
The Paj public API (v2) gives your product a bridge between stablecoins and African bank accounts. It is built around one primitive:

A bank account is an on-chain address

Register a bank account once, and Paj derives a deterministic on-chain address for it. Anything sent to that address is converted and paid out to the bank account as fiat. No order to create, no quote to accept, no session to manage.

What you can do

Register a bank account

Confirm a bank code and account number with the bank, then get back the account holder’s name and the address that pays it.

Look one up

Resolve an address back to a bank account, or find the address for an account number you already know.

Read the rates

Fetch the live onramp and offramp rates for a currency, with your business fee already applied.

Sell fiat for tokens

Open an onramp order, hand your user a virtual account, and deliver the token to their wallet once they pay.

Pay out by order

Quote a fixed amount and get a one-off funding address on any supported chain.

Get paid

Collect tokens or fiat into your own business balance.

Chains

Orders settle on Solana, TON, Ethereum, Base, BNB Smart Chain, Monad and Arc. Payments work on all of those except TON, and the standing bank account address is Solana only. Supported chains has the full matrix and the stablecoin each chain settles in.

The shape of an integration

Most integrations are small. You register each of your users’ bank accounts once, store the returned address alongside the user, and show that address as a payment destination. From then on the flow is entirely on-chain — a user (or an exchange, or a third party) sends USDC on Solana to the address, and Paj handles the conversion and the fiat payout.
1

Register the bank account

POST /pub/v2/bank-account with a bank code and account number. Paj confirms the account with the bank and assigns it an address.
2

Show the address

Display the returned address (and, for confidence, the accountName the bank returned) as the destination to pay.
3

Funds land, fiat pays out

Paj observes the deposit, converts it at the current offramp rate, and disburses to the bank account.
Registration is idempotent per bank account. Calling it again for the same bank code and account number returns the existing record and the same address, so it is safe to call on every sign-in rather than tracking state yourself.

Base URL

All endpoints live under https://api.paj.cash and are prefixed with /pub/v2. Every request needs an x-api-key header — see Authentication.

Start here

Register your first bank account in about five minutes.