CFDI 4.0 errors
This guide describes how API errors are classified and lists the level 2 errors of CFDI 4.0 (CFDI: Mexico's electronic invoice), with their code, the validation that produces them, and their description.
Before you contact support, keep in mind that 99% of reported cases are integration errors. Review your implementation thoroughly before you ask for help.
Error types
Errors are classified in two levels. If a level 1 validation fails, the API stops the request and returns 400 (Bad Request) with the details of the failures, without running the level 2 validations.
1. Level 1 errors
These are request validation failures, which the API checks before it processes the request. Each failure gives the property that failed (propertyName) and a message that depends on the rule applied. Use the property, not the message text, to identify the failure in your code (see ValidationFailure).
Messages are in Spanish; for example, 'transpInternacId' no debe estar vacío. ('transpInternacId' must not be empty.) Some rule-specific messages and the JSON parsing errors, such as malformed JSON or a value of the wrong type, are in English. For the rule-specific ones, see Stamping validation messages (stamping: the certification by a SAT-authorized provider that makes a CFDI valid).
2. Level 2 errors
These are the checks the SAT (Mexico's tax authority, Servicio de Administración Tributaria) requires to comply with CFDI 4.0. Their messages are in Spanish and explain the cause according to the SAT specifications.
Status codes
The status code category tells you whether the request succeeded. The response body follows the Fiscalapi response model.
- Name
2xx- Description
The request succeeded.
- Name
4xx- Description
Client error: there's a problem with the request.
- Name
5xx- Description
Server error. It's rare; see Server errors.
CFDI 4.0 errors
CFDI 4.0 errors are the second level of validation. If the response has an error of another kind, the request didn't pass the level 1 validations: see ValidationFailure to interpret it. This is the full CFDI 4.0 error matrix, with its codes, validations, and descriptions:
| No. | Element | Attribute | Validation | Error code | SAT message (Spanish) |
|---|---|---|---|---|---|
| 1 | Comprobante | Fecha | This attribute must match the pattern (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]) and must be the local time where the CFDI is issued. | CFDI40101 | El campo Fecha no cumple con el patrón requerido. |
| 2 | Comprobante | Sello | Decrypt the content of this attribute with the certificate in the "Certificado" attribute. Generate the original string (cadena original, the sequence of CFDI data that the digital seal signs) of the CFDI. Apply the SHA-256 digest algorithm. The digest result must equal the result of decrypting the seal. | CFDI40102 | El resultado de la digestión debe ser igual al resultado de la desencripción del sello. |
| 3 | Comprobante | FormaPago | Conditional attribute for the key of the form of payment (how the customer paid: cash, bank transfer, card; the FormaPago key) of the goods or services the CFDI covers. | CFDI40103 | Si existe el tipo de comprobante T, N o P el campo FormaPago no debe existir. |
| 4 | Comprobante | FormaPago | This attribute must contain a value from the c_FormaPago catalog. | CFDI40104 | El campo FormaPago no contiene un valor del catálogo c_FormaPago. |
| 5 | Comprobante | FormaPago | This attribute must contain "99" when the MetodoPago attribute contains "PPD" (paid in installments or later, Pago en parcialidades o diferido). | CFDI40105 | El campo FormaPago no contiene el valor "99". |
| 6 | Comprobante | Certificado | The attribute must contain a valid .cer file. | CFDI40106 | EL certificado no cumple con alguno de los valores permitidos. |
| 7 | Comprobante | SubTotal | This value can have at most the decimal places the currency supports. | CFDI40107 | El valor de este campo SubTotal excede la cantidad de decimales que soporta la moneda. |
| 8 | Comprobante | SubTotal | When TipoDeComprobante is I, E, or N, the amount in this attribute must equal the rounded sum of the amounts of the line items. | CFDI40108 | El TipoDeComprobante es I,E o N, el importe registrado en el campo no es igual al redondeo de la suma de los importes de los conceptos registrados. |
| 9 | Comprobante | SubTotal | If the CFDI is T or P, the amount must be 0, or zero with decimals. | CFDI40109 | El TipoDeComprobante es T o P y el importe no es igual a 0, o cero con decimales. |
| 10 | Comprobante | Descuento | The value must be less than or equal to the Subtotal attribute. | CFDI40110 | El valor registrado en el campo Descuento no es menor o igual que el campo Subtotal. |
| 11 | Comprobante | Descuento | When TipoDeComprobante is I, E, or N and a line item includes the Descuento attribute, this attribute must be present and must equal the rounded sum of the Descuento attributes of the line items; otherwise, omit this attribute. | CFDI40111 | El TipoDeComprobante no es I,E o N, y un concepto incluye el campo descuento. |
| 12 | Comprobante | Descuento | This value can have at most the decimal places the currency supports. | CFDI40112 | El valor del campo Descuento excede la cantidad de decimales que soporta la moneda. |
| 13 | Comprobante | Moneda | This attribute must contain a value from the c_Moneda catalog. | CFDI40113 | El campo Moneda no contiene un valor del catálogo c_Moneda. |
| 14 | Comprobante | TipoCambio | If the currency is MXN, you can omit the TipoCambio attribute, but if you include it, it must be "1". | CFDI40114 | El campo TipoCambio no tiene el valor "1" y la moneda indicada es MXN. |
| 15 | Comprobante | TipoCambio | This attribute is required when the Moneda attribute has a value other than MXN and XXX. | CFDI40115 | El campo TipoCambio se debe registrar cuando el campo Moneda tiene un valor distinto de MXN y XXX. |
| 16 | Comprobante | TipoCambio | This attribute must not be present when the Moneda attribute is XXX. | CFDI40116 | El campo TipoCambio no se debe registrar cuando el campo Moneda tiene el valor XXX. |
| 17 | Comprobante | TipoCambio | This attribute must match the pattern [0-9]{1,18}(.[0-9]{1,6})?. | CFDI40117 | El campo TipoCambio no cumple con el patrón requerido. |
| 18 | Comprobante | TipoCambio | If this value is outside the percentage allowed for the currency in the c_Moneda catalog, the issuer must manually obtain a confirmation key from the PAC (Proveedor Autorizado de Certificación, a SAT-authorized provider that stamps CFDIs) that will stamp the CFDI, to confirm that the value is correct, and include that key in the Confirmacion attribute. | CFDI40118 | Cuando el valor del campo TipoCambio se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion. |
| 19 | Comprobante | Total | Required attribute for the sum of the subtotal, minus the applicable discounts, plus the contributions received (transferred taxes (traslado, a tax the issuer charges the recipient), federal and/or local; duties; productos (government revenue from private-law activities); aprovechamientos (other government revenue under public law); social security contributions; improvement contributions), minus the federal and/or local withheld taxes (retención). | CFDI40119 | El campo Total no corresponde con la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos y/o locales. |
| 20 | Comprobante | Total | If the value exceeds the limit the SAT sets in the current Resolución Miscelánea Fiscal (the SAT's annual tax rules), the issuer must manually obtain a confirmation key from the PAC that will stamp the CFDI, to confirm that the value is correct, and include that key in the Confirmacion attribute. | CFDI40120 | Cuando el valor del campo Total se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion. |
| 21 | Comprobante | TipoDeComprobante | This attribute must contain a value from the c_TipoDeComprobante catalog. | CFDI40121 | El campo TipoDeComprobante, no contiene un valor del catálogo c_TipoDeComprobante. |
| 22 | Comprobante | Exportacion | Required attribute that states whether the CFDI covers an export transaction. | CFDI40122 | El campo Exportacion contiene el valor "02", el CFDI debe contener el complemento para Comercio Exterior. |
| 23 | Comprobante | Exportacion | This attribute must contain a value from the c_Exportacion catalog. | CFDI40123 | El campo Exportacion no contiene un valor del catálogo c_Exportacion. |
| 24 | Comprobante | MetodoPago | This attribute must contain a value from the c_MetodoPago catalog. | CFDI40124 | El campo MetodoPago, no contiene un valor del catálogo c_MetodoPago. |
| 25 | Comprobante | MetodoPago | Omit the MetodoPago attribute when TipoDeComprobante is T or P. | CFDI40125 | Se debe omitir el campo MetodoPago cuando el TipoDeComprobante es T o P. |
| 26 | Comprobante | LugarExpedicion | This attribute must contain a value from the c_CodigoPostal catalog. | CFDI40126 | El campo LugarExpedicion, no contiene un valor del catálogo c_CodigoPostal. |
| 27 | Comprobante | Confirmacion | This attribute must not be present when the TipoCambio and/or Total attributes are within the allowed range. | CFDI40127 | El campo Confirmacion no debe existir cuando los campos TipoCambio y/o Total están dentro del rango permitido. |
| 28 | Comprobante | Confirmacion | The PAC must verify that the issuer requested this confirmation key from it. | CFDI40128 | Número de confirmación inválido. |
| 29 | Comprobante | Confirmacion | The PAC must verify that the confirmation key isn't used in more than one CFDI. | CFDI40129 | Número de confirmación utilizado previamente. |
| 30 | cfdi:InformacionGlobal | This node must be present whenever TipoDeComprobante is "I", the Rfc attribute of the Receptor node contains "XAXX010101000", and the Nombre attribute of the Receptor node contains "PUBLICO EN GENERAL". | CFDI40130 | Cuando el tipo de comprobante sea Ingreso y el campo Rfc del nodo receptor corresponda al valor "XAXX010101000" y el campo Nombre del nodo Receptor contenga la descripción “PUBLICO EN GENERAL”, el nodo Información Global debe existir. | |
| 31 | cfdi:InformacionGlobal | Periodicidad | This attribute must contain a value from the c_Periodicidad catalog. | CFDI40131 | El campo Periodicidad, no contiene un valor del catálogo c_Periodicidad. |
| 32 | cfdi:InformacionGlobal | Periodicidad | When this attribute contains the key "05", the RegimenFiscal attribute must contain "621". | CFDI40132 | El campo RegimenFiscal, no contiene el valor 621 |
| 33 | cfdi:InformacionGlobal | Meses | This attribute must contain a value from the c_Meses catalog. | CFDI40133 | El campo Meses, no contiene un valor del catálogo c_Meses. |
| 34 | cfdi:InformacionGlobal | Meses | If the Periodicidad attribute contains a value other than "05", this attribute must contain one of the values "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", or "12". | CFDI40134 | El campo Meses, no contiene alguno de los valores “01”, “02”, “03”, “04”, “05”, “06”, “07”, “08”, “09”, “10”, “11” o "12". |
| 35 | cfdi:InformacionGlobal | Meses | If the Periodicidad attribute contains "05", this attribute must contain one of the values "13", "14", "15", "16", "17", or "18". | CFDI40135 | El campo Meses, no contiene alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”. |
| 36 | cfdi:InformacionGlobal | Año | Required attribute for the year the information of the global invoice (factura global, one CFDI that groups a period's sales to the general public) belongs to. | CFDI40136 | El valor registrado en el campo Año, no es igual al año en curso o no contiene un valor de hasta 5 ejercicios anteriores. |
| 37 | cfdi:CfdiRelacionados | TipoRelacion | This attribute must contain a value from the c_TipoRelacion catalog. | CFDI40137 | El campo TipoRelacion, no contiene un valor del catálogo c_TipoRelacion. |
| 38 | cfdi:Emisor | Nombre | This attribute must be in the SAT list of registered, non-canceled RFCs (Mexico's taxpayer IDs, Registro Federal de Contribuyentes). | CFDI40138 | El campo Nombre del emisor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT. |
| 39 | cfdi:Emisor | Nombre | This attribute must belong to the name associated with the RFC in the Rfc attribute of the Emisor node. | CFDI40139 | El campo Nombre del emisor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Emisor. |
| 40 | cfdi:Emisor | RegimenFiscal | This attribute must contain a value from the c_RegimenFiscal catalog. | CFDI40140 | El campo RegimenFiscal, no contiene un valor del catálogo c_RegimenFiscal. |
| 41 | cfdi:Emisor | RegimenFiscal | The tax regime (régimen fiscal, the SAT category a taxpayer is registered under, such as 601 or 626) in this attribute must match the issuer's person type: individual (persona física) or legal entity (persona moral). | CFDI40141 | La clave del campo RegimenFiscal debe corresponder con el tipo de persona (fisica o moral). |
| 42 | cfdi:Emisor | FacAtrAdquirente | This attribute must contain the operation number whenever the SAT's RFC validator service for issuing invoices through the acquirer returns a positive response. | CFDI40142 | El campo FacAtrAdquirente, no contiene un número de operación valido. |
| 43 | cfdi:Receptor | Rfc | When a generic RFC isn't used, the RFC must be in the SAT list of registered, non-canceled RFCs. | CFDI40143 | Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT. |
| 44 | cfdi:Receptor | Nombre | This attribute must be in the SAT list of registered, non-canceled RFCs. | CFDI40144 | El campo Nombre del receptor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT. |
| 45 | cfdi:Receptor | Nombre | This attribute must belong to the name associated with the RFC in the Rfc attribute of the Receptor node. | CFDI40145 | El campo Nombre del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor. |
| 46 | cfdi:Receptor | Nombre | If this attribute is "PUBLICO EN GENERAL", the recipient's RFC attribute must be "XAXX010101000". | CFDI40146 | El campo RFC del receptor debe contener el valor "XAXX010101000". |
| 47 | cfdi:Receptor | DomicilioFiscalReceptor | This attribute must be in the SAT list of registered, non-canceled RFCs. | CFDI40147 | El campo DomicilioFiscalReceptor del receptor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT. |
| 48 | cfdi:Receptor | DomicilioFiscalReceptor | This attribute must belong to the name associated with the RFC in the Rfc attribute of the Receptor node. | CFDI40148 | El campo DomicilioFiscalReceptor del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor. |
| 49 | cfdi:Receptor | DomicilioFiscalReceptor | If the Rfc attribute of the recipient is "XAXX010101000" or "XEXX010101000", this attribute must equal the LugarExpedicion attribute. | CFDI40149 | El campo DomicilioFiscalReceptor, no es igual al valor del campo LugarExpedicion. |
| 50 | cfdi:Receptor | ResidenciaFiscal | This attribute must contain a value from the c_Pais catalog. | CFDI40150 | El campo ResidenciaFiscal, no contiene un valor del catálogo c_Pais. |
| 51 | cfdi:Receptor | ResidenciaFiscal | If the recipient's RFC is registered with the SAT or is the generic domestic RFC, this attribute must NOT be present. | CFDI40151 | El RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional y existe el campo ResidenciaFiscal. |
| 52 | cfdi:Receptor | ResidenciaFiscal | The value can't be MEX. | CFDI40152 | El valor del campo ResidenciaFiscal no puede ser MEX. |
| 53 | cfdi:Receptor | ResidenciaFiscal | If the recipient's RFC is the generic foreign RFC and the CFDI includes the Comercio Exterior complement (Comercio Exterior: the CFDI foreign trade complement for exports; complement: complemento, an XML extension the SAT defines for specific operations), or the NumRegIdTrib attribute is present, this attribute must be present. | CFDI40153 | Se debe registrar un valor de acuerdo al catálogo c_Pais en en el campo ResidenciaFiscal, cuando en el en el campo NumRegIdTrib se registre información. |
| 54 | cfdi:Receptor | NumRegIdTrib | If the recipient's RFC is in the SAT list of registered, non-canceled RFCs or is the generic domestic RFC, this attribute must not be present. | CFDI40154 | El valor del campo es un RFC inscrito no cancelado en el SAT o un RFC genérico nacional, y se registró el campo NumRegIdTrib. |
| 55 | cfdi:Receptor | NumRegIdTrib | If the recipient's RFC is the generic foreign RFC and the CFDI includes the Comercio Exterior complement, this attribute must be present. | CFDI40155 | Para registrar el campo NumRegIdTrib, el CFDI debe contener el complemento de comercio exterior y el RFC del receptor debe ser un RFC genérico extranjero. |
| 56 | cfdi:Receptor | NumRegIdTrib | This attribute must match the pattern in the Formato de Registro de Identidad Tributaria (tax ID format) column that the SAT publishes in the c_Pais catalog. | CFDI40156 | El campo NumRegIdTrib no cumple con el patrón correspondiente. |
| 57 | cfdi:Receptor | RegimenFiscalReceptor | This attribute must contain a value from the c_RegimenFiscal catalog. | CFDI40157 | El campo RegimenFiscalR, no contiene un valor del catálogo c_RegimenFiscal. |
| 58 | cfdi:Receptor | RegimenFiscalReceptor | The tax regime in this attribute must match the recipient's person type. | CFDI40158 | La clave del campo RegimenFiscalR debe corresponder con el tipo de persona (física o moral). |
| 59 | cfdi:Receptor | RegimenFiscalReceptor | If the Rfc attribute of the Receptor contains "XAXX010101000" or "XEXX010101000", this attribute must contain the key "616". | CFDI40159 | La clave del campo RegimenFiscalR no corresponde de acuerdo al RFC del receptor. |
| 60 | cfdi:Receptor | UsoCFDI | This attribute must contain a value from the c_UsoCFDI catalog. | CFDI40160 | El campo UsoCFDI, no contiene un valor del catálogo c_UsoCFDI. |
| 61 | cfdi:Receptor | UsoCFDI | The value in this attribute must apply to the recipient's person type and tax regime according to the c_UsoCFDI catalog. | CFDI40161 | La clave del campo UsoCFDI debe corresponder con el tipo de persona (física o moral) y el régimen correspondiente conforme al catálogo c_UsoCFDI. |
| 62 | cfdi:Conceptos/Concepto | ClaveProdServ | This attribute must contain a value from the c_ClaveProdServ catalog. | CFDI40162 | El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ. |
| 63 | cfdi:Conceptos/Concepto | ClaveProdServ | The complements that the c_ClaveProdServ catalog indicates for this value must be present. | CFDI40163 | No existe el complemento requerido para el valor de ClaveProdServ. |
| 64 | cfdi:Conceptos/Concepto | ClaveProdServ | The transferred and/or withheld taxes that the c_ClaveProdServ catalog indicates for this value must be present. | CFDI40164 | No está declarado el impuesto relacionado con el valor de ClaveProdServ. |
| 65 | cfdi:Conceptos/Concepto | ClaveUnidad | This attribute must contain a value from the c_ClaveUnidad catalog. | CFDI40165 | El campo ClaveUnidad no contiene un valor del catálogo c_ClaveUnidad. |
| 66 | cfdi:Conceptos/Concepto | ValorUnitario | The value must be greater than zero (0) when the CFDI type (the TipoDeComprobante key: I income, the regular sales invoice; E credit note; T transfer, moves goods without a sale; N payroll; P payment) is income, credit note, or payroll. | CFDI40166 | El valor valor del campo ValorUnitario debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina. |
| 67 | cfdi:Conceptos/Concepto | Importe | The value must be greater than or equal to the lower limit and less than or equal to the upper limit. | CFDI40167 | El valor del campo Importe no se encuentra entre el limite inferior y superior permitido. |
| 68 | cfdi:Conceptos/Concepto | Descuento | This value can have at most the number of decimal places in the Importe attribute of the line item. | CFDI40168 | El valor del campo Descuento no contiene la misma cantidad de decimales registrados en el campo Importe del concepto. |
| 69 | cfdi:Conceptos/Concepto | Descuento | The value must be less than or equal to the Importe attribute. | CFDI40169 | El valor del campo Descuento es mayor que el campo Importe. |
| 70 | cfdi:Conceptos/Concepto | ObjetoImp | This attribute must contain a value from the c_ObjetoImp catalog. | CFDI40170 | El campo ObjetoImp, no contiene un valor del catálogo c_ObjetoImp. |
| 71 | cfdi:Conceptos/Concepto | ObjetoImp | If this attribute contains "02", the Impuestos child node of the Concepto node must be present. | CFDI40171 | El nodo concepto, no contiene el nodo hijo Impuestos. |
| 72 | cfdi:Conceptos/Concepto | ObjetoImp | If this attribute contains "01", "03", "04", or "05", the Impuestos child node of the Concepto node must not be present. | CFDI40172 | El nodo hijo Impuestos del nodo Concepto, no debe existir. |
| 73 | cfdi:Conceptos/Concepto:Impuestos | Impuestos | If you use the Impuestos node in a line item, it must include transferred taxes and/or withholdings. | CFDI40173 | En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones. |
| 74 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | Base | The value must be greater than zero. | CFDI40174 | El valor del campo Base que corresponde a Traslado debe ser mayor que cero. |
| 75 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | Impuesto | This attribute must contain a value from the c_Impuesto catalog. | CFDI40175 | El valor del campo Impuesto que corresponde a Traslado no contiene un valor del catálogo c_Impuesto. |
| 76 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | TipoFactor | This attribute must contain a value from the c_TipoFactor catalog. | CFDI40176 | El valor del campo TipoFactor que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor. |
| 77 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | TipoFactor | If the value is Exento (exempt), the TasaOCuota and Importe attributes must not be present. | CFDI40177 | Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Exento no se deben registrar los campos TasaOCuota ni Importe. |
| 78 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | TipoFactor | If the value is Tasa (rate) or Cuota (fixed amount), the TasaOCuota and Importe attributes must be present. | CFDI40178 | Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Tasa o Cuota, se deben registrar los campos TasaOCuota e Importe. |
| 79 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | TasaOCuota | If the value is fixed, it must be a value from the c_TasaOCuota catalog, it must match the tax in the Impuesto attribute, and the factor must match the TipoFactor attribute. | CFDI40179 | El valor del campo TasaOCuota que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango. |
| 80 | cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado | Importe | The value must be greater than or equal to the lower limit and less than or equal to the upper limit. | CFDI40180 | El valor del campo Importe o que corresponde a Traslado no se encuentra entre el limite inferior y superior permitido. |
| 81 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | Base | The value must be greater than zero. | CFDI40181 | El valor del campo Base que corresponde a Retención debe ser mayor que cero. |
| 82 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | Impuesto | This attribute must contain a value from the c_Impuesto catalog. | CFDI40182 | El valor del campo Impuesto que corresponde a Retención no contiene un valor del catálogo c_Impuesto. |
| 83 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | TipoFactor | This attribute must contain a value from the c_TipoFactor catalog. | CFDI40183 | El valor del campo TipoFactor que corresponde a Retención no contiene un valor del catálogo c_TipoFactor. |
| 84 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | TipoFactor | The value must be other than Exento (exempt). | CFDI40184 | Si el valor registrado en el campo TipoFactor que corresponde a Retención debe ser distinto de Exento. |
| 85 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | TasaOCuota | If the value is fixed, it must be a value from the c_TasaOCuota catalog, it must match the tax in the Impuesto attribute, and the factor must match the TipoFactor attribute. | CFDI40185 | El valor del campo TasaOCuota que corresponde a Retención, no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango. |
| 86 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | Importe | The value must be greater than or equal to the lower limit and less than or equal to the upper limit. | CFDI40186 | El valor del campo Importe que corresponde a Retención no se encuentra entre el limite inferior y superior permitido. |
| 87 | cfdi:Conceptos/Concepto:ACuentaTerceros | RfcACuentaTerceros | If this attribute is other than "EXT990101NI1", it must be in the l_LCO list. | CFDI40187 | El valor registrado en el campo RfcACuentaTerceros, no se encuentra en la lista l_LCO. |
| 88 | cfdi:Conceptos/Concepto:ACuentaTerceros | RfcACuentaTerceros | The value must be different from the values in the Rfc attributes of the Emisor and Receptor nodes. | CFDI40188 | El valor del campo RfcACuentaTerceros, debe ser diferente de los valores de los campos Rfc del Emisor y Receptor. |
| 89 | cfdi:Conceptos/Concepto:ACuentaTerceros | NombreACuentaTerceros | If the RfcACuentaTerceros attribute is other than "EXT990101NI1", this attribute must be in the SAT list of registered, non-canceled RFCs; otherwise, it must contain the description "EXPEDICIÓN DE CFDI POR RESIDENTES EN MÉXICO QUE PRESTAN SERVICIOS DE INTERMEDIACIÓN ENTRE TERCEROS A OFERENTES DE BIENES Y SERVICIOS RESIDENTES EN EL EXTRANJERO" (issuance of CFDIs by Mexican residents that provide intermediation services between third parties to providers of goods and services resident abroad). | CFDI40189 | El valor registrado debe encontrarse en la lista de RFC inscritos no cancelados en el SAT, en otro caso debe contener la descripción “EXPEDICIÓN DE CFDI POR RESIDENTES EN MÉXICO QUE PRESTAN SERVICIOS DE INTERMEDIACIÓN ENTRE TERCEROS A OFERENTES DE BIENES Y SERVICIOS RESIDENTES EN EL EXTRANJERO”. |
| 90 | cfdi:Conceptos/Concepto:ACuentaTerceros | NombreACuentaTerceros | This attribute must belong to the name associated with the RFC in the Rfc attribute of the ACuentaTerceros node. | CFDI40190 | El campo NombreACuentaTerceros, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del tercero. |
| 91 | cfdi:Conceptos/Concepto:ACuentaTerceros | RegimenFiscalACuentaTerceros | This attribute must contain a value from the c_RegimenFiscal catalog. | CFDI40191 | El campo RegimenFiscalACuentaTerceros, no contiene un valor del catálogo c_RegimenFiscal. |
| 92 | cfdi:Conceptos/Concepto:ACuentaTerceros | DomicilioFiscalACuentaTerceros | The value of this attribute must be in the SAT list of registered, non-canceled RFCs. | CFDI40192 | El valor registrado en el atributo DomicilioFiscalACuentaTerceros, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT. |
| 93 | cfdi:Conceptos/Concepto:ACuentaTerceros | DomicilioFiscalACuentaTerceros | The value of this attribute must belong to the name associated with the RFC in the RfcACuentaTerceros attribute of the ACuentaTerceros node; if RfcACuentaTerceros is "EXT990101NI1", this attribute must equal the "LugarExpedicion" attribute. | CFDI40193 | El valor registrado en el atributo DomicilioFiscalACuentaTerceros, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del tercero, o debe ser igual al valor del atributo "LugarExpedicion". |
| 94 | cfdi:Conceptos/Concepto:InformacionAduanera | NumeroPedimento | This attribute must meet the defined validation rules. | CFDI40194 | El número de pedimento es inválido. |
| 95 | cfdi:Conceptos/Concepto:InformacionAduanera | NumeroPedimento | NumeroPedimento must not be present if the CFDI includes the Comercio Exterior complement. | CFDI40195 | El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. |
| 96 | cfdi:Conceptos/Concepto:Parte | ClaveProdServ | This attribute must contain a value from the c_ClaveProdServ catalog. | CFDI40196 | El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ. |
| 97 | cfdi:Conceptos/Concepto:Parte | ValorUnitario | The value of this attribute must be greater than zero (0). | CFDI40197 | El valor del campo ValorUnitario debe ser mayor que cero (0). |
| 98 | cfdi:Conceptos/Concepto:Parte | Importe | The value must be greater than or equal to the lower limit and less than or equal to the upper limit. | CFDI40198 | El valor del campo Importe no se encuentra entre el limite inferior y superior permitido. |
| 99 | cfdi:Conceptos/Concepto:Parte:InformacionAduanera | NumeroPedimento | This attribute must meet the defined validation rules. | CFDI40199 | El número de pedimento es inválido. |
| 100 | cfdi:Conceptos/Concepto:Parte:InformacionAduanera | NumeroPedimento | NumeroPedimento must not be present if the CFDI includes the Comercio Exterior complement. | CFDI40200 | El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. |
| 101 | cfdi:Impuestos | Impuestos | When TipoDeComprobante is T or P, this element must not be present. | CFDI40201 | Cuando el TipoDeComprobante sea T o P, el elemento Impuestos no debe existir. |
| 102 | cfdi:Impuestos | TotalImpuestosRetenidos | This value can have at most the decimal places the currency supports. | CFDI40202 | El valor del campo TotalImpuestosRetenidos debe tener hasta la cantidad de decimales que soporte la moneda. |
| 103 | cfdi:Impuestos | TotalImpuestosRetenidos | The value must equal the sum of the amounts in the Retencion child element. | CFDI40203 | El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion. |
| 104 | cfdi:Impuestos | TotalImpuestosTrasladados | This value can have at most the decimal places the currency supports. | CFDI40204 | El valor del campo TotalImpuestosTrasladados debe tener hasta la cantidad de decimales que soporte la moneda. |
| 105 | cfdi:Impuestos | TotalImpuestosTrasladados | The value must equal the sum of the amounts in the Traslado child element. | CFDI40205 | El valor del campo TotalImpuestosTrasladados no es igual a la suma de los importes registrados en el elemento hijo Traslado. |
| 106 | cfdi:Impuestos:Retenciones | Retenciones | The TotalImpuestosRetenidos attribute must be present. | CFDI40206 | Debe existir el campo TotalImpuestosRetenidos. |
| 107 | cfdi:Impuestos:Retenciones/Retencion | Impuesto | This attribute must contain a value from the c_Impuesto catalog. | CFDI40207 | El campo Impuesto no contiene un valor del catálogo c_Impuesto. |
| 108 | cfdi:Impuestos:Retenciones/Retencion | Impuesto | There must be only one entry for each withheld tax. | CFDI40208 | Debe haber sólo un registro por cada tipo de impuesto retenido. |
| 109 | cfdi:Impuestos:Retenciones/Retencion | Importe | The TotalImpuestosRetenidos attribute must be present. | CFDI40209 | Debe existir el campo TotalImpuestosRetenidos. |
| 110 | cfdi:Impuestos:Retenciones/Retencion | Importe | This value can have at most the decimal places the currency supports. | CFDI40210 | El valor del campo Importe correspondiente a Retención debe tener hasta la cantidad de decimales que soporte la moneda. |
| 111 | cfdi:Impuestos:Retenciones/Retencion | Importe | The value must equal the rounded sum of the withheld tax amounts in the line items whose tax matches the Impuesto attribute of this element. | CFDI40211 | El campo Importe correspondiente a Retención no es igual al redondeo de la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al campo impuesto de este elemento. |
| 112 | cfdi:Impuestos:Traslados | Traslados | The TotalImpuestosTrasladados attribute must be present when there are line items with a TipoFactor other than Exento (exempt). | CFDI40212 | Debe existir el campo TotalImpuestosTrasladados. |
| 113 | cfdi:Impuestos:Traslados/Traslado | Traslado | If all line items have TipoFactor Exento (exempt), this node must have only the Base, Impuesto, and TipoFactor attributes. | CFDI40213 | Deben exitir los campos Base, Impuesto y TipoFactor |
| 114 | cfdi:Impuestos:Traslados/Traslado | Base | This value can have at most the decimal places the currency supports. | CFDI40214 | El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. |
| 115 | cfdi:Impuestos:Traslados/Traslado | Base | The value must equal the rounded sum of the Base attributes of the transferred taxes in the line items whose tax matches the Impuesto attribute of this element and whose TasaOCuota matches the TasaOCuota attribute of this element. | CFDI40215 | El campo Importe correspondiente a Traslado no es igual al redondeo de la suma de los importes de las bases trasladados registrados en los conceptos donde el impuesto del concepto sea igual al campo impuesto de este elemento y la TasaOCuota del concepto sea igual al campo TasaOCuota de este elemento. |
| 116 | cfdi:Impuestos:Traslados/Traslado | Base | If all line items have TipoFactor Exento (exempt), the sum of this attribute must equal the rounded sum of the Base attributes in the line items. | CFDI40216 | El importe del campo Base correspondiente a Traslado no es igual al redondeo de la suma de los importes de las bases trasladados registrados en los conceptos. |
| 117 | cfdi:Impuestos:Traslados/Traslado | Impuesto | This attribute must contain a value from the c_Impuesto catalog. | CFDI40217 | El campo Impuesto no contiene un valor del catálogo c_Impuesto. |
| 118 | cfdi:Impuestos:Traslados/Traslado | Impuesto | There must be only one entry with the same combination of tax, factor, and rate for each transferred tax. | CFDI40218 | Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado. |
| 119 | cfdi:Impuestos:Traslados/Traslado | TasaOCuota | The value must be a catalog value where the tax column matches the Impuesto attribute and the factor column matches the TipoFactor attribute. | CFDI40219 | El valor seleccionado debe corresponder a un valor del catalogo donde la columna impuesto corresponda con el campo impuesto y la columna factor corresponda con el campo TipoFactor. |
| 120 | cfdi:Impuestos:Traslados/Traslado | Importe | This value can have at most the decimal places the currency supports. | CFDI40220 | El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. |
| 121 | cfdi:Impuestos:Traslados/Traslado | Importe | The value must equal the rounded sum of the transferred tax amounts in the line items whose tax matches the Impuesto attribute of this element and whose TasaOCuota matches the TasaOCuota attribute of this element. | CFDI40221 | El campo Importe correspondiente a Traslado no es igual al redondeo de la suma de los importes de los impuestos trasladados registrados en los conceptos donde el impuesto del concepto sea igual al campo impuesto de este elemento y la TasaOCuota del concepto sea igual al campo TasaOCuota de este elemento. |
| 122 | Comprobante | Exportacion | When the Exportacion attribute contains the key "01" or "03" of the c_Exportacion catalog, the Comercio Exterior complement must not be present. | CFDI40222 | El complemento de Comercio Exterior no debe existir cuando el campo Exportacion contenga un valor igual a "01" o “03” del catálogo de CFDI c_Exportacion. |
| 123 | cfdi:Conceptos/Concepto:ACuentaTerceros | RegimenFiscalACuentaTerceros | If the RfcACuentaTerceros attribute contains "EXT990101NI1", this attribute must contain the key "616". | CFDI140223 | El valor registrado en el atributo RegimenFiscalACuentaTerceros es distinto a “616”. |
| 124 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | Impuesto | If the issuer's RFC has the Retención (withholding) flag set to "1" in the SAT list of registered, non-canceled RFCs, the "RegimenFiscal" attribute of the Emisor node is "626", the "Rfc" attribute of the "Emisor" node is 13 characters long (individual), and the "Rfc" attribute of the "Receptor" node is 12 characters long (legal entity), the "Retenciones" node can be present as long as the "Impuesto" attribute of the "Retencion" node is other than 001 (ISR: Mexico's income tax, Impuesto Sobre la Renta). | CFDI140224 | El valor 001 (ISR) en el atributo "Impuesto" del nodo hijo “Retencion” del elemento “Retenciones” a nivel Concepto no debe existir. |
| 125 | cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion | Impuesto | If the issuer's RFC has the Retención (withholding) flag set to "2" in the SAT list of registered, non-canceled RFCs, the RegimenFiscal attribute of the Emisor node is 626, the "Rfc" attribute of the "Emisor" node is 13 characters long (individual), and the "Rfc" attribute of the "Receptor" node is 12 characters long (legal entity), the "Retenciones" node must be present with at least one "Retencion" child node with 001 (ISR) in the "Impuesto" attribute, and the "TasaOCuota" attribute must contain 0.0125. | CFDI140225 | Debe existir el valor 001 (ISR) y en el atributo “TasaOCuota” se debe registrar el valor 0.0125 en el atributo “Impuesto” del nodo hijo “Retencion” del elemento “Retenciones” a nivel Concepto. |
| 126 | cfdi:Conceptos/Concepto | ObjetoImp | If this attribute contains "06" or "08", the Impuestos child node of the Concepto node must not have "Retencion" or "Traslado" child nodes with "002" and/or "003" in the "Impuesto" attribute; the "Retenciones" node can be present, with at least one "Retencion" child node with "001" in the "Impuesto" attribute. | CFDI140226 | Cuando en el campo ObjetoImp se registre el valor "06" o "08", los valores "002" (IVA) y/o "003" (IEPS) en el campo "Impuesto" de los nodo hijos “Retencion” y/o "Traslado" del elemento “Retenciones” y/o "Traslados" a nivel Concepto no deben existir. |
| 127 | cfdi:Conceptos/Concepto | ObjetoImp | If this attribute contains "07", the Impuestos child node of the Concepto node must not have "Retencion" or "Traslado" child nodes with "002" in the "Impuesto" attribute; the "Retenciones" node can be present, with at least one "Retencion" child node with "001" in the "Impuesto" attribute; a "Traslado" child node with "003" in the "Impuesto" attribute must be present; and a "Retencion" child node with "003" in the "Impuesto" attribute can be present. | CFDI140227 | Cuando en el campo ObjetoImp se registre el valor "07", el valor "002" (IVA) en el campo "Impuesto" de los nodos hijo “Retencion” y/o "Traslado" del elemento “Retenciones” y/o "Traslados" a nivel Concepto no debe existir; debe existir el valor "003" (IEPS) en el campo “Impuesto” del nodo hijo "Traslado" del elemento "Traslados" a nivel Concepto. |
| 128 | Unclassified error | Unclassified | Unclassified error. | CFDI40999 | Error no clasificado. |