We use cookies to optimize your user experience. All information shared with us through cookies is secure and covered by our data privacy obligations. To learn more, view our privacy policy.
KongaPay Logo
KongaPayDevelopers
v1.0
DevelopersVirtual AccountList Virtual Account Transactions

List Virtual Account Transactions

Retrieve a paginated list of all inflow transactions across your virtual accounts. Use this endpoint for reconciliation, reporting, and auditing.

Endpoint

GET/virtual/transactions?offset=0&limit=20

Query Parameters

ParameterTypeDefaultDescription
offsetnumberNoNumber of records to skip. Use for pagination.
limitnumberNoMaximum number of records to return per page.

Sample Request

Request
GET /virtual/transactions?offset=0&limit=20
secretKey: sk_staging_xxxxxxxxxxxxxxxxxxxx

Response Fields

FieldDescription
countTotal number of transactions available.
amountTransaction amount in Naira.
statusTransaction outcome: success, failed, or pending.
session_idUnique NIP session identifier. Use as a reconciliation and deduplication key.
external_referenceThe reference you provided at virtual account creation.

Sample Response

Response
{
  "status": "success",
  "data": {
    "count": 150,
    "transactions": [
      {
        "amount":             5000,
        "status":             "success",
        "session_id":         "090405261234567890",
        "external_reference": "INV-2026-0001",
        "date":               "2026-03-06 14:23:11"
      },
      {
        "amount":             12000,
        "status":             "success",
        "session_id":         "090405269876543210",
        "external_reference": "INV-2026-0002",
        "date":               "2026-03-06 15:01:44"
      }
    ]
  }
}

Pagination

Iterating through all results:

Pagination Pattern
const limit = 20;
let offset = 0;
let allTransactions = [];

while (true) {
  const res = await fetch(
    `/virtual/transactions?offset=${offset}&limit=${limit}`,
    { headers: { secretKey: process.env.KONGAPAY_SECRET_KEY } }
  );
  const { data } = await res.json();
  allTransactions.push(...data.transactions);

  if (allTransactions.length >= data.count) break;
  offset += limit;
}

Status Values

successPayment received and validated successfully.
pendingPayment is still being processed by the interbank network.
failedPayment was rejected โ€” typically an amount mismatch.