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

# List Invoices

> Authenticate with either a Supabase session (internal dashboard, member of `organizationId`) or an API key with the `read:invoices` scope. When using an API key, `organizationId` in the URL must match the key's organization. Results are ordered by creation date, newest first.

Returns a paginated list of invoices for the organization, ordered by creation date, newest first.

## Authentication

Accepts **either**:

* A Supabase Bearer session (`Authorization: Bearer <token>`) — the authenticated user must be a member of `organizationId`.
* An API key (`X-API-Key: sk_...`) with the `read:invoices` scope — the key's own organization must match `organizationId` in the URL, or the request is rejected with `403 Forbidden`.

## Path Parameters

| Parameter        | Type          | Required | Description     |
| ---------------- | ------------- | -------- | --------------- |
| `organizationId` | string (UUID) | Yes      | Organization ID |

## Query Parameters

| Parameter | Type    | Required | Default | Description              |
| --------- | ------- | -------- | ------- | ------------------------ |
| `page`    | integer | No       | `1`     | Page number (1-indexed)  |
| `limit`   | integer | No       | `20`    | Results per page (1-100) |

## Example Request

```bash cURL theme={null}
curl -X GET "https://api.timbrix.mx/organizations/550e8400-e29b-41d4-a716-446655440000/invoices?page=1&limit=20" \
  -H "Authorization: Bearer <your_token>"
```

```typescript TypeScript SDK theme={null}
const result = await timbrix.invoices.list(
  "550e8400-e29b-41d4-a716-446655440000",
  { page: 1, limit: 20 }
)
console.log(result.data, result.total)
```

## Example Response

```json theme={null}
{
  "data": [
    {
      "id": "0f2a1c3e-1a2b-4c3d-9e8f-1234567890ab",
      "uuid": "d3bfbc57-44af-4390-a064-f0afab85e5df",
      "serie": "A",
      "folio": "1",
      "tipoComprobante": "I",
      "rfcReceptor": "GODE561231GR8",
      "moneda": "MXN",
      "total": 116,
      "status": "vigente",
      "createdAt": "2026-07-30T22:50:03.412Z"
    }
  ],
  "total": 42,
  "page": 1,
  "limit": 20,
  "totalPages": 3
}
```

| Field        | Type    | Description                                            |
| ------------ | ------- | ------------------------------------------------------ |
| `data[]`     | array   | Invoice summaries — see below                          |
| `total`      | integer | Total invoices for the organization, before pagination |
| `page`       | integer | Current page number                                    |
| `limit`      | integer | Results per page                                       |
| `totalPages` | integer | Total number of pages                                  |

### `data[]`

| Field             | Type   | Description                                     |
| ----------------- | ------ | ----------------------------------------------- |
| `id`              | string | Timbrix invoice record ID                       |
| `uuid`            | string | Folio fiscal UUID asignado por el SAT vía PAC   |
| `serie`           | string | Invoice series                                  |
| `folio`           | string | Invoice folio number                            |
| `tipoComprobante` | string | `I` = Ingreso, `E` = Egreso, `T` = Traslado     |
| `rfcReceptor`     | string | RFC of the receptor (customer)                  |
| `moneda`          | string | Currency code                                   |
| `total`           | number | Invoice total                                   |
| `status`          | string | `vigente` or `cancelado`                        |
| `createdAt`       | string | ISO 8601 timestamp of when the CFDI was stamped |

This is a summary shape — it does not include the CFDI XML or line items. The full XML is only returned in the [Create Invoice](/api-reference/invoices/create) response at issuance time; there is currently no endpoint to re-fetch the XML of a previously stamped invoice, so store it on your side if you need it later.

## Common Errors

### 401 Unauthorized

Missing or invalid Bearer token / API key.

### 403 Forbidden

The authenticated user is not a member of `organizationId`, the API key does not have the `read:invoices` scope, or the API key belongs to a different organization than the one in the URL.


## OpenAPI

````yaml GET /organizations/{organizationId}/invoices
openapi: 3.1.0
info:
  title: Timbrix API
  description: >-
    REST API with OAuth2 server for managing organizations, members, and
    webhooks
  version: '1.0'
  contact: {}
servers:
  - url: https://api.timbrix.mx
    description: Production
security: []
tags:
  - name: organizations
    description: Organization management endpoints
  - name: oauth
    description: OAuth2 authentication and authorization
  - name: webhooks
    description: Webhook configuration and delivery
  - name: users
    description: User information endpoints
  - name: api-keys
    description: API Keys management and validation
  - name: invoices
    description: CFDI 4.0 invoice creation and stamping via PAC
paths:
  /organizations/{organizationId}/invoices:
    get:
      tags:
        - invoices
      summary: List invoices for the organization
      description: >-
        Authenticate with either a Supabase session (internal dashboard, member
        of `organizationId`) or an API key with the `read:invoices` scope. When
        using an API key, `organizationId` in the URL must match the key's
        organization. Results are ordered by creation date, newest first.
      operationId: InvoicesController_list
      parameters:
        - name: organizationId
          required: true
          in: path
          schema:
            type: string
        - name: page
          required: false
          in: query
          description: 'Page number (1-indexed). Default: 1'
          schema:
            type: number
            example: 1
        - name: limit
          required: false
          in: query
          description: 'Results per page (1-100). Default: 20'
          schema:
            type: number
            example: 20
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListInvoicesResponseDto'
        '403':
          description: API key does not belong to `organizationId`
      security:
        - bearer: []
        - apiKey: []
components:
  schemas:
    ListInvoicesResponseDto:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceListItemDto'
        total:
          type: number
          description: Total de facturas de la organización, antes de paginar
          example: 42
        page:
          type: number
          example: 1
        limit:
          type: number
          example: 20
        totalPages:
          type: number
          example: 3
      required:
        - data
        - total
        - page
        - limit
        - totalPages
    InvoiceListItemDto:
      type: object
      properties:
        id:
          type: string
          description: Timbrix invoice record ID
          example: 0f2a1c3e-1a2b-4c3d-9e8f-1234567890ab
        uuid:
          type: string
          description: Folio fiscal UUID asignado por el SAT vía PAC
          example: d3bfbc57-44af-4390-a064-f0afab85e5df
        serie:
          type: string
          example: A
        folio:
          type: string
          example: '1'
        tipoComprobante:
          type: string
          description: I = Ingreso, E = Egreso, T = Traslado
          example: I
        rfcReceptor:
          type: string
          description: RFC del receptor
          example: GODE561231GR8
        moneda:
          type: string
          example: MXN
        total:
          type: number
          example: 116
        status:
          type: string
          enum:
            - vigente
            - cancelado
          example: vigente
        createdAt:
          type: string
          example: '2026-07-30T22:50:03.412Z'
      required:
        - id
        - uuid
        - serie
        - folio
        - tipoComprobante
        - rfcReceptor
        - moneda
        - total
        - status
        - createdAt
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'API Key for authentication (format: sk_...)'

````