> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Receipts

> List receipts with filters by period, category, and pagination

Returns a paginated list of receipts for the calling agent. Free endpoint — requires `X-Agent-ID` only.

## Query Parameters

<ParamField query="period" type="number" default="all">
  Filter to last N days (1–365). Omit to include all receipts.
</ParamField>

<ParamField query="category" type="string">
  Filter by category: `data`, `verification`, `communication`, `commerce`, `infrastructure`, `agent_to_agent`. See [overview](/api-reference/analytics/overview#receipt-categories) for the tool→category mapping.
</ParamField>

<ParamField query="limit" type="number" default="50">
  Results per page. **Hard ceiling of 100** — values above 100 are clamped.
</ParamField>

<ParamField query="offset" type="number" default="0">
  Pagination offset
</ParamField>

<ParamField query="since" type="string">
  Lower bound on `created_at`, inclusive (ISO 8601, e.g. `2026-05-01T00:00:00Z`). Combine with `until` to page through a fixed time window — useful for reaching receipts older than the 100-row cap when tagging value weeks after the call.
</ParamField>

<ParamField query="until" type="string">
  Upper bound on `created_at`, inclusive (ISO 8601).
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://win.oneshotagent.com/v1/analytics/receipts?period=7&category=communication" \
    -H "X-Agent-ID: 0xYourWalletAddress"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "receipts": [
      {
        "receipt_id": "rcpt_01HGW2HB4V4T0PZGJ8PFDRCHQM",
        "category": "communication",
        "subcategory": "email",
        "amount_usdc": "0.150000",
        "service_fee": "0.030000",
        "status": "settled",
        "settlement_tx": "0x1a2b3c...",
        "memo": "Following up on demo request from yesterday's webinar",
        "decisionContext": {
          "goal": "Convert webinar leads to discovery calls",
          "confidence": 0.78,
          "campaign": "webinar-q2"
        },
        "value_tag": null,
        "job_id": "0cbb87ee-1f2a-4c3d-9e8b-7a6f5d4c3b2a",
        "created_at": "2026-03-09T14:30:00Z",
        "settled_at": "2026-03-09T14:30:01Z"
      }
    ],
    "count": 1,
    "has_more": false
  }
  ```
</ResponseExample>

## Audit fields

Receipts include the audit metadata the caller attached at call time:

<ResponseField name="job_id" type="string | null">
  The job that produced this receipt. **This equals the `request_id` returned from the originating tool call** (`result.request_id`) — so you can find a receipt without storing its `rcpt_…` id, and you can pass that `request_id` straight to [Tag Receipt Value](/api-reference/analytics/value). The caller's `memo` / `decisionContext` are also echoed into the receipt, so they double as match keys.
</ResponseField>

<ResponseField name="memo" type="string | null">
  Human-readable reason for the tool call, up to 1000 chars. Set via the SDK's `memo` option or `memo` in the JSON body. See [Audit Trail](/sdk/audit-context).
</ResponseField>

<ResponseField name="decisionContext" type="object | null">
  Machine-readable decision metadata. Open schema; known fields include `goal`, `goalId`, `alternatives`, `confidence` (0-1). Used by supervisor / auditor agents.
</ResponseField>

<Note>
  A non-null `value_tag` only counts toward [RoCS](/api-reference/analytics/rocs) when its `status` is `"confirmed"`. See [Tag Receipt Value](/api-reference/analytics/value) for how to tag.
</Note>
