Skip to main content
Vestrapay is a payments platform for businesses that collect money in Nigeria. It does three jobs that are usually stitched together from separate vendors:
  1. Collection. Accept card, bank transfer, pay with bank and USSD payments through hosted checkout or your own pay screen.
  2. Multi-party splitting. Divide a single collection between several bank accounts, such as a regulator, an insurer and your own operating account, without writing any ledger code.
  3. Settlement. Pay the money out to your primary settlement account and to every split destination on a predictable cycle, with a record you can reconcile line by line.
You drive collection from your backend with a small, stable API. Splits and settlement are configured once, in the merchant dashboard or through the dashboard APIs, and then applied automatically to every payment that names them.

Choose an integration path

Every integration begins the same way: your server initialises a payment and receives a reference, an access code and a checkout URL. What happens next is your choice. Both paths finish identically: a webhook arrives, you verify the payment from your server, and you fulfil the order once. If you have no website or app at all, payment links let you collect money from a shareable URL.

Where to go next

Quickstart

Initialise a payment, redirect to checkout and verify it. About ten minutes.

API keys and environments

Sandbox and live hosts, secret and public keys, and which credential each call needs.

Services and splits

Model your revenue streams, pool your bank accounts and divide collections by percentage.

Partners

Give an external party a read-only view of the settlements they are owed.

Settlements

How collected money reaches your primary account and your split destinations.

Go live

KYB, live keys, production webhooks and the final checks.

How a payment works

1

Initialise on your server

Send a POST to /v1/payment/initialize with your secret key. Vestrapay creates a pending transaction and returns a reference, an access code and a checkout URL. Store the reference against your order straight away.
2

The customer pays

Redirect the browser to the checkout URL, or drive the card, transfer, bank or USSD channel yourself with the access code. The customer sees only the channels enabled for your account.
3

Vestrapay tells you

A signed webhook is posted to your server and the customer’s browser is returned to your callback URL. Treat both as a prompt to check, not as proof of payment.
4

Verify, then fulfil

Call /v1/payment/verify/{reference} with your secret key. Fulfil the order only when the payment status is success and the amount matches what you expected, and only once.
5

Split and settle

If the payment named any services in its distribution, the allocation is applied to the configured sub-accounts. Everything else goes to your primary settlement account. Settlement then pays each destination on the cycle for your account.

Integration checklist

Work through this list in order. Each item links to the page that covers it.
  • Create a merchant account on the sandbox dashboard and copy a test secret key from Settings → Developers. See API keys.
  • Initialise payments from your backend and store the reference on the order. See Quickstart.
  • Redirect to the checkout URL, or build a custom pay screen. See Accept payments.
  • Register an HTTPS webhook endpoint and verify its signature. See Webhooks.
  • Verify every payment from your server before fulfilling, and make fulfilment idempotent. See Verify a payment.
  • If you split collections, create services, sub-accounts and splits. See Services and splits.
  • Test card, transfer, failure and abandonment paths. See Test payments.
  • Complete KYB, switch to live keys and repeat the key tests. See Go live.

Amounts and currency

Every amount in the API is a decimal string in major units. One hundred naira is written as “100.00”, one thousand two hundred and fifty naira and fifty kobo is “1250.50”. The API never uses kobo or any other minor unit. Amount fields are strings. The one place that takes JSON numbers is the per-payment distribution map, where each value is a number in the same major unit (see Distribution). Currency defaults to NGN and NGN is the currency to build for today. Amounts in responses use the same string format, so you can compare them to your own records with a decimal comparison. Avoid binary floating-point arithmetic for money in your own code.

Environments

Vestrapay runs two fully separate environments, each with its own dashboard, API host, checkout host and credentials. Nothing created in the sandbox exists on live, and live payments move real money. The API keys page has the full table of hosts. Use the sandbox until your integration is correct, then follow Go live.

Getting help

Email tech@vestrapay.com with the transaction reference and the X-Request-Id response header from the failing call. Those two values let the team find the request immediately. The company site is at vestrapay.com.