FISCALISTO / API / REFERENCIA
Pedirle al SAT las facturas de un emisor
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).
bearerAuthAutorizaciónBearer <llave>Su llave secreta: fk_test_… en pruebas, fk_live_… en producción. Desarrolladores › Llaves.
Idempotency-Key?stringOpcional (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).
1 <= length <= 255application/json- body
issuer?stringEl emisor (iss_…). Por omisión, su único emisor.
direction?stringreceived (las facturas que le hicieron al emisor, por omisión) o issued (las que emitió, aunque no haya sido con Fiscalisto).
"received""received""issued"from*stringDesde qué día (incluido), en hora de la Ciudad de México.
^\d{4}-\d{2}-\d{2}$to*stringHasta qué día (incluido). A lo más un año después de from, y no después de hoy.
^\d{4}-\d{2}-\d{2}$type?stringSolo un tipo de comprobante: I, E, P, T o N. Por omisión, todos.
"I""E""P""T""N"counterparty_tax_id?stringSolo las de un RFC: el emisor de las recibidas, o el receptor de las emitidas.
^[A-ZÑ&]{3,4}\d{6}[A-Z0-9]{3}$uuid?stringUna sola factura, por su folio fiscal (UUID).
^([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)$uuidCorrecto.
application/json- response
Una solicitud al SAT de las facturas emitidas o recibidas de un emisor en un periodo.
id*stringIdentificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_).
livemode*booleantrue en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT.
object*stringQué tipo de objeto es («invoice», «customer»…).
issuer*stringEl emisor cuyas facturas se piden.
direction*stringreceived (las que le hicieron) o issued (las que emitió).
"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*stringprocessing (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).
"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"}