Matriz de validaciones para el Comprobante fiscal digital por Internet versión 3.3
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.