Descarga masiva de XML

La descarga masiva obtiene del SAT, de forma automática, tres tipos de documentos: CFDI (las facturas completas en XML), metadatos (un resumen de cada comprobante) y retenciones (comprobantes de retenciones e información de pagos). Con ellos puedes generar tu contabilidad electrónica y tus pólizas contables, conciliar cuentas por pagar, cuentas por cobrar y movimientos bancarios, preparar auditorías, automatizar la cadena de suministro y el pago a proveedores, y verificar los comprobantes que recibes.

La descarga masiva se basa en los artículos 29 y 29-A del Código Fiscal de la Federación (CFF), que establecen la obligación de expedir comprobantes fiscales digitales y sus requisitos, y en la regla 2.7.6.4 de la Resolución Miscelánea Fiscal (RMF), que regula el servicio de descarga masiva de CFDI y retenciones.

Requisitos

La descarga masiva requiere la e.firma (FIEL) vigente del contribuyente. La e.firma y el certificado de sello digital (CSD) constan cada uno de un archivo .cer, un archivo .key y una contraseña, pero tienen propósitos distintos: el CSD solo sirve para sellar facturas, y la e.firma es una firma electrónica de propósito general que sirve para todo lo demás, incluida la descarga masiva.

Tipos de descarga

Fiscalapi descarga tres tipos de documentos del SAT. Eliges el tipo con el campo satQueryTypeId al crear una regla de descarga.

TipoValor APIDescripción
CFDI"CFDI"Facturas completas en XML. Solo incluye comprobantes vigentes.
Metadatos"Metadata"Resumen de cada comprobante: UUID, emisor, receptor, montos y estatus. Incluye comprobantes vigentes y cancelados.
Retenciones"Retenciones"Comprobantes de retenciones e información de pagos. Solo incluye comprobantes vigentes.

Conceptos

Estos son los conceptos de la descarga masiva, del más general al más específico:

ConceptoQué es
PersonaUn contribuyente, persona física o moral: una empresa, un cliente o una organización. Consulta emisores o receptores.
Regla de descargaPlantilla que creas una vez con los datos fijos de las descargas de una persona: tipo de documento, emitidos o recibidos y estatus, por ejemplo CFDI recibidos vigentes. Fiscalapi la reutiliza para crear solicitudes.
Solicitud de descargaPetición concreta al SAT creada a partir de una regla. Hereda los datos de la regla, agrega el período (fecha inicial y fecha final) y lleva el control de su estado, su resiliencia y sus reintentos.
PaqueteArchivo ZIP que el SAT genera para una solicitud terminada. Una solicitud puede generar uno o más paquetes, y Fiscalapi los procesa para extraer su contenido.
XMLCon el tipo CFDI, Fiscalapi lee cada XML de los paquetes y guarda sus datos (emisor, receptor, conceptos, impuestos y complementos), así que los consultas desde la API sin procesar el XML.
MetadatosCon el tipo Metadatos, Fiscalapi guarda el resumen de cada comprobante (UUID, RFC del emisor y del receptor, fecha, monto, tipo y estatus) como un registro que puedes consultar y filtrar desde la API.

Jerarquía de entidades

Las respuestas de la API siguen esta estructura jerárquica:

Regla de descarga
  └── Solicitud de descarga
        └── Paquete de descarga
              ├── Xml[]          (cuando satQueryTypeId = "CFDI")
              └── MetadataItem[] (cuando satQueryTypeId = "Metadata")

Una regla genera solicitudes a lo largo del tiempo: Fiscalapi crea al menos una solicitud automática por día, y tú puedes crear con la API tantas solicitudes manuales como necesites. Cada solicitud produce uno o más paquetes, y cada paquete contiene los XML o los metadatos extraídos.

Ambiente de pruebas

El SAT no ofrece un ambiente de pruebas para la descarga masiva. Por eso Fiscalapi incluye en su ambiente de pruebas un simulador propio que reproduce el flujo completo. Para usarlo, sigue estos tres pasos.

Paso 1: Configurar la cuenta para emisión de CFDI

Sigue el inicio rápido para configurar tu cuenta: crea una persona emisor, sube sus certificados de prueba y verifica que puedes emitir facturas.

Paso 2: Emitir facturas de prueba

Emite algunas facturas de prueba por referencias, con la API o desde el dashboard. La simulación toma tus facturas más recientes cuyo emisor es una persona registrada en tu cuenta, así que las facturas por valores no sirven para este paso. Puedes usar cualquier cliente HTTP o la colección de Postman, y el tutorial de emisión de facturas explica el proceso en detalle.

Paso 3: Simular la descarga masiva desde el dashboard

El simulador necesita facturas emitidas en tu cuenta. Con ellas, ve a Descarga CFDI > Reglas de descarga en el menú lateral del dashboard y presiona Agregar, en la parte superior derecha.

Crear regla de descarga de prueba
Crear regla de descarga de prueba

Resultado del flujo de prueba

Al completar el flujo, Fiscalapi crea una regla de descarga de prueba en estado Aprobada y una solicitud de descarga en estado Completada, con los CFDI descargados (XML) y sus metadatos. También puedes iniciar la simulación con la API:

POST /api/v4/download-rules/test

Cómo funciona en producción

Para usar la descarga masiva en producción, sigue estos pasos en el dashboard:

  1. Activa el módulo de descarga masiva en Compras en línea > Módulos adicionales.
  2. Crea una persona con el RFC del que descargarás documentos y sube su e.firma.
  3. En Descarga CFDI > Reglas de descarga, crea una regla de descarga y asígnala a esa persona.
  4. En Descarga CFDI > Solicitudes de descarga, crea una solicitud de descarga y asígnala a la regla.
Tabla de solicitudes de descarga
Tabla de solicitudes de descarga

Tipos de solicitud

TipoValor APIDescripción
Automática"Automatica"Fiscalapi la crea cada día a la 1:05 a. m., hora del centro de México, para cada regla aprobada. Cubre el día anterior completo, de 00:00:00 a 23:59:59.
Manual"Manual"La creas con la API, con downloadRequestTypeId igual a "Manual" y el período que necesites. Puedes crear tantas como necesites.

Ciclo de vida

Las reglas y las solicitudes de descarga pasan por varios estados durante su procesamiento. Consúltalos para seguir el avance de tus descargas.

Estados de la regla de descarga

IdEstadoDescripción
1PendienteLa regla se creó y espera aprobación.
2AprobadaLa regla está activa y genera solicitudes automáticas.
3RechazadaLa regla se rechazó y no genera solicitudes.
4SuspendidaFiscalapi suspendió la regla por un error de configuración, como una e.firma vencida o no cargada. No genera solicitudes hasta que corrijas el error y la regla se apruebe de nuevo.
-1AbandonadaLa regla se canceló, se desactivó o no se pudo procesar.
Pendiente (1) --> Aprobada (2) --> Abandonada (-1)
                             └--> Rechazada (3)

Estados de la solicitud (Fiscalapi)

IdEstadoDescripción
1Esperando SATFiscalapi envió la solicitud al SAT y espera su respuesta.
2Esperando APIEl SAT respondió y Fiscalapi procesa los paquetes descargados.
3CompletadaFiscalapi descargó y procesó todos los paquetes.
-1AbandonadaLa solicitud se canceló, falló de forma definitiva o el SAT indicó que no hay documentos que cumplan los criterios.
EsperandoSat (1) --> EsperandoApi (2) --> Completada (3)
                                      └--> Abandonada (-1)

Estados de la solicitud en el SAT

IdEstadoDescripción
0DesconocidoEstado inicial: Fiscalapi aún no consulta la solicitud en el SAT.
1AceptadaEl SAT aceptó la solicitud y la está procesando.
2En procesoEl SAT está generando los paquetes.
3TerminadaLos paquetes están listos para descargar.
4ErrorOcurrió un error en el SAT.
5RechazadaEl SAT rechazó la solicitud.
6VencidaLa solicitud venció en el SAT.
-1AbandonadaFiscalapi abandona la solicitud tras un error definitivo o cuando el SAT la rechaza, por ejemplo porque no hay documentos que cumplan los criterios.
Desconocido (0) --> Aceptada (1) --> EnProceso (2) --> Terminada (3)
                                                   └--> Error (4) --> Abandonada (-1)
                                                   └--> Rechazada (5) --> Abandonada (-1)
                                                   └--> Vencida (6) --> Abandonada (-1)

Procesamiento automático

Desde la fecha de aprobación de una regla, y mientras siga en estado Aprobada, Fiscalapi ejecuta la descarga sin intervención manual:

EtapaFrecuenciaQué hace Fiscalapi
Generación de solicitudesCada día, a la 1:05 a. m., hora del centro de MéxicoCrea una solicitud automática por regla para descargar los documentos del día anterior, de 00:00:00 a 23:59:59.
Verificación y descargaCada horaConsulta en el SAT el estado de las solicitudes pendientes y descarga los paquetes disponibles.
Procesamiento de paquetesCada dos horasExtrae los XML o los metadatos de los paquetes descargados.
ReintentosTras un error transitorioReintenta la descarga o el procesamiento hasta que la solicitud llegue a un estado definitivo, Completada o Abandonada.

Reglas de validación

Validaciones para reglas de descarga

CampoValidación
personIdRequerido, de exactamente 36 caracteres.
satQueryTypeIdUno de los valores API de los tipos de descarga.
downloadTypeId"Emitidos" o "Recibidos".
satInvoiceStatusId"Vigente" o "Cancelado".
descriptionRequerida, de hasta 100 caracteres.

Combinaciones prohibidas

CombinaciónMotivo
CFDI + CanceladoEl SAT solo entrega los comprobantes cancelados, emitidos o recibidos, como metadatos.
Retenciones + CanceladoLas retenciones solo admiten el estatus Vigente.

Límites de período

Tipo de consultaPeríodo máximo por solicitud
CFDI y metadatos31 días (1 mes)
Retenciones400 días (13 meses)

Regla de unicidad

No puede haber dos reglas activas, es decir, en cualquier estado salvo Abandonada, con el mismo RFC, tipo de consulta (satQueryTypeId), emitidos o recibidos (downloadTypeId) y estatus de factura (satInvoiceStatusId). La unicidad se revisa por RFC, así que aplica aunque el RFC esté registrado en dos personas.

Códigos de estado del SAT

El SAT responde a cada operación de descarga masiva con uno de estos códigos:

CódigoDescripción
0Desconocido
300Usuario no válido
301XML mal formado
302Sello mal formado
303Sello no corresponde con RFC
304Certificado revocado o caduco
305Certificado inválido
404Error no controlado
5000Solicitud recibida con éxito
5001Tercero no autorizado
5002Solicitudes de por vida agotadas
5003Tope máximo de elementos
5004Información no encontrada
5005Solicitud duplicada
5007Paquete no existe
5008Máximo de descargas permitidas
5011Límite de descargas por folio por día
5012No permite descarga de cancelados

Recursos relacionados

¿Le resultó útil esta página?