Endpoint
Authentication
string
required
The wallet’s live API key, prefixed
ax_live_.... Issued when the wallet is created. This key scopes the request to a specific wallet — there is no separate wallet ID in the request body.Request Body
integer
required
Payment amount in kobo. Must be greater than
0. For example, 500000 kobo = ₦5,000.string
required
Name of the merchant or recipient. Minimum 3 characters. Used for allowlist checks when
wallet.useAllowlist is true.string
required
Recipient’s Nigerian bank account number. Must be exactly 10 digits.
string
required
3-digit NIP bank code identifying the recipient’s bank. Common values:
"058"— GTBank"044"— Access Bank"011"— First Bank
string
Human-readable payment description. Maximum 200 characters. Stored on the transaction record and visible in transaction history.
Request Example
Authorization Checks
Before debiting the wallet, Axis runs the following checks in order. The first failure stops processing and returns the corresponding error code — subsequent checks are not evaluated.- Wallet is active —
wallet.statusmust beACTIVE - Wallet has not expired — the current timestamp must be before
wallet.expiry - Per-transaction limit —
amountmust be ≤wallet.spendLimitPerTx - Period spend limit — total approved spend in the last
wallet.periodWindowDaysdays plusamountmust be ≤wallet.spendLimitPeriod - Merchant allowlist — if
wallet.useAllowlististrue,merchantNamemust appear in the wallet’s merchant allowlist - Sufficient balance —
amountmust be ≤wallet.balance
Response — 201 Created
A201 is returned only when the payment is approved and settlement is initiated. The response body includes the full transaction record and a settlement reference.
boolean
Always
true for a successful response.object
Container for the transaction and settlement details.
Error Responses
All error responses share the same shape:400 — Validation Error
Returned when a required field is missing, the wrong type, or fails a format constraint (e.g.recipientAccountNo is not 10 digits).
401 — Authentication Error
Returned when thex-api-key header is absent or does not match any wallet.
402 — Insufficient Funds
Returned when authorization check 6 fails: the requestedamount exceeds the wallet’s current balance.
403 — Authorization Denied
Returned when authorization checks 1–5 fail. Each failure produces a distinctcode.
Wallet is inactive (check 1):
Blocked payment intents (authorization checks 1–6 fail) still create a Transaction record with
decision: "blocked" and a blockReason matching the error code. These records appear in wallet transaction history and audit logs — every payment attempt is traceable regardless of outcome.