Skip to main content
GET
/
v1
/
transactions
List transactions
curl --request GET \
  --url https://api.sbx.moduluslabs.io/reports/v1/transactions \
  --header 'X-API-Key: <api-key>'
{
  "data": [
    {
      "id": "<string>",
      "status": "CAPTURED",
      "amount": 123,
      "currency": "PHP",
      "payment_method": "QR_PH",
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "card_brand": "<string>",
      "card_last_four": "<string>",
      "correlation_id": "<string>",
      "amount_details": {
        "amount_authorized": 123,
        "amount_capturable": 123,
        "amount_received": 123,
        "amount_refunded": 123,
        "original_amount": 123,
        "tax_amount": 123,
        "final_amount": 123
      },
      "receipt": {
        "receipt_number": "<string>",
        "auth_number": "<string>",
        "batch_number": "<string>",
        "approval_code": "<string>",
        "reference_number": "<string>"
      },
      "merchant_details": {
        "merchant_name": "<string>",
        "merchant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "partner_name": "<string>",
        "branch_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "branch_name": "<string>"
      },
      "terminal_details": {
        "terminal_name": "<string>",
        "activation_code": "<string>",
        "serial_number": "<string>"
      }
    }
  ],
  "pagination": {
    "page_size": 20,
    "has_more": true,
    "next_cursor": "<string>"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.moduluslabs.io/llms.txt

Use this file to discover all available pages before exploring further.

All transactions are returned through a single endpoint regardless of payment method. Results are sorted by the selected field and paginated using cursors.

Sorting

Use sort_by and sort_order to control result ordering:
sort_byDescription
created_atTransaction creation time (default)
updated_atLast update time
amountTransaction amount in cents
Both asc and desc are supported for sort_order (default: desc).

Filtering

Use payment_method=QR_PH or payment_method=CARD_PRESENT to filter by payment type.
GET /v1/transactions?payment_method=CARD_PRESENT
Use merchant_id with the UUID from /v1/merchants.
GET /v1/transactions?merchant_id=57846d47-d196-5c48-a881-4003b1d5aa98
Use branch_id with the UUID from /v1/branches.
GET /v1/transactions?branch_id=f3febca6-7bd2-5d10-bcd7-1f796088e90c
Use date_from and date_to with RFC 3339 timestamps.
GET /v1/transactions?date_from=2026-01-01T00:00:00Z&date_to=2026-01-31T23:59:59Z
Use status with comma-separated values.
GET /v1/transactions?status=CAPTURED,PENDING
Use activation_code to filter by terminal device identifier.
GET /v1/transactions?activation_code=XXXX-XXXX-XXXX-XXXX

Pagination

Results are cursor-paginated. Use page_size (default 20, max 100) and the next_cursor from the response:
# First page
GET /v1/transactions?page_size=10

# Next page
GET /v1/transactions?page_size=10&cursor=eyJzb3J0X2J5Ijoi...
Cursors are tied to the sort_by field. Changing sort_by between pages will return a 400 error — start a new query instead.

Next Steps

Get Transaction

Retrieve full detail for a single transaction

List Merchants

Get merchant UUIDs for filtering

Authorizations

X-API-Key
string
header
required

API key for authentication. Verified by APISIX via Vanguard. APISIX injects identity headers and strips the raw key before forwarding.

Query Parameters

merchant_id
string<uuid>

Filter by logical merchant UUID from the Merchant Registry. Works cross-DB — returns transactions from both databases if the merchant exists in both.

branch_id
string<uuid>

Filter by logical branch UUID from the Merchant Registry. Works cross-DB.

activation_code
string

Filter by terminal activation code. Works cross-DB. Activation codes are device identifiers (printed on hardware), not secrets.

payment_method
enum<string>

Filter by payment method. Omit to query both databases.

Available options:
QR_PH,
CARD_PRESENT
card_brand
enum<string>

Filter by card brand.

Available options:
VISA,
MASTERCARD,
JCB,
UNIONPAY
status
string

Comma-separated list of canonical transaction statuses.

date_from
string<date-time>

Start of date range (inclusive, RFC 3339).

date_to
string<date-time>

End of date range (inclusive, RFC 3339).

sort_by
enum<string>
default:created_at

Field to sort by. Default: created_at. Cursor pagination works correctly across all sort fields.

Available options:
created_at,
updated_at,
amount
sort_order
enum<string>
default:desc

Sort direction. Default: desc.

Available options:
asc,
desc
page_size
integer
default:20

Number of items per page.

Required range: 1 <= x <= 100
cursor
string

Opaque cursor token from a previous response's next_cursor field.

Response

Successful response with transaction list

data
object[]
required
pagination
object
required