En Realvirtual queremos que tu experiencia al generar un CFDI sea de lo más sencillo posible, por eso te proporcionamos la tabla de Errores al generar un CFDI proporcionada por el SAT, en la cual podrás ver algunos de los posibles errores que se pueden presentar al generar un CFDI. Aquí podrás ver que significa cada error para poder solucionarlo.
Matriz de Validación para el CFDI 3.3
Para encontrar tu error con mayor faci
NUM | Atributo | Reglas de validación para CFDI versión 3.3 | CÓDIGO ERROR | ERROR |
1 | 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]) y debe corresponder con la hora local donde se expide el comprobante. | CFDI33101 | El campo Fecha no cumple con el patrón requerido. |
2 | Sello | Desencriptar el contenido de este atributo usando el certificado incluido en el campo “Certificado”. Generar la cadena original del comprobante. Aplicar el algoritmo de digestión SHA-256. El resultado de la digestión debe ser igual al resultado de la desencripción del sello. | CFDI33102 | El resultado de la digestión debe ser igual al resultado de la desencripción del sello. |
3 | FormaPago | Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante. | CFDI33103 | Si existe el complemento para recepción de pagos el campo FormaPago no debe existir. |
4 | FormaPago | El atributo cfdi:Comprobante:FormaPago, debe contener un valor del catálogo c_FormaPago. | CFDI33104 | El campo FormaPago no contiene un valor del catálogo c_FormaPago. |
5 | Certificado | El campo debe contener un archivo .cer válido. | CFDI33105 | EL certificado no cumple con alguno de los valores permitidos. |
6 | SubTotal | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33106 | El valor de este campo SubTotal excede la cantidad de decimales que soporta la moneda. |
7 | SubTotal | Cuando el TipoDeComprobante sea I, E o N, el importe registrado en el atributo debe ser igual a la suma de los importes de los conceptos registrados. | CFDI33107 | El TipoDeComprobante es I,E o N, el importe registrado en el campo no es igual a la suma de los importes de los conceptos registrados. |
8 | SubTotal | Si el comprobante es T o P el importe debe ser 0, o cero con decimales. | CFDI33108 | El TipoDeComprobante es T o P y el importe no es igual a 0, o cero con decimales. |
9 | Descuento | El valor registrado debe ser menor o igual que el atributo Subtotal. | CFDI33109 | El valor registrado en el campo Descuento no es menor o igual que el campo Subtotal. |
10 | Descuento | Cuando el TipoDeComprobante sea I, E o N y algún concepto incluya el atributo Descuento, debe existir este atributo y debe ser igual a la suma de los atributos Descuento registrados en los conceptos; en otro caso se debe omitir este atributo. | CFDI33110 | El TipoDeComprobante no es I,E o N, y un concepto incluye el campo descuento. |
11 | Descuento | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33111 | El valor del campo Descuento excede la cantidad de decimales que soporta la moneda. |
12 | Moneda | El atributo cfdi:Comprobante:Moneda, debe contener un valor del catálogo c_Moneda. | CFDI33112 | El campo Moneda no contiene un valor del catálogo c_Moneda. |
13 | TipoCambio | Si el atributo cfdi:Comprobante:Moneda es MXN, puede omitirse el atributo TipoCambio, pero si se incluye, debe tener el valor “1”. | CFDI33113 | El campo TipoCambio no tiene el valor “1” y la moneda indicada es MXN. |
14 | TipoCambio | El atributo cfdi:Comprobante:TipoCambio es requerido cuando el atributo cfdi:Comprobante:Moneda tenga un valor distinto de MXN y XXX. | CFDI33114 | El campo TipoCambio se debe registrar cuando el campo Moneda tiene un valor distinto de MXN y XXX. |
15 | TipoCambio | El atributo cfdi:Comprobante:TipoCambio no se debe registrar cuando el atributo cfdi:Comprobante:Moneda tenga el valor XXX. | CFDI33115 | El campo TipoCambio no se debe registrar cuando el campo Moneda tiene el valor XXX. |
16 | TipoCambio | El atributo cfdi:Comprobante:TipoCambio debe cumplir con el patrón [0-9]{1,18}(.[0-9]{1,6})?. | CFDI33116 | El campo TipoCambio no cumple con el patrón requerido. |
17 | TipoCambio | Si el valor está fuera del porcentaje aplicable a la moneda tomado del catálogo c_Moneda, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion. | CFDI33117 | Cuando el valor del campo TipoCambio se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion. |
18 | Total | Atributo requerido para representar 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. | CFDI33118 | 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. |
19 | Total | Si el valor es superior al límite que establezca el SAT en la Resolución Miscelánea Fiscal vigente, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion. | CFDI33119 | Cuando el valor del campo Total se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion. |
20 | TipoDeComprobante | El atributo cfdi:Comprobante:TipoDeComprobante, debe contener un valor del catálogo c_TipoDeComprobante. | CFDI33120 | El campo TipoDeComprobante, no contiene un valor del catálogo c_TipoDeComprobante. |
21 | MetodoPago | El atributo cfdi:Comprobante:MetodoPago, debe contener un valor del catálogo c_MetodoPago. | CFDI33121 | El campo MetodoPago, no contiene un valor del catálogo c_MetodoPago. |
22 | MetodoPago | En el caso de que el método de pago sea “Pago inicial y parcialidades” se debe incluir el complemento de recepcion de pagos. | CFDI33122 | Cuando se tiene el valor PIP en el campo MetodoPago y el valor en el campo TipoDeComprobante es I ó E, el CFDI debe contener un complemento de recibo de pago. |
23 | MetodoPago | Se debe omitir el atributo MetodoPago cuando el TipoDeComprobante es T o P. | CFDI33123 | Se debe omitir el campo MetodoPago cuando el TipoDeComprobante es T o P. |
24 | MetodoPago | Si existe el complemento para recepción de pagos en este CFDI este atributo no debe existir. | CFDI33124 | Si existe el complemento para recepción de pagos en este CFDI el campo MetodoPago no debe existir. |
25 | LugarExpedicion | El atributo cfdi:Comprobante:LugarExpedicion, debe contener un valor del catálogo c_CodigoPostal. | CFDI33125 | El campo LugarExpedicion, no contiene un valor del catálogo c_CodigoPostal. |
26 | Confirmacion | Este atributo no debe existir cuando los atributos TipoCambio y/o Total están dentro del rango permitido. | CFDI33126 | El campo Confirmacion no debe existir cuando los atributos TipoCambio y/o Total están dentro del rango permitido. |
27 | Confirmacion | El Proveedor de Certificación debe verificar que el emisor le haya solicitado esta clave de confirmación. | CFDI33127 | Número de confirmación inválido. |
28 | Confirmacion | El Proveedor de Certificación debe verificar que la clave de confirmación no se utilice en más de un comprobante. | CFDI33128 | Número de confirmación utilizado previamente. |
29 | TipoRelacion | El atributo cfdi:Comprobante:CfdiRelacionados:TipoRelacion, debe contener un valor del catálogo c_TipoRelacion. | CFDI33129 | El campo TipoRelacion, no contiene un valor del catálogo c_TipoRelacion. |
30 | RegimenFiscal | El atributo cfdi:Comprobante:Emisor:RegimenFiscal, debe contener un valor del catálogo c_RegimenFiscal. | CFDI33130 | El campo RegimenFiscal, no contiene un valor del catálogo c_RegimenFiscal. |
31 | RegimenFiscal | El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del emisor. | CFDI33131 | La clave del campo RegimenFiscal debe corresponder con el tipo de persona (fisica o moral). |
32 | Rfc | En el elemento cfdi:Comprobante Nodo: Receptor, cuando no se utilice un RFC genérico, el RFC debe estar en la lista de RFC inscritos no cancelados en el SAT. | CFDI33132 | Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT. |
33 | ResidenciaFiscal | El atributo cfdi:Comprobante:Receptor:ResidenciaFiscal, debe contener un valor del catálogo c_Pais. | CFDI33133 | El campo ResidenciaFiscal, no contiene un valor del catálogo c_Pais. |
34 | ResidenciaFiscal | Si el RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional, este atributo NO debe existir. | CFDI33134 | El RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional y existe el campo ResidenciaFiscal. |
35 | ResidenciaFiscal | El valor del atributo no puede ser MEX. | CFDI33135 | El valor del campo ResidenciaFiscal no puede ser MEX. |
36 | ResidenciaFiscal | Si el RFC del receptor es un RFC genérico extranjero y el comprobante incluye el complemento de comercio exterior, o se registró el atributo NumRegIdTrib, este atributo debe existir. | CFDI33136 | 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. |
37 | NumRegIdTrib | Si el valor del atributo es un RFC inscrito no cancelado en el SAT o un RFC genérico nacional, no se debe registrar este atributo. | CFDI33137 | 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. |
38 | NumRegIdTrib | Si el RFC del receptor es un RFC genérico extranjero y el comprobante incluye el complemento de comercio exterior, debe existir este atributo. | CFDI33138 | 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. |
39 | NumRegIdTrib | El atributo debe cumplir con el patrón correspondiente incluido en la columna “Formato de Registro de Identidad Tributaria” que publique en el catalogo de C_Pais. | CFDI33139 | El campo NumRegIdTrib no cumple con el patrón correspondiente. |
40 | UsoCFDI | El atributo cfdi:Comprobante:Receptor:UsoCFDI, debe contener un valor del catálogo c_UsoCFDI. | CFDI33140 | El campo UsoCFDI, no contiene un valor del catálogo c_UsoCFDI. |
41 | UsoCFDI | El valor que se registre en este atributo debe aplicar para el tipo de persona del receptor. | CFDI33141 | La clave del campo UsoCFDI debe corresponder con el tipo de persona (fisica o moral). |
42 | ClaveProdServ | El atributo cfdi:Comprobante:Concepto:ClaveProdServ, debe contener un valor del catálogo c_ClaveProdServ. | CFDI33142 | El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ. |
43 | ClaveProdServ | Deben existir los complementos que señale el catálogo c_ClaveProdServ aplicables para este atributo. | CFDI33143 | No existe el complemento requerido para el valor de ClaveProdServ. |
44 | ClaveProdServ | Deben existir los impuestos trasladados y/o retenidos que señale el catálogo c_ClaveProdServ aplicables para este atributo. | CFDI33144 | No está declarado el impuesto relacionado con el valor de ClaveProdServ. |
45 | ClaveUnidad | El atributo cfdi:Comprobante:Concepto:ClaveUnidad debe contener un valor del catálogo c_ClaveUnidad. | CFDI33145 | El campo ClaveUnidad no contiene un valor del catálogo c_ClaveUnidad. |
46 | ValorUnitario | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33146 | El valor del campo ValorUnitario debe tener hasta la cantidad de decimales que soporte la moneda. |
47 | ValorUnitario | El valor de este atributo debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina. | CFDI33147 | El valor valor del campo ValorUnitario debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina. |
48 | Importe | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33148 | El valor del campo Importe debe tener hasta la cantidad de decimales que soporte la moneda. |
49 | Importe | El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | CFDI33149 | El valor del campo Importe no se encuentra entre el limite inferior y superior permitido. |
50 | Descuento | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33150 | El valor del campo Descuento debe tener hasta la cantidad de decimales que tenga registrado el atributo importe del concepto. |
51 | Descuento | El valor registrado debe ser menor o igual al atributo Importe. | CFDI33151 | El valor del campo Descuento es mayor que el campo Importe. |
52 | Impuestos | En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones. | CFDI33152 | En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones. |
53 | Base | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33153 | El valor del campo Base que corresponde a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. |
54 | Base | El valor debe ser mayor que cero. | CFDI33154 | El valor del campo Base que corresponde a Traslado debe ser mayor que cero. |
55 | Impuesto | El atributo Impuesto debe contener un valor del catálogo c_Impuesto. | CFDI33155 | El valor del campo Impuesto que corresponde a Traslado no contiene un valor del catálogo c_Impuesto. |
56 | TipoFactor | El atributo TipoFactor debe contener un valor del catálogo c_TipoFactor. | CFDI33156 | El valor del campo TipoFactor que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor. |
57 | TipoFactor | Si el valor registrado es Exento no se deben registrar los atributos TasaOCuota ni Importe. | CFDI33157 | Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Exento no se deben registrar los campos TasaOCuota ni Importe. |
58 | TipoFactor | Si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuota e Importe. | CFDI33158 | Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Tasa o Cuota, se deben registrar los campos TasaOCuota e Importe. |
59 | TasaOCuota | Si el valor registrado es fijo debe corresponder a un valor del catálogo c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo Impuesto y el factor debe corresponder con el atributo TipoFactor. | CFDI33159 | El valor del campo TasaOCuota que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango. |
60 | Importe | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33160 | El valor del campo Importe que corresponde a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. |
61 | Importe | El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | CFDI33161 | El valor del campo Importe o que corresponde a Traslado no se encuentra entre el limite inferior y superior permitido. |
62 | Base | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33162 | El valor del campo Base que corresponde a Retención debe tener hasta la cantidad de decimales que soporte la moneda. |
63 | Base | El valor debe ser mayor que cero. | CFDI33163 | El valor del campo Base que corresponde a Retención debe ser mayor que cero. |
64 | Impuesto | El atributo Impuesto debe contener un valor del catálogo c_Impuesto. | CFDI33164 | El valor del campo Impuesto que corresponde a Retención no contiene un valor del catálogo c_Impuesto. |
65 | TipoFactor | El atributo TipoFactor debe contener un valor del catálogo c_TipoFactor. | CFDI33165 | El valor del campo TipoFactor que corresponde a Retención no contiene un valor del catálogo c_TipoFactor. |
66 | TipoFactor | El valor registrado debe ser distinto de Exento. | CFDI33166 | Si el valor registrado en el campo TipoFactor que corresponde a Retención debe ser distinto de Exento. |
67 | TasaOCuota | Si el valor registrado es fijo debe corresponder a un valor del catálogo c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo Impuesto y el factor debe corresponder con el atributo TipoFactor. | CFDI33167 | 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. |
68 | Importe | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33168 | El valor del campo Importe que corresponde a Retención debe tener hasta la cantidad de decimales que soporte la moneda. |
69 | Importe | El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | CFDI33169 | El valor del campo Importe que corresponde a Retención no se encuentra entre el limite inferior y superior permitido. |
70 | NumeroPedimento | El atributo debe cumplir con las reglas de validación definidas. | CFDI33170 | El número de pedimento es inválido. |
71 | NumeroPedimento | Ell NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. | CFDI33171 | El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. |
72 | ClaveProdServ | El atributo ClaveProdServ, debe contener un valor del catálogo c_ClaveProdServ. | CFDI33172 | El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ. |
73 | ValorUnitario | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33173 | El valor del campo ValorUnitario debe tener hasta la cantidad de decimales que soporte la moneda. |
74 | ValorUnitario | El valor de este atributo debe ser mayor que cero (0). | CFDI33174 | El valor del campo ValorUnitario debe ser mayor que cero (0). |
75 | Importe | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33175 | El valor del campo Importe debe tener hasta la cantidad de decimales que soporte la moneda. |
76 | Importe | El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. | CFDI33176 | El valor del campo Importe no se encuentra entre el limite inferior y superior permitido. |
77 | NumeroPedimento | El atributo debe cunplir con las reglas de validación definidas. | CFDI33177 | El número de pedimento es inválido. |
78 | NumeroPedimento | El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. | CFDI33178 | El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. |
79 | Impuestos | Cuando el TipoDeComprobante sea T o P, este elemento no debe existir. | CFDI33179 | Cuando el TipoDeComprobante sea T o P, el elemento Impuestos no debe existir. |
80 | TotalImpuestosRetenidos | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33180 | El valor del campo TotalImpuestosRetenidos debe tener hasta la cantidad de decimales que soporte la moneda. |
81 | TotalImpuestosRetenidos | El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Retencion. | CFDI33181 | El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion. |
82 | TotalImpuestosTrasladados | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33182 | El valor del campo TotalImpuestosTrasladados debe tener hasta la cantidad de decimales que soporte la moneda. |
83 | TotalImpuestosTrasladados | El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Traslado. | CFDI33183 | El valor del campo TotalImpuestosTrasladados no es igual a la suma de los importes registrados en el elemento hijo Traslado. |
84 | Retenciones | Debe existir el atributo TotalImpuestosRetenidos. | CFDI33184 | Debe existir el campo TotalImpuestosRetenidos. |
85 | Impuesto | El atributo Impuesto debe contener un valor del catálogo c_Impuesto. | CFDI33185 | El campo Impuesto no contiene un valor del catálogo c_Impuesto. |
86 | Impuesto | Debe haber sólo un registro por cada tipo de impuesto retenido. | CFDI33186 | Debe haber sólo un registro por cada tipo de impuesto retenido. |
87 | Importe | Debe existir el atributo TotalImpuestosRetenidos. | CFDI33187 | Debe existir el campo TotalImpuestosRetenidos. |
88 | Importe | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33188 | El valor del campo Importe correspondiente a Retención debe tener hasta la cantidad de decimales que soporte la moneda. |
89 | Importe | Debe ser igual a la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al atributo impuesto de este elemento. | CFDI33189 | El campo Importe correspondiente a Retención no es igual a la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al campo impuesto de este elemento. |
90 | Traslados | Debe existir el atributo TotalImpuestosTrasladados. | CFDI33190 | Debe existir el campo TotalImpuestosTrasladados. |
91 | Impuesto | El atributo Impuesto debe contener un valor del catálogo c_Impuesto. | CFDI33191 | El campo Impuesto no contiene un valor del catálogo c_Impuesto. |
92 | Impuesto | Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado. | CFDI33192 | Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado. |
93 | TasaOCuota | El valor seleccionado debe corresponder a un valor del catalogo donde la columna impuesto corresponda con el atributo impuesto y la columna factor corresponda con el atributo TipoFactor. | CFDI33193 | 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. |
94 | Importe | El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. | CFDI33194 | El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. |
95 | Importe | Debe ser igual a la suma de los importes de los impuestos trasladados registrados en los conceptos donde el impuesto del concepto sea igual al atributo impuesto de este elemento y la TasaOCuota del concepto sea igual al atributo TasaOCuota de este elemento. | CFDI33195 | El campo Importe correspondiente a Traslado no es igual a 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. |
86 | Error no identificado | Error no identificado | CFDI33196 | Error no identificado. |