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.
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
}
}Fetch a single transaction by your reference. Not found and not-yours both return an identical 404.
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.