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

# List invoices

> List invoices newest-first with cursor pagination. Filter by status, customer_rfc, and created_at date range. Pass `expand=fiscal_profile` to inline the issuer on each row.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/invoices
openapi: 3.1.0
info:
  title: Invoice API
  description: >-
    Mexican CFDI 4.0 invoicing API. Versioned via the Invoice-Version header;
    current: 2026-07-15. See GET /v1/versions.
  version: 0.1.0
servers:
  - url: https://api.newinvoice.dev
    description: Production
  - url: http://localhost:3000
    description: Local development
security:
  - bearerAuth: []
tags:
  - name: api_keys
    description: Platform API-key lifecycle (create, list, revoke)
  - name: accounts
    description: 'Connect: platform-owned connected accounts (multi-tenant)'
  - name: fiscal_profiles
    description: Emitter RFC + CSD/FIEL registration
  - name: invoices
    description: Create, stamp, cancel CFDI 4.0 invoices
  - name: validations
    description: Validate arbitrary CFDI XML
  - name: downloads
    description: SAT descarga masiva jobs
  - name: webhook_endpoints
    description: HMAC-signed event delivery
  - name: events
    description: Event log
  - name: balance
    description: Remaining stamp credits
  - name: usage
    description: Metered usage records (stamps consumed)
  - name: catalogs
    description: SAT reference catalogs (uso CFDI, payment forms/methods, tax regimes, …)
  - name: docs
    description: Served documentation (error catalog + guides)
paths:
  /v1/invoices:
    get:
      tags:
        - invoices
      summary: List invoices
      description: >-
        List invoices newest-first with cursor pagination. Filter by status,
        customer_rfc, and created_at date range. Pass `expand=fiscal_profile` to
        inline the issuer on each row.
      parameters:
        - schema:
            default: 20
            type: integer
            minimum: 1
            maximum: 100
          in: query
          name: limit
          required: false
          description: Page size, 1-100 (default 20).
        - schema:
            type: string
            minLength: 1
          in: query
          name: starting_after
          required: false
          description: >-
            Cursor: return the page of results OLDER than this object id (the
            next page).
        - schema:
            type: string
            minLength: 1
          in: query
          name: ending_before
          required: false
          description: >-
            Cursor: return the page of results NEWER than this object id (the
            previous page).
        - schema:
            type: string
            enum:
              - draft
              - stamping
              - stamped
              - stamp_failed
          in: query
          name: status
          required: false
          description: >-
            Filter by lifecycle status: draft, stamping, stamped, or
            stamp_failed.
        - schema:
            type: string
            minLength: 1
          in: query
          name: customer_rfc
          required: false
          description: Filter by the customer (receptor) RFC.
        - schema:
            type: string
            minLength: 1
          in: query
          name: date_from
          required: false
          description: ISO date/datetime lower bound on created_at (inclusive).
        - schema:
            type: string
            minLength: 1
          in: query
          name: date_to
          required: false
          description: ISO date/datetime upper bound on created_at (inclusive).
        - schema:
            anyOf:
              - type: string
              - type: array
                items:
                  type: string
          in: query
          name: expand
          required: false
          description: Comma-separated related objects to inline, e.g. "fiscal_profile".
        - schema:
            anyOf:
              - type: string
              - type: array
                items:
                  type: string
          in: query
          name: expand[]
          required: false
          description: Bracket-array form of `expand`.
        - $ref: '#/components/parameters/InvoiceVersion'
        - $ref: '#/components/parameters/InvoiceAccount'
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    description: Always "list".
                    enum:
                      - list
                  url:
                    description: >-
                      The path this list was requested from, e.g.
                      "/v1/invoices".
                    type: string
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                          description: Always "invoice".
                          enum:
                            - invoice
                        id:
                          type: string
                          description: Invoice id, e.g. "inv_2P9K3sample".
                        livemode:
                          type: boolean
                          description: >-
                            True if stamped with a live-mode key against the
                            real SAT.
                        status:
                          type: string
                          enum:
                            - draft
                            - stamping
                            - stamped
                            - stamp_failed
                          description: >-
                            Lifecycle status: draft, stamping (in flight),
                            stamped, or stamp_failed.
                        type:
                          type: string
                          enum:
                            - I
                            - E
                            - P
                          description: >-
                            CFDI TipoDeComprobante: "I" ingreso, "E" egreso
                            (nota de crédito), "P" pago.
                        fiscal_profile_id:
                          type: string
                          description: >-
                            Id of the fiscal profile (issuer) that stamped this
                            invoice.
                        serie:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: CFDI Serie, or null if unset.
                        folio:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: CFDI Folio, or null if unset.
                        customer:
                          type: object
                          properties:
                            rfc:
                              type: string
                              description: Customer (receptor) RFC.
                            name:
                              type: string
                              description: Customer legal name (razón social).
                            zip:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: >-
                                Customer fiscal-domicile ZIP
                                (DomicilioFiscalReceptor).
                            tax_regime:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: Customer c_RegimenFiscal code.
                            use:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: Customer c_UsoCFDI code, e.g. "G03".
                          required:
                            - rfc
                            - name
                            - zip
                            - tax_regime
                            - use
                          additionalProperties: false
                          description: The receptor (customer) as stamped onto the CFDI.
                        currency:
                          type: string
                          description: c_Moneda currency code, e.g. "MXN".
                        subtotal:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Sum of line amounts before taxes, decimal string,
                            e.g. "100.00".
                        total:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Grand total including taxes, decimal string, e.g.
                            "116.00".
                        uuid:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: SAT folio fiscal (UUID) once stamped, else null.
                        stamped_at:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: When the CFDI was stamped (ISO-8601 UTC), or null.
                        sello_cfd:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: Issuer digital seal (Sello del CFDI), or null.
                        sello_sat:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            SAT digital seal from the TimbreFiscalDigital, or
                            null.
                        no_certificado_sat:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            SAT certificate serial that timbró the CFDI, or
                            null.
                        cancellation:
                          type: object
                          properties:
                            status:
                              type: string
                              enum:
                                - none
                                - cancel_pending
                                - cancelled
                                - cancel_rejected
                              description: >-
                                Cancellation state: "none" not requested,
                                "cancel_pending" awaiting receptor/SAT,
                                "cancelled" done, "cancel_rejected" receptor
                                rejected.
                            reason:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: >-
                                SAT motivo de cancelación (01-04) if requested,
                                else null.
                            substitute_invoice_id:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: >-
                                Replacement CFDI id when cancelled with reason
                                "01", else null.
                            acuse_available:
                              type: boolean
                              description: >-
                                True when the SAT acuse de cancelación is
                                retrievable.
                          required:
                            - status
                            - reason
                            - substitute_invoice_id
                            - acuse_available
                          additionalProperties: false
                          description: Cancellation status for this CFDI.
                        error:
                          anyOf:
                            - {}
                            - type: 'null'
                          description: >-
                            The last stamping error (problem+json shape) when
                            status is stamp_failed, else null.
                        xml_url:
                          type: string
                          description: >-
                            Path to download the CFDI XML, e.g.
                            "/v1/invoices/:id/xml".
                        pdf_url:
                          type: string
                          description: >-
                            Path to download the CFDI PDF, e.g.
                            "/v1/invoices/:id/pdf".
                        metadata:
                          type: object
                          propertyNames:
                            type: string
                          additionalProperties:
                            type: string
                          description: Integrator-owned key-value map echoed back.
                        fiscal_profile:
                          description: >-
                            The full issuer profile — present only when
                            `?expand=fiscal_profile` is requested.
                          type: object
                          properties:
                            object:
                              type: string
                              description: Always "fiscal_profile".
                              enum:
                                - fiscal_profile
                            id:
                              type: string
                              description: Fiscal-profile id, e.g. "fp_2P9K3sample".
                            rfc:
                              type: string
                              description: Issuer RFC, derived from the CSD certificate.
                            legal_name:
                              type: string
                              description: Issuer legal name (razón social).
                            tax_regime:
                              type: string
                              description: c_RegimenFiscal code of the issuer, e.g. "601".
                            zip:
                              type: string
                              description: Issuer fiscal-domicile ZIP (LugarExpedicion).
                            csd:
                              type: object
                              properties:
                                serial:
                                  type: string
                                  description: >-
                                    CSD certificate serial number (número de
                                    certificado).
                                valid_from:
                                  type: string
                                  description: CSD validity start, ISO-8601 UTC.
                                valid_to:
                                  type: string
                                  description: CSD validity end (expiry), ISO-8601 UTC.
                                rfc:
                                  type: string
                                  description: RFC embedded in the CSD certificate.
                              required:
                                - serial
                                - valid_from
                                - valid_to
                                - rfc
                              additionalProperties: false
                              description: >-
                                Public metadata of the stored CSD (never the
                                private key).
                            status:
                              type: string
                              enum:
                                - requires_action
                                - active
                              description: >-
                                Derived readiness state. "requires_action": the
                                carta manifiesto is not yet signed, so this
                                profile CANNOT stamp CFDIs. "active": the
                                manifiesto is signed and the profile is
                                authorized to stamp for its RFC. Derived from
                                manifest_status at serialization time.
                            has_fiel:
                              type: boolean
                              description: >-
                                True when a FIEL (e.firma) is stored (used to
                                sign the carta manifiesto and for descarga
                                masiva).
                            manifest_status:
                              type: string
                              enum:
                                - pending_signature
                                - signed
                              description: Carta-manifiesto signing state.
                            manifest_signed_at:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: >-
                                When the carta manifiesto was signed (ISO-8601
                                UTC), or null if unsigned.
                            next_actions:
                              type: array
                              items:
                                type: object
                                properties:
                                  type:
                                    type: string
                                    description: >-
                                      Stable, machine-readable action
                                      identifier, e.g. "sign_manifest".
                                  message:
                                    type: string
                                    description: >-
                                      Human- and agent-readable explanation of
                                      what to do and why.
                                  endpoint:
                                    type: string
                                    description: >-
                                      The exact API call that performs the
                                      action, e.g. "POST
                                      /v1/fiscal_profiles/fp_123/manifest".
                                  requires:
                                    type: array
                                    items:
                                      type: string
                                    description: >-
                                      Inputs the action needs, e.g. ["fiel"] —
                                      the taxpayer's FIEL (e.firma).
                                required:
                                  - type
                                  - message
                                  - endpoint
                                  - requires
                                additionalProperties: false
                              description: >-
                                Actions to make this profile active (identical
                                content to pending_actions). Empty when active.
                            pending_actions:
                              type: array
                              items:
                                type: object
                                properties:
                                  type:
                                    type: string
                                    description: >-
                                      Stable, machine-readable action
                                      identifier, e.g. "sign_manifest".
                                  message:
                                    type: string
                                    description: >-
                                      Human- and agent-readable explanation of
                                      what to do and why.
                                  endpoint:
                                    type: string
                                    description: >-
                                      The exact API call that performs the
                                      action, e.g. "POST
                                      /v1/fiscal_profiles/fp_123/manifest".
                                  requires:
                                    type: array
                                    items:
                                      type: string
                                    description: >-
                                      Inputs the action needs, e.g. ["fiel"] —
                                      the taxpayer's FIEL (e.firma).
                                required:
                                  - type
                                  - message
                                  - endpoint
                                  - requires
                                additionalProperties: false
                              description: >-
                                Outstanding actions before this profile can
                                stamp CFDIs (identical content to next_actions).
                                Empty when active.
                            metadata:
                              type: object
                              propertyNames:
                                type: string
                              additionalProperties:
                                type: string
                              description: Integrator-owned key-value map echoed back.
                            brand_color:
                              anyOf:
                                - type: string
                                - type: 'null'
                              description: PDF accent color (#RRGGBB), or null if unset.
                            has_logo:
                              type: boolean
                              description: >-
                                Whether a PDF logo is stored (the raw data URL
                                is not echoed to keep responses small).
                            livemode:
                              type: boolean
                              description: >-
                                True if this profile was created with a
                                live-mode key.
                            created_at:
                              type: string
                              description: Creation timestamp, ISO-8601 UTC.
                            updated_at:
                              type: string
                              description: Last-update timestamp, ISO-8601 UTC.
                          required:
                            - object
                            - id
                            - rfc
                            - legal_name
                            - tax_regime
                            - zip
                            - csd
                            - status
                            - has_fiel
                            - manifest_status
                            - manifest_signed_at
                            - next_actions
                            - pending_actions
                            - metadata
                            - brand_color
                            - has_logo
                            - livemode
                            - created_at
                            - updated_at
                          additionalProperties: false
                        created_at:
                          type: string
                          description: Creation timestamp, ISO-8601 UTC.
                        updated_at:
                          type: string
                          description: Last-update timestamp, ISO-8601 UTC.
                      required:
                        - object
                        - id
                        - livemode
                        - status
                        - type
                        - fiscal_profile_id
                        - serie
                        - folio
                        - customer
                        - currency
                        - subtotal
                        - total
                        - uuid
                        - stamped_at
                        - sello_cfd
                        - sello_sat
                        - no_certificado_sat
                        - cancellation
                        - error
                        - xml_url
                        - pdf_url
                        - metadata
                        - created_at
                        - updated_at
                      additionalProperties: false
                    description: The page of invoices, newest first.
                  has_more:
                    type: boolean
                    description: True if more results exist beyond this page.
                required:
                  - object
                  - data
                  - has_more
                additionalProperties: false
              example:
                object: list
                url: https://example.com/webhooks/invoice
                data:
                  - object: invoice
                    id: obj_2P9K3sample
                    livemode: false
                    status: draft
                    type: I
                    fiscal_profile_id: fp_2P9K3sample
                    serie: string
                    folio: string
                    customer:
                      rfc: XAXX010101000
                      name: string
                      zip: string
                      tax_regime: string
                      use: string
                    currency: MXN
                    subtotal: '116.00'
                    total: '116.00'
                    uuid: 5FB2822E-396D-4725-8521-CDC4BDD20CCF
                    stamped_at: '2026-07-10T18:25:43Z'
                    sello_cfd: string
                    sello_sat: string
                    no_certificado_sat: string
                    cancellation:
                      status: none
                      reason: string
                      substitute_invoice_id: inv_2P9K3sample
                      acuse_available: true
                    error: string
                    xml_url: https://example.com/webhooks/invoice
                    pdf_url: https://example.com/webhooks/invoice
                    metadata: {}
                    fiscal_profile:
                      object: fiscal_profile
                      id: obj_2P9K3sample
                      rfc: XAXX010101000
                      legal_name: string
                      tax_regime: string
                      zip: string
                      csd:
                        serial: string
                        valid_from: string
                        valid_to: string
                        rfc: XAXX010101000
                      status: requires_action
                      has_fiel: true
                      manifest_status: pending_signature
                      manifest_signed_at: '2026-07-10T18:25:43Z'
                      next_actions:
                        - type: string
                          message: string
                          endpoint: string
                          requires:
                            - string
                      pending_actions:
                        - type: string
                          message: string
                          endpoint: string
                          requires:
                            - string
                      metadata: {}
                      brand_color: string
                      has_logo: true
                      livemode: false
                      created_at: '2026-07-10T18:25:43Z'
                      updated_at: '2026-07-10T18:25:43Z'
                    created_at: '2026-07-10T18:25:43Z'
                    updated_at: '2026-07-10T18:25:43Z'
                has_more: true
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Invoice-Version:
              $ref: '#/components/headers/InvoiceVersionResponse'
            traceparent:
              $ref: '#/components/headers/Traceparent'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
        '401':
          description: Missing or invalid API key.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://errors.invoiceapi.mx/auth_unauthorized
                title: Authentication required
                status: 401
                code: auth.unauthorized
                detail: Missing or invalid API key.
                remediation: >-
                  Send `Authorization: Bearer sk_test_...` (or sk_live_...) with
                  a valid API key.
                doc_url: /docs/errors#auth-unauthorized
                request_id: req_2P9K3sample
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Invoice-Version:
              $ref: '#/components/headers/InvoiceVersionResponse'
            traceparent:
              $ref: '#/components/headers/Traceparent'
        '422':
          description: Request validation failed.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://errors.invoiceapi.mx/cfdi_invalid_input
                title: Invalid invoice
                status: 422
                code: cfdi.invalid_input
                detail: 'items.0.unit_price: expected a decimal string.'
                remediation: >-
                  Fix every field listed in `errors` and resubmit. See
                  /openapi.json for the schema.
                doc_url: /docs/errors#cfdi-invalid_input
                request_id: req_2P9K3sample
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Invoice-Version:
              $ref: '#/components/headers/InvoiceVersionResponse'
            traceparent:
              $ref: '#/components/headers/Traceparent'
        '429':
          description: Rate limit exceeded — back off per the Retry-After header.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://errors.invoiceapi.mx/rate_limit_exceeded
                title: Rate limit exceeded
                status: 429
                code: rate_limit.exceeded
                detail: >-
                  Too many requests for this key + request class (reads and
                  writes are limited separately).
                remediation: >-
                  Back off and retry after the number of seconds in the
                  Retry-After header; batch work or lower your request rate.
                doc_url: /docs/errors#rate_limit-exceeded
                request_id: req_2P9K3sample
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Invoice-Version:
              $ref: '#/components/headers/InvoiceVersionResponse'
            traceparent:
              $ref: '#/components/headers/Traceparent'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        '500':
          description: Internal server error.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://errors.invoiceapi.mx/internal_error
                title: Internal server error
                status: 500
                code: internal.error
                detail: An unexpected error occurred.
                remediation: >-
                  Retry later; contact support with the request_id if it
                  persists.
                doc_url: /docs/errors#internal-error
                request_id: req_2P9K3sample
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Invoice-Version:
              $ref: '#/components/headers/InvoiceVersionResponse'
            traceparent:
              $ref: '#/components/headers/Traceparent'
components:
  parameters:
    InvoiceVersion:
      name: Invoice-Version
      in: header
      required: false
      description: >-
        Pin a dated API release (Stripe-style). Omit to use the current version.
        An unknown value returns 400 `request.invalid_version`. Echoed back on
        every response.
      schema:
        type: string
        example: '2026-07-10'
    InvoiceAccount:
      name: Invoice-Account
      in: header
      required: false
      description: >-
        Connect: act on behalf of one of your connected accounts (its
        `acct_…`/`org_…` id). Omit to act as your own organization. Not honored
        on /v1/api_keys.
      schema:
        type: string
        example: org_2P9connectedacct
  headers:
    RequestId:
      description: >-
        Unique id for this request. Also the `request_id` in every error body —
        log it and quote it to support; idempotency keys off it too.
      schema:
        type: string
        example: req_2P9K3sample
    InvoiceVersionResponse:
      description: >-
        The dated API version resolved for this request (request header → key
        pin → current). Echoed on every response.
      schema:
        type: string
        example: '2026-07-15'
    Traceparent:
      description: >-
        W3C Trace Context. When you send a valid `traceparent`, the response
        continues the trace (same trace-id, a fresh span-id, sampled flag).
      schema:
        type: string
        example: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
    RateLimitLimit:
      description: >-
        IETF draft rate-limit: the ceiling of the token bucket consulted for
        this request class (reads and writes have independent buckets).
      schema:
        type: integer
        example: 100
    RateLimitRemaining:
      description: 'IETF draft rate-limit: tokens left in the bucket after this request.'
      schema:
        type: integer
        example: 99
    RateLimitReset:
      description: 'IETF draft rate-limit: seconds until the bucket refills to its ceiling.'
      schema:
        type: integer
        example: 1
    RetryAfter:
      description: >-
        Seconds to wait before retrying (RFC 9110). Present on 429 and on
        retryable upstream failures.
      schema:
        type: integer
        example: 1
  schemas:
    Problem:
      type: object
      description: RFC 9457 problem+json error with agent-first extensions.
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
        code:
          type: string
          description: Stable dotted machine code to switch on.
        detail:
          type: string
        remediation:
          type: string
          description: Actionable next step for a human or agent.
        request_id:
          type: string
        pac:
          type: object
          properties:
            provider:
              type: string
            codigo:
              type: string
            mensaje:
              type: string
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              message:
                type: string
      required:
        - type
        - title
        - status
        - code
        - request_id
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key: `Authorization: Bearer sk_test_...` or `sk_live_...`.'

````