API reference

List transactions

List transaction history. Request fields, response examples and integration guidance.

GET /transactions

Example request

Server-side HTTP request
curl --request GET \
  --url "https://api.strongmb.ng/v1/transactions" \
  --header "Authorization: Bearer $STRONGMB_API_KEY" \
  --header "Accept: application/json"

Returns the most recent transactions for the authenticated user.

JSON Response
{
  "status": true,
  "message": "Transactions retrieved successfully",
  "data": {
    "count": 50,
    "transactions": [
      {
        "uuid": "72f69533-5f11-45d6-8f26-a553f890b277",
        "wallet_type": "primary_ngn",
        "direction": "debit",
        "type": "airtime",
        "amount": "99.00",
        "balance_before": 44114,
        "balance_after": 44015,
        "status": "successful",
        "date": "2026-03-18 02:26:38+01",
        "reference": "SMBD260aa1352a53aaa7sFAC9",
        "details": {
          "provider": "mtn",
          "recipient": "0123456789",
          "airtime_amount": 100,
          "performed_via": "api"
        }
      }
    ]
  },
  "metadata": {
    "code": "TRANSACTIONS_RETRIEVED",
    "timestamp": 1773797290,
    "trace_id": "DF008819CD"
  }
}
JSON Response
{
  "status": false,
  "message": "No transactions found.",
  "data": null,
  "metadata": {
    "code": "ERR_TRANSACTIONS_NOT_FOUND",
    "timestamp": 1773797291,
    "trace_id": "FF009820DE"
  }
}

Response fields and types

Expand an object to explore its fields. [] indicates an array item. Error responses may return data: null.

Field path JSON type Meaning and handling
status boolean Request-level success flag. Check the HTTP status and metadata code as well; a successful API request is not by itself proof of purchase fulfillment.
message string Human-readable description of the result. Use metadata.code for programmatic error handling instead of parsing this text.
data null | object Response data. Check the result before reading nested fields; an error may return null or validation details.
data.count integer Number of records returned in this response, not a guarantee of the account’s total history size.
data.transactions array Array of transaction records. The current history endpoint returns up to 50 recent entries.
data.transactions[] object One entry in the transactions array. Its nested fields are documented below.
data.transactions[].uuid string Internal transaction UUID returned for identification. Use the original purchase reference in the documented lookup route.
data.transactions[].wallet_type string Wallet on which this transaction occurred, such as primary_ngn.
data.transactions[].direction string Wallet movement direction, such as debit or credit.
data.transactions[].type string Service or transaction type, for example data, airtime, electricity or cable TV.
data.transactions[].amount string Transaction amount formatted as a decimal string with two decimal places. Preserve precision when comparing it with your saved order.
data.transactions[].balance_before number Wallet balance before this transaction, as reported by the API.
data.transactions[].balance_after number Wallet balance after this transaction, as reported by the API.
data.transactions[].status string Record status: successful, processing, failed or refund. A failed purchase is refunded immediately; refund identifies its refund credit and confirms the purchase failed and was refunded. Check direction and UUID to distinguish entries.
data.transactions[].date string Transaction date/time string returned for display.
data.transactions[].reference string Reference supplied when creating the purchase. Save it and use the same value for transaction verification.
data.transactions[].details object Transaction details for the purchased service. Fields vary by service.
data.transactions[].details.provider string Provider identifier associated with the purchased service.
data.transactions[].details.recipient string Phone number, meter or customer identifier for the purchase. Compare it with the intended recipient.
data.transactions[].details.airtime_amount number Face value of the requested airtime. It can differ from the amount debited when a discount applies.
data.transactions[].details.performed_via string Channel through which the transaction was performed, such as the API.
metadata object Diagnostic information about the response.
metadata.code string Machine-readable result code. Use it to distinguish validation, authentication and service errors.
metadata.timestamp integer Unix timestamp in seconds associated with the response.
metadata.trace_id string Correlation identifier for troubleshooting. Retain it with a redacted request when contacting support.
data.transactions[].category string Transaction category as reported by the transaction record.
data.transactions[].description string Human-readable transaction description.

For data, airtime, cable TV and electricity fields nested in each transaction, see service-specific transaction details.

Customer names, phone numbers, meter and smart-card numbers in these examples are fictional placeholders. Replace them with valid customer details for real requests.

Refund records

When a purchase returns data.status: failed, Strongmb has immediately issued the refund to your Strongmb wallet. A later GET /transactions/{reference} lookup may return data.transaction.status: refund. This means the purchase failed and was refunded; it is not a pending refund or a successful purchase. Strongmb sends the refund notification as transaction.refunded.

Do not wait for the refund webhook to interpret an authenticated failed purchase response as refunded, and do not issue another Strongmb wallet refund. Keep your own customer ledger consistent and apply each adjustment only once. This applies to a confirmed transaction status, not a validation error, timeout or processing response.

A failed purchase and its refund are separate records. The purchase has direction: debit and status: failed; the refund has direction: credit and status: refund. They share the original reference but have different transaction UUIDs. Use UUIDs to distinguish entries and the reference to associate them with your order.

Do not treat a refund credit as purchase fulfillment or refund it again. The related webhook event is transaction.refunded. See refund event handling.

Questions? Let’s work through them.

Having an issue or need help with your integration? Join the Strongmb Slack community to ask questions and get assistance from our team and other developers.

Keep API keys and customer details private when sharing examples.

Experiencing a service issue? Check Strongmb’s service status for incident updates.

Join our Slack community

Did this page help you?

Search documentation