Preview: the API is being built and these endpoints may change

GET/api/v1/transactions

List transactions

Your sales, newest first, with filters and pages.

Returns up to limit sales, newest first. When data.page.has_more is true, pass data.page.next_cursor as cursor to get the next page.

Query

FieldTypeRequiredNotes
statusstringnosuccessful, failed, pending or refunded (also created, queued and processing for a sale just accepted)
networkstringnomtn, airtel, glo or 9mobile
servicestringnoairtime or data
destinationstringnoAn exact number, in +234 form
from, tostringnoRFC 3339 times, both inclusive
searchstringnoAn exact reference, client reference or number
limitnumbernoUp to 100, default 25
cursorstringnonext_cursor from the previous page

Request

bash
curl "https://api.simconnectng.com/api/v1/transactions?status=failed&limit=25" \
  -H "Authorization: Bearer $SIMCONNECT_KEY"

Response

json
{
  "success": true,
  "data": {
    "items": [
      {
        "reference": "txn_0192f3e8c4a17b2d9e5f3a6c8b0d2e47",
        "client_reference": "order_1038",
        "status": "failed",
        "product_code": "GLO-VTU",
        "network": "glo",
        "destination": "+234********21",
        "amount": 200.00,
        "price": 2.00,
        "failure_code": "PROVIDER_REJECTED",
        "created_at": "2026-10-06T11:58:12Z",
        "completed_at": "2026-10-06T11:58:14Z"
      }
    ],
    "page": { "next_cursor": "eyJ0IjoiMjAyNi0xMC0wNlQxMTo1ODoxMloifQ", "has_more": true }
  },
  "message": "OK",
  "code": "OK"
}

Each item carries the same fields as Get a transaction, without the timeline. A failed sale's price is never charged: its hold is released. The figures shown here are placeholders.

Error

json
{
  "success": false,
  "data": { "errors": [{ "field": "status", "message": "must be one of created, queued, processing, pending, successful, failed, reversed, refunded" }] },
  "message": "must be one of created, queued, processing, pending, successful, failed, reversed, refunded",
  "code": "VALIDATION_FAILED"
}

Give this to your coding agent

prompt
Read https://simconnectng.com/docs/api/list-transactions.md and implement "List transactions" (GET /api/v1/transactions) in this project.
Read the API key from the SIMCONNECT_KEY environment variable.
Every response is { success, data, message, code }; on an error data is null (or carries data.errors), so branch on code.