PaymonetraDocs
Merchant API · v1

Collect in naira or USDT. Pay out to any Nigerian bank.

One API for taking money and sending it. Every payment arrives labelled with your own id, so you credit the right user without reconciling anything.

#What do you want to do

#A call that works right now

The service index needs no key. Paste this anywhere:

Terminal
curl https://api.paymonetra.com/v1/

If it names the Paymonetra Gateway API you have the right host. Build against https://api.paymonetra.com/v1: an older path still answers so nothing already built breaks, but it is not the one to use. Checkout is on pay.paymonetra.com, its own host on purpose.

#Before you start

  • Test keys from your first minute. Live keys arrive when your business is verified, and test mode can complete a payment and fire a real webhook.
  • One rate on money coming in, live on the pricing page rather than typed into it.
  • Two balances. Collected is money taken from your customers and held for you; Settled is money that has become yours.

#Every endpoint

GET /Confirms you have the right host, and lists what a key can reach. No key needed.
POST /customer_accountsIssues a permanent bank account number in your customer’s own name.
GET /customer_accounts/{reference}One account by your own reference, with what it has received.
GET /customer_accountsYour accounts, filterable by status and paged.
GET /balanceCollected and Settled, for the mode your key belongs to.
POST /paymentsOpens a checkout session and returns the URL to send your customer to.
GET /payments/{reference}One session, scoped to your own merchant and mode.
POST /payments/cryptoNames a coin amount rather than a naira price, and settles to you in naira.
GET /banksThe bank codes to send with. Use these, not your own list.
POST /transfers/resolveWho an account number belongs to, before you pay it.
POST /transfersMoney out of your balance to a Nigerian bank account.
GET /transfers/{reference}One by your reference or ours, or the list newest first.
POST /customer_accounts/{reference}/simulate_paymentMoney arriving into one customer’s account, and the webhook that follows. Test keys only.
POST /customer_accounts/{reference}/simulate_cryptoUSDT arriving at a customer’s address, and the webhook that follows. Test keys only.
POST /sandbox/payThe same, for your collection account rather than a customer’s. Test keys only.
GET /checkout/{reference}What the payer’s browser polls. Public, guarded by the reference being random.
POST /checkout/{reference}/detailsName and email for an anonymous session, which then shows an account.

And what is not, yet:

Refunds are not on this surface yet.

Sending held USDT back out to an address of the business's choosing is dashboard-only for now: it works there, but not on this API yet.

The roadmap has the rest, with no shapes to build against until they land.