- Fecha
- Sello
- FormaPago
- FormaPago
- Certificado
- SubTotal
- SubTotal
- SubTotal
- Descuento
- Descuento
- Descuento
- Moneda
- TipoCambio
- TipoCambio
- TipoCambio
- TipoCambio
- TipoCambio
- Total
- Total
- TipoDeComprobante
- MetodoPago
- MetodoPago
- MetodoPago
- MetodoPago
- LugarExpedicion
- Confirmacion
- Confirmacion
- Confirmacion
- TipoRelacion
- CfdiRelacionados
- CfdiRelacionados
- Emisor Rfc
- Emisor Nombre
- Emisor RegimenFiscal
- Receptor Rfc
- Receptor Rfc
- Receptor UsoCFDI
- Receptor UsoCFDI
- Concepto ClaveProdServ
- Concepto NoIdentificacion
- Concepto Cantidad
- Concepto ClaveUnidad
- Concepto Unidad
- Concepto Descripcion
- Concepto ValorUnitario
- Concepto Importe
- Concepto Importe
- Concepto Descuento
- Concepto Descuento
- Traslado Base
- Traslado Base
- Traslado Impuesto
- Traslado TipoFactor
- Traslado TasaOCuota
- Traslado TasaOCuota
- Traslado Importe
- Traslado Importe
- Retencion Base
- Retencion Base
- Retencion Impuesto
- Retencion TipoFactor
- Retencion TasaOCuota
- Retencion TasaOCuota
- Retencion Importe
- Retencion Importe
- Impuestos
- TotalImpuestosRetenidos
- TotalImpuestosTrasladados
- Impuestos Retenciones
- Impuestos Traslados
- Complemento
- Certificado
- Certificado
- TimbreFiscalDigital
- Timbre FechaTimbrado
- CfdiRelacionados
- Complemento Pagos
- Concepto CuentaPredial
- Complemento Nomina
- Confirmacion
- Concepto Impuestos
- Moneda
- CfdiRelacionados
- Complemento CCE
- Complemento CCE
- MetodoPago
- MetodoPago
- LugarExpedicion
- Complemento INE
- Emisor FacAtrAdquirente
- Serie y Folio
- Certificado
- Concepto
- Estructura XML
- Namespace
- Encoding
Comprobante Fiscal Digital por Internet — Guía de Validaciones
Fecha #
El atributo cfdi:Comprobante:fecha debe cumplir con el patrón:
(20[1-9][0-9])-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])
Sello #
Desencriptar, generar cadena original, SHA-256 y comparar.
FormaPago #
Atributo condicional para expresar la clave de la forma de pago.
FormaPago #
El atributo debe contener un valor del catálogo c_FormaPago.
Certificado #
El campo debe contener un archivo .cer válido.
SubTotal #
El valor debe tener hasta la cantidad de decimales que soporte la moneda.
SubTotal #
Cuando es I, E o N, el importe debe ser igual a la suma de los conceptos.
SubTotal #
Si es T o P el importe debe ser 0.
Descuento #
Debe ser menor o igual que Subtotal.
Descuento #
Cuando es I, E o N y hay descuentos en conceptos, debe existir este atributo.
Descuento #
Debe respetar decimales de la moneda.
Moneda #
Debe contener un valor del catálogo c_Moneda.
TipoCambio #
Si Moneda es MXN, puede omitirse, pero si se incluye, debe ser ‘1’.
TipoCambio #
Requerido cuando Moneda no es MXN ni XXX.
TipoCambio #
No registrar si Moneda es XXX.
TipoCambio #
Patrón requerido: [0-9]{1,18}(.[0-9]{1,6})?
TipoCambio #
Si valor fuera de rango, requiere Confirmacion.
Total #
Suma de subtotal – descuentos + contribuciones – retenidos.
Total #
Si excede límite SAT, requiere Confirmacion.
TipoDeComprobante #
Debe contener un valor del catálogo c_TipoDeComprobante.
MetodoPago #
Debe contener un valor del catálogo c_MetodoPago.
MetodoPago #
Si es PIP y tipo I ó E, debe incluir complemento pagos.
MetodoPago #
Se debe omitir si TipoDeComprobante es T o P.
MetodoPago #
Si existe complemento pagos, este atributo no debe existir.
LugarExpedicion #
Debe contener un valor del catálogo c_CodigoPostal.
Confirmacion #
No debe existir si valores están en rango.
Confirmacion #
PAC debe verificar solicitud de clave.
Confirmacion #
Clave no debe usarse más de una vez.
TipoRelacion #
Debe contener un valor del catálogo c_TipoRelacion.
CfdiRelacionados #
Estructura condicional para relacionar UUIDs previos.
CfdiRelacionados #
El UUID debe existir en el repositorio del SAT y corresponder al mismo emisor (salvo excepciones).
Emisor Rfc #
Debe estar en la lista de RFCs inscritos no cancelados en el SAT (LCO).
Emisor Nombre #
El nombre, denominación o razón social no debe estar vacío.
Emisor RegimenFiscal #
Debe contener un valor del catálogo c_RegimenFiscal y corresponder al tipo de persona del RFC.
Receptor Rfc #
El RFC debe cumplir con la estructura válida (Longitud y patrón).
Receptor Rfc #
Si no es RFC genérico o extranjero, debe estar en la lista de RFCs inscritos no cancelados.
Receptor UsoCFDI #
Debe contener un valor del catálogo c_UsoCFDI.
Receptor UsoCFDI #
Si el RFC receptor es extranjero, el uso debe ser ‘P01’ (Por definir) en algunos casos.
Concepto ClaveProdServ #
Debe contener un valor del catálogo c_ClaveProdServ.
Concepto NoIdentificacion #
El atributo no debe contener el carácter pipe “|”.
Concepto Cantidad #
Debe ser mayor que 0, con hasta 6 decimales.
Concepto ClaveUnidad #
Debe contener un valor del catálogo c_ClaveUnidad.
Concepto Unidad #
El campo Unidad debe tener entre 1 y 20 caracteres.
Concepto Descripcion #
Campo requerido, longitud entre 1 y 1000 caracteres. No pipe.
Concepto ValorUnitario #
Debe ser mayor que 0 (excepto en complementos específicos) y respetar decimales.
Concepto Importe #
Debe ser igual al redondeo de (Cantidad * ValorUnitario).
Concepto Importe #
El valor debe tener hasta la cantidad de decimales que soporte la moneda.
Concepto Descuento #
Debe ser menor o igual al campo Importe.
Concepto Descuento #
Decimales deben corresponder a la moneda.
Traslado Base #
Debe ser mayor que 0.000001.
Traslado Base #
Debe tener hasta la cantidad de decimales que soporte la moneda (o hasta 6).
Traslado Impuesto #
Debe contener un valor del catálogo c_Impuesto.
Traslado TipoFactor #
Debe contener un valor del catálogo c_TipoFactor.
Traslado TasaOCuota #
El valor debe estar dentro de los rangos establecidos en el catálogo c_TasaOCuota.
Traslado TasaOCuota #
Debe tener la cantidad de decimales que corresponda conforme al tipo de impuesto.
Traslado Importe #
El importe debe ser igual al redondeo de (Base * TasaOCuota).
Traslado Importe #
Debe tener los decimales que soporte la moneda.
Retencion Base #
Debe ser mayor que 0.000001.
Retencion Base #
Debe tener hasta la cantidad de decimales que soporte la moneda.
Retencion Impuesto #
Debe contener un valor del catálogo c_Impuesto.
Retencion TipoFactor #
Debe contener un valor del catálogo c_TipoFactor.
Retencion TasaOCuota #
El valor debe estar dentro de los rangos del catálogo c_TasaOCuota.
Retencion TasaOCuota #
Debe tener la cantidad de decimales que corresponda al impuesto.
Retencion Importe #
Debe ser igual al redondeo de (Base * TasaOCuota).
Retencion Importe #
Debe tener hasta la cantidad de decimales que soporte la moneda.
Impuestos #
Nodo requerido cuando en los conceptos se registren impuestos.
TotalImpuestosRetenidos #
Suma de los importes de impuestos retenidos de todos los conceptos.
TotalImpuestosTrasladados #
Suma de los importes de impuestos trasladados de todos los conceptos.
Impuestos Retenciones #
Nodo requerido si existen conceptos con retenciones.
Impuestos Traslados #
Nodo requerido si existen conceptos con traslados.
Complemento #
Debe cumplir con la estructura definida por el SAT para el complemento específico.
Certificado #
El RFC del emisor no corresponde con el certificado (CSD) utilizado.
Certificado #
El CSD ha sido revocado o caducado al momento de la emisión.
TimbreFiscalDigital #
El comprobante debe contener el complemento de Timbre Fiscal Digital.
Timbre FechaTimbrado #
La fecha de timbrado no puede ser anterior a la fecha de emisión.
CfdiRelacionados #
No se puede relacionar un CFDI consigo mismo.
Complemento Pagos #
Monto del pago debe ser mayor a cero.
Concepto CuentaPredial #
Formato de cuenta predial incorrecto para arrendamiento.
Complemento Nomina #
Validaciones específicas de fechas de pago y antigüedad.
Confirmacion #
Clave de confirmación no corresponde al PAC.
Concepto Impuestos #
La suma de impuestos por concepto excede límites permitidos.
Moneda #
El tipo de cambio debe coincidir con la fecha (tolerancia aplicada).
CfdiRelacionados #
Tipo de relación incompatible con el tipo de comprobante.
Complemento CCE #
Comercio Exterior: Emisor debe ser exportador autorizado.
Complemento CCE #
Clave de pedimento o fracción arancelaria inválida.
MetodoPago #
PUE (Pago en una exhibición) requiere FormaPago distinta de 99 (Por definir).
MetodoPago #
PPD (Pago en parcialidades) obliga FormaPago 99 (Por definir).
LugarExpedicion #
Código postal no vigente en catálogo c_CodigoPostal.
Complemento INE #
Validación de Clave de Entidad o Ámbito inválida.
Emisor FacAtrAdquirente #
Datos de facturación a través del adquirente incorrectos.
Serie y Folio #
Longitud excedida en campos serie (25) o folio (40).
Certificado #
El certificado no es de tipo SELLO (es de FIEL).
Concepto #
Debe existir al menos un concepto en el comprobante (excepto Pagos).
Estructura XML #
El XML está mal formado o tiene caracteres inválidos.
Namespace #
Declaración de namespaces incorrecta (cfdi, tfd, etc.).
Encoding #
El archivo debe estar codificado en UTF-8.

