# Listar facturas del SAT

`GET https://api.fiscalisto.com/v1/sat_invoices`

Las facturas que trajeron sus descargas (y las demás que Fiscalisto tenga del emisor), de la más reciente a la más antigua por fecha.

## Parámetros

| Nombre | Dónde | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `limit` | consulta |  | Cuántos por página, de 1 a 100. Por omisión 10. |
| `starting_after` | consulta |  | El id del último de la página anterior, para la siguiente. |
| `issuer` | consulta |  | El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo. |
| `direction` | consulta |  | received (por omisión) o issued. |
| `type` | consulta |  | I, E, P, T o N. |
| `counterparty_tax_id` | consulta |  | El RFC de quien la emitió (recibidas) o de quien la recibió (emitidas). |
| `date_gte` | consulta |  | Con fecha desde este día (AAAA-MM-DD). |
| `date_lte` | consulta |  | Con fecha hasta este día (AAAA-MM-DD), incluido. |

## Con el SDK de TypeScript

```ts
import { Fiscalisto } from "fiscalisto";

// La llave viene de FISCALISTO_API_KEY.
const fiscalisto = new Fiscalisto();

for await (const item of fiscalisto.satInvoices.list()) {
  console.log(item.id);
}
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

# La llave viene de FISCALISTO_API_KEY.
fiscalisto = Fiscalisto()

for item in fiscalisto.sat_invoices.list():
    print(item["id"])
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
$fiscalisto = new Fiscalisto();

foreach ($fiscalisto->satInvoices->list() as $item) {
    echo $item['id'], "\n";
}
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

await foreach (var item in fiscalisto.SatInvoices.ListAutoPagingAsync())
    Console.WriteLine(item.Id);
```

## Con el SDK de Go

```go
package main

import (
	"context"
	"fmt"
	"log"

	fiscalisto "fiscalisto.com/go"
)

func main() {
	// La llave viene de FISCALISTO_API_KEY.
	client, err := fiscalisto.NewClient("")
	if err != nil {
		log.Fatal(err)
	}
	ctx := context.Background()

	for item, err := range client.SatInvoices.ListAutoPaging(ctx, nil) {
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(item.ID)
	}
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

for (var item : fiscalisto.satInvoices().listAutoPaging()) {
    System.out.println(item.getId());
}
```

## Respuesta 200

Correcto.

Un objeto `SatInvoiceList`:

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `object` | `"list"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `data` | arreglo de objeto | sí | Los objetos de esta página. |
| `data[].id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `data[].livemode` | boolean | sí | true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT. |
| `data[].object` | `"sat_invoice"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `data[].issuer` | string | sí | El emisor de su cuenta (iss_…) a quien pertenece esta factura. |
| `data[].uuid` | string | sí | El folio fiscal (UUID del timbre). |
| `data[].direction` | `received`, `issued` | sí | received (se la hicieron al emisor) o issued (la emitió). |
| `data[].type` | `I`, `E`, `P`, `T`, `N` o null | sí | Tipo de comprobante (TipoDeComprobante): I ingreso, E egreso, P pago, T traslado, N nómina. |
| `data[].date` | string | sí | La fecha del comprobante (Fecha), en la hora local con que se emitió. |
| `data[].series` | string o null | sí | Serie (Serie), o null. |
| `data[].folio` | string o null | sí | Folio (Folio), o null. |
| `data[].issued_by` | objeto | sí | Quien la emitió (Emisor). |
| `data[].issued_by.tax_id` | string | sí | RFC (Rfc), 12 caracteres una persona moral y 13 una física. |
| `data[].issued_by.legal_name` | string o null | sí | Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»). |
| `data[].issued_to` | objeto | sí | A quien se la emitieron (Receptor). |
| `data[].issued_to.tax_id` | string | sí | RFC (Rfc), 12 caracteres una persona moral y 13 una física. |
| `data[].issued_to.legal_name` | string o null | sí | Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»). |
| `data[].currency` | string o null | sí | Moneda (Moneda): MXN, USD… |
| `data[].exchange_rate` | number o null | sí | Tipo de cambio (TipoCambio), o null en pesos. |
| `data[].payment_method` | string o null | sí | Método de pago (MetodoPago): PUE o PPD. |
| `data[].payment_form` | string o null | sí | Forma de pago (FormaPago), clave de c_FormaPago. |
| `data[].use` | string o null | sí | Uso del CFDI (UsoCFDI). |
| `data[].subtotal` | number o null | sí | Subtotal (SubTotal). |
| `data[].total` | number o null | sí | Total (Total). |
| `data[].taxes` | objeto | sí | Impuestos del comprobante: trasladados (iva, ieps), retenidos (iva_withheld, isr_withheld, ieps_withheld) y locales. |
| `data[].taxes.iva` | number | sí | IVA trasladado. |
| `data[].taxes.ieps` | number | sí | IEPS trasladado. |
| `data[].taxes.iva_withheld` | number | sí | IVA retenido. |
| `data[].taxes.isr_withheld` | number | sí | ISR retenido. |
| `data[].taxes.ieps_withheld` | number | sí | IEPS retenido. |
| `data[].taxes.local_transferred` | number | sí | Impuestos locales trasladados (ISH y similares). |
| `data[].taxes.local_withheld` | number | sí | Impuestos locales retenidos. |
| `data[].sat_status` | `active`, `canceled` o null | sí | Su estado en el SAT cuando se revisó: active (vigente) o canceled. null si aún no se revisa. |
| `data[].sat_download` | string o null | sí | La descarga (sdl_…) que la trajo, o null. |
| `data[].downloaded_at` | string (date-time) o null | sí | Cuándo llegó. |
| `has_more` | boolean | sí | true si hay más: pida la siguiente con starting_after igual al id del último. |
| `url` | string | sí | La ruta de esta lista. |

```json
{
  "object": "list",
  "data": [
    {
      "id": "sat_OufpKqnrvx9p1F",
      "object": "sat_invoice",
      "livemode": false,
      "issuer": "iss_OufpKqnrvx9p",
      "uuid": "9B2D4E61-7C3A-4F18-8E5D-0A6B9C1D2E3F",
      "direction": "received",
      "type": "I",
      "date": "2026-09-12T11:04:00",
      "series": "A",
      "folio": "4821",
      "issued_by": {
        "tax_id": "XIA190128J61",
        "legal_name": "XENON INDUSTRIAL ARTICLES"
      },
      "issued_to": {
        "tax_id": "TOL190312KT4",
        "legal_name": "TOLPI"
      },
      "currency": "MXN",
      "exchange_rate": null,
      "payment_method": "PUE",
      "payment_form": "03",
      "use": "G03",
      "subtotal": 18400,
      "total": 21344,
      "taxes": {
        "iva": 2944,
        "ieps": 0,
        "iva_withheld": 0,
        "isr_withheld": 0,
        "ieps_withheld": 0,
        "local_transferred": 0,
        "local_withheld": 0
      },
      "sat_status": "active",
      "sat_download": "sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc",
      "downloaded_at": "2026-10-24T10:27:40-06:00"
    }
  ],
  "has_more": false,
  "url": "/v1/sat_invoices"
}
```

## Errores

Puede responder 400, 401, 403, 404, 429, 500 con el cuerpo de error de siempre; cada código está en https://fiscalisto.com/docs/api/errores.md.
