> ## 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 CFDIs the SAT has on file

> Every CFDI the SAT holds for your synced RFCs — issued and received — newest first. Includes documents you never stamped through this API (a supplier invoicing you, or invoices issued before you integrated). Requires SAT sync enabled on at least one fiscal profile.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/sat_documents
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/sat_documents:
    get:
      tags:
        - sat_documents
      summary: List CFDIs the SAT has on file
      description: >-
        Every CFDI the SAT holds for your synced RFCs — issued and received —
        newest first. Includes documents you never stamped through this API (a
        supplier invoicing you, or invoices issued before you integrated).
        Requires SAT sync enabled on at least one fiscal profile.
      parameters:
        - schema:
            default: 20
            type: integer
            minimum: 1
            maximum: 100
          in: query
          name: limit
          required: false
        - schema:
            type: string
            minLength: 1
          in: query
          name: starting_after
          required: false
        - schema:
            type: string
            minLength: 1
          in: query
          name: ending_before
          required: false
        - schema:
            type: string
          in: query
          name: fiscal_profile_id
          required: false
        - schema:
            type: string
            enum:
              - issued
              - received
          in: query
          name: side
          required: false
        - schema:
            type: string
            enum:
              - vigente
              - cancelado
          in: query
          name: status
          required: false
        - $ref: '#/components/parameters/InvoiceVersion'
        - $ref: '#/components/parameters/InvoiceAccount'
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    enum:
                      - list
                  url:
                    type: string
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                          enum:
                            - sat_document
                        id:
                          type: string
                        uuid:
                          type: string
                          description: Folio fiscal.
                        fiscal_profile_id:
                          type: string
                        side:
                          type: string
                          enum:
                            - issued
                            - received
                          description: >-
                            `issued` = the taxpayer is the emisor; `received` =
                            they are the receptor.
                        emisor_rfc:
                          type: string
                        emisor_name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        receptor_rfc:
                          type: string
                        receptor_name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        subtotal:
                          anyOf:
                            - type: string
                            - type: 'null'
                        total:
                          anyOf:
                            - type: string
                            - type: 'null'
                        type:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: 'Tipo de comprobante: I, E, T, N, P.'
                        status:
                          anyOf:
                            - type: string
                              enum:
                                - vigente
                                - cancelado
                            - type: string
                          description: SAT status of the CFDI.
                        serie:
                          anyOf:
                            - type: string
                            - type: 'null'
                        folio:
                          anyOf:
                            - type: string
                            - type: 'null'
                        currency:
                          anyOf:
                            - type: string
                            - type: 'null'
                        issued_at:
                          anyOf:
                            - type: string
                            - type: 'null'
                        stamped_at:
                          anyOf:
                            - type: string
                            - type: 'null'
                        cancelled_at:
                          anyOf:
                            - type: string
                            - type: 'null'
                        livemode:
                          type: boolean
                      required:
                        - object
                        - id
                        - uuid
                        - fiscal_profile_id
                        - side
                        - emisor_rfc
                        - emisor_name
                        - receptor_rfc
                        - receptor_name
                        - subtotal
                        - total
                        - type
                        - status
                        - serie
                        - folio
                        - currency
                        - issued_at
                        - stamped_at
                        - cancelled_at
                        - livemode
                      additionalProperties: false
                  has_more:
                    type: boolean
                required:
                  - object
                  - data
                  - has_more
                additionalProperties: false
              example:
                object: list
                url: https://example.com/webhooks/invoice
                data:
                  - object: sat_document
                    id: obj_2P9K3sample
                    uuid: 5FB2822E-396D-4725-8521-CDC4BDD20CCF
                    fiscal_profile_id: fp_2P9K3sample
                    side: issued
                    emisor_rfc: string
                    emisor_name: string
                    receptor_rfc: string
                    receptor_name: string
                    subtotal: '116.00'
                    total: '116.00'
                    type: string
                    status: vigente
                    serie: string
                    folio: string
                    currency: MXN
                    issued_at: '2026-07-10T18:25:43Z'
                    stamped_at: '2026-07-10T18:25:43Z'
                    cancelled_at: '2026-07-10T18:25:43Z'
                    livemode: false
                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/request_validation_failed
                title: Request validation failed
                status: 422
                code: request.validation_failed
                detail: One or more fields did not satisfy the schema.
                remediation: Fix the fields listed in `errors` and resubmit.
                doc_url: /docs/errors#request-validation_failed
                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_...`.'

````