API reference
7.1 Conventions
| Base URL | {baseUrl}, given to you by InnBucks per environment. Every path below is appended to it. |
| Headers | X-Api-Key on every request. Authorization: Bearer <accessToken> on every request except login. Content-Type: application/json on every request with a body. |
| Amounts | Whole numbers of cents. Send JSON integers (450), not decimals (4.50) or strings. Responses may return amounts as numbers or strings ("450"): accept both. |
| Currencies | USD or ZWG. |
reference |
Your own reference for the request. Optional where supported (InnBucks generates one if you leave it out), but always send one: you need it to reconcile, and for deposits to check or reverse them. Echoed back as stan. |
| Result | responseCode "00" is success, except linked account inquiry, which uses "000". The reason for anything else is in responseMsg or responseDescription (the field name differs by endpoint). |
| HTTP status | 2xx success, 4xx a problem with your request, 5xx a problem at InnBucks. The JSON responseCode is the primary result; the HTTP status is secondary. |
| Tracing | Every response has an X-Trace-Id header. Log it with the request. |
| Dates | Requests use yyyy-MM-dd HH:mm:ss. Responses use several formats (14.2). |
7.2 Login
POST /auth/third-party · no bearer token · returns the access token.
| Field | Type | Required | Description |
|---|---|---|---|
username |
string | Yes | Your API username |
password |
string | Yes | Your API password |
| Response field | Description |
|---|---|
accessToken |
The bearer token. Valid for 15 minutes by default |
responseCode |
"00" on success |
responseDescription |
Human-readable result |
Examples: 4.1.
7.3 Generate code
POST /api/code/generate · creates a payment or withdrawal code, valid for 10 minutes.
| Field | Type | Required | Description |
|---|---|---|---|
reference |
string | Recommended | Your reference for this code. Returned as stan |
narration |
string | Recommended | Description. Shown on your merchant statement: include your reference |
currency |
string | Yes | USD or ZWG |
amount |
integer | Yes | Amount in cents |
type |
string | Yes | PAYMENT (customer pays you) or WITHDRAWAL (customer cashes out). What you may use depends on your merchant type |
| Response field | Description |
|---|---|
code |
The InnBucks code to show the customer, and the deep link’s paymentToken |
qrCode |
The code as a QR image, base64-encoded |
stan |
Your reference, as InnBucks recorded it |
authNumber |
InnBucks’ authorisation number |
processedDateTime |
When InnBucks processed the request |
amount, currency, currencySymbol |
The amount (in cents) and currency. currencySymbol notes that values are in the subunit |
description |
The narration |
responseCode, responseMsg |
Result |
available, ledger, debitAccountNumber, creditAccountNumber, reference |
Returned as null in the documented example |
7.4 Code inquiry
POST /api/code/inquiry · returns a code’s current status. At most once every 30 seconds per code.
| Field | Type | Required | Description |
|---|---|---|---|
code |
string | Yes | The code from generate |
reference |
string | No | Your reference for this inquiry request |
| Response field | Description |
|---|---|
status |
New, Claimed, Paid, Expired or Timed Out (5.4) |
timeToLive |
Time the code has left, as a string such as "576sec" |
code, amount, description |
The code, its amount (cents) and narration |
stan, authNumber, processedDateTime |
Request tracing |
responseCode, responseMsg |
Result of the inquiry (not of the payment) |
Examples: 5.4.
7.5 Linked account inquiry
GET /api/v1/account/msisdn/{msisdn}/details?currency={currency} · finds the wallet linked to a phone number.
| Parameter | In | Required | Description |
|---|---|---|---|
msisdn |
path | Yes | Customer’s number, 263 format: 263772123123 |
currency |
query | No | USD or ZWG. Defaults to USD |
| Response field | Description |
|---|---|
firstname, lastname |
Account holder’s name. Check it against the customer’s national ID before a deposit |
accounts[] |
accountNumber, currency, alias, type, productId |
responseCode, responseDescription |
"000" on success |
Examples: 6.2.
7.6 Deposit
POST /api/transaction/deposit · credits cash to a customer’s wallet.
| Field | Type | Required | Description |
|---|---|---|---|
reference |
string | Recommended | Your reference. Needed for deposit inquiry and reversal; used for duplicate checks when that feature is enabled |
currency |
string | Yes | USD or ZWG |
amount |
integer | Yes | Amount in cents |
narration |
string | Recommended | Description |
destinationAccount |
string | Yes | accountNumber from the linked account inquiry |
type |
string | No | Only if InnBucks configured custom deposit types for you |
Response: stan, authNumber, processedDateTime, responseCode, responseMsg,
accountNumber. Examples: 6.2.
7.7 Deposit inquiry
POST /bank/api/transaction/inquiry · the status of an earlier deposit.
| Field | Type | Required | Description |
|---|---|---|---|
accountNumber |
string | Yes | The original deposit’s destinationAccount |
originalParticipantReference |
string | Yes | The original deposit’s reference |
participantReference |
string | Yes | A new, unique reference for this inquiry |
Response: responseCode, responseDescription, reference, participantReference and, if the
deposit was found, details (the original request and its result: responseCode,
responseDescription, reference, participantReference, additionalData, currency,
amount, dateTime, narration, accountNumber). Examples: 6.3.
7.8 Reversal
POST /api/transaction/reversal/v2 · reverses a deposit. Deposits only.
| Field | Type | Required | Description |
|---|---|---|---|
amount |
integer | Yes | Exactly the original deposit amount, in cents |
currency |
string | Yes | USD or ZWG |
type |
string | Yes | "CREDIT" |
destinationAccount |
string | Yes | The original deposit’s destinationAccount |
originalParticipantReference |
string | Yes | The original deposit’s reference |
participantReference |
string | Yes | A new, unique reference for this reversal |
Response: reference, participantReference, responseCode (00, 025, 096),
responseDescription. Examples: 6.4.
7.9 Bank change
POST /api/transaction/bankChange · credits a cash customer’s change to their wallet (US$5 or less).
| Field | Type | Required | Description |
|---|---|---|---|
reference |
string | Recommended | Your reference |
currency |
string | Yes | USD or ZWG |
amount |
integer | Yes | Amount in cents; at most 500 for USD |
narration |
string | Recommended | Description |
destinationMsisdn |
string | Yes | Customer’s number, 263 format |
Response: stan, authNumber, processedDateTime, responseCode, responseMsg,
accountNumber. Examples: 6.5.
7.10 Utility payment
POST /api/utility/provider/payment · pays a utility provider (for example airtime) from your account.
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | Yes | Provider code, e.g. ECONET |
providerProduct |
string | Yes | Product code, e.g. AIRTIME |
amount |
integer | Yes | Amount in cents |
currency |
string | Yes | USD or ZWG |
reference |
string | Recommended | Your reference |
narration |
string | No | Description |
destinationAccount |
string | Yes | The account or number to credit at the provider |
additionalData |
object | No | Extra key/value data a provider or product needs |
{
"provider": "ECONET",
"providerProduct": "AIRTIME",
"amount": 100,
"currency": "USD",
"reference": "UTL-3301",
"narration": "Airtime UTL-3301",
"destinationAccount": "263771234567",
"additionalData": {}
}
{
"stan": "UTL-3301",
"authNumber": "249878909",
"processedDateTime": "2021-09-05 10:48:08.040",
"responseCode": "00",
"responseMsg": "Approved or completed successfully",
"fees": [],
"amount": "100",
"ledger": "2500",
"available": "2500",
"currency": "USD",
"dynamicData": {
"reference": "56677493",
"instructions": "Transaction Amount USD1.00",
"notifications": {}
},
"commissions": [
{ "name": "Commission", "description": "DebitCommission", "amount": "5" }
],
"accountNumber": "123456789",
"currencySymbol": "$ (values are in subunit)"
}
ledger and available appear to be your account balances after the payment, in cents
(InnBucks doesn’t define them). dynamicData.instructions appears to hold text to show the
customer (possibly a token or voucher, for some
products). The list of providers and products is not published: ask InnBucks for the codes you
need.
7.11 Account statement
POST /api/account/fullStatement · every transaction on an account for a period of at most one calendar month.
| Field | Type | Required | Description |
|---|---|---|---|
accountNumber |
string | Yes | The account to report on |
currency |
string | Yes | USD or ZWG |
startDateTime |
string | Yes | yyyy-MM-dd HH:mm:ss, e.g. 2026-09-01 00:00:00 |
endDateTime |
string | Yes | yyyy-MM-dd HH:mm:ss, e.g. 2026-09-30 23:59:59 |
{
"startDate": "2024-01-01T00:00:00",
"endDate": "2024-01-31T23:59:59",
"responseCode": "00",
"responseMsg": "Approved or completed successfully",
"reference": "1290786790",
"accountDetails": {
"accountNumber": "1234",
"currency": "USD",
"firstName": "Client Name",
"lastName": "Client Surname",
"mobileNumber": "263773123123"
},
"transactions": [
{
"type": "Opening Balance", "narration": "Opening Balance",
"creditAmount": 100000, "debitAmount": null, "balance": 100000,
"reference": "222556",
"postingDate": "2024-01-01T00:00:00", "transactionDate": "2024-01-01T00:00:00",
"additionalData": {}
},
{
"type": "Credit", "narration": "Transfer",
"creditAmount": 27000, "debitAmount": null, "balance": 127000,
"reference": "6789123",
"postingDate": "2024-01-12T15:21:00", "transactionDate": "2024-01-12T15:21:00",
"additionalData": {}
},
{
"type": "Debit", "narration": "Payment",
"creditAmount": null, "debitAmount": 2000, "balance": 125000,
"reference": "6789123",
"postingDate": "2024-01-13T17:45:00", "transactionDate": "2024-01-13T17:45:00",
"additionalData": {}
},
{
"type": "Closing Balance", "narration": "Closing Balance",
"creditAmount": 125000, "debitAmount": null, "balance": 125000,
"reference": "785634",
"postingDate": "2024-01-31T23:59:59", "transactionDate": "2024-01-31T23:59:59",
"additionalData": {}
}
]
}
Transaction type is Opening Balance, Credit, Debit or Closing Balance. For a longer
period, request one calendar month at a time.
7.12 Response code list
GET /api/file/response-codes · the complete list of response codes for your environment.
curl -sS "$INNBUCKS_BASE_URL/api/file/response-codes" \
-H "X-Api-Key: $INNBUCKS_API_KEY" \
-H "Authorization: Bearer $TOKEN" -o innbucks-response-codes
Download it when you integrate and keep it with your code; see 8.2.
This page is generated from section 7 of the README in README.md. Spotted something wrong? Open an issue.