It is derived, not allocated
The address is a Solana program-derived address computed from the account’s own identity — its account number, its bank code, and its region. Nothing random is involved, and no pool of pre-generated addresses is drawn from. Two consequences follow, and both simplify your integration:Stable
The same bank account always maps to the same address. Store it once; it
will not rotate or expire, and you never have to refresh it.
Shared
The address belongs to the bank account, not to your business. If another
Paj integration registered the same account first, you get the address it
already has.
What happens after a deposit
Nothing is required from your API integration once you have shown the address. Paying it is the instruction:1
Funds land
A deposit arrives in the address’s token account — a real, separate on-chain
balance. Paj’s listener picks it up within seconds.
2
Swept into the pool
The balance is moved on-chain into Paj’s treasury and an offramp transaction
is opened against the bank account it belongs to.
3
Value check
USDC/USDT pays out directly. Non stable token is priced for its USD value,
so senders are not restricted to a single mint.
4
Paid out
Naira is disbursed to the bank account through the banking rail at the
prevailing offramp rate. The on-chain legs take seconds; the fiat leg
dominates the end-to-end time.
Amounts and rates
The rate applied is the offramp rate in effect when the deposit is observed, not when you last calledGET /pub/v2/rate. If you quote a figure to a user
before they send, treat it as indicative — see Rates.
There is no per-deposit registration step, so there is also no amount to commit
to in advance. A user can send any amount, any number of times, to the same
address.
Reversing the lookup
When you see a deposit on-chain and want to know whose it is, pass the address toGET /pub/v2/bank-account. This is the
same mapping in the other direction, and it is the intended way to attribute an
on-chain event back to one of your users.