---
title: "List a product's checkouts"
method: GET
path: "/api/products/{id}/checkouts"
tags: ["products"]
---

# List a product's checkouts

`GET /api/products/{id}/checkouts`

## Request

- Base URL: `https://api.depixapp.com`
- URL: `https://api.depixapp.com/api/products/{id}/checkouts`
- Auth: HTTP bearer

Paginated checkouts created from one product. Requires scope `merchant_read` on the API-key path.

## Path parameters

- `id` string, required

## Query parameters

- `status` union: Checkout lifecycle status — the enum below is the complete, closed set. `completed` is the terminal SUCCESS state. Terminal states (safe to stop polling): completed, expired, cancelled.
  - 'pending': Awaiting payment; the PIX QR is active until expires_at.
  - 'processing': PIX paid; settlement in progress.
  - 'approved': Payment approved by the provider; DePix on the way to the merchant.
  - 'completed': TERMINAL — success: DePix delivered to the merchant.
  - 'expired': TERMINAL — QR expired unpaid.
  - 'cancelled': TERMINAL — cancelled upstream by the provider (refund/error).
- `limit` integer
- `offset` integer

## Response `200`

Product checkouts.

- ProductCheckoutsResponse: Paginated checkouts of one product, with aggregates.
  - `checkouts` object[], required: Checkout rows for the product, newest first.
    - `id` string, required: Checkout id (chk_*).
    - `status` union, required: Checkout lifecycle status — the enum below is the complete, closed set. `completed` is the terminal SUCCESS state. Terminal states (safe to stop polling): completed, expired, cancelled.
      - 'pending': Awaiting payment; the PIX QR is active until expires_at.
      - 'processing': PIX paid; settlement in progress.
      - 'approved': Payment approved by the provider; DePix on the way to the merchant.
      - 'completed': TERMINAL — success: DePix delivered to the merchant.
      - 'expired': TERMINAL — QR expired unpaid.
      - 'cancelled': TERMINAL — cancelled upstream by the provider (refund/error).
    - `amount` integer, required: Charge amount in cents.
    - `description` string, nullable, required: Checkout description.
    - `created_at` string, required: Creation timestamp (RFC 3339 UTC).
    - `expires_at` string, required: QR expiry timestamp (RFC 3339 UTC).
    - `processing_at` string, nullable, required: When the checkout entered processing (null if never).
    - `completed_at` string, nullable, required: When the checkout completed (null if never).
  - `stats` object, required: Aggregates over the current filter.
    - `total` integer, required: Total checkouts matching the filter.
    - `completed` integer, required: Completed checkouts.
    - `completed_amount` integer, required: Sum of completed amounts in cents.
  - `limit` integer, required: Applied page size (1–100).
  - `offset` integer, required: Applied offset.

## Other responses

- `400`: Invalid status filter.
- `401`: Missing/invalid credentials. `invalid_api_key` for a failed sk_* lookup (revoked/expired/unknown); `invalid_token` for a bad or missing JWT/Authorization header.
- `403`: The API key lacks the `merchant_read` scope required by this operation. May also be `account_blocked`, or an operation-specific 403 — see the error catalog.
- `404`: Product not found — includes rows owned by another account (ownership is never disclosed).
- `429`: Rate limited. Beyond the endpoint's own limit when set (`rate_limited`), API-key calls are also bounded by the shared per-merchant budget (`merchant_rate_limited`, default 30 req/min across all endpoints) and by the key's own rate limit when configured (`rate_limited`). Retry after `retry_after` seconds (also in the Retry-After header).

---

[API](https://skmtc.dev/depixapp/apis/depix-api.md) · [All operations](https://skmtc.dev/depixapp/apis/depix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/depixapp/apis/depix-api/revisions/04094536dd0f?raw)
