Ir al contenido
Descargas del SAT

FISCALISTO / API / REFERENCIA

Pedirle al SAT las facturas de un emisor

POST
/v1/sat_downloads

La descarga masiva del SAT: las facturas que el emisor recibió (o emitió) en un periodo de hasta un año, con su XML. Contesta 202 de inmediato; el SAT tarda de minutos a horas y al terminar llega sat_download.completed (o sat_download.failed) y las facturas quedan en GET /v1/sat_invoices. En producción necesita la e.firma guardada del emisor; en pruebas no se le pregunta al SAT: la descarga trae facturas de ejemplo al instante. En producción usa 1 timbre por cada 100 CFDI que trae (al menos 1).

Autorización

bearerAuth
headerAutorizaciónBearer <llave>

Su llave secreta: fk_test_… en pruebas, fk_live_… en producción. Desarrolladores › Llaves.

Encabezados

Idempotency-Key?string

Opcional (los SDK la mandan solos). Si la respuesta se pierde, repita la solicitud con el mismo valor durante 24 horas: contesta lo mismo, con idempotent-replayed: true, y no lo hace dos veces (ni crea, ni manda correos, ni cobra).

Longitud1 <= length <= 255

Cuerpo de la solicitud

application/json
  1. body
issuer?string

El emisor (iss_…). Por omisión, su único emisor.

direction?string

received (las facturas que le hicieron al emisor, por omisión) o issued (las que emitió, aunque no haya sido con Fiscalisto).

Por omisión"received"
Uno de"received""issued"
from*string

Desde qué día (incluido), en hora de la Ciudad de México.

Patrón^\d{4}-\d{2}-\d{2}$
to*string

Hasta qué día (incluido). A lo más un año después de from, y no después de hoy.

Patrón^\d{4}-\d{2}-\d{2}$
type?string

Solo un tipo de comprobante: I, E, P, T o N. Por omisión, todos.

Uno de"I""E""P""T""N"
counterparty_tax_id?string

Solo las de un RFC: el emisor de las recibidas, o el receptor de las emitidas.

Patrón^[A-ZÑ&]{3,4}\d{6}[A-Z0-9]{3}$
uuid?string

Una sola factura, por su folio fiscal (UUID).

Patrón^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatouuid

Cuerpo de la respuesta

Correcto.

application/json
  1. response

Una solicitud al SAT de las facturas emitidas o recibidas de un emisor en un periodo.

id*string

Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_).

livemode*boolean

true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT.

object*string

Qué tipo de objeto es («invoice», «customer»…).

issuer*string

El emisor cuyas facturas se piden.

direction*string

received (las que le hicieron) o issued (las que emitió).

Uno de"received""issued"
from*|

Desde qué día (incluido).

to*|

Hasta qué día (incluido).

type*|

El tipo de comprobante pedido, o null si todos.

counterparty_tax_id*|

El RFC de la contraparte pedido, o null.

uuid*|

El folio fiscal pedido, o null.

status*string

processing (el SAT la está preparando: de minutos a horas), completed (las facturas ya están en GET /v1/sat_invoices) o failed (el motivo en error).

Uno de"processing""completed""failed"
new_invoices*|

Cuántas facturas nuevas trajo (las que ya tenía no cuentan). null mientras no termine.

error*|

Por qué falló, como lo dijo el SAT. null si no falló.

created_at*|

Cuándo se pidió.

completed_at*|

Cuándo terminó, o null.

curl -X POST 'https://api.fiscalisto.com/v1/sat_downloads' \  -H 'Authorization: Bearer fk_test_…' \  -H 'Idempotency-Key: 8f14e45f-ceea-467a-9575-6a1b0e5f3c21' \  -H 'Content-Type: application/json' \  -d '{  "direction": "received",  "from": "2026-09-01",  "to": "2026-09-30"}'
{  "id": "sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc",  "object": "sat_download",  "livemode": false,  "issuer": "iss_OufpKqnrvx9p",  "direction": "received",  "from": "2026-09-01",  "to": "2026-09-30",  "type": null,  "counterparty_tax_id": null,  "uuid": null,  "status": "completed",  "new_invoices": 8,  "error": null,  "created_at": "2026-10-24T10:20:00-06:00",  "completed_at": "2026-10-24T10:27:41-06:00"}