Transactions

Every movement of money in and out of your wallets, filterable and paginated.

Each payout, settled collection, conversion, fee and refund is recorded as a transaction against one of your wallets. Payouts are transactions too, so the object below is the same one payout endpoints return.

List transactions

GET /transactions returns transactions newest first, paginated. Requires payment.view.

Prop

Type

curl "https://business-api.migrapay.com/v1/api/transactions?activity=transfer&status=successful&startDate=2026-08-01&endDate=2026-08-31" \
  -H "Authorization: Bearer $MIGRAPAY_API_KEY"
200 OK
{
  "status": "success",
  "message": "Transactions retrieved successfully.",
  "data": {
    "docs": [
      {
        "id": "f2d9b6a4-0c1e-4b7d-9a35-000000000001",
        "reference": "20260812171502-R4N8V2C6PJ",
        "businessId": "b7e4d2c1-5a3f-4c8e-8d2b-000000000001",
        "walletId": "3f6c2a10-8b1d-4e5f-9a7c-000000000002",
        "transactionType": "credit",
        "businessTransactionType": "collection",
        "channel": "virtual_account",
        "status": "successful",
        "statusLog": [{ "status": "successful", "createdAt": "2026-08-12T17:15:02.000Z" }],
        "amount": 25000,
        "netAmount": 24750,
        "fee": 250,
        "transactionFees": [{ "feeType": "collection", "fee": 250, "currency": "NGN" }],
        "currency": "NGN",
        "balance": 1874750,
        "paymentInitiated": true,
        "narration": "Invoice 2048",
        "customerEmail": "[email protected]",
        "customerName": "Chidi Eze",
        "metadata": null,
        "paymentRequestId": "6b3e8f1a-2d4c-4e9b-8a7f-000000000001",
        "recipientId": null,
        "conversionPairId": null,
        "approvalRequestId": null,
        "createdBy": null,
        "createdAt": "2026-08-12T17:15:02.000Z",
        "updatedAt": "2026-08-12T17:15:02.000Z"
      }
    ],
    "totalDocs": 1,
    "page": 1,
    "totalPages": 1,
    "counts": { "all": 132, "transfer": 97, "withdrawal": 0, "collection": 30, "conversion": 0, "fee": 5 }
  }
}

counts holds totals per activity for your whole account and ignores your filters. An invalid filter returns 400 VALIDATION_ERROR.

Retrieve a transaction

GET /transactions/{id} returns one transaction. Requires payment.view.

Prop

Type

curl https://business-api.migrapay.com/v1/api/transactions/20261103223912-9AF588FF8E \
  -H "Authorization: Bearer $MIGRAPAY_API_KEY"

The response is the transaction object plus rail and railLabel, the payment method it used. A transaction that does not exist, or belongs to another business, returns 404 TRANSACTION_NOT_FOUND.

The transaction object

Prop

Type

The object also carries businessId, paymentInitiated and conversionPairId.