API Reference · Transactions
Developer documentation

API Reference · Transactions

Every inbound transfer or outbound payout is a transaction. Query them either merchant-wide across every customer, or scoped to one customer via their statement.

GET/v1/transactionsmerchant-wide

Paginated, newest-first, across every customer. Optional filters: customerReference, type (CUSTOMER_PAYMENT / PAYOUT / REVERSAL / ADJUSTMENT), status, matchStatus, and a date range (from/to, ISO-8601 instants).

{
  "data": {
    "content": [
      {
        "reference": "ref_a1b2",
        "type": "CUSTOMER_PAYMENT",
        "customerReference": "user_123",
        "date": "2026-07-02T14:20:00Z",
        "payer": "John Bello",
        "providerTransactionId": "nmb_88a1",
        "status": "SUCCESSFUL",
        "matchStatus": "MATCHED",
        "amountKobo": 5000000,
        "feeKobo": 75000
      }
    ],
    "totalElements": 42
  }
}
GET/v1/transactions/{reference}

Fetch a single transaction by your reference. Not found and not-yours both return an identical 404.

GET/v1/customers/{reference}/statementper-customer

Scoped to one customer: identity, a reporting summary (lifetime received volume, transaction/pending counts, manual-review/discrepancy counts, last transaction date — always over that customer's full history), and the same paginated transaction list, filterable the same way (minus type/customerReference, which don't apply to a single customer).

{
  "data": {
    "customer": { "reference": "user_123", "firstName": "Amara", "status": "ACTIVE" },
    "summary": {
      "lifetimeKobo": 41850000,
      "transactionCount": 12,
      "pendingCount": 1,
      "pendingKobo": 500000,
      "manualReviewCount": 0,
      "discrepancyCount": 1,
      "lastTransactionAt": "2026-07-02T14:20:00Z"
    },
    "transactions": { "content": [ /* same shape as /v1/transactions */ ], "totalElements": 12 }
  }
}

amountKobo is the gross amount the payer sent (or, for a PAYOUT, the amount sent out). matchStatus is the reconciliation verdict: MATCHED DISCREPANCY UNMATCHED MANUAL_REVIEW. Thesummaryblock on the statement endpoint is always over the customer's full history, independent of whatever from/to/matchStatus filter narrows the list alongside it.

Full field-by-field reference.This page covers the shape you'll use day to day — for every field, status enum, and error case, see the live, generated API reference