> ## 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.

# Quickstart

> Make your first Transaction Reporting API call in minutes

## Prerequisites

Before you begin, you'll need:

* An **API key** from Modulus Labs (contact [support@moduluslabs.io](mailto:support@moduluslabs.io))
* **curl** or any HTTP client (Postman, HTTPie, etc.)

## Step 1: Verify Your Key

Test that your API key works by listing your merchants:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/merchants' \
  -H 'X-API-Key: sk_your_secret_key_here'
```

You should receive a JSON response with your merchant list:

```json theme={null}
{
  "data": [
    {
      "id": "57846d47-d196-5c48-a881-4003b1d5aa98",
      "name": "Coffee Shop"
    },
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Pizza Place"
    }
  ]
}
```

<Note>
  Save one of the `id` values — you'll use it to filter transactions in the next step.
</Note>

## Step 2: List Transactions

Fetch the latest transactions for a merchant:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/transactions?merchant_id=57846d47-d196-5c48-a881-4003b1d5aa98&page_size=5' \
  -H 'X-API-Key: sk_...'
```

```json theme={null}
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "status": "CAPTURED",
      "amount": 15000,
      "amount_details": {
        "amount_authorized": 15000,
        "amount_capturable": 0,
        "amount_received": 15000,
        "amount_refunded": 0
      },
      "merchant_details": {
        "merchant_id": "57846d47-...",
        "merchant_name": "Coffee Shop",
        "branch_id": "f3febca6-...",
        "branch_name": "Main Street"
      },
      "currency": "PHP",
      "payment_method": "CARD_PRESENT",
      "created_at": "2026-04-27T10:30:00Z",
      "updated_at": "2026-04-27T10:30:05Z"
    }
  ],
  "pagination": {
    "page_size": 5,
    "has_more": true,
    "next_cursor": "eyJzb3J0X2J5Ijoi..."
  }
}
```

## Step 3: Filter by Payment Method

Get only QR transactions:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/transactions?payment_method=QR_PH&page_size=5' \
  -H 'X-API-Key: sk_...'
```

Or only card-present transactions:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/transactions?payment_method=CARD_PRESENT&page_size=5' \
  -H 'X-API-Key: sk_...'
```

## Step 4: Filter by Status and Date

Get captured transactions for a specific month:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/transactions?status=CAPTURED&date_from=2026-04-01T00:00:00Z&date_to=2026-04-30T23:59:59Z' \
  -H 'X-API-Key: sk_...'
```

## Step 5: Get Transaction Detail

Retrieve full detail for a specific transaction:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/transactions/550e8400-e29b-41d4-a716-446655440000' \
  -H 'X-API-Key: sk_...'
```

The detail response includes lifecycle events, approval codes, and settlement information not present in the list response.

## Step 6: Paginate Through Results

When `has_more` is `true`, use the `next_cursor` to get the next page:

```bash theme={null}
curl 'https://api.sbx.moduluslabs.io/reports/v1/transactions?page_size=5&cursor=eyJzb3J0X2J5Ijoi...' \
  -H 'X-API-Key: sk_...'
```

Continue until `has_more` is `false`.

## What's Next?

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/docs/transaction-reporting/authentication">
    Understand API keys and entity scoping
  </Card>

  <Card title="Filtering & Sorting" icon="filter" href="/docs/transaction-reporting/filtering">
    Learn all available filters and sort options
  </Card>
</CardGroup>
