Saltar al contenido
Secciones de la documentación

Matriz de errores

Las 555 claves con las que el SAT rechaza un CFDI 4.0 o sus complementos, y los 106 códigos propios de la API v5. Escribe una clave, el nombre de un campo o parte del mensaje.

Buscar una clave

661 de 661 claves

501API v5

Invalid X-API-Key. Please make sure you're passing the X-API-Key in the Header. You can get your API Key through the account/authorize method. [Environment: <PRODUCTION|SANDBOX|DEVELOPMENT>]

HTTP 400 · /invoice/*, /validator/*, /selfservice/*, /catalog/*, GET /account/balance

Cuándo pasa: No llegó el encabezado X-Api-Key, viene vacío, no es Base64 o la llave no corresponde a ninguna cuenta de ESTE entorno. La causa más común es usar la llave de producción contra sandbox o al revés: son bases y llaves distintas. El sufijo [Environment: …] dice qué entorno respondió.

Qué hacer: Manda X-Api-Key con la llave en Base64 tal como la entrega GET /api/v5/account/authorize (de preferencia el campo x_api_key_v2) y confirma que la URL sea la del mismo entorno que la llave.

501-2API v5

This API Key belongs to <PRODUCTION|SANDBOX|DEVELOPMENT> and you are calling <ENTORNO>. Use the key issued for this environment (GET api/v5/account/authorize, field x_api_key_v2). [Environment: <ENTORNO>]

HTTP 400 · /invoice/*, /validator/*, /selfservice/*, /catalog/*, GET /account/balance

Cuándo pasa: La llave es del esquema v2 (prefijo fdk_live_, fdk_test_ o fdk_dev_) y su prefijo es de otro entorno: por ejemplo una llave de producción (fdk_live_) contra sandbox.

Qué hacer: Usa la llave emitida para el entorno al que llamas: la de producción contra app.facturadigital.com.mx y la de sandbox contra sandbox-app.facturadigital.com.mx. Cada entorno da la suya en GET /api/v5/account/authorize.

501-3API v5

Your legacy API Key expired on <AAAA-MM-DD>. Get your current key with GET api/v5/account/authorize (field x_api_key_v2). [Environment: <ENTORNO>]

HTTP 400 · /invoice/*, /validator/*, /selfservice/*, /catalog/*, GET /account/balance

Cuándo pasa: La llave anterior (formato RFC-guid, sin prefijo fdk_) ya pasó su fecha de corte, el 1 de julio de 2027. Antes del corte esa llave sigue funcionando, pero cada respuesta lleva el encabezado X-FD-ApiKey-Deprecation con la fecha.

Qué hacer: Llama a GET /api/v5/account/authorize con usuario y contraseña y usa el campo x_api_key_v2 en X-Api-Key.

401API v5

Invalid X-API-Key. Please make sure you're passing the X-API-Key in the Header.

HTTP 401 · POST /account/create, POST /account/csd

Cuándo pasa: En estos dos métodos cualquier falla de la llave (ausente, inválida, de otro entorno o legacy vencida) se responde con este texto genérico, sin el detalle del entorno, y queda en la bitácora de intentos.

Qué hacer: Revisa la llave como en el código 501: Base64 de x_api_key_v2 y del mismo entorno que la URL.

401-2API v5

<texto del error original>, p. ej. "Missing parameter 'rfc' in GET." o "The RFC expression does not contain a valid date"

HTTP 400 · GET /validator/lrfc

Cuándo pasa: En validator/lrfc TODO error que no sea un RFC con partes inválidas sale con code "401" (texto): llave inválida, parámetro rfc ausente, sin créditos del validador o un RFC cuya fecha no existe. El message conserva el texto del error real.

Qué hacer: Lee message para saber cuál fue: corrige la llave, manda ?rfc=, recarga créditos del validador o revisa la fecha del RFC (AAMMDD).

502API v5

Username or password invalid.

HTTP 401 · GET /account/authorize

Cuándo pasa: Los encabezados api_usuario y api_password no corresponden a un usuario activo de la cuenta. Cada intento fallido cuenta para el bloqueo por IP y usuario, y la respuesta tarda entre 0.5 y 1.5 s a propósito.

Qué hacer: Corrige usuario y contraseña (los mismos con los que entras a la web). Si tu contraseña cambió, usa la nueva.

503API v5

Too many failed attempts. Try again later.

HTTP 403 · GET /account/authorize

Cuándo pasa: La IP está bloqueada, o el par IP + usuario quedó bloqueado por intentos fallidos previos (el mismo mecanismo que el inicio de sesión web).

Qué hacer: Espera a que venza el bloqueo antes de volver a intentar y revisa que tu integración no esté reintentando con credenciales viejas.

4290API v5

Esta petición idéntica ya fue rechazada y tu cuenta tiene tráfico excedente pendiente de pago. Corrige el reenvío en tu integración o liquida tu orden <número> en Mi Cuenta para retirar el freno.

HTTP 429 · /*

Cuándo pasa: La cuenta tiene una orden de tráfico excedente sin pagar y esta petición es idéntica (misma huella de cuerpo y encabezados) a una que la API v5 ya rechazó en las últimas 24 horas. Llega con el encabezado Retry-After: 86400. La petición no se procesa.

Qué hacer: No reenvíes la misma petición: corrige el dato que la hizo fallar (cambia la huella) o paga la orden en Mi Cuenta para retirar el freno.

601API v5

Insufficient credits in your account. Go to www.facturadigital.com.mx and get more credits.

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention, POST /invoice/cancel, POST /invoice/cancelretention, POST /invoice/send

Cuándo pasa: El saldo de créditos de timbrado de la cuenta es cero o menor. Se revisa antes de llamar al PAC. En cancelar el texto es "Cancel failed. Insufficient credits in your account. Go to www.facturadigital.com.mx for purchase more credits." y en send "You have no credits available in your account. Go to www.facturadigital.com.mx to purchase a package." (o "You have no credits available in your account."). Cancelar y reenviar por correo no descuentan crédito, pero piden saldo mayor a cero; cancelwithcsd no lo pide.

Qué hacer: Compra créditos en Mi Cuenta y vuelve a enviar. Consulta el saldo con GET /api/v5/account/balance.

601-2API v5

Insufficient credits in your account (VALIDATOR-MODULE). Go to www.facturadigital.com.mx and get more credits. Ref. 27-C-<id de cuenta>-ENV-<entorno>

HTTP 400 · GET /validator/lco, GET /validator/blacklist, GET /validator/fiscalinfo

Cuándo pasa: Los créditos del validador (un saldo aparte de los de timbrado) llegaron a cero. En validator/lrfc este mismo error sale con code "401".

Qué hacer: Compra créditos del validador. Consulta ese saldo con GET /api/v5/validator/balance.

602API v5

Please upload a valid Digital Seal Certificate (CSD). Go to your control panel, menu Settings (Configuración ---> Certificados CSD), and upload them.

HTTP 400 · POST /invoice/create, POST /invoice/retention, POST /invoice/cancelretention

Cuándo pasa: La cuenta no tiene un Certificado de Sello Digital activo. En retention el texto va en español: "Por favor cargue un certificado de sello digital (CSD) válido. Vaya a su panel de control, menú Configuración (Configuración ---> Certificados CSD), y cárguelos." Ojo: POST /invoice/cancel no hace esta revisión (ver el 400 "No se pudo procesar la cancelación").

Qué hacer: Sube el .cer, el .key y la contraseña del CSD en Configuración › Certificados CSD o con POST /api/v5/account/csd.

706API v5

No se pudo abrir la llave privada del CSD del emisor ('<archivo>'): la contraseña no corresponde o el archivo está dañado. Verifica el CSD del emisor en Configuración → Certificados.

HTTP 400 · POST /invoice/create

Cuándo pasa: La cuenta tiene un CSD activo, pero al sellar el XML falló: falta el .cer o el .key en el servidor, el .cer no es válido, la contraseña guardada no abre la llave o el sellado falló. errorType: csd_cer_no_disponible, csd_key_no_disponible o csd_sello_fallido; docs: https://docs.facturadigital.com.mx/errores/706. No se llamó al PAC.

Qué hacer: Vuelve a cargar el CSD completo (.cer, .key y contraseña) en Configuración › Certificados o con POST /api/v5/account/csd, y timbra de nuevo.

400API v5

The 'b64Cer' and 'b64Key' parameters are required in the body.

HTTP 400 · POST /invoice/cancelwithcsd, POST /account/csd

Cuándo pasa: Faltan o vienen mal los archivos del CSD en el cuerpo. Otros textos del mismo caso: "The 'passwordCSD' parameter is required in the body.", "The 'b64Cer' parameter exceeds the maximum allowed size (64 KB).", "The 'b64Key' parameter is not valid Base64.", "The 'passwordCSD' parameter exceeds the maximum length of 50 characters." (solo account/csd) y "Could not read the RFC from the provided certificate. Make sure 'b64Cer' is a valid SAT certificate (.cer)." (solo cancelwithcsd).

Qué hacer: Manda en el cuerpo (form-encoded) b64Cer y b64Key con el Base64 de los archivos .cer y .key tal cual los dio el SAT, y passwordCSD con la contraseña.

400-2API v5

The certificate password is incorrect.

HTTP 400 · POST /account/csd

Cuándo pasa: El CSD se rechazó al analizarlo. Otros textos del mismo caso: "The .CER file does not match the .KEY file. Both must belong to the same SAT request.", "The files provided are a FIEL (e.Firma), not a Digital Seal Certificate (CSD). Upload your CSD instead.", "The Digital Seal Certificate has expired. Request a new one from the SAT portal.", "The certificate belongs to a different RFC than this account.", "The certificate password contains characters that are not allowed (; & | ` $ or backslash). This is a platform restriction, not an incorrect password.", "The files are not a valid Digital Seal Certificate (CSD).", "The certificate was rejected. Verify the .CER, the .KEY and the password." y "The certificate files could not be processed. Verify they are valid SAT CSD files."

Qué hacer: Sube un CSD (no la e.firma) vigente, del mismo RFC que la cuenta, con el .cer y el .key de la misma solicitud y su contraseña correcta.

400-3API v5

Invalid or non received json in headers or body.

HTTP 400 · POST /invoice/create, POST /invoice/retention, POST /selfservice/ticket

Cuándo pasa: No llegó el parámetro json en el cuerpo ni el encabezado JSON (en selfservice/ticket, el encabezado JSONCFDI).

Qué hacer: Manda el comprobante como texto JSON en el campo json del cuerpo (form-data o x-www-form-urlencoded).

400-4API v5

The 'json' parameter is not valid JSON (<error del lector JSON>). El parámetro 'json' no es un JSON válido.

HTTP 400 · POST /invoice/create, POST /invoice/retention

Cuándo pasa: El texto de json no se puede leer como JSON, o se lee pero no es un objeto: "The 'json' parameter must be a JSON object ({...}). El parámetro 'json' debe ser un objeto JSON." En retention el texto es "Invalid json received.".

Qué hacer: Valida el JSON antes de enviarlo (comillas, comas, caracteres de control) y manda un objeto {...} en la raíz.

400-5API v5

El JSON tiene <n> campo(s) con un tipo de dato inválido; no se envió nada al SAT ni se consumió crédito. Detalle: '<campo>' debe ser <tipo esperado>, pero se recibió <tipo recibido>.

HTTP 400 · POST /invoice/create, POST /invoice/retention

Cuándo pasa: Un nodo trae un tipo que el armado del XML no acepta: Receptor o Emisor como texto, un atributo como arreglo, un concepto o un impuesto que es texto en lugar de objeto, etc. errorType: json_type_validation; errors[] trae field y message por cada campo. Se revisa antes del PAC.

Qué hacer: Corrige el tipo de cada campo que lista errors (objeto {...} donde va un nodo, texto o número donde va un atributo) siguiendo el ejemplo de la documentación.

400-6API v5

The 'Version' field is required and cannot be empty. Hint: The 'Version' field should be at root level in your JSON input, at same level as 'Folio', 'Serie', 'Fecha', etc...

HTTP 400 · POST /invoice/create

Cuándo pasa: Falta Version en la raíz del JSON o no es exactamente el texto "4.0": "The 'Version' field must be '4.0'.".

Qué hacer: Pon "Version": "4.0" (texto) en la raíz del JSON.

400-7API v5

Invalid 'plantilla_id' / 'config_plantilla_id': the PDF template does not exist, is not active, or does not belong to this account/environment.

HTTP 400 · POST /invoice/create

Cuándo pasa: La plantilla del PDF que pediste no existe, no está activa o es de otra cuenta o entorno. Si plantilla_id no es un entero positivo: "The 'plantilla_id' field must be a positive integer (the template id shown in your PDF templates screen).". Se revisa antes de timbrar.

Qué hacer: Usa el id de una plantilla activa de tu cuenta en ese entorno, o quita plantilla_id / config_plantilla_id para usar la predeterminada.

400-8API v5

The 'enviar_mail.destinatarios' attribute is required and must contain valid email addresses.

HTTP 400 · POST /invoice/create

Cuándo pasa: El bloque enviar_mail viene con destinatarios vacío o inválido. Otros textos del mismo bloque: "The 'enviar_mail.destinatarios' attribute exceeds the 500 character limit.", "The 'enviar_mail.bcc' attribute contains invalid email addresses.", "The 'enviar_mail.bcc' attribute exceeds the 500 character limit." y "The 'enviar_mail.mensaje' attribute exceeds the 2000 character limit.". Se revisa antes de timbrar.

Qué hacer: Manda correos válidos separados por coma (o punto y coma) dentro de los límites, o quita el bloque enviar_mail.

400-9API v5

No folio range found for Serie='<serie>' and TipoDeComprobante='<tipo>'. Configure it in your control panel (Configuracion -> Series y Folios).

HTTP 400 · POST /invoice/create

Cuándo pasa: Pediste Folio "AUTO" y no hay un rango configurado para esa Serie y ese TipoDeComprobante. Con Folio AUTO también se exige Serie ("Folio 'AUTO' requires a non-empty 'Serie' attribute at root level.") y TipoDeComprobante ("Folio 'AUTO' requires the 'TipoDeComprobante' attribute.").

Qué hacer: Configura la serie en Configuración › Series y Folios con el mismo tipo de comprobante, o manda el folio explícito.

400-10API v5

Invalid 'ImpuestosLocales' complement: <mensaje de cada regla, en inglés>

HTTP 400 · POST /invoice/create

Cuándo pasa: El complemento de Impuestos Locales no pasó las reglas que se revisan antes del PAC. errorType: implocal_validation; errors[] trae por cada problema severity, code (NOMBRE_VACIO, TASA_RANGO, TOTAL_NO_CUADRA…), field (TrasladosLocales[i], RetencionesLocales[i] o ImpuestosLocales), tax y message.

Qué hacer: Busca cada errors[].code en esta matriz y corrige la fila indicada en field.

<n> part(s) of the complement could not be read. Each local tax must be a row with a name, a rate and an amount.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: parte del nodo ImpuestosLocales no tiene forma de fila (nombre, tasa e importe). Antes esas partes se descartaban y el CFDI salía sin el complemento.

Qué hacer: Manda cada impuesto local como un objeto con su nombre, su tasa y su importe dentro de TrasladosLocales o RetencionesLocales.

Local <transferred|withheld> tax #<n> has no name; the SAT requires it.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: una fila de impuesto local no trae nombre.

Qué hacer: Pon el nombre del impuesto local en esa fila (p. ej. ISH).

Tax rate for "<impuesto>" ("<valor>") is not a number. Use a percentage with a decimal point and no thousands separator: 3.00.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: la tasa de un impuesto local no es un número.

Qué hacer: Escribe la tasa como porcentaje con punto decimal, sin separador de miles ni signo %: 3.00.

Tax rate for "<impuesto>" is <tasa>%. It must be between 0 and 100; it is a percentage, not a factor.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: la tasa es negativa o mayor que 100.

Qué hacer: La tasa local va en porcentaje (3.00 para 3 %), no como factor (0.03) ni mayor que 100.

Amount for "<impuesto>" ("<valor>") is not a number. Use a decimal point and no thousands separator: 1500.00.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: el importe de un impuesto local no es un número (p. ej. con coma de miles).

Qué hacer: Escribe el importe con punto decimal y sin separador de miles: 1500.00.

Amount for "<impuesto>" is negative (<importe>).

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: el importe de un impuesto local es negativo.

Qué hacer: Manda el importe en positivo; si es una retención, va en RetencionesLocales.

Amount for "<impuesto>" (<importe>) is greater than the invoice base (<base>).

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: el importe local supera la base del comprobante (SubTotal menos Descuento), con tolerancia de 0.01.

Qué hacer: Revisa el importe: con una tasa de hasta 100 % nunca puede pasar de SubTotal − Descuento.

<TotaldeTraslados|TotaldeRetenciones> declares "<valor>", which is not a number. Use a decimal point and no thousands separator: 1500.00.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: el total declarado del complemento no es un número.

Qué hacer: Escribe TotaldeTraslados / TotaldeRetenciones con punto decimal y sin separador de miles, o quítalo para que se calcule.

<TotaldeTraslados|TotaldeRetenciones> declares <declarado> but the local <transferred|withheld> taxes add up to <suma>.

HTTP 400 · POST /invoice/create

Cuándo pasa: Llega en errors[].code de un 400 implocal_validation: el total declarado no es la suma de las filas (tolerancia 0.01).

Qué hacer: Haz que el total declarado sea la suma exacta de los importes de las filas, o quítalo para que se calcule.

400-11API v5

Invalid 'CartaPorte31' complement: <CPxxx>: <mensaje> … These are SAT Carta Porte 3.1 rules (CPxxx error matrix) now enforced before stamping; see https://docs.facturadigital.com.mx/errores/cartaporte .

HTTP 400 · POST /invoice/create

Cuándo pasa: El complemento Carta Porte (3.0 se convierte a 3.1 antes) no pasa reglas de la matriz CCP 3.1 del SAT que la API revisa antes del PAC: CP104, CP106, CP107, CP109, CP110, CP130, CP141, CP149, CP154, CP176, CP193, CP194, CP196 y CP199. errorType: cartaporte_validation; docs con la guía; errors[] trae severity, code (CPxxx), field y message (en español, redactado por Factura Digital).

Qué hacer: Busca cada errors[].code en la matriz de Carta Porte 3.1 y corrige el campo que indica field.

1019API v5

Debes definir también las horas extras en la sección de percepciones, como una percepción adicional, asignandole la clave '019', y poniendo en la descripción 'Horas extra'.

HTTP 400 · POST /invoice/create

Cuándo pasa: Un CFDI de nómina trae HorasExtra pero ninguna percepción con TipoPercepcion 019 a la cual colgarlas.

Qué hacer: Agrega la percepción 019 (Horas extra) con su importe y deja las HorasExtra dentro de ella.

702API v5

El CFDI no cumple con el esquema del SAT. Se encontraron <n> errores de validación. Revisa el campo 'errors' para el detalle.

HTTP 400 · POST /invoice/create, POST /invoice/retention

Cuándo pasa: El XML armado no pasa los XSD del SAT (campo obligatorio ausente, valor fuera de catálogo, patrón o longitud). Se valida antes del PAC. errorType: cfdi_schema_validation (en retention: cfdi_retenciones_schema_validation, con "El CFDI de Retenciones no cumple…"); docs: https://docs.facturadigital.com.mx/errores/702; errors[] trae severity, libxmlCode, message (en español), rawMessage (el original de libxml) y, cuando se pueden extraer, element, namespace, field, value, line y column.

Qué hacer: Corrige cada campo que lista errors (field y value dicen cuál y con qué valor) y vuelve a enviar.

705API v5

El CFDI no declara xsi:schemaLocation; no se puede validar dinámicamente. Cadena XML: <xml>

HTTP 400 · POST /invoice/create, POST /invoice/retention

Cuándo pasa: El XML armado no trae xsi:schemaLocation. En la práctica no ocurre: el armado siempre lo escribe. Si aparece, es un defecto de la plataforma.

Qué hacer: Avisa a soporte con la hora.

707API v5

No se resolvió ningún XSD del SAT en xsi:schemaLocation; no se puede validar. Cadena XML: <xml>

HTTP 400 · POST /invoice/create, POST /invoice/retention

Cuándo pasa: Ningún esquema del xsi:schemaLocation es del SAT. En la práctica no ocurre con el armado de la API. Si aparece, es un defecto de la plataforma.

Qué hacer: Avisa a soporte con la hora.

708API v5

xsi:schemaLocation mal formado (se esperan pares namespace-url). Cadena XML: <xml>

HTTP 400 · POST /invoice/create, POST /invoice/retention

Cuándo pasa: El xsi:schemaLocation armado no viene en pares namespace-URL. En la práctica no ocurre con el armado de la API. Si aparece, es un defecto de la plataforma.

Qué hacer: Avisa a soporte con la hora.

400-12API v5

No se pudo procesar el JSON del CFDI (<TypeError|Error>). Revisa que cada nodo tenga el tipo de dato del ejemplo de la documentación. No se envió nada al SAT ni se consumió crédito.

HTTP 400 · POST /invoice/create, POST /invoice/retention, POST /invoice/stampxml, POST /invoice/stampxmlfile

Cuándo pasa: Un error de PHP antes de timbrar, casi siempre por un nodo con una forma que el armado no esperaba y que la revisión de tipos no cubrió. En retention: "No se pudo procesar el JSON de la retención (<clase>). Revisa que cada nodo tenga el tipo de dato de la documentación."; en stampxml y stampxmlfile: "No se pudo procesar el XML recibido (<clase>).".

Qué hacer: Compara tu JSON con el ejemplo de la documentación nodo por nodo (objetos, listas y textos). Si no encuentras la diferencia, manda el JSON a soporte.

200API v5

The document was generated successfully

HTTP 200 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: Timbrado exitoso; el nodo cfdi trae UUID, sellos, XmlBase64 y las ligas PDF y XML (con Folio AUTO, también Serie y Folio). stampxml y stampxmlfile responden "XML stamped successfully"; retention responde con mensaje/codigo "Timbrado exitoso" / 200. Con OmitirTimbrado = "si" responde "The document was generated successfully without stamp (SIN TIMBRAR)" con xmlBase64 y NO timbra ni cobra. Si el PAC regresa un UUID que la cuenta ya tenía registrado, responde el existente con ya_existia: true y no cobra otra vez. Si algo falla al guardar después del timbre, la respuesta sigue siendo este éxito.

Qué hacer: Guarda el UUID y el XML. Con ya_existia: true no se timbró nada nuevo.

400-13API v5

307 - El comprobante contiene un timbre previo. Ya fue timbrado con el UUID <UUID>; no se volvió a timbrar ni se consumió crédito.

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: El PAC respondió 307: ese mismo XML ya se había timbrado (típico cuando se perdió la primera respuesta y se reenvía). errorType: timbre_previo; context.uuid trae el UUID del timbre anterior cuando el PAC lo manda. El texto antes del punto es el del PAC. Con Folio AUTO, el folio NO regresa al contador.

Qué hacer: No reenvíes: ese CFDI ya existe en el SAT con el UUID de context.uuid. Recupera su XML (en stampxml y stampxmlfile, la liga docs/xml) o consúltalo con GET /api/v5/validator/cfdi.

400-14API v5

<CLAVE> - <mensaje del SAT> - Detalle: <detalle del PAC>

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: Rechazo del SAT reenviado por el PAC: la clave de la matriz del SAT (CFDI40143, CRP20217, NOM45, CP101…) va al inicio de message y code es el HTTP con que respondió el PAC (400). Puede llevar " - Detalle: …". En retention termina en " *FDSWRET* " y llega con mensaje/codigo además de message/code. Las URL del texto se cambian por "Servicio no disponible. Favor de reintentar en unos minutos." y el texto de DomicilioFiscalReceptor se reescribe como "El campo Codigo Postal (DomicilioFiscalReceptor) no coincide con los registros del SAT".

Qué hacer: Busca la clave en la matriz del SAT y corrige el dato; mientras el dato no cambie, el SAT responde lo mismo.

5034API v5

El PAC no respondió a tiempo: tu factura pudo haberse timbrado en el SAT aunque no aparezca en tus CFDIs emitidos. Revisa tu buzón o el portal del SAT antes de volver a intentar. Se usó la serie <serie> folio <folio>.

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: Respuesta INCIERTA: la petición sí salió al PAC pero no contestó en 120 s, cortó la conexión, respondió un 5xx o algo ilegible (variante: "La respuesta del PAC llegó incompleta o con un error suyo: …"). La plataforma no guardó nada, pero el PAC pudo haber timbrado. En create la respuesta trae las llaves Serie y Folio (también con Folio AUTO) y la frase "Se usó …". Con Folio AUTO, el folio NO regresa al contador.

Qué hacer: Antes de reenviar, busca en el portal del SAT o en tu buzón un CFDI con esa serie y folio. Si existe, no lo vuelvas a timbrar. Si no existe, reenvía. En stampxml y stampxmlfile puedes reenviar el mismo XML: si ya se había timbrado, el PAC responde 307 con el UUID en lugar de duplicarlo.

5034-2API v5

El PAC sí timbró este CFDI (UUID <UUID>) y quedó guardado, pero no se pudo leer su respuesta completa. No lo timbres como nuevo: búscalo en tus documentos (en la web, al volver a intentar con el mismo folio se recupera).

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: El PAC SÍ timbró, pero la respuesta no se pudo armar. context.uuid trae el UUID cuando es legible. Variantes: "…quedó guardado…" (create: la fila existe y el crédito se cobró); "El PAC sí timbró este <CFDI|documento de retenciones> con el UUID <UUID>, pero no se pudo leer su respuesta y no quedó registrado en tu cuenta (el XML timbrado sí se guardó: <liga>). No lo vuelvas a enviar: contacta a soporte con ese UUID para registrarlo."; en stampxml/stampxmlfile "…El XML timbrado está en <liga>. No lo vuelvas a enviar."; sin UUID legible: "El PAC timbró este CFDI, pero no se pudo leer su respuesta ni su UUID, así que no quedó guardado en la plataforma. No lo vuelvas a enviar: contacta a soporte indicando la hora y el folio.".

Qué hacer: No reenvíes. Usa context.uuid: confírmalo con GET /api/v5/validator/cfdi, búscalo en GET /api/v5/invoice/list… (si dice "quedó guardado") o descarga el XML de la liga del mensaje. Si dice que no quedó registrado, pide a soporte que lo registre con ese UUID.

5037API v5

No se pudo conectar con el PAC: tu factura no se timbró (no se envió nada). Intenta de nuevo en unos minutos.

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: No se pudo ni conectar con el PAC (DNS, conexión rechazada, TLS o tiempo agotado al conectar, tope de 10 s): no salió un solo byte, así que no hay CFDI. Con Folio AUTO, el folio regresa al contador.

Qué hacer: Reintenta tal cual en unos minutos; no hay riesgo de duplicar.

5040API v5

No se pudo timbrar: la base de datos de esta versión está incompleta (falta <tabla.columna>). No se envió nada al SAT; avisa a soporte.

HTTP 400 · POST /invoice/create, POST /invoice/stampxml, POST /invoice/stampxmlfile, POST /invoice/retention

Cuándo pasa: Candado de la plataforma antes del PAC: falta una columna que el timbrado escribe después del timbre (cambio de base de datos sin aplicar). No se envió nada al PAC.

Qué hacer: Avisa a soporte; no es un problema de tus datos.

400-15API v5

Invalid or missing xmlbase64 parameters in body.

HTTP 400 · POST /invoice/stampxml

Cuándo pasa: No llegó el campo xmlbase64 en el cuerpo, o viene vacío.

Qué hacer: Manda en xmlbase64 el XML ya sellado codificado en Base64.

400-16API v5

<p>El tipo de archivo que esta tratando de subir no está permitido.</p>

HTTP 400 · POST /invoice/stampxmlfile

Cuándo pasa: Falló la subida del archivo xml (multipart). El texto lo da CodeIgniter en español y llega con etiquetas <p>: también "<p>No ha seleccionado ningún archivo para subir.</p>" o "<p>El archivo que está tratando de subir es más grande que el tamaño permitido.</p>" (tope de 40 MB). Solo se aceptan archivos .xml.

Qué hacer: Sube el XML en el campo xml del formulario multipart, con extensión .xml.

400-17API v5

Estamos preparando tu espacio de documentos; tus créditos siguen intactos. Escríbenos y lo dejamos listo en un momento.

HTTP 400 · POST /invoice/stampxml, POST /invoice/stampxmlfile

Cuándo pasa: La carpeta de documentos de la cuenta en el servidor no existe o no se puede escribir; se detiene antes del PAC y del cobro. En stampxmlfile también puede salir "Tu archivo aún no se procesó; tus créditos siguen intactos. Inténtalo de nuevo en unos minutos y, si continúa, avisa a soporte." si no se pudo preparar la carpeta de subidas.

Qué hacer: Escribe a soporte; cuando confirmen, reenvía. No se envió nada al SAT.

400-18API v5

UUID to be cancelled (folio fiscal) not found in the headers.

HTTP 400 · POST /invoice/cancel, POST /invoice/cancelretention, POST /invoice/cancelwithcsd

Cuándo pasa: Falta el encabezado UUID, o no tiene formato de UUID: "The 'UUID' header has an invalid format. Expected format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.". En cancelwithcsd el UUID va en el cuerpo: "The 'uuid' parameter is required in the body." / "The 'uuid' parameter has an invalid format. Expected format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.". Se revisa antes del PAC.

Qué hacer: Manda el folio fiscal completo (36 caracteres con guiones) en el encabezado UUID (en cancelwithcsd, en el campo uuid del cuerpo).

400-19API v5

Invalid cancellation reason ('MOTIVO'). Valid values: 01, 02, 03, 04.

HTTP 400 · POST /invoice/cancel, POST /invoice/cancelretention, POST /invoice/cancelwithcsd

Cuándo pasa: El motivo no es 01, 02, 03 ni 04. Sin motivo se usa 02. En cancel y cancelretention un dígito suelto ("2") se completa a "02"; en cancelretention, un motivo que no vale 1 a 4 como número responde "Invalid cancellation reason. Valid values: 01, 02, 03, 04" (sin ('MOTIVO')). cancelwithcsd no completa el dígito: "2" responde "Invalid cancellation reason ('motivo'). Valid values: 01, 02, 03, 04.".

Qué hacer: Manda MOTIVO con dos dígitos: 01, 02, 03 o 04.

400-20API v5

When using reason '01', the substitute UUID ('FOLIOSUSTITUCION') is required.

HTTP 400 · POST /invoice/cancel, POST /invoice/cancelretention, POST /invoice/cancelwithcsd

Cuándo pasa: Con motivo 01 falta el folio de sustitución, o no tiene formato de UUID: "The 'FOLIOSUSTITUCION' header has an invalid format. Expected format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.". En cancelretention: "When using reason '01', the substitute UUID (FOLIOSUSTITUCION) is required."; en cancelwithcsd: "When using reason '01', the substitute UUID ('folioSustitucion') is required.".

Qué hacer: Timbra primero el CFDI que sustituye y manda su UUID en FOLIOSUSTITUCION (en cancelwithcsd, folioSustitucion en el cuerpo).

409API v5

No se canceló la factura: otra factura global de ese periodo está ligando sus tickets o timbrándose en este momento. Espera un minuto y vuelve a intentarlo.

HTTP 400 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El CFDI tiene tickets de autofactura y otra factura global del mismo periodo los está ligando o timbrando en ese momento. Se detiene antes del PAC: no se canceló nada.

Qué hacer: Espera un minuto y vuelve a intentar.

400-21API v5

No se pudo procesar la cancelación (<TypeError|Error>).

HTTP 400 · POST /invoice/cancel, POST /invoice/cancelwithcsd, POST /invoice/cancelretention

Cuándo pasa: Un error de PHP antes o durante la cancelación. El caso más común: en POST /invoice/cancel la cuenta no tiene CSD activo (ese método no responde 602 y falla al leer la contraseña del certificado).

Qué hacer: Revisa que la cuenta tenga su CSD cargado y vigente (o usa cancelwithcsd mandando el CSD). Si lo tiene, avisa a soporte con la hora y el UUID.

223API v5

Respuesta inválida del PAC (HTTP <n>): curl #<n> <detalle> - [CAN-SW]

HTTP 400 · POST /invoice/cancel, POST /invoice/cancelretention

Cuándo pasa: No hubo respuesta del PAC al cancelar (conexión, tiempo agotado de 120 s) o lo que respondió no es JSON ("Respuesta inválida del PAC (HTTP <n>). - [CAN-SW]"). En cancelretention la marca es [CAN-RET-SW-REST], pero ahí casi nunca sale: una respuesta vacía llega como code 0 con HTTP 200.

Qué hacer: Consulta el estatus del CFDI con GET /api/v5/validator/cfdi y vuelve a cancelar si sigue vigente. Reenviar una cancelación no duplica nada: si ya se canceló, el SAT responde 202.

502-2API v5

Respuesta inválida del PAC (HTTP 0): curl #<n> <detalle> - [CAN-CSD-SW-V2]

HTTP 400 · POST /invoice/cancelwithcsd

Cuándo pasa: En cancelwithcsd, el PAC no respondió (code 502) o respondió algo que no es JSON; en ese caso code es el HTTP del PAC (p. ej. 500 o 504) y el texto "Respuesta inválida del PAC (HTTP <n>). - [CAN-CSD-SW-V2]".

Qué hacer: Consulta el estatus con GET /api/v5/validator/cfdi y vuelve a cancelar si sigue vigente.

201API v5

Solicitud de cancelación exitosa * Se considera una solicitud de cancelación exitosa, sin embargo esto no asegura su cancelación

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El SAT recibió la solicitud. El 201 llega en uuid_estatus (y estatus_uuid); en code llega normalizado a 200. Con ese 200 la plataforma marca el CFDI como cancelado y guarda el acuse (llave acuse, en Base64). En cancelwithcsd el texto lo da el PAC.

Qué hacer: Guarda el acuse. Si el CFDI requiere aceptación del receptor, el estatus final se ve con GET /api/v5/validator/cfdi (estatuscancelacion).

1201API v5

UUID cancelado * La constancia de retenciones quedó cancelada ante el SAT.

HTTP 200 · POST /invoice/cancelretention

Cuándo pasa: La constancia de retenciones quedó cancelada. El 1201 llega en uuid_estatus (y estatus_uuid); en code llega normalizado a 200 y la plataforma la marca cancelada.

Qué hacer: Guarda el acuse de la llave acuse.

202API v5

Folio Fiscal Previamente Cancelado * Se considera solicitud de cancelación previamente enviada. Estatus Cancelado ante el SAT.

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El CFDI ya estaba cancelado en el SAT. Llega en code, uuid_estatus y estatus_uuid con HTTP 200. Con 202 la plataforma NO actualiza el registro local (solo lo hace con 200): si la primera cancelación se perdió, el CFDI puede seguir vigente en tu lista de Factura Digital.

Qué hacer: No hace falta volver a cancelar. Si en tu lista sigue como vigente, confírmalo con GET /api/v5/validator/cfdi y pide a soporte que lo actualice.

1202API v5

UUID previamente cancelado * La constancia de retenciones ya estaba cancelada ante el SAT.

HTTP 200 · POST /invoice/cancelretention

Cuándo pasa: La constancia de retenciones ya estaba cancelada. Llega en code, uuid_estatus y estatus_uuid con HTTP 200; la plataforma no actualiza el registro local con este código.

Qué hacer: No hace falta volver a cancelar.

203API v5

Folio Fiscal No Correspondiente al Emisor *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El UUID no pertenece al RFC que solicita la cancelación. Llega en code, uuid_estatus y estatus_uuid con HTTP 200.

Qué hacer: Revisa que el UUID sea de un CFDI emitido por el RFC de la cuenta (o del CSD que mandaste en cancelwithcsd).

1203API v5

UUID no corresponde al emisor * El UUID no corresponde al RFC del emisor que solicita la cancelación.

HTTP 200 · POST /invoice/cancelretention

Cuándo pasa: La constancia de retenciones no es del RFC de la cuenta. HTTP 200.

Qué hacer: Revisa el UUID: debe ser de una constancia emitida por el RFC de la cuenta.

204API v5

Folio Fiscal No Aplicable a Cancelación *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El SAT no admite la cancelación de ese UUID. Llega en code, uuid_estatus y estatus_uuid con HTTP 200.

Qué hacer: Consulta su estatus y si es cancelable con GET /api/v5/validator/cfdi (escancelable).

205API v5

Folio Fiscal No Aplicable a Cancelación * El sat da una prorroga de 48 hrs para que el comprobante aparezca con estatus Vigente posterior al envió por parte del Proveedor de Certificación de CFDI. Puede que algunos comprobantes no aparezcan al momento, es necesario esperar por lo menos 48 hrs.

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El SAT todavía no tiene registrado el UUID (típico con un CFDI recién timbrado). Llega en code, uuid_estatus y estatus_uuid con HTTP 200.

Qué hacer: Espera a que el CFDI aparezca como vigente en el SAT (hasta 48 h) y vuelve a cancelar.

1205API v5

UUID no existe * El SAT no encuentra la constancia. Si se acaba de timbrar, espera unos minutos y vuelve a intentar.

HTTP 200 · POST /invoice/cancelretention

Cuándo pasa: El SAT no encuentra la constancia de retenciones. HTTP 200.

Qué hacer: Si se acaba de timbrar, espera unos minutos y reintenta; si no, revisa el UUID.

206API v5

UUID no corresponde a un CFDI del Sector Primario *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: Respuesta del SAT para un UUID que no es del sector primario en una solicitud que lo requería. Llega en code, uuid_estatus y estatus_uuid con HTTP 200.

Qué hacer: Revisa el UUID y el tipo de comprobante que intentas cancelar.

207API v5

No se especificó el motivo de cancelación o el motivo no es valido *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El SAT no aceptó el motivo. Casi nunca llega: la API ya rechaza con 400 un motivo distinto de 01-04 antes del PAC. HTTP 200.

Qué hacer: Manda MOTIVO 01, 02, 03 o 04.

208API v5

Folio Sustitución invalido *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: Con motivo 01, el SAT no reconoce el UUID del folio de sustitución (tiene formato válido, pero no es un CFDI vigente que lo sustituya). HTTP 200.

Qué hacer: Revisa que FOLIOSUSTITUCION sea el UUID del CFDI nuevo, ya timbrado y vigente.

209API v5

Folio Sustitución no requerido *

HTTP 200 · POST /invoice/cancel

Cuándo pasa: Se mandó un folio de sustitución con un motivo que no es 01. En /cancel la API pasa FOLIOSUSTITUCION al PAC con cualquier motivo; cancelretention y cancelwithcsd solo lo mandan con 01. HTTP 200.

Qué hacer: Quita FOLIOSUSTITUCION si el motivo no es 01.

210API v5

La fecha de solicitud de cancelación es mayor a la fecha de declaración *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: El SAT no permite cancelar porque ya pasó el plazo ligado a la declaración. HTTP 200.

Qué hacer: Revisa con tu contador las opciones para ese CFDI; la API no puede forzar la cancelación.

211API v5

La fecha de solicitud de cancelación límite para factura global *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: Se pasó el plazo para cancelar una factura global. HTTP 200.

Qué hacer: Revisa con tu contador; la API no puede forzar la cancelación.

212API v5

Relación no valida o inexistente *

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: La relación entre el CFDI a cancelar y el que lo sustituye no es válida. HTTP 200.

Qué hacer: Revisa que el CFDI sustituto relacione al cancelado (CfdiRelacionados con TipoRelacion 04).

33API v5

CACFDI33 - Problemas con el xml. * CR1308 - Certificado revocado o caduco

HTTP 200 · POST /invoice/cancel, POST /invoice/cancelwithcsd, POST /invoice/cancelretention

Cuándo pasa: El PAC rechazó la solicitud de cancelación con un error propio. code es el número que trae el inicio de su mensaje, antes del primer guion ("CACFDI33 - …" da 33; un mensaje sin dígitos da 0); message es "<mensaje del PAC> * <detalle>" y msg_error / msg_error_detailt (en cancelretention msg_error_detail) traen cada parte. HTTP 200. El ejemplo (CR1308, certificado revocado) es el de la colección pública de Postman.

Qué hacer: Lee msg_error_detailt: casi siempre es el CSD (revocado, vencido o de otro RFC) o el UUID. Corrige y vuelve a cancelar.

0API v5

Error desconocido *

HTTP 200 · POST /invoice/cancelretention, POST /invoice/cancel, POST /invoice/cancelwithcsd

Cuándo pasa: En cancelretention, el PAC no respondió o su respuesta no se pudo leer: no hay excepción y la respuesta sale con code 0 y HTTP 200. En los tres métodos también llega code 0 cuando el PAC rechaza con un mensaje sin número al inicio.

Qué hacer: Consulta el estatus del UUID con GET /api/v5/validator/cfdi; si sigue vigente, vuelve a cancelar.

400-22API v5

The recipient parameter is invalid or empty.

HTTP 400 · POST /invoice/send

Cuándo pasa: El encabezado RECIPIENT falta o trae correos inválidos, o BCC trae alguno inválido: "The BCC parameter contains invalid email addresses." / "The recipient or BCC parameter is invalid.".

Qué hacer: Manda en RECIPIENT (y BCC si lo usas) correos válidos separados por coma.

625API v5

The UUID was not found or does not correspond to the requesting account.

HTTP 400 · POST /invoice/send

Cuándo pasa: El encabezado UUID falta, viene vacío o no es de un CFDI de esta cuenta en este entorno.

Qué hacer: Manda en el encabezado UUID el folio fiscal de un CFDI emitido por la cuenta de la llave.

500API v5

Could not queue the email.

HTTP 400 · POST /invoice/send, POST /selfservice/ticketstatus, POST /selfservice/ticketdelete

Cuándo pasa: Falla interna al encolar o enviar el correo. En selfservice: "The ticket status could not be updated; try again." / "The ticket could not be deleted; try again." (falló la base de datos a media operación; se deshizo).

Qué hacer: Reintenta en unos minutos; si persiste, avisa a soporte.

502-3API v5

Missing 'Type' parameter in the HEADERS. Possible values: I = Income, E = Expense, P = Payment, N = Payroll

HTTP 400 · GET /invoice/list, GET /invoice/listextended, GET /invoice/listbydaterange, GET /invoice/listreceived, GET /invoice/listwithfilters, GET /validator/lco, GET /validator/blacklist, GET /validator/cfdi, GET /validator/fiscalinfo, GET /selfservice/ticket, GET /catalog/customer

Cuándo pasa: Falta un parámetro obligatorio. En los listados van como encabezados (Type, Month, Year, Datefrom, Dateto, Startdate, Enddate; Filters en listwithfilters: "Missing 'Filters' parameter in the HEADERS. Please set an array like {field: value}"); en validator y selfservice/catalog GET van en la URL ("Missing parameter '<nombre>' in GET."); en fiscalinfo van como encabezados escritos exactamente Rfc, Nombre, Codigopostal y Regimen ("Missing parameter '<Nombre>' in HEADERS. (Please send it Capitalized).").

Qué hacer: Agrega el parámetro que dice el mensaje, con el nombre exacto y en el lugar indicado (encabezado o URL).

400-23API v5

Invalid 'Documentorigin' value in the HEADERS. Possible values: issued = documents issued by the account (excludes CFDIs received from suppliers), received = CFDIs received from suppliers (downloaded from the SAT), all = both (default).

HTTP 400 · GET /invoice/list, GET /invoice/listextended, GET /invoice/listwithfilters, GET /invoice/listbydaterange

Cuándo pasa: El encabezado opcional Documentorigin trae un valor distinto de issued, received o all.

Qué hacer: Manda issued, received o all, o quita el encabezado para recibir todo.

400-24API v5

Invalid filter field '<campo>'. Only columns of the documents listing can be used as filters.

HTTP 400 · GET /invoice/listwithfilters

Cuándo pasa: Un filtro del encabezado Filters usa un campo que no es columna del listado, o un operador no permitido: "Invalid filter operator '<operador>' for field '<campo>'. Allowed operators: =, !=, <, <=, >, >=, LIKE.".

Qué hacer: Usa solo columnas del listado (las de listextended) y los operadores =, !=, <, <=, >, >= o LIKE después del nombre del campo ("fecha >=").

5501API v5

La referencia del ticket no puede estar vacía.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: El ticket no trae Referencia, o tiene menos de 5 caracteres ("La referencia del ticket debe contener al menos 5 caracteres, los cuales pueden ser alfanuméricos."). También sale cuando el JSON no se pudo leer: todos los campos llegan vacíos y Referencia es el primero que se revisa.

Qué hacer: Manda Referencia con al menos 5 caracteres y revisa que el JSON sea válido.

5503API v5

El campo Fecha es requerido y no se encuentra en el JSON.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: Falta Fecha, o es anterior al horizonte de 13 meses: "La Fecha del ticket (<fecha>) es anterior al horizonte de retención de 13 meses (<AAAA-MM-01>). Tickets de esa antigüedad ya no se aceptan.".

Qué hacer: Manda la Fecha de la compra (AAAA-MM-DD) dentro de los últimos 13 meses.

5504API v5

El campo Moneda es requerido y no se encuentra en el JSON.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: Falta Moneda en el ticket.

Qué hacer: Manda Moneda (MXN, USD…).

5505API v5

El campo TipoCambio es requerido y no se encuentra en el JSON. Para Moneda MXN debes poner 1.000000, para otra moneda debes poner el tipo de cambio al dia.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: Falta TipoCambio en el ticket.

Qué hacer: Manda TipoCambio: 1.000000 para MXN o el tipo de cambio del día para otra moneda.

5506API v5

El campo Subtotal debe ser mayor a cero.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: Subtotal falta, es cero o no es un número.

Qué hacer: Manda Subtotal como número mayor que cero.

5507API v5

El campo Total debe ser mayor a cero.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: Total falta, es cero o no es un número.

Qué hacer: Manda Total como número mayor que cero.

520API v5

Ticket duplicado. Se omitió.

HTTP 400 · POST /selfservice/ticket

Cuándo pasa: La cuenta ya tiene un ticket con la misma Referencia y el mismo Total (la fecha no cuenta). No se guardó otro.

Qué hacer: Nada si es un reenvío: el ticket ya existe (consúltalo con GET /api/v5/selfservice/ticket). Si es otra compra, usa otra referencia.

400-25API v5

Non received 'referencia' in POST body.

HTTP 400 · POST /selfservice/ticketstatus, POST /selfservice/ticketdelete

Cuándo pasa: Faltan datos o no son válidos: también "Non received 'estatus' in POST body.", "The 'estatus' field should be numeric.", "The 'estatus' field should be between 1 and 6.", "The 'estatus' field cannot be 2 or 3 through the API: those statuses are set only when an invoice is issued (2 = invoiced by the customer, 3 = included in a global invoice)." y "Non received 'monto_total' in POST body.".

Qué hacer: Manda referencia y, según el método, estatus (1, 4, 5 o 6) o monto_total.

400-26API v5

Error: Ticket not found in <nombre de la cuenta>.

HTTP 400 · POST /selfservice/ticketstatus, POST /selfservice/ticketdelete, POST /selfservice/ticketcontabilizado

Cuándo pasa: No hay ticket de la cuenta con esa referencia (en ticketdelete, con esa referencia y ese monto_total). En ticketdelete, si hay un solo ticket y no se pudo borrar, el message es el motivo: "Error: Cant delete this ticket because has estatus <n>" o "Error: Cant delete this ticket right now: it is being invoiced (kiosk or global invoice). Try again later.".

Qué hacer: Revisa la referencia (y el monto). Un ticket facturado (estatus distinto de 1) no se puede borrar.

409-2API v5

Updated <n> of <m> ticket(s) with this referencia; <k> rejected (see tickets[].motivo).

HTTP 400 · POST /selfservice/ticketstatus, POST /selfservice/ticketdelete

Cuándo pasa: Hay varios tickets con esa referencia y algunos no se pudieron cambiar o borrar; los demás SÍ se aplicaron. tickets[] trae el resultado de cada uno (updated, unchanged, deleted o rejected) y su motivo, p. ej. "The ticket is already invoiced (estatus <n>) and cannot be changed through the API. Cancel its invoice first." o "The ticket is reserved for a global invoice that is being issued (or was issued); try again later.". En ticketdelete: "Deleted <n> of <m> ticket(s) with this referencia and monto_total; <k> rejected (see tickets[].motivo).".

Qué hacer: Revisa tickets[].motivo de los rechazados; reintenta solo los que dicen "try again later".

503-2API v5

The service is busy; try again in a few seconds.

HTTP 400 · POST /selfservice/ticketstatus, POST /selfservice/ticketdelete

Cuándo pasa: Otra operación de tickets de la misma cuenta (una factura global o el kiosko) tiene tomado el candado y no se liberó a tiempo. No se cambió nada.

Qué hacer: Reintenta en unos segundos.

404API v5

No se encuentra el ticket.

HTTP 200 · GET /selfservice/ticket, GET /selfservice/ticketlist, GET /selfservice/ticketlistdetailed

Cuándo pasa: La consulta no encontró tickets (en las listas: "No se encontraron tickets"). Llega con HTTP 200 y code "404" como texto. En ticket se busca por referencia, fecha y monto exactos.

Qué hacer: Revisa los filtros (referencia, fecha y monto exactos, o el rango de fechas y el estatus).

400-27API v5

Field 'nombre' is required in the BODY.

HTTP 400 · POST /catalog/customer, POST /catalog/supplier

Cuándo pasa: Falta nombre o rfc en el cuerpo: "Field 'rfc' is required in the BODY.".

Qué hacer: Manda nombre y rfc en el cuerpo.

400-28API v5

No se pueden crear cuentas con un RFC genérico (XAXX010101000 o XEXX010101000): lo comparten muchos clientes y no identifica a ninguno.

HTTP 400 · POST /catalog/customeruser

Cuándo pasa: La cuenta del portal de clientes se pidió con un RFC genérico, o con uno que no es RFC válido: "El RFC capturado no es un RFC válido: debe tener 12 caracteres (persona moral) o 13 (persona física), solo letras, números, Ñ o &, y una fecha real.".

Qué hacer: Usa el RFC real del cliente.

1API v5

Error, la cuenta ya está registrada.

HTTP 400 · POST /catalog/customeruser, POST /catalog/supplieruser

Cuándo pasa: Ya existe una cuenta del portal de clientes con ese RFC en la cuenta. En supplieruser: "Error, la cuenta <RFC> ya está registrada. RFC Encontrado: <RFC>, Nombre: <nombre>". Se revisa por RFC antes de ver el guid: actualizar por guid una cuenta con el mismo RFC también responde 1.

Qué hacer: No la vuelvas a crear; administra la cuenta existente desde Configuración › Portales.

404-2API v5

Customer not found.

HTTP 200 · GET /catalog/customer

Cuándo pasa: No hay cliente con ese guid en la cuenta. Llega con HTTP 200, code "404" (texto) y data null.

Qué hacer: Revisa el guid; es el que devolvió POST /api/v5/catalog/customer.

400-29API v5

The '<campo>' parameter is required in the body.

HTTP 400 · POST /account/create

Cuándo pasa: El alta de cuenta por partner trae un dato faltante o inválido. Otros textos: "The 'rfc' parameter is not a valid RFC.", "Generic RFCs (XAXX010101000, XEXX010101000) are not allowed.", "The 'rfc' parameter has an invalid check digit.", "The 'nombre' parameter exceeds the maximum length of 254 characters.", "The 'nombre' parameter contains characters that are not allowed.", "The 'correo' parameter is not a valid email address.", "The email domain is not allowed.", "The 'dom_codigopostal' parameter must be exactly 5 digits." y "The '<campo>' parameter exceeds the maximum length of <n> characters." (correo hasta 50).

Qué hacer: Corrige el campo que nombra el mensaje.

409-3API v5

The RFC is already registered on the platform.

HTTP 409 · POST /account/create

Cuándo pasa: Ya existe una cuenta con ese RFC, o perdiste una carrera contra otra alta simultánea del mismo RFC ("The account could not be created. Please try again." con 409).

Qué hacer: No la vuelvas a crear; si fue una carrera, verifica si la otra petición la creó.

403API v5

This account is not authorized to use this method.

HTTP 403 · POST /account/create

Cuándo pasa: La cuenta de la llave no está dada de alta como partner, o la IP no está en su lista autorizada. El mensaje es el mismo en los dos casos a propósito.

Qué hacer: Pide a Factura Digital el alta como partner y registra las IP desde donde llamas.

403-2API v5

Your account is not verified. The main user must be active with a confirmed email address.

HTTP 403 · POST /account/create

Cuándo pasa: El partner no cumple un requisito para crear cuentas. Otros textos: "Your account does not have a valid digital seal certificate (CSD). Upload a current CSD before creating accounts." e "Insufficient credits. A minimum balance of <n> credits is required to create accounts. Current balance: <saldo>.".

Qué hacer: Cumple el requisito que dice el mensaje: correo del usuario principal confirmado, CSD vigente o saldo mínimo de créditos.

429API v5

Too many failed attempts. Try again later.

HTTP 429 · POST /account/create, POST /account/csd

Cuándo pasa: Desde esa IP ya hubo 30 o más intentos con llave inválida en la última hora; ya no se registran ni se detallan.

Qué hacer: Corrige la llave y espera a que pase la hora.

429-2API v5

Too many certificate upload attempts. Try again later.

HTTP 429 · POST /account/csd, POST /account/create

Cuándo pasa: Límite de uso: 20 o más cargas de CSD de la cuenta en la última hora, o (en account/create) la cuota diaria de altas del partner: "Daily account creation quota reached (<n>). Try again tomorrow.".

Qué hacer: Espera a que pase la hora (CSD) o al día siguiente (altas).

500-2API v5

The account could not be created. Please try again.

HTTP 500 · POST /account/create, POST /account/csd

Cuándo pasa: Falla interna al crear la cuenta o al guardar el CSD ("The certificate could not be stored. Please try again."), o un error no previsto al leer el cuerpo ("The request could not be processed. Please try again."). Lo que se alcanzó a escribir se deshace.

Qué hacer: Reintenta; si persiste, avisa a soporte. En account/create confirma primero que la cuenta no se haya creado.

400-30API v5

El RFC proporcionado es inválido. Favor de verificar.

HTTP 400 · GET /validator/lrfc

Cuándo pasa: El RFC no tiene la estructura de un RFC (letras, fecha y homoclave). code llega como texto "400". Un RFC con estructura correcta pero fecha inexistente sale con code "401".

Qué hacer: Revisa el RFC: 12 caracteres (moral) o 13 (física).

400-31API v5

CFDI40143 - Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT.

HTTP 400 · GET /validator/fiscalinfo

Cuándo pasa: Los datos fiscales enviados (Rfc, Nombre, Codigopostal, Regimen) no pasan el timbrado de prueba. La respuesta trae type "RequestException", short "Wrong Data", sat_code (la clave antes del primer guion, p. ej. CFDI40143), message (DomicilioFiscalReceptor aparece como "DomicilioFiscalReceptor (Código Postal)") y old_balance = new_balance: no se cobró crédito del validador.

Qué hacer: Corrige el dato que indica sat_code (RFC, nombre exacto como en la constancia, código postal o régimen) y vuelve a validar.

201-2API v5

WARNING! This RFC is BLACKLISTED

HTTP 200 · GET /validator/blacklist

Cuándo pasa: El RFC está en la lista negra que guarda la plataforma; codestr "blacklisted" y data con el registro. Si está limpio: code "200", codestr "whitelisted", "This RFC is clean.". Las dos respuestas cobran un crédito del validador.

Qué hacer: Revisa data antes de operar con ese RFC.

200-2API v5

Successful Request.

HTTP 200 · /invoice/list*, POST /invoice/send, /account/*, /validator/*, /selfservice/*, /catalog/*

Cuándo pasa: Éxito de consultas y altas. Otros textos: "Email queued" / "Email sent successfully" (send), "Successful connection" (authorize), "<n> credits available." (balance), "Ticket created successfully", "La consulta se realizó exitosamente en el SAT" (validator/cfdi, con el resultado en sat_response), "The fiscal information provided is correct." (fiscalinfo, cobra un crédito del validador). En validator/cfdi, blacklist, selfservice y catalog GET, code llega como texto "200". relations responde sin code ni message.

Qué hacer: Nada.

CFDI40101CFDI 4.0

El campo Fecha no cumple con el patrón requerido.

Comprobante · Fecha

Validación: Este 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.

CFDI40102CFDI 4.0

El resultado de la digestión debe ser igual al resultado de la desencripción del sello.

Comprobante · Sello

Validación: Desencriptar el contenido de este atributo usando el certificado incluido en el atributo "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.

CFDI40103CFDI 4.0

Si existe el tipo de comprobante T, N o P el campo FormaPago no debe existir.

Comprobante · FormaPago

Validación: Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante.

CFDI40104CFDI 4.0

El campo FormaPago no contiene un valor del catálogo c_FormaPago.

Comprobante · FormaPago

Validación: Este atributo, debe contener un valor del catálogo c_FormaPago.

CFDI40105CFDI 4.0

El campo FormaPago no contiene el valor "99".

Comprobante · FormaPago

Validación: Este atributo debe contener el valor “99” cuando el atributo MetodoPago contenga el valor “PPD”.

CFDI40106CFDI 4.0

EL certificado no cumple con alguno de los valores permitidos.

Comprobante · Certificado

Validación: El atributo debe contener un archivo .cer válido.

CFDI40107CFDI 4.0

El valor de este campo SubTotal excede la cantidad de decimales que soporta la moneda.

Comprobante · SubTotal

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40108CFDI 4.0

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.

Comprobante · SubTotal

Validación: Cuando el TipoDeComprobante sea I, E o N, el importe registrado en el atributo debe ser igual al redondeo de la suma de los importes de los conceptos registrados.

CFDI40109CFDI 4.0

El TipoDeComprobante es T o P y el importe no es igual a 0, o cero con decimales.

Comprobante · SubTotal

Validación: Si el comprobante es T o P el importe debe ser 0, o cero con decimales.

CFDI40110CFDI 4.0

El valor registrado en el campo Descuento no es menor o igual que el campo Subtotal.

Comprobante · Descuento

Validación: El valor registrado debe ser menor o igual que el atributo Subtotal.

CFDI40111CFDI 4.0

El TipoDeComprobante no es I,E o N, y un concepto incluye el campo descuento.

Comprobante · Descuento

Validación: Cuando el TipoDeComprobante sea I, E o N y algún concepto incluya el atributo Descuento, debe existir este atributo y debe ser igual al redondeo de la suma de los atributos Descuento registrados en los conceptos; en otro caso se debe omitir este atributo.

CFDI40112CFDI 4.0

El valor del campo Descuento excede la cantidad de decimales que soporta la moneda.

Comprobante · Descuento

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40113CFDI 4.0

El campo Moneda no contiene un valor del catálogo c_Moneda.

Comprobante · Moneda

Validación: Este atributo, debe contener un valor del catálogo c_Moneda.

CFDI40114CFDI 4.0

El campo TipoCambio no tiene el valor "1" y la moneda indicada es MXN.

Comprobante · TipoCambio

Validación: Si este atributo es MXN, puede omitirse el atributo TipoCambio, pero si se incluye, debe tener el valor "1".

CFDI40115CFDI 4.0

El campo TipoCambio se debe registrar cuando el campo Moneda tiene un valor distinto de MXN y XXX.

Comprobante · TipoCambio

Validación: Este atributo es requerido cuando el atributo Moneda tenga un valor distinto de MXN y XXX.

CFDI40116CFDI 4.0

El campo TipoCambio no se debe registrar cuando el campo Moneda tiene el valor XXX.

Comprobante · TipoCambio

Validación: Este atributo no se debe registrar cuando el atributo Moneda tenga el valor XXX.

CFDI40117CFDI 4.0

El campo TipoCambio no cumple con el patrón requerido.

Comprobante · TipoCambio

Validación: Este atributo debe cumplir con el patrón [0-9]{1,18}(.[0-9]{1,6})?.

CFDI40118CFDI 4.0

Cuando el valor del campo TipoCambio se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion.

Comprobante · TipoCambio

Validación: Si el valor de este atributo 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.

CFDI40119CFDI 4.0

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.

Comprobante · Total

Validación: Atributo requerido para representar la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales y/o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos y/o locales.

CFDI40120CFDI 4.0

Cuando el valor del campo Total se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion.

Comprobante · Total

Validación: 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.

CFDI40121CFDI 4.0

El campo TipoDeComprobante, no contiene un valor del catálogo c_TipoDeComprobante.

Comprobante · TipoDeComprobante

Validación: Este atributo, debe contener un valor del catálogo c_TipoDeComprobante.

CFDI40122CFDI 4.0

El campo Exportacion contiene el valor "02", el CFDI debe contener el complemento para Comercio Exterior.

Comprobante · Exportacion

Validación: Atributo requerido para expresar si el comprobante ampara una operación de exportación.

CFDI40123CFDI 4.0

El campo Exportacion no contiene un valor del catálogo c_Exportacion.

Comprobante · Exportacion

Validación: Este atributo, debe contener un valor del catálogo c_Exportacion.

CFDI40124CFDI 4.0

El campo MetodoPago, no contiene un valor del catálogo c_MetodoPago.

Comprobante · MetodoPago

Validación: Este atributo, debe contener un valor del catálogo c_MetodoPago.

CFDI40125CFDI 4.0

Se debe omitir el campo MetodoPago cuando el TipoDeComprobante es T o P.

Comprobante · MetodoPago

Validación: Se debe omitir el atributo MetodoPago cuando el TipoDeComprobante es T o P.

CFDI40126CFDI 4.0

El campo LugarExpedicion, no contiene un valor del catálogo c_CodigoPostal.

Comprobante · LugarExpedicion

Validación: Este atributo, debe contener un valor del catálogo c_CodigoPostal.

CFDI40127CFDI 4.0

El campo Confirmacion no debe existir cuando los campos TipoCambio y/o Total están dentro del rango permitido.

Comprobante · Confirmacion

Validación: Este atributo no debe existir cuando los atributos TipoCambio y/o Total están dentro del rango permitido.

CFDI40128CFDI 4.0

Número de confirmación inválido.

Comprobante · Confirmacion

Validación: El Proveedor de Certificación debe verificar que el emisor le haya solicitado esta clave de confirmación.

CFDI40129CFDI 4.0

Número de confirmación utilizado previamente.

Comprobante · Confirmacion

Validación: El Proveedor de Certificación debe verificar que la clave de confirmación no se utilice en más de un comprobante.

CFDI40130CFDI 4.0

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.

cfdi:InformacionGlobal · Confirmacion

Validación: Este Nodo debe existir siempre que el atributo TipoDeComprobante sea “I”, y el atributo Rfc del nodo receptor contiene el valor "XAXX010101000" y el valor del atributo Nombre del nodo Receptor contiene el valor “PUBLICO EN GENERAL”.

CFDI40131CFDI 4.0

El campo Periodicidad, no contiene un valor del catálogo c_Periodicidad.

cfdi:InformacionGlobal · Periodicidad

Validación: Este atributo, debe contener un valor del catálogo c_Periodicidad

CFDI40132CFDI 4.0

El campo RegimenFiscal, no contiene el valor 621

cfdi:InformacionGlobal · Periodicidad

Validación: Cuando el valor de este atributo contenga la clave “05” el atributo RegimenFiscal debe contener el valor “621”.

CFDI40133CFDI 4.0

El campo Meses, no contiene un valor del catálogo c_Meses.

cfdi:InformacionGlobal · Meses

Validación: Este atributo, debe contener un valor del catálogo c_Meses

CFDI40134CFDI 4.0

El campo Meses, no contiene alguno de los valores “01”, “02”, “03”, “04”, “05”, “06”, “07”, “08”, “09”, “10”, “11” o "12".

cfdi:InformacionGlobal · Meses

Validación: Si el atributo Periodicidad contiene un valor diferente de “05”, este atributo debe contener alguno de los valores “01”, “02”, “03”, “04”, “05”, “06”, “07”, “08”, “09”, “10”, “11”, "12".

CFDI40135CFDI 4.0

El campo Meses, no contiene alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”.

cfdi:InformacionGlobal · Meses

Validación: Si el atributo Periodicidad contiene el valor “05”, este atributo debe contener alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”.

CFDI40136CFDI 4.0

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.

cfdi:InformacionGlobal · Año

Validación: Atributo requerido para expresar el año al que corresponde la información del comprobante global.

CFDI40137CFDI 4.0

El campo TipoRelacion, no contiene un valor del catálogo c_TipoRelacion.

cfdi:CfdiRelacionados · TipoRelacion

Validación: Este atributo, debe contener un valor del catálogo c_TipoRelacion.

CFDI40138CFDI 4.0

El campo Nombre del emisor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

cfdi:Emisor · Nombre

Validación: Este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

CFDI40139CFDI 4.0

El campo Nombre del emisor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Emisor.

cfdi:Emisor · Nombre

Validación: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Emisor.

CFDI40140CFDI 4.0

El campo RegimenFiscal, no contiene un valor del catálogo c_RegimenFiscal.

cfdi:Emisor · RegimenFiscal

Validación: Este atributo, debe contener un valor del catálogo c_RegimenFiscal.

CFDI40141CFDI 4.0

La clave del campo RegimenFiscal debe corresponder con el tipo de persona (fisica o moral).

cfdi:Emisor · RegimenFiscal

Validación: El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del emisor.

CFDI40142CFDI 4.0

El campo FacAtrAdquirente, no contiene un número de operación valido.

cfdi:Emisor · FacAtrAdquirente

Validación: Este atributo, debe contener el número de operación siempre que la respuesta del servicio del Validador de RFC para emitir facturas a través del adquirente, sea en sentido positivo.

CFDI40143CFDI 4.0

Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT.

cfdi:Receptor · Rfc

Validación: Cuando no se utilice un RFC genérico, el RFC debe estar en la lista de RFC inscritos no cancelados en el SAT.

CFDI40144CFDI 4.0

El campo Nombre del receptor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

cfdi:Receptor · Nombre

Validación: Este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

CFDI40145CFDI 4.0

El campo Nombre del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor.

cfdi:Receptor · Nombre

Validación: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Receptor.

CFDI40146CFDI 4.0

El campo RFC del receptor debe contener el valor "XAXX010101000".

cfdi:Receptor · Nombre

Validación: Si el valor registrado en este atributo es “PUBLICO EN GENERAL”, el valor del atributo RFC del receptor debe ser “XAXX010101000”.

CFDI40147CFDI 4.0

El campo DomicilioFiscalReceptor del receptor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

cfdi:Receptor · DomicilioFiscalReceptor

Validación: Este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

CFDI40148CFDI 4.0

El campo DomicilioFiscalReceptor del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor.

cfdi:Receptor · DomicilioFiscalReceptor

Validación: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Receptor.

CFDI40149CFDI 4.0

El campo DomicilioFiscalReceptor, no es igual al valor del campo LugarExpedicion.

cfdi:Receptor · DomicilioFiscalReceptor

Validación: Si el valor del atributo Rfc del receptor es "XAXX010101000" o "XEXX010101000", este atributo debe ser igual al valor del atributo LugarExpedicion.

CFDI40150CFDI 4.0

El campo ResidenciaFiscal, no contiene un valor del catálogo c_Pais.

cfdi:Receptor · ResidenciaFiscal

Validación: Este atributo, debe contener un valor del catálogo c_Pais.

CFDI40151CFDI 4.0

El RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional y existe el campo ResidenciaFiscal.

cfdi:Receptor · ResidenciaFiscal

Validación: Si el RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional, este atributo NO debe existir.

CFDI40152CFDI 4.0

El valor del campo ResidenciaFiscal no puede ser MEX.

cfdi:Receptor · ResidenciaFiscal

Validación: El valor del atributo no puede ser MEX.

CFDI40153CFDI 4.0

Se debe registrar un valor de acuerdo al catálogo c_Pais en el campo ResidenciaFiscal, cuando en el en el campo NumRegIdTrib se registre información.

cfdi:Receptor · ResidenciaFiscal

Validación: 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.

CFDI40154CFDI 4.0

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.

cfdi:Receptor · NumRegIdTrib

Validación: 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.

CFDI40155CFDI 4.0

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.

cfdi:Receptor · NumRegIdTrib

Validación: Si el RFC del receptor es un RFC genérico extranjero y el comprobante incluye el complemento de comercio exterior, debe existir este atributo.

CFDI40156CFDI 4.0

El campo NumRegIdTrib no cumple con el patrón correspondiente.

cfdi:Receptor · NumRegIdTrib

Validación: Este 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.

CFDI40157CFDI 4.0

El campo RegimenFiscalR, no contiene un valor del catálogo c_RegimenFiscal.

cfdi:Receptor · RegimenFiscalReceptor

Validación: Este atributo, debe contener un valor del catálogo c_RegimenFiscal.

CFDI40158CFDI 4.0

La clave del campo RegimenFiscalR debe corresponder con el tipo de persona (física o moral).

cfdi:Receptor · RegimenFiscalReceptor

Validación: El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del receptor.

CFDI40159CFDI 4.0

La clave del campo RegimenFiscalR no corresponde de acuerdo al RFC del receptor.

cfdi:Receptor · RegimenFiscalReceptor

Validación: Si el atributo Rfc del Receptor contiene el valor “XAXX010101000” o el valor “XEXX010101000” en este atributo se debe registrar la clave “616”

CFDI40160CFDI 4.0

El campo UsoCFDI, no contiene un valor del catálogo c_UsoCFDI.

cfdi:Receptor · UsoCFDI

Validación: Este atributo, debe contener un valor del catálogo c_UsoCFDI.

CFDI40161CFDI 4.0

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.

cfdi:Receptor · UsoCFDI

Validación: El valor que se registre en este atributo debe aplicar para el tipo de persona del receptor y el régimen correspondiente conforme al catálogo c_UsoCFDI.

CFDI40162CFDI 4.0

El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ.

cfdi:Conceptos/Concepto · ClaveProdServ

Validación: Este atributo, debe contener un valor del catálogo c_ClaveProdServ.

CFDI40163CFDI 4.0

No existe el complemento requerido para el valor de ClaveProdServ.

cfdi:Conceptos/Concepto · ClaveProdServ

Validación: Deben existir los complementos que señale el catálogo c_ClaveProdServ aplicables para este atributo.

CFDI40164CFDI 4.0

No está declarado el impuesto relacionado con el valor de ClaveProdServ.

cfdi:Conceptos/Concepto · ClaveProdServ

Validación: Deben existir los impuestos trasladados y/o retenidos que señale el catálogo c_ClaveProdServ aplicables para este atributo.

CFDI40165CFDI 4.0

El campo ClaveUnidad no contiene un valor del catálogo c_ClaveUnidad.

cfdi:Conceptos/Concepto · ClaveUnidad

Validación: Este atributo, debe contener un valor del catálogo c_ClaveUnidad.

CFDI40166CFDI 4.0

El valor del campo ValorUnitario debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.

cfdi:Conceptos/Concepto · ValorUnitario

Validación: El valor de este atributo debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.

CFDI40167CFDI 4.0

El valor del campo Importe no se encuentra entre el limite inferior y superior permitido.

cfdi:Conceptos/Concepto · Importe

Validación: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.

CFDI40168CFDI 4.0

El valor del campo Descuento no contiene la misma cantidad de decimales registrados en el campo Importe del concepto.

cfdi:Conceptos/Concepto · Descuento

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que se tengan registrados en el atributo Importe del concepto.

CFDI40169CFDI 4.0

El valor del campo Descuento es mayor que el campo Importe.

cfdi:Conceptos/Concepto · Descuento

Validación: El valor registrado debe ser menor o igual al atributo Importe.

CFDI40170CFDI 4.0

El campo ObjetoImp, no contiene un valor del catálogo c_ObjetoImp.

cfdi:Conceptos/Concepto · ObjetoImp

Validación: Este atributo, debe contener un valor del catálogo c_ObjetoImp.

CFDI40171CFDI 4.0

El nodo concepto, no contiene el nodo hijo Impuestos.

cfdi:Conceptos/Concepto · ObjetoImp

Validación: Si este atributo contiene el valor "02" el nodo hijo Impuestos del nodo concepto debe existir.

CFDI40172CFDI 4.0

El nodo hijo Impuestos del nodo Concepto, no debe existir.

cfdi:Conceptos/Concepto · ObjetoImp

Validación: Si este atributo contiene el valor "01", "03", "04" o "05", el nodo hijo Impuestos del nodo Concepto no debe existir.

CFDI40173CFDI 4.0

En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones.

cfdi:Conceptos/Concepto:Impuestos · Impuestos

Validación: En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones.

CFDI40174CFDI 4.0

El valor del campo Base que corresponde a Traslado debe ser mayor que cero.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · Base

Validación: El valor debe ser mayor que cero.

CFDI40175CFDI 4.0

El valor del campo Impuesto que corresponde a Traslado no contiene un valor del catálogo c_Impuesto.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · Impuesto

Validación: Este atributo, debe contener un valor del catálogo c_Impuesto.

CFDI40176CFDI 4.0

El valor del campo TipoFactor que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · TipoFactor

Validación: Este atributo, debe contener un valor del catálogo c_TipoFactor.

CFDI40177CFDI 4.0

Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Exento no se deben registrar los campos TasaOCuota ni Importe.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · TipoFactor

Validación: Si el valor registrado es Exento no se deben registrar los atributos TasaOCuota ni Importe.

CFDI40178CFDI 4.0

Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Tasa o Cuota, se deben registrar los campos TasaOCuota e Importe.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · TipoFactor

Validación: Si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuota e Importe.

CFDI40179CFDI 4.0

El valor del campo TasaOCuota que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · TasaOCuota

Validación: 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.

CFDI40180CFDI 4.0

El valor del campo Importe o que corresponde a Traslado no se encuentra entre el limite inferior y superior permitido.

cfdi:Conceptos/Concepto:Impuestos:Traslados/Traslado · Importe

Validación: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.

CFDI40181CFDI 4.0

El valor del campo Base que corresponde a Retención debe ser mayor que cero.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · Base

Validación: El valor debe ser mayor que cero.

CFDI40182CFDI 4.0

El valor del campo Impuesto que corresponde a Retención no contiene un valor del catálogo c_Impuesto.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · Impuesto

Validación: Este atributo, debe contener un valor del catálogo c_Impuesto.

CFDI40183CFDI 4.0

El valor del campo TipoFactor que corresponde a Retención no contiene un valor del catálogo c_TipoFactor.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · TipoFactor

Validación: Este atributo, debe contener un valor del catálogo c_TipoFactor.

CFDI40184CFDI 4.0

Si el valor registrado en el campo TipoFactor que corresponde a Retención debe ser distinto de Exento.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · TipoFactor

Validación: El valor registrado debe ser distinto de Exento.

CFDI40185CFDI 4.0

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.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · TasaOCuota

Validación: 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.

CFDI40186CFDI 4.0

El valor del campo Importe que corresponde a Retención no se encuentra entre el limite inferior y superior permitido.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · Importe

Validación: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.

CFDI40187CFDI 4.0

El valor registrado en el campo RfcACuentaTerceros, no se encuentra en la lista l_LCO.

cfdi:Conceptos/Concepto:ACuentaTerceros · RfcACuentaTerceros

Validación: Si el valor de este atributo, es distinto de “EXT990101NI1”, debe encontrarse en la lista l_LCO.

CFDI40188CFDI 4.0

El valor del campo RfcACuentaTerceros, debe ser diferente de los valores de los campos Rfc del Emisor y Receptor.

cfdi:Conceptos/Concepto:ACuentaTerceros · RfcACuentaTerceros

Validación: El valor registrado en este atributo deber ser diferente al valor registrado en los atributos Rfc de los nodos Emisor y Receptor.

CFDI40189CFDI 4.0

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”.

cfdi:Conceptos/Concepto:ACuentaTerceros · NombreACuentaTerceros

Validación: Si el valor del atributo RfcACuentaTerceros es distinto de “EXT990101NI1", 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”.

CFDI40190CFDI 4.0

El campo NombreACuentaTerceros, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del tercero.

cfdi:Conceptos/Concepto:ACuentaTerceros · NombreACuentaTerceros

Validación: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo ACuentaTerceros.

CFDI40191CFDI 4.0

El campo RegimenFiscalACuentaTerceros, no contiene un valor del catálogo c_RegimenFiscal.

cfdi:Conceptos/Concepto:ACuentaTerceros · RegimenFiscalACuentaTerceros

Validación: Este atributo, debe contener un valor del catálogo c_RegimenFiscal.

CFDI40192CFDI 4.0

El valor registrado en el atributo DomicilioFiscalACuentaTerceros, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

cfdi:Conceptos/Concepto:ACuentaTerceros · DomicilioFiscalACuentaTerceros

Validación: El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

CFDI40193CFDI 4.0

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".

cfdi:Conceptos/Concepto:ACuentaTerceros · DomicilioFiscalACuentaTerceros

Validación: El valor de este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo RfcACuentaTerceros del Nodo ACuentaTerceros, en caso de que el valor del atributo RfcACuentaTerceros sea "EXT990101NI1", el valor registrado en éste atributo debe ser igual al valor del atributo "LugarExpedicion".

CFDI40194CFDI 4.0

El número de pedimento es inválido.

cfdi:Conceptos/Concepto:InformacionAduanera · NumeroPedimento

Validación: Este atributo, debe cumplir con las reglas de validación definidas.

CFDI40195CFDI 4.0

El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.

cfdi:Conceptos/Concepto:InformacionAduanera · NumeroPedimento

Validación: El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.

CFDI40196CFDI 4.0

El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ.

cfdi:Conceptos/Concepto:Parte · ClaveProdServ

Validación: Este atributo, debe contener un valor del catálogo c_ClaveProdServ.

CFDI40197CFDI 4.0

El valor del campo ValorUnitario debe ser mayor que cero (0).

cfdi:Conceptos/Concepto:Parte · ValorUnitario

Validación: El valor de este atributo debe ser mayor que cero (0).

CFDI40198CFDI 4.0

El valor del campo Importe no se encuentra entre el limite inferior y superior permitido.

cfdi:Conceptos/Concepto:Parte · Importe

Validación: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.

CFDI40199CFDI 4.0

El número de pedimento es inválido.

cfdi:Conceptos/Concepto:Parte:InformacionAduanera · NumeroPedimento

Validación: Este atributo, debe cumplir con las reglas de validación definidas.

CFDI40200CFDI 4.0

El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.

cfdi:Conceptos/Concepto:Parte:InformacionAduanera · NumeroPedimento

Validación: El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.

CFDI40201CFDI 4.0

Cuando el TipoDeComprobante sea T o P, el elemento Impuestos no debe existir.

cfdi:Impuestos · Impuestos

Validación: Cuando el TipoDeComprobante sea T o P, este elemento no debe existir.

CFDI40202CFDI 4.0

El valor del campo TotalImpuestosRetenidos debe tener hasta la cantidad de decimales que soporte la moneda.

cfdi:Impuestos · TotalImpuestosRetenidos

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40203CFDI 4.0

El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion.

cfdi:Impuestos · TotalImpuestosRetenidos

Validación: El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Retencion.

CFDI40204CFDI 4.0

El valor del campo TotalImpuestosTrasladados debe tener hasta la cantidad de decimales que soporte la moneda.

cfdi:Impuestos · TotalImpuestosTrasladados

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40205CFDI 4.0

El valor del campo TotalImpuestosTrasladados no es igual a la suma de los importes registrados en el elemento hijo Traslado.

cfdi:Impuestos · TotalImpuestosTrasladados

Validación: El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Traslado.

CFDI40206CFDI 4.0

Debe existir el campo TotalImpuestosRetenidos.

cfdi:Impuestos:Retenciones · Retenciones

Validación: Debe existir el atributo TotalImpuestosRetenidos.

CFDI40207CFDI 4.0

El campo Impuesto no contiene un valor del catálogo c_Impuesto.

cfdi:Impuestos:Retenciones/Retencion · Impuesto

Validación: Es atributo, debe contener un valor del catálogo c_Impuesto.

CFDI40208CFDI 4.0

Debe haber sólo un registro por cada tipo de impuesto retenido.

cfdi:Impuestos:Retenciones/Retencion · Impuesto

Validación: Debe haber sólo un registro por cada tipo de impuesto retenido.

CFDI40209CFDI 4.0

Debe existir el campo TotalImpuestosRetenidos.

cfdi:Impuestos:Retenciones/Retencion · Importe

Validación: Debe existir el atributo TotalImpuestosRetenidos.

CFDI40210CFDI 4.0

El valor del campo Importe correspondiente a Retención debe tener hasta la cantidad de decimales que soporte la moneda.

cfdi:Impuestos:Retenciones/Retencion · Importe

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40211CFDI 4.0

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.

cfdi:Impuestos:Retenciones/Retencion · Importe

Validación: Debe ser igual al redondeo de la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al atributo impuesto de este elemento.

CFDI40212CFDI 4.0

Debe existir el campo TotalImpuestosTrasladados.

cfdi:Impuestos:Traslados · Traslados

Validación: Debe existir el atributo TotalImpuestosTrasladados, cuando existan conceptos con un TipoFactor distinto a Exento.

CFDI40213CFDI 4.0

Deben existir los campos Base, Impuesto y TipoFactor

cfdi:Impuestos:Traslados/Traslado · Traslado

Validación: En el caso de que sólo existan conceptos con TipoFactor Exento, en este nodo solo deben existir los atributos Base, Impuesto y TipoFactor.

CFDI40214CFDI 4.0

El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda.

cfdi:Impuestos:Traslados/Traslado · Base

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40215CFDI 4.0

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.

cfdi:Impuestos:Traslados/Traslado · Base

Validación: Debe ser igual al redondeo de la suma de los importes de los atributos Base 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.

CFDI40216CFDI 4.0

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.

cfdi:Impuestos:Traslados/Traslado · Base

Validación: En caso de que solo existan conceptos con TipoFactor Exento, la suma de este atributo debe ser igual al redondeo de la suma de los importes de los atributos Base registrados en los conceptos.

CFDI40217CFDI 4.0

El campo Impuesto no contiene un valor del catálogo c_Impuesto.

cfdi:Impuestos:Traslados/Traslado · Impuesto

Validación: Este atributo, debe contener un valor del catálogo c_Impuesto.

CFDI40218CFDI 4.0

Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.

cfdi:Impuestos:Traslados/Traslado · Impuesto

Validación: Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.

CFDI40219CFDI 4.0

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.

cfdi:Impuestos:Traslados/Traslado · TasaOCuota

Validación: 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.

CFDI40220CFDI 4.0

El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda.

cfdi:Impuestos:Traslados/Traslado · Importe

Validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.

CFDI40221CFDI 4.0

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.

cfdi:Impuestos:Traslados/Traslado · Importe

Validación: Debe ser 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 atributo impuesto de este elemento y la TasaOCuota del concepto sea igual al atributo TasaOCuota de este elemento.

CFDI40222CFDI 4.0

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.

Comprobante · Exportacion

Validación: Cuando el atributo Exportacion contenga la clave “01” o “03” del catálogo de CFDI c_Exportacion, el complemento de Comercio Exterior no debe existir.

CFDI140223CFDI 4.0

El valor registrado en el atributo RegimenFiscalACuentaTerceros es distinto a “616”.

cfdi:Conceptos/Concepto:ACuentaTerceros · RegimenFiscalACuentaTerceros

Validación: Si el atributo RfcACuentaTerceros contiene el valor “EXT990101NI1” en este atributo se debe registrar la clave “616”.

CFDI140224CFDI 4.0

El valor 001 (ISR) en el atributo "Impuesto" del nodo hijo “Retencion” del elemento “Retenciones” a nivel Concepto no debe existir.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · Impuesto

Validación: Si el RFC del emisor tiene la marca Retención con valor “1” en la lista de RFC inscritos no cancelados en el SAT, el atributo “RegimenFiscal” del Nodo Emisor, tiene el valor “626”, el atributo “Rfc” del Nodo “Emisor” tiene una longitud de 13 posiciones (persona física) y el atributo “Rfc” del Nodo “Receptor” tiene una longitud de 12 posiciones (persona moral). Puede existir el nodo “Retenciones” siempre que el atributo “Impuesto” del nodo “Retencion”, tenga un valor distinto de 001 (ISR).

CFDI140225CFDI 4.0

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.

cfdi:Conceptos/Concepto:Impuestos:Retenciones/Retencion · Impuesto

Validación: Si el RFC del emisor tiene la marca Retención con valor “2” en la lista de RFC inscritos no cancelados en el SAT, el atributo RegimenFiscal del Nodo Emisor tiene el valor 626, el atributo “Rfc” del Nodo “Emisor” tiene una longitud de 13 posiciones (persona física) y el atributo “Rfc” del Nodo “Receptor” tiene una longitud de 12 posiciones (persona moral). Debe existir el nodo “Retenciones” con al menos un nodo hijo “Retencion”, con el valor 001 (ISR) en el atributo “Impuesto” y en el atributo “TasaOCuota” se debe registrar el valor 0.0125.

CFDI140226CFDI 4.0

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.

cfdi:Conceptos/Concepto · ObjetoImp

Validación: Si este atributo contiene el valor “06" o “08", en el nodo hijo Impuestos del nodo Concepto no deben existir los nodos hijo “Retencion” y “Traslado” con el atributo “Impuesto” con el valor "002" y/o "003"; puede existir el nodo “Retenciones”, con al menos un nodo hijo “Retencion” con el valor "001" en el atributo “Impuesto”.

CFDI140227CFDI 4.0

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.

cfdi:Conceptos/Concepto · ObjetoImp

Validación: Si este atributo contiene el valor “07", en el nodo hijo Impuestos del nodo Concepto no deben existir los nodos hijo “Retencion” y “Traslado” con el atributo “Impuesto” con el valor "002"; puede existir el nodo “Retenciones”, con al menos un nodo hijo “Retencion” con el valor "001" en el atributo “Impuesto”; debe existir el nodo hijo “Traslado” con el valor "003" en el atributo “Impuesto” y puede existir el nodo hijo "Retencion" con el valor "003" en el atributo "Impuesto" .

CFDI140228CFDI 4.0

Cuando el TipoDeComprobante es "I" o "E" y el campo ClaveProdServ contiene cualquiera de las claves “15101505”, “15101514” o “15101515”, el CFDI debe contener el "Complemento Concepto para la facturación de Hidrocarburos y Petrolíferos".

cfdi:Conceptos/Concepto · ClaveProdServ

Validación: Cuando se registre cualquiera de las siguientes claves 15101505, 15101514 o 15101515 y el TipoDeComprobante sea “I” o “E, debe existir el ”Complemento Concepto para la facturación de Hidrocarburos y Petrolíferos” por cada nodo Concepto registrado.

CFDI140229CFDI 4.0

El valor registrado en el campo TipoDeComprobante es "N" y no existe el Complemento de Nómina.

Comprobante · TipoDeComprobante

Validación: Cuando el TipoDeComprobante sea “N” debe existir el "Complemento Nómina".

CFDI140230CFDI 4.0

El valor registrado en el campo TipoDeComprobante es "P" y no existe el Complemento para recepción de Pagos.

Comprobante · TipoDeComprobante

Validación: Cuando el TipoDeComprobante sea “P” debe existir el "Complemento para recepción de Pagos”.

CFDI40999CFDI 4.0

Error no clasificado.

Error no clasificado · No clasificado

Validación: Error no clasificado.

CRP20101Pagos 2.0

El valor del campo TipoDeComprobante debe ser "P"

Comprobante · TipoDeComprobante

Validación: El valor registrado debe ser P

CRP20102Pagos 2.0

El valor del campo Exportacion debe ser "01"

Comprobante · Exportacion

Validación: El valor registrado debe ser "01"

CRP20103Pagos 2.0

El valor del campo SubTotal debe ser cero "0".

Comprobante · SubTotal

Validación: El atributo SubTotal debe tener el valor "0".

CRP20104Pagos 2.0

El valor del campo Moneda debe ser "XXX".

Comprobante · Moneda

Validación: El atributo Moneda debe tener el valor "XXX".

CRP20105Pagos 2.0

El campo FormaPago no se debe registrar en el CFDI.

Comprobante · FormaPago

Validación: El atributo FormaPago no debe existir.

CRP20106Pagos 2.0

El campo MetodoPago no se debe registrar en el CFDI.

Comprobante · MetodoPago

Validación: El atributo MetodoPago no debe existir.

CRP20107Pagos 2.0

El campo CondicionesDePago no se debe registrar en el CFDI.

Comprobante · CondicionesDePago

Validación: El atributo CondicionesDePago no debe existir.

CRP20108Pagos 2.0

El campo Descuento no se debe registrar en el CFDI.

Comprobante · Descuento

Validación: El atributo Descuento no debe existir.

CRP20109Pagos 2.0

El campo TipoCambio no se debe registrar en el CFDI.

Comprobante · TipoCambio

Validación: El atributo TipoCambio no debe existir.

CRP20110Pagos 2.0

El valor del campo Total debe ser cero "0".

Comprobante · Total

Validación: El atributo Total debe tener el valor "0".

CRP20111Pagos 2.0

Solo debe existir un Concepto en el CFDI.

cfdi:Conceptos/Concepto · Total

Validación: El nodo Conceptos debe tener un solo concepto.

CRP20112Pagos 2.0

Si no existe el nodo AcuentaTerceros, no se deben registrar apartados dentro de Conceptos

cfdi:Conceptos/Concepto · Total

Validación: El nodo Conceptos no debe tener nodos hijo, solo cuando se trate del nodo AcuentaTerceros

CRP20113Pagos 2.0

El valor del campo ClaveProdServ debe ser "84111506".

cfdi:Conceptos/Concepto · ClaveProdServ

Validación: El atributo ClaveProdServ correspondiente a concepto debe tener el valor "84111506".

CRP20114Pagos 2.0

El campo NoIdentificacion no se debe registrar en el CFDI.

cfdi:Conceptos/Concepto · NoIdentificacion

Validación: El atributo NoIdentificacion no debe existir.

CRP20115Pagos 2.0

El valor del campo Cantidad debe ser "1".

cfdi:Conceptos/Concepto · Cantidad

Validación: El atributo Cantidad debe tener el valor "1".

CRP20116Pagos 2.0

El valor del campo ClaveUnidad debe ser "ACT".

cfdi:Conceptos/Concepto · ClaveUnidad

Validación: El atributo ClaveUnidad debe tener el valor "ACT".

CRP20117Pagos 2.0

El campo Unidad no se debe registrar en el CFDI.

cfdi:Conceptos/Concepto · Unidad

Validación: El atributo Unidad no debe existir.

CRP20118Pagos 2.0

El valor del campo Descripcion debe ser "Pago".

cfdi:Conceptos/Concepto · Descripcion

Validación: El atributo Descripcion debe tener el valor "Pago".

CRP20119Pagos 2.0

El valor del campo ValorUnitario debe ser cero "0".

cfdi:Conceptos/Concepto · ValorUnitario

Validación: El atributo ValorUnitario debe tener el valor "0".

CRP20120Pagos 2.0

El valor del campo Importe debe ser cero "0".

cfdi:Conceptos/Concepto · Importe

Validación: El atributo Importe debe tener el valor "0".

CRP20121Pagos 2.0

El campo Descuento no se debe registrar en el CFDI.

cfdi:Conceptos/Concepto · Descuento

Validación: El atributo Unidad no debe existir.

CRP20122Pagos 2.0

El valor del campo ObjetoImp debe ser "01".

cfdi:Conceptos/Concepto · ObjetoImp

Validación: El atributo ObjetoImp debe tener el valor "01"

CRP20123Pagos 2.0

No se debe registrar el apartado de Impuestos en el CFDI.

cfdi:Conceptos/Concepto:Impuestos · ObjetoImp

Validación: El nodo Impuestos no se debe registrar en el CFDI.

CRP20201Pagos 2.0

El valor del campo TotalRetencionesIVA no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos retenidos registrados en el elemento RetencionP donde el atributo ImpuestoP contenga el valor IVA por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalRetencionesIVA

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos retenidos registrados en el elemento RetencionP donde el atributo ImpuestoP contenga el valor IVA por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20202Pagos 2.0

El valor del campo TotalRetencionesISR no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos retenidos registrados en el elemento RetencionP donde el atributo ImpuestoP contenga el valor ISR por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalRetencionesISR

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos retenidos registrados en el elemento RetencionP donde el atributo ImpuestoP contenga el valor ISR por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20203Pagos 2.0

El valor del campo TotalRetencionesIEPS no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos retenidos registrados en el elemento RetencionP donde el atributo ImpuestoP contenga el valor IEPS por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalRetencionesIEPS

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos retenidos registrados en el elemento RetencionP donde el atributo ImpuestoP contenga el valor IEPS por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20204Pagos 2.0

El valor del campo TotalTrasladosBaseIVA16 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosBaseIVA16

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20205Pagos 2.0

El valor del campo TotalTrasladosImpuestoIVA16 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosImpuestoIVA16

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20206Pagos 2.0

El valor del campo TotalTrasladosBaseIVA8 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.080000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosBaseIVA8

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.080000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20207Pagos 2.0

El valor del campo TotalTrasladosImpuestoIVA8 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y TasaOCuotaP el valor 0.080000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosImpuestoIVA8

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y TasaOCuotaP el valor 0.080000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20208Pagos 2.0

El valor del campo TotalTrasladosBaseIVA0 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.000000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosBaseIVA0

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.000000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20209Pagos 2.0

El valor del campo TotalTrasladosImpuestoIVA0 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.000000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosImpuestoIVA0

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos ImporteP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.000000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20210Pagos 2.0

El valor del campo TotalTrasladosBaseExento no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA y en TipoFactorP el valor Exento, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · TotalTrasladosBaseExento

Validación: Debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA y en TipoFactorP el valor Exento, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20211Pagos 2.0

El valor del campo MontoTotalPagos no es igual al redondeo de la suma del resultado de multiplicar cada uno de los atributos Monto por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

Pagos · MontoTotalPagos

Validación: El valor de este atributo debe ser igual al redondeo de la suma del resultado de multiplicar cada uno de los atributos Monto por el valor registrado en el atributo TipoCambioP de cada nodo Pago.

CRP20212Pagos 2.0

El valor del campo FormaDePagoP debe ser distinto de "99".

Pagos/pago10:Pago · FormaDePagoP

Validación: El valor registrado debe ser diferente de 99.

CRP20213Pagos 2.0

El campo MonedaP debe ser distinto de "XXX"

Pagos/pago10:Pago · MonedaP

Validación: El atributo MonedaP debe ser diferente de "XXX".

CRP20214Pagos 2.0

El campo TipoCambioP se debe registrar.

Pagos/pago10:Pago · MonedaP

Validación: Si el atributo MonedaP es diferente de MXN, debe existir información en el atributo TipoCambioP.

CRP20215Pagos 2.0

El campo TipoCambioP debe contener el valor "1".

Pagos/pago10:Pago · MonedaP

Validación: Si el atributo MonedaP es MXN, se debe registrar el valor "1" en el atributo TipoCambioP.

CRP20216Pagos 2.0

Cuando el valor del campo TipoCambioP se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion

Pagos/pago10:Pago · TipoCambioP

Validación: Cuando el valor de este atributo se encuentre fuera de los límites establecidos, el emisor debe obtener de manera no automática una clave de confirmación para ratificar que el valor es correcto e integrarla al CFDI en el atributo CFDI:Confirmacion.

CRP20217Pagos 2.0

La suma de los valores registrados en el campo ImpPagado de los apartados DoctoRelacionado no es menor o igual que el valor del campo Monto.

Pagos/pago10:Pago · Monto

Validación: Cuando la moneda registrada en el Documento Relacionado sea igual a la del Pago, la suma de los valores registrados en el nodo DoctoRelacionado, atributo ImpPagado, debe ser menor o igual que el valor de este atributo. Al ser mismas monedas, no se calculan los márgenes de variación (límites inferior y superior) por efecto de redondeo.

CRP20218Pagos 2.0

El valor del campo Monto no es mayor que cero "0".

Pagos/pago10:Pago · Monto

Validación: Debe ser mayor a 0.

CRP20219Pagos 2.0

El valor del campo Monto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaP.

Pagos/pago10:Pago · Monto

Validación: Considerar que para el monto, se debe registrar el número de decimales de acuerdo al tipo de moneda expresado en el atributo MonedaP, esto de acuerdo con la publicación del catálogo que se encuentra en la página de internet del SAT, en su caso, las cantidades deben ser redondeadas para cumplir con el número de decimales establecidos.

CRP20220Pagos 2.0

Cuando el valor del campo Monto se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion

Pagos/pago10:Pago · Monto

Validación: Cuando el valor equivalente en MXN de este atributo exceda el límite establecido, el emisor debe obtener de manera no automática una clave de confirmación para ratificar que el importe es correcto e integrarla al CFDI en el atributo CFDI:Confirmacion. La clave de confirmación la asigna el PAC.

CRP20221Pagos 2.0

El campo RfcEmisorCtaOrd no se debe registrar.

Pagos/pago10:Pago · RfcEmisorCtaOrd

Validación: Cuando el valor del campo FormaDePagoP sea diferente a la clave 02, 03, 04, 05, 06, 28 y 29, entonces este atributo no debe existir.

CRP20222Pagos 2.0

El RFC del campo RfcEmisorCtaOrd no se encuentra en la lista de RFC.

Pagos/pago10:Pago · RfcEmisorCtaOrd

Validación: Cuando no se utilice el RFC genérico XEXX010101000, el RFC debe estar en la lista de RFC inscritos en el SAT.

CRP20223Pagos 2.0

El campo NomBancoOrdExt se debe registrar.

Pagos/pago10:Pago · NomBancoOrdExt

Validación: Cuando se utilice el RFC genérico XEXX010101000 en el campo RfcEmisorCtaOrd, entonces el campo NomBancoOrdExt debe ser requerido.

CRP20224Pagos 2.0

El campo CtaOrdenante no se debe registrar.

Pagos/pago10:Pago · CtaOrdenante

Validación: Cuando el valor del campo FormaDePagoP sea diferente a la clave 02, 03, 04, 05, 06, 28 y 29, entonces este atributo no debe existir.

CRP20225Pagos 2.0

El campo CtaOrdenante no cumple con el patrón requerido.

Pagos/pago10:Pago · CtaOrdenante

Validación: Si existe el atributo CtaOrdenante debe cumplir con el patrón especificado en el catálogo c_FormaPago

CRP20226Pagos 2.0

El campo CtaBeneficiario no cumple con el patrón requerido.

Pagos/pago10:Pago · CtaBeneficiario

Validación: Si existe el atributo CtaBeneficiario debe cumplir con el patrón especificado en el catálogo c_FormaPago

CRP20227Pagos 2.0

El campo RfcEmisorCtaBen no se debe registrar.

Pagos/pago10:Pago · RfcEmisorCtaBen

Validación: Cuando el valor del campo FormaDePagoP sea diferente a la clave 02, 03, 04, 05, 28 y 29, entonces este atributo no debe existir.

CRP20228Pagos 2.0

El campo CtaBeneficiario no se debe registrar.

Pagos/pago10:Pago · CtaBeneficiario

Validación: Cuando el valor del campo FormaDePagoP sea diferente a la clave 02, 03, 04, 05, 28 y 29, entonces este atributo no debe existir.

CRP20229Pagos 2.0

El campo TipoCadPago no se debe registrar.

Pagos/pago10:Pago · TipoCadPago

Validación: SI el valor del atributo FormaDePagoP es diferente a la clave 03, el atributo TipoCadPago no debe existir.

CRP20230Pagos 2.0

El campo CertPago se debe registrar.

Pagos/pago10:Pago · CertPago

Validación: Si existe el campo TipoCadPago es obligatorio registrar los campos "CertPago", "CadPago" y “SelloPago”.

CRP20231Pagos 2.0

El campo CertPago no se debe registrar.

Pagos/pago10:Pago · CertPago

Validación: Si no existe el campo TipoCadPago no se deben registrar los campos "CertPago", "CadPago" y “SelloPago”.

CRP20232Pagos 2.0

El campo CadPago se debe registrar.

Pagos/pago10:Pago · CadPago

Validación: Si existe el campo TipoCadPago es obligatorio registrar los campos "CertPago", "CadPago" y “SelloPago”.

CRP20233Pagos 2.0

El campo CadPago no se debe registrar.

Pagos/pago10:Pago · CadPago

Validación: Si no existe el campo TipoCadPago no se deben registrar los campos "CertPago", "CadPago" y “SelloPago”.

CRP20234Pagos 2.0

El campo SelloPago se debe registrar.

Pagos/pago10:Pago · SelloPago

Validación: Si existe el campo TipoCadPago es obligatorio registrar los campos "CertPago", "CadPago" y “SelloPago”.

CRP20235Pagos 2.0

El campo SelloPago no se debe registrar.

Pagos/pago10:Pago · SelloPago

Validación: Si no existe el campo TipoCadPago no se deben registrar los campos "CertPago", "CadPago" y “SelloPago”.

CRP20236Pagos 2.0

El valor del campo MonedaDR debe ser distinto de "XXX"

Pagos/pago10:Pago/pago10:DoctoRelacionado · MonedaDR

Validación: El atributo MonedaP debe ser diferente de "XXX".

CRP20237Pagos 2.0

El campo EquivalenciaDR se debe registrar.

Pagos/pago10:Pago/pago10:DoctoRelacionado · EquivalenciaDR

Validación: Si el valor del atributo MonedaDR es diferente al valor registrado en el atributo MonedaP, se debe registrar información en el atributo EquivalenciaDR.

CRP20238Pagos 2.0

El campo EquivalenciaDR debe contener el valor "1".

Pagos/pago10:Pago/pago10:DoctoRelacionado · EquivalenciaDR

Validación: Si el valor del atributo MonedaDR es igual al valor registrado en el atributo MonedaP en cada Documento Relacionado, se debe registrar el valor "1" en el atributo EquivalenciaDR.

CRP20239Pagos 2.0

El campo ImpSaldoAnt debe mayor a cero.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpSaldoAnt

Validación: Debe ser mayor a cero

CRP20240Pagos 2.0

El valor del campo ImpSaldoAnt debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpSaldoAnt

Validación: Considerar que para los importes registrados en los atributos “ImpSaldoAnt”, “ImpPagado” e “ImpSaldoInsoluto” de éste nodo, deben corresponder a la moneda registrada en el campo MonedaDR y ser redondeados hasta la cantidad de decimales que soporte.

CRP20241Pagos 2.0

El campo ImpPagado debe mayor a cero.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpPagado

Validación: Debe ser mayor a cero

CRP20242Pagos 2.0

El valor del campo ImpPagado debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpPagado

Validación: Considerar que para los importes registrados en los atributos “ImpSaldoAnt”, “ImpPagado” e “ImpSaldoInsoluto” de éste nodo, deben corresponder a la moneda registrada en el campo MonedaDR y ser redondeados hasta la cantidad de decimales que soporte.

CRP20243Pagos 2.0

El valor del campo ImpSaldoInsoluto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpSaldoInsoluto

Validación: Considerar que para los importes registrados en los atributos “ImpSaldoAnt”, “ImpPagado” e “ImpSaldoInsoluto” de éste nodo, deben corresponder a la moneda registrada en el campo MonedaDR y ser redondeados hasta la cantidad de decimales que soporte.

CRP20244Pagos 2.0

El campo ImpSaldoInsoluto debe ser mayor o igual a cero y calcularse con la suma de los campos ImpSaldoAnt menos el ImpPagado.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpSaldoInsoluto

Validación: Debe ser mayor o igual a 0 y debe calcularse de los atributos: ImpSaldoAnt menos el ImpPagado,

CRP20245Pagos 2.0

El campo ObjetoImpDR, debe tener un valor del catálogo c_ObjetoImp.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ObjetoImpDR

Validación: El atributo ObjetoImpDR debe tener un valor del catálogo c_ObjetoImp.

CRP20246Pagos 2.0

El nodo hijo ImpuestosDR del nodo DoctoRelacionado debe existir.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ObjetoImpDR

Validación: Si el valor del atributo ObjetoImpDR es “02” el nodo hijo ImpuestosDR del nodo DoctoRelacionado debe existir.

CRP20247Pagos 2.0

El nodo hijo de ImpuestosDR del nodo DoctoRelacionado, no debe existir.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ObjetoImpDR

Validación: Si este atributo contiene el valor "01", "03","04" o "05", el nodo hijo ImpuestosDR del nodo DoctoRelacionado, no debe existir.

CRP20248Pagos 2.0

En caso de utilizar el nodo Impuestos en un documento relacionado, se deben incluir impuestos de traslados y/o retenciones.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR · ObjetoImpDR

Validación: En caso de utilizar el nodo Impuestos en un DoctoRelacionado, se deben incluir impuestos de traslados y/o retenciones.

CRP20249Pagos 2.0

El valor del campo BaseDR que corresponde a Retención debe ser mayor que cero.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:RetencionesDR/RetencionDR · BaseDR

Validación: Debe ser mayor que cero.

CRP20250Pagos 2.0

El valor del campo ImpuestoDR que corresponde a Retención no contiene un valor del catálogo c_Impuesto.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:RetencionesDR/RetencionDR · ImpuestoDR

Validación: El atributo ImpuestoDR debe contener un valor del catálogo c_Impuesto.

CRP20251Pagos 2.0

El valor del campo TipoFactorDR que corresponde a Retención no contiene un valor del catálogo c_TipoFactor.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:RetencionesDR/RetencionDR · TipoFactorDR

Validación: El atributo TipoFactorDR debe contener un valor del catálogo c_TipoFactor.

CRP20252Pagos 2.0

El valor registrado en el campo TipoFactorDR que corresponde a Retención debe ser distinto de Exento.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:RetencionesDR/RetencionDR · TipoFactorDR

Validación: El valor registrado debe ser distinto de Exento.

CRP20253Pagos 2.0

El valor del campo TasaOCuotaDR que corresponde a Retención, no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:RetencionesDR/RetencionDR · TasaOCuotaDR

Validación: 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 ImpuestoDR y el factor debe corresponder con el atributo TipoFactorDR.

CRP20254Pagos 2.0

El valor del campo ImporteDR que corresponde a Retención no se encuentra entre el limite inferior y superior permitido.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:RetencionesDR/RetencionDR · ImporteDR

Validación: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.

CRP20255Pagos 2.0

El valor del campo BaseDR que corresponde a Traslado debe ser mayor que cero

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · BaseDR

Validación: El valor debe ser mayor que cero.

CRP20256Pagos 2.0

El valor del campo ImpuestoDR que corresponde a Traslado no contiene un valor del catálogo c_Impuesto.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · ImpuestoDR

Validación: El atributo ImpuestoDR debe contener un valor del catálogo c_Impuesto.

CRP20257Pagos 2.0

El valor del campo TipoFactorDR que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · TipoFactorDR

Validación: El atributo TipoFactorDR debe contener un valor del catálogo c_TipoFactor.

CRP20258Pagos 2.0

Si el valor registrado en el campo TipoFactorDR es Exento no se deben registrar los campos TasaOCuotaDR ni ImporteDR.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · TipoFactorDR

Validación: Si el valor registrado es Exento no se deben registrar los atributos TasaOCuotaDR ni ImporteDR.

CRP20259Pagos 2.0

Si el valor registrado en el campo TipoFactorDR que corresponde a Traslado es Tasa o Cuota, se deben registrar los campos TasaOCuotaDR e ImporteDR.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · TipoFactorDR

Validación: Si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuotaDR e ImporteDR.

CRP20260Pagos 2.0

El valor del campo TasaOCuotaDR que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · TasaOCuotaDR

Validación: 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 ImpuestoDR y el factor debe corresponder con el atributo TipoFactorDR.

CRP20261Pagos 2.0

El valor del campo ImporteDR o que corresponde a Traslado no se encuentra entre el limite inferior y superior permitido.

Pagos/pago10:Pago/pago10:DoctoRelacionado/ImpuestosDR:TrasladosDR/TrasladoDR · ImporteDR

Validación: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.

CRP20262Pagos 2.0

El campo ImpuestoP no contiene un valor del catálogo c_Impuesto.

Pagos/pago10:Pago/pago10:ImpuestosP:RetencionesP/RetencionP · ImpuestoP

Validación: El atributo ImpuestoP debe contener un valor del catálogo c_Impuesto.

CRP20263Pagos 2.0

Debe haber sólo un registro por cada tipo de impuesto retenido.

Pagos/pago10:Pago/pago10:ImpuestosP:RetencionesP/RetencionP · ImpuestoP

Validación: Debe haber sólo un registro por cada tipo de impuesto retenido.

CRP20264Pagos 2.0

Debe existir al menos uno de los campos TotalRetencionesIVA, TotalRetencionesISR, TotalRetencionesIEPS.

Pagos/pago10:Pago/pago10:ImpuestosP:RetencionesP/RetencionP · ImporteP

Validación: Deben existir al menos uno de los atributos TotalRetencionesIVA, TotalRetencionesISR, TotalRetencionesIEPS.

CRP20265Pagos 2.0

El campo ImporteP que corresponde a Retención, no es igual a la suma de los importes de los impuestos retenidos registrados en el documento relacionado donde el impuesto sea igual al campo ImpuestoP de este elemento.

Pagos/pago10:Pago/pago10:ImpuestosP:RetencionesP/RetencionP · ImporteP

Validación: Debe ser igual a la suma de los importes de los impuestos retenidos registrados en los documentos relacionados donde el impuesto sea igual al atributo ImpuestoP de este elemento.

CRP20266Pagos 2.0

Deben existir los campos BaseP, ImpuestoP y TipoFactorP

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · TrasladoP

Validación: En el caso de que sólo existan conceptos con TipoFactorDR Exento, en este nodo solo deben existir los atributos BaseP, ImpuestoP y TipoFactorP.

CRP20267Pagos 2.0

Debe existir al menos uno de los campos TotalTrasladosBaseIVA16 y/o TotalTrasladosBaseIVA8 y/o TotalTrasladosBaseIVA0 y/o TotalTrasladosBaseIVAExento.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · BaseP

Validación: Cuando en el atributo ImpuestoP del nodo TrasladoP se registre la clave 002 - IVA debe existir al menos uno de los atributos TotalTrasladosBaseIVA16, TotalTrasladosBaseIVA8, TotalTrasladosBaseIVA0, TotalTrasladosBaseIVAExento.

CRP20268Pagos 2.0

El campo BaseP que corresponde a Traslado, no es igual a la suma de los importes de las bases registrados en los documentos relacionados donde el impuesto del documento relacionado sea igual al campo ImpuestoP de este elemento y la TasaOCuotaDR del documento relacionado sea igual al campo TasaOCuotaP de este elemento.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · BaseP

Validación: El valor de este atributo debe ser igual a la suma de los importes de los atributos BaseDR registrados en los documentos relacionados donde el impuesto del documento relacionado sea igual al atributo ImpuestoP de este elemento y la TasaOCuotaDR del documento relacionado sea igual al atributo TasaOCuotaP de este elemento.

CRP20269Pagos 2.0

El importe del campo BaseP que corresponde a Traslado, no es igual a la suma de los importes de las bases registrados en los documentos relacionados.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · BaseP

Validación: En caso de que solo existan documentos relacionados con TipoFactorDR Exento, la suma de este atributo debe ser igual a la suma de los importes de los atributos BaseDR registrados en los documentos relacionados.

CRP20270Pagos 2.0

El campo ImpuestoP que corresponde a Traslado no contiene un valor del catálogo c_Impuesto.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · ImpuestoP

Validación: El atributo ImpuestoP debe contener un valor del catálogo c_Impuesto.

CRP20271Pagos 2.0

Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · ImpuestoP

Validación: Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.

CRP20272Pagos 2.0

El valor seleccionado debe corresponder a un valor del catálogo Tasa O Cuota donde la columna impuesto corresponda con el campo ImpuestoP y la columna factor corresponda con el campo TipoFactorP.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · TasaOCuotaP

Validación: El valor seleccionado debe corresponder a un valor del catálogo c_TasaOCuota donde la columna impuesto corresponda con el atributo ImpuestoP y la columna factor corresponda con el atributo TipoFactorP.

CRP20273Pagos 2.0

Deben existir al menos uno de los campos TotalTrasladosImpuestoIVA16, TotalTrasladosImpuestoIVA8, TotalTrasladosImpuestoIVA0 cuando existan conceptos con un TipoFactor distinto a Exento.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · ImporteP

Validación: Cuando en el atributo ImpuestoP del nodo TrasladoP se registre la clave 002 - IVA deben existir al menos uno de los atributos TotalTrasladosImpuestoIVA16, TotalTrasladosImpuestoIVA8, TotalTrasladosImpuestoIVA0 cuando existan conceptos con un TipoFactor distinto a Exento.

CRP20274Pagos 2.0

El campo ImporteP que corresponde a Traslado, no es igual a la suma de los importes de los impuestos registrados en el documento relacionado donde el impuesto del documento relacionado sea igual al campo ImpuestoP de este elemento y la TasaOCuotaP del documento relacionado sea igual al campo TasaOCuotaP de este elemento.

Pagos/pago10:Pago/pago10:ImpuestosP:TrasladosP/TrasladoP · ImporteP

Validación: El valor de este atributo debe ser igual a la suma de los importes de los atributos ImporteDR registrados en el documento relacionado donde el impuesto del documento relacionado sea igual al atributo ImpuestoP de este elemento y la TasaOCuotaDR del documento relacionado sea igual al atributo TasaOCuotaP de este elemento.

CRP20275Pagos 2.0

El valor del campo ImpPagado del nodo DoctoRelacionado no se encuentra entre el limite inferior y superior permitido.

Pagos/pago10:Pago/pago10:DoctoRelacionado · ImpPagado

Validación: Cuando la moneda registrada en el Documento Relacionado sea diferente a la del Pago, primero se debe calcular el margen de variación, es decir, el cálculo de los limites inferior y superior de cada importe pagado. El límite inferior se debe truncar y el límite superior se debe redondear, al número de decimales que soporte la moneda. Los límites inferior y superior se calculan de manera individual para cada importe pagado, y son cada uno de los importes pagados los que deben estar entre sus límites respectivos.

CRP20276Pagos 2.0

El valor del campo Monto no se encuentra entre el límite inferior y superior permitido.

Pagos/pago10:Pago · Monto

Validación: En el caso donde la suma de los atributos ImpPagado de cada documento relacionado convertido a la moneda del pago no sea menor o igual al atributo Monto en operaciones con diferentes divisas, se debe validar que el valor del atributo Monto sea mayor o igual al resultado de sumar los límites inferiores y menor o igual al resultado de sumar los límites superiores de cada ImpPagado calculados previamente.

CRP20277Pagos 2.0

El valor de EquivalenciaDR para la fórmula del cálculo del margen de variación debe ser “1.0000000000”.

Pagos/pago10:Pago/pago10:DoctoRelacionado · EquivalenciaDR

Validación: Cuando existan operaciones con más de un Documento relacionado en donde al menos uno de ellos contenga la misma moneda que la del Pago, para la fórmula en el cálculo del margen de variación se deben considerar 10 decimales en la EquivalenciaDR cuando el valor sea 1.

CRP20278Pagos 2.0

Cuando se registre el valor "06" o "08" en el campo ObjetoImpDR, el valor del campo ImpuestoDR de los nodos hijo RetencionDR y/o TrasladoDR del nodo DoctoRelacionado debe ser distinto de los valores "002" (IVA) y/o "003" (IEPS).

Pagos/pago10:Pago/pago10:DoctoRelacionado · ObjetoImpDR

Validación: Si este atributo contiene el valor "06" o "08", en el nodo hijo ImpuestosDR del nodo DoctoRelacionado no deben existir los nodos hijo RetencionDR y TrasladoDR con el valor "002" y/o "003" en el atributo ImpuestoDR, puede existir el nodo hijo RetencionDR con el valor "001" en el atributo ImpuestoDR.

CRP20279Pagos 2.0

Cuando se registre el valor “07" en el campo ObjetoImpDR, el valor del campo ImpuestoDR de los nodos hijo RetencionDR y/o TrasladoDR del nodo DoctoRelacionado debe ser distinto del valor "002" (IVA); debe existir al menos un nodo hijo TrasladoDR con el valor "003" (IEPS).

Pagos/pago10:Pago/pago10:DoctoRelacionado · ObjetoImpDR

Validación: Si este atributo contiene el valor “07", en el nodo hijo ImpuestosDR del nodo DoctoRelacionado no deben existir los nodos hijo RetencionDR y TrasladoDR con el valor "002" en el atributo ImpuestoDR; puede existir el nodo RetencionesDR, con al menos un nodo hijo RetencionDR con el valor "001" en el atributo ImpuestoDR; debe existir el nodo hijo TrasladoDR con el valor "003" en el atributo ImpuestoDR y puede existir el nodo hijo RetencionDR con el valor "003" en el atributo ImpuestoDR.

CRP20999Pagos 2.0

Error no clasificado.

Error no clasificado · No clasificado

Validación: Error no clasificado.

NOM1Nómina 1.2

El atributo Comprobante.Moneda no tiene el valor = “MXN”.

Validación: En el atributo Comprobante.Moneda se debe registrar el valor "MXN".

NOM2Nómina 1.2

El atributo Comprobante.TipoDeComprobante no tiene el valor = "N".

Validación: En el atributo Comprobante.TipoDeComprobante, se debe registrar la clave "N".

NOM3Nómina 1.2

El atributo Comprobante.Exportacion no tiene el valor = "01".

Validación: En el atributo Comprobante.Exportacion, se debe registrar la clave "01".

NOM4Nómina 1.2

El nodo Comprobante.InformacionGlobal, no debe existir.

Validación: El nodo Comprobante.InformacionGlobal, no debe existir.

NOM5Nómina 1.2

El atributo Nomina12:Emisor:Curp, no aplica para persona moral.

Validación: Si el atributo Comprobante.Emisor.Rfc, tiene longitud 12 (RFC de persona moral), entonces no debe existir el atributo Nomina12:Emisor:Curp.

NOM6Nómina 1.2

El atributo Nomina12:Emisor:Curp, aplica para persona física.

Validación: Si el atributo Comprobante.Emisor.Rfc tiene longitud 13, el atributo Nomina12:Emisor:Curp, debe existir.

NOM7Nómina 1.2

El atributo Comprobante.Emisor.FacAtrAdquirente, no debe existir.

Validación: El atributo Comprobante.Emisor.FacAtrAdquirente, no debe existir.

NOM8Nómina 1.2

El atributo Comprobante.Receptor.Rfc, debe ser de longitud 13.

Validación: El atributo Comprobante.Receptor.Rfc debe ser persona física.

NOM9Nómina 1.2

El atributo Comprobante.Receptor.Rfc, no está en la lista de RFC inscritos no cancelados en el SAT (l_RFC).

Validación: El atributo Comprobante.Receptor.Rfc debe estar en la lista de RFC inscritos no cancelados en el SAT (l_RFC).

NOM10Nómina 1.2

El atributo Comprobante.Receptor.Rfc registra el RFC genérico XAXX010101000, por lo que en el atributo Nomina12:Receptor:Curp, debe registrar la CURP del receptor fallecido.

Validación: Si el atributo Comprobante.Receptor.Rfc tiene registrado el RFC genérico XAXX010101000, el atributo Nomina12:Receptor:Curp, debe existir.

NOM11Nómina 1.2

El atributo Comprobante.Receptor.RegimenFiscalReceptor no tiene el valor = "605".

Validación: En el atributo Comprobante.Receptor.RegimenFiscalReceptor, se debe registrar la clave "605", aún y cuando el atributo Comprobante.Receptor.Rfc tenga registrado el RFC genérico XAXX010101000.

NOM12Nómina 1.2

El atributo Comprobante.Receptor.UsoCFDI no tiene el valor = "CN01".

Validación: En el atributo Comprobante.Receptor.UsoCFDI, se debe registrar la clave "CN01".

NOM13Nómina 1.2

El nodo Comprobante.Conceptos.Concepto, solo puede registrar un nodo concepto, sin elementos hijo.

Validación: El nodo Comprobante.Conceptos.Concepto, se debe registrar solo un nodo concepto sin elementos hijo.

NOM14Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.ClaveProdServ no tiene el valor = “84111505”.

Validación: El atributo Comprobante.Conceptos.Concepto.ClaveProdServ, se debe registrar la clave "84111505".

NOM15Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.NoIdentificacion, no debe existir.

Validación: El atributo Comprobante.Conceptos.Concepto.NoIdentificacion, no debe existir.

NOM16Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.Cantidad no tiene el valor = “1”.

Validación: El atributo Comprobante.Conceptos.Concepto.Cantidad, se debe registrar la clave “1”.

Aclaraciones: Se debe registrar el valor "1" sin decimales.

NOM17Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.ClaveUnidad no tiene el valor = “ACT”.

Validación: El atributo Comprobante.Conceptos.Concepto.ClaveUnidad, se debe registrar la clave “ACT”.

NOM18Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.Unidad, no debe existir.

Validación: El atributo Comprobante.Conceptos.Concepto.Unidad, no debe existir.

NOM19Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.Descripcion no tiene el valor = “Pago de nómina”.

Validación: El atributo Comprobante.Conceptos.Concepto.Descripcion, se debe registrar el valor “Pago de nómina”.

NOM20Nómina 1.2

El valor del atributo Comprobante.Conceptos.Concepto.ValorUnitario no coincide con la suma TotalPercepciones más TotalOtrosPagos.

Validación: El atributo Comprobante.Conceptos.Concepto,.ValorUnitario, se debe registrar la suma de los atributos TotalPercepciones más TotalOtrosPagos.

NOM21Nómina 1.2

El valor del atributo Comprobante.Conceptos.Concepto.Importe no coincide con la suma TotalPercepciones más TotalOtrosPagos.

Validación: El atributo Comprobante.Conceptos.Concepto.Importe, se debe registrar la suma de los atributos TotalPercepciones más TotalOtrosPagos.

NOM22Nómina 1.2

El valor del atributo Comprobante.Conceptos.Concepto.Descuento no es igual a el valor del campo Nomina12:TotalDeducciones.

Validación: El atributo Comprobante.Conceptos.Concepto.Descuento, se debe registrar el valor del campo Nomina12:TotalDeducciones.

NOM23Nómina 1.2

El atributo Comprobante.Conceptos.Concepto.ObjetoImp no tiene el valor = “01”.

Validación: El atributo Comprobante.Conceptos.Concepto.ObjetoImp, se debe registrar la clave “01”.

NOM24Nómina 1.2

El nodo Comprobante.Conceptos.Concepto.Impuestos, no debe existir.

Validación: El nodo Comprobante.Conceptos.Concepto.Impuestos, no debe existir.

NOM25Nómina 1.2

El nodo Comprobante.Conceptos.Concepto.ACuentaTerceros, no debe existir.

Validación: El nodo Comprobante.Conceptos.Concepto.ACuentaTerceros, no debe existir.

NOM26Nómina 1.2

El nodo Comprobante.Conceptos.Concepto.InformacionAduanera, no debe existir.

Validación: El nodo Comprobante.Conceptos.Concepto.InformacionAduanera, no debe existir.

NOM27Nómina 1.2

El nodo Comprobante.Conceptos.Concepto.CuentaPredial, no debe existir.

Validación: El nodo Comprobante.Conceptos.Concepto.CuentaPredial, no debe existir.

NOM28Nómina 1.2

El nodo Comprobante.Conceptos.Concepto.ComplementoConcepto, no debe existir.

Validación: El nodo Comprobante.Conceptos.Concepto.ComplementoConcepto, no debe existir.

NOM29Nómina 1.2

El nodo Comprobante.Conceptos.Concepto.Parte, no debe existir.

Validación: El nodo Comprobante.Conceptos.Concepto.Parte, no debe existir.

NOM30Nómina 1.2

El nodo Nomina no se puede utilizar dentro del elemento ComplementoConcepto.

Validación: El nodo Nomina se debe registrar como un nodo hijo del nodo Complemento en el CFDI.

NOM31Nómina 1.2

El nodo Nomina no tiene valores en TotalPercepciones y/o TotalOtrosPagos.

Validación: En el nodo Nomina, debe existir el atributo TotalPercepciones o TotalOtrosPagos, o ambos.

NOM32Nómina 1.2

El valor del atributo Nomina.TipoNomina no cumple con un valor del catálogo c_TipoNomina.

Validación: El atributo Nomina.TipoNomina debe ser una clave del catálogo c_TipoNomina.

NOM33Nómina 1.2

El valor del atributo tipo de periodicidad es "99".

Validación: Si el atributo Nomina.TipoNomina es ordinaria el tipo de periodicidad de pago debe ser distinta de la clave "99".

NOM34Nómina 1.2

El valor del atributo tipo de periodicidad no tiene el valor "99".

Validación: Si el atributo Nomina.TipoNomina es extraordinaria el tipo de periodicidad de pago debe ser la clave "99".

NOM35Nómina 1.2

El valor del atributo Nomina.FechaInicialPago no es menor o igual al valor del atributo FechaFinalPago.

Validación: El atributo Nomina.FechaInicialPago debe ser menor o igual al valor del atributo FechaFinalPago.

NOM36Nómina 1.2

El atributo Nomina.TotalPercepciones, no debe existir.

Validación: Si el nodo Percepciones no existe, el atributo Nomina.TotalPercepciones no debe existir.

NOM37Nómina 1.2

El valor del atributo Nomina.TotalPercepciones no coincide con la suma de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro del nodo Percepciones.

Validación: Si el nodo Percepciones existe, el valor de Nomina.TotalPercepciones debe ser igual a la suma de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro del nodo Percepciones.

NOM38Nómina 1.2

El atributo Nomina.TotalDeducciones, no debe existir.

Validación: Si el nodo Deducciones no existe, el atributo de Nomina.TotalDeducciones no debe existir.

NOM39Nómina 1.2

El valor del atributo Nomina.TotalDeducciones no coincide con la suma de los atributos TotalOtrasDeducciones más TotalImpuestosRetenidos del elemento Deducciones.

Validación: Si el nodo Deducciones existe, el valor de Nomina.TotalDeducciones debe ser igual a la suma de los atributos TotalOtrasDeducciones más TotalImpuestosRetenidos del elemento Deducciones.

NOM40Nómina 1.2

El valor del atributo Nomina.TotalOtrosPagos no está registrado o no coincide con la suma de los atributos Importe de los nodos nomina12:OtrosPagos:OtroPago.

Validación: Si el nodo OtrosPagos existe, el atributo Nomina.TotalOtrosPagos debe existir y su valor debe ser igual a la suma de los atributos Importe de los nodos nomina12:OtrosPagos:OtroPago.

NOM41Nómina 1.2

El atributo Nomina.Emisor.RfcPatronOrigen no está inscrito o bien, inscrito y sí cancelado en el SAT (l_RFC).

Validación: El atributo Nomina.Emisor.RfcPatronOrigen debe estar inscrito no cancelado en el SAT (l_RFC).

NOM42Nómina 1.2

El atributo Nomina.Emisor.RegistroPatronal se debe registrar.

Validación: Si el atributo TipoContrato está entre las claves del 01 al 08, el atributo Nomina.Emisor.RegistroPatronal debe existir.

NOM43Nómina 1.2

El atributo Nomina.Emisor.RegistroPatronal no se debe registrar.

Validación: Si el atributo TipoContrato tiene el valor 09, 10 o 99, el atributo Nomina.Emisor.RegistroPatronal no debe existir.

NOM44Nómina 1.2

El(Los) atributo(s) xxxxxx debe(n) existir.

Validación: Si el atributo Nomina.Emisor.RegistroPatronal existe, deben existir los atributos nomina12:Receptor: NumSeguridadSocial, nomina12:Receptor:FechaInicioRelLaboral, nomina12:Receptor:Antigüedad, nomina12:Receptor:RiesgoPuesto y nomina12:Receptor:SalarioDiarioIntegrado.

NOM45Nómina 1.2

El elemento Nomina.Emisor.EntidadSNCF debe existir.

Validación: Si el RFC del emisor existe en el listado de RFC inscritos no cancelados en el SAT (l_RFC) con marca de unidad adherida al Sistema Nacional de Coordinación Fiscal, el elemento Nomina.Emisor.EntidadSNCF debe existir.

NOM46Nómina 1.2

El elemento Nomina.Emisor.EntidadSNCF no debe existir.

Validación: Si el RFC del emisor existe en el listado de RFC inscritos no cancelados en el SAT (l_RFC) sin marca de unidad adherida al Sistema Nacional de Coordinación Fiscal, el elemento Nomina.Emisor.EntidadSNCF no debe existir.

NOM47Nómina 1.2

El valor del atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso no cumple con un valor del catálogo c_OrigenRecurso.

Validación: El atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso debe ser una clave del catálogo c_OrigenRecurso publicado en el Portal del SAT en Internet.

NOM48Nómina 1.2

El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio debe existir.

Validación: Si el valor registrado en el atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso corresponde a la clave "IM" (Ingresos Mixtos), el atributo MontoRecursoPropio debe existir.

NOM49Nómina 1.2

El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio no debe existir.

Validación: Si el valor registrado en el atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso es diferente a la clave "IM" (Ingresos Mixtos), el atributo MontoRecursoPropio no debe existir.

NOM50Nómina 1.2

El valor del atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio no es menor a la suma de los valores de los atributos TotalPercepciones y TotalOtrosPagos.

Validación: El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio debe ser menor que la suma de los valores de los atributos TotalPercepciones y TotalOtrosPagos.

NOM51Nómina 1.2

El valor del atributo Nomina.Receptor.TipoContrato no cumple con un valor del catálogo c_TipoContrato.

Validación: El atributo Nomina.Receptor.TipoContrato debe ser una clave del catálogo c_TipoContrato publicado en el Portal del SAT en Internet.

NOM52Nómina 1.2

El valor del atributo Nomina.Receptor.TipoJornada no cumple con un valor del catálogo c_TipoJornada.

Validación: El atributo Nomina.Receptor.TipoJornada debe ser una clave del catálogo de c_TipoJornada publicado en el Portal del SAT en Internet.

NOM53Nómina 1.2

El valor del atributo Nomina.Receptor.FechaInicioRelLaboral no es menor o igual al atributo a FechaFinalPago.

Validación: El atributo Nomina.Receptor.FechaInicioRelLaboral, debe ser menor o igual al atributo FechaFinalPago.

NOM54Nómina 1.2

El valor numérico del atributo Nomina.Receptor.Antigüedad no es menor o igual al cociente de (la suma del número de días transcurridos entre la FechaInicioRelLaboral y la FechaFinalPago más uno) dividido entre siete.

Validación: Si el atributo Nomina.Receptor.Antigüedad tiene el patrón P[1-9][0-9]{0,3}W, entonces el valor numérico del atributo Nomina.Receptor.Antigüedad, debe ser menor o igual al cociente de (la suma del número de días transcurridos entre la FechaInicioRelLaboral y la FechaFinalPago más uno) dividido entre siete.

NOM55Nómina 1.2

El valor del atributo Nomina.Receptor.Antigüedad. no cumple con el número de años, meses y días transcurridos entre la FechaInicioRelLaboral y la FechaFinalPago.

Validación: Si el atributo Nomina.Receptor.Antigüedad tiene el patrón P(([1-9][0-9]?Y)?([1-9]|1[012])M)?([0]|[1-9]|[12][0-9]|3[01])D, entonces el valor registrado debe corresponder con el número de años, meses y días transcurridos entre la FechaInicioRelLaboral y la FechaFinalPago.

NOM56Nómina 1.2

El valor del atributo Nomina.Receptor.TipoRegimen no cumple con un valor del catálogo c_TipoRegimen.

Validación: El atributo Nomina.Receptor.TipoRegimen debe ser una clave del catálogo de c_TipoRegimen publicado en el Portal del SAT en Internet.

NOM57Nómina 1.2

El valor del atributo Nomina.Receptor.TipoRegimen no es "02", "03" o "04".

Validación: Si el atributo TipoContrato tiene una clave entre los valores "01" y "08" del catálogo c_TipoContrato entonces el atributo Nomina.Receptor.TipoRegimen debe contener alguna de las siguientes claves "02", "03" o "04".

NOM58Nómina 1.2

El valor del atributo Nomina.Receptor.TipoRegimen no está entre "05" a "99".

Validación: Si el atributo TipoContrato tiene una clave "09" o superior, entonces el atributo Nomina.Receptor.TipoRegimen debe ser una clave "05" hasta el "99".

NOM59Nómina 1.2

El valor del atributo Nomina.Receptor.RiesgoPuesto no cumple con un valor del catálogo c_RiesgoPuesto.

Validación: El atributo Nomina.Receptor.RiesgoPuesto debe ser una clave del catálogo de c_RiesgoPuesto publicado en el Portal del SAT en Internet.

NOM60Nómina 1.2

El valor del atributo Nomina.Receptor.PeriodicidadPago no cumple con un valor del catálogo c_PeriodicidadPago.

Validación: El atributo Nomina.Receptor.PeriodicidadPago debe ser una clave del catálogo de c_PeriodicidadPago publicado en el Portal del SAT en Internet.

NOM61Nómina 1.2

El valor del atributo Nomina.Receptor.Banco no cumple con un valor del catálogo c_Banco.

Validación: El atributo Nomina.Receptor.Banco debe ser una clave del catálogo de c_Banco publicado en el Portal del SAT en Internet.

NOM62Nómina 1.2

El atributo Nomina.Receptor.CuentaBancaria no cumple con la longitud de 10, 11, 16 o 18 posiciones.

Validación: El atributo Nomina.Receptor.CuentaBancaria debe tener una longitud de 10, 11, 16 o 18 posiciones.

NOM63Nómina 1.2

El atributo Banco no debe existir.

Validación: Si se registra una cuenta CLABE (número con 18 posiciones), el atributo Banco no debe existir.

NOM64Nómina 1.2

El dígito de control del atributo CLABE no es correcto.

Validación: Si se registra una cuenta CLABE (número con 18 posiciones), se debe confirmar que el dígito de control es correcto.

NOM65Nómina 1.2

El atributo Banco debe existir.

Validación: Si se registra una cuenta de tarjeta de débito a 16 posiciones o una cuenta bancaria a 11 posiciones o un número de teléfono celular a 10 posiciones, debe existir el atributo Banco.

NOM66Nómina 1.2

El valor del atributo Nomina.Receptor.ClaveEntFed no cumple con un valor del catálogo c_Estado.

Validación: El valor del atributo Nomina.Receptor.ClaveEntFed debe ser una clave del catálogo de c_Estado, donde la clave de país es "MEX".

NOM67Nómina 1.2

El valor del atributo Nomina.Receptor.SubContratacion.RfcLabora no está en la lista de RFC (l_RFC).

Validación: El valor del atributo Nomina.Receptor.SubContratacion.RfcLabora debe existir en la lista de RFC inscritos no cancelados en el SAT (l_RFC).

NOM68Nómina 1.2

La suma de los valores registrados en el atributo Nomina.Receptor.SubContratacion.PorcentajeTiempo no es igual a 100.

Validación: La suma de los valores PorcentajeTiempo registrados en el atributo Nomina.Receptor.SubContratacion.PorcentajeTiempo debe ser igual a 100.

NOM69Nómina 1.2

La suma de los valores de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro no es igual a la suma de los valores de los atributos TotalGravado más TotalExento.

Validación: En el elemento Nomina.Percepciones, la suma de los valores de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro debe ser igual a la suma de los valores de los atributos TotalGravado más TotalExento.

NOM70Nómina 1.2

El valor del atributo Nomina.Percepciones.TotalSueldos, no es igual a la suma de los atributos ImporteGravado e ImporteExento donde la clave expresada en el atributo TipoPercepcion es distinta de "022", "023","025", "039" y "044".

Validación: El valor del atributo Nomina.Percepciones.TotalSueldos, debe ser igual a la suma de los atributos ImporteGravado e ImporteExento donde la clave expresada en el atributo TipoPercepcion sea distinta de "022", "023", "025", "039" y "044".

NOM71Nómina 1.2

El valor del atributo Nomina.Percepciones.TotalSeparacionIndemnizacion, no es igual a la suma de los atributos ImporteGravado e ImporteExento donde la clave en el atributo TipoPercepcion es igual a "022", "023" o "025".

Validación: El valor del atributo Nomina.Percepciones.TotalSeparacionIndemnizacion, debe ser igual a la suma de los atributos ImporteGravado e ImporteExento donde la clave expresada en el atributo TipoPercepcion sea igual a "022", "023" o "025".

NOM72Nómina 1.2

El valor del atributo Nomina.Percepciones.TotalJubilacionPensionRetiro, no es igual a la suma de los atributos ImporteGravado e importeExento donde la clave expresada en el atributo TipoPercepcion es igual a "039" o "044".

Validación: El valor del atributo Nomina.Percepciones.TotalJubilacionPensionRetiro, debe ser igual a la suma de los atributos ImporteGravado e importeExento donde la clave expresada en el atributo TipoPercepcion sea igual a "039" o "044".

NOM73Nómina 1.2

El valor del atributo Nomina.Percepciones.TotalGravado, no es igual a la suma de los atributos ImporteGravado de los nodos Percepcion.

Validación: El valor del atributo Nomina.Percepciones.TotalGravado, debe ser igual a la suma de los atributos ImporteGravado de los nodos Percepcion.

NOM74Nómina 1.2

El valor del atributo Nomina.Percepciones.TotalExento, no es igual a la suma de los atributos ImporteExento de los nodos Percepcion.

Validación: El valor del atributo Nomina.Percepciones.TotalExento, debe ser igual a la suma de los atributos ImporteExento de los nodos Percepcion.

NOM75Nómina 1.2

La suma de los importes de los atributos ImporteGravado e ImporteExento no es mayor que cero.

Validación: El valor del atributo Nomina.Percepciones.Percepcion.ImporteGravado, la suma de los importes de los atributos ImporteGravado e ImporteExento debe ser mayor que cero.

NOM76Nómina 1.2

El valor del atributo Nomina.Percepciones.Percepcion.TipoPercepcion no cumple con un valor del catálogo c_TipoPercepcion.

Validación: El valor del atributo Nomina.Percepciones.Percepcion.TipoPercepcion, debe ser una clave del catálogo de c_TipoPercepcion publicado en el Portal del SAT en Internet.

NOM77Nómina 1.2

El atributo TotalSueldos, debe existir, ya que la clave expresada en Nomina.Percepciones.Percepcion.TipoPercepcion es distinta de "022", "023", "025", "039" y "044".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es distinta de "022", "023", "025", "039" y "044", debe existir el atributo TotalSueldos.

NOM78Nómina 1.2

El atributo TotalSeparacionIndemnizacion y el elemento SeparacionIndemnizacion, deben existir, ya que la clave expresada en Nomina.Percepciones.Percepcion.TipoPercepcion es "022" o "023" o "025".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "022" o "023" o "025", debe existir el atributo TotalSeparacionIndemnizacion y el elemento SeparacionIndemnizacion.

NOM79Nómina 1.2

El atributo TotalJubilacionPensionRetiro y el elemento JubilacionPensionRetiro deben existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "039" o "044".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "039" o "044", debe existir el atributo TotalJubilacionPensionRetiro y el elemento JubilacionPensionRetiro, en caso contrario no deben existir.

NOM80Nómina 1.2

El atributo TotalUnaExhibicion debe existir y no deben existir TotalParcialidad, MontoDiario, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "039".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "039" debe existir TotalUnaExhibicion, no deben existir TotalParcialidad, MontoDiario.

NOM81Nómina 1.2

El atributo TotalUnaExhibicion no debe existir y deben existir TotalParcialidad, MontoDiario, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "044".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "044" no debe existir TotalUnaExhibicion, deben existir TotalParcialidad, MontoDiario.

NOM82Nómina 1.2

El elemento AccionesOTitulos debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "045".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "045", debe existir el elemento AccionesOTitulos, en caso contrario no debe existir.

NOM83Nómina 1.2

El elemento AccionesOTitulos no debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "045".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "045", no debe existir el elemento AccionesOTitulos.

NOM84Nómina 1.2

El elemento HorasExtra, debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "019".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "019", debe existir el elemento HorasExtra, en caso contrario no debe existir.

NOM85Nómina 1.2

El elemento HorasExtra, no debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "019".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "019", no debe existir el elemento HorasExtra.

NOM86Nómina 1.2

El nodo Incapacidades debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "014".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "014" el nodo Incapacidades debe existir.

NOM87Nómina 1.2

La suma de los campos ImporteMonetario no es igual a la suma de los valores ImporteGravado e ImporteExento de la percepción, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "014".

Validación: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "014" la suma de los campos ImporteMonetario debe ser igual a la suma de los valores ImporteGravado e ImporteExento de la percepción.

NOM88Nómina 1.2

El valor del atributo Nomina.Percepciones.Percepcion.HorasExtra.TipoHoras no cumple con un valor del catálogo c_TipoHoras.

Validación: El atributo Nomina.Percepciones.Percepcion.HorasExtra.TipoHoras debe ser una clave del catálogo de c_TipoHoras publicado en el Portal del SAT en Internet.

NOM89Nómina 1.2

Los atributos MontoDiario y TotalParcialidad no deben existir, ya que existe valor en Nomina.Percepciones.JubilacionPensionRetiro.TotalUnaExhibicion.

Validación: Si existe valor en el atributo Nomina.Percepciones.JubilacionPensionRetiro.TotalUnaExhibicion los atributos MontoDiario y TotalParcialidad no deben existir.

NOM90Nómina 1.2

El atributo MontoDiario debe existir y el atributo TotalUnaExhibicion no debe existir, ya que Nomina.Percepciones.JubilacionPensionRetiro.TotalParcialidad tiene valor.

Validación: Si existe valor en el atributo Nomina.Percepciones.JubilacionPensionRetiro.TotalParcialidad el atributo MontoDiario debe existir y el atributo TotalUnaExhibicion no debe existir.

NOM91Nómina 1.2

El valor en el atributo Nomina.Deducciones.TotalImpuestosRetenidos no es igual a la suma de los atributos Importe de las deducciones que tienen expresada la clave "002" en el atributo TipoDeduccion.

Validación: El valor en el atributo Nomina.Deducciones.TotalImpuestosRetenidos debe ser igual a la suma de los atributos Importe de las deducciones que tengan expresada la clave "002" en el atributo TipoDeduccion.

NOM92Nómina 1.2

El atributo Nomina.Deducciones.TotalImpuestosRetenidos no debe existir, ya que no existen deducciones con clave "002" en el atributo TipoDeduccion.

Validación: Si no existen deducciones con clave "002", el valor en el atributo Nomina.Deducciones.TotalImpuestosRetenidos no debe existir.

NOM93Nómina 1.2

El valor del atributo Nomina.Deducciones.Deduccion.TipoDeduccion no cumple con un valor del catálogo c_TipoDeduccion.

Validación: El valor de Nomina.Deducciones.Deduccion.TipoDeduccion debe ser una clave del catálogo de c_TipoDeduccion publicado en el Portal del SAT en Internet.

NOM94Nómina 1.2

Debe existir el elemento Incapacidades, ya que la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es "006".

Validación: Si la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es "006", debe existir el elemento Incapacidades.

NOM95Nómina 1.2

El atributo Deduccion:Importe no es igual a la suma de los nodos Incapacidad:ImporteMonetario, ya que la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es "006".

Validación: Si la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es "006", el atributo Deduccion:Importe debe ser igual a la suma de los nodos Incapacidad:ImporteMonetario.

NOM96Nómina 1.2

El atributo Nomina.Deducciones.Deduccion.Importe no es mayor que cero.

Validación: El valor del atributo Nomina.Deducciones.Deduccion.Importe debe ser mayor que cero.

NOM97Nómina 1.2

El valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago no cumple con un valor del catálogo c_TipoOtroPago.

Validación: El valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago debe ser una clave del catálogo de c_TipoOtroPago publicado en el Portal del SAT en Internet.

NOM98Nómina 1.2

El nodo CompensacionSaldosAFavor debe existir, ya que el valor de Nomina.OtrosPagos.OtroPago.TipoOtroPago es "004".

Validación: Si el valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago es "004" es obligatorio el nodo CompensacionSaldosAFavor.

NOM99Nómina 1.2

El nodo SubsidioAlEmpleo debe existir, ya que el valor de Nomina.OtrosPagos.OtroPago.TipoOtroPago es "002".

Validación: Si el valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago es "002" es obligatorio el nodo SubsidioAlEmpleo.

NOM100Nómina 1.2

El Importe del elemento OtroPago no es mayor que cero.

Validación: Si el valor del atributo TipoOtroPago es diferente a "002", este atributo Nomina.OtrosPagos.OtroPago.Importe debe ser mayor que cero.

NOM101Nómina 1.2

El valor del atributo Nomina.OtrosPagos.OtroPago.SubsidioAlEmpleo.SubsidioCausado no puede ser mayor que 407.02 ya que el valor de NumDiasPagados es menor o igual a 31.

Validación: El valor del atributo Nomina.OtrosPagos.OtroPago.SubsidioAlEmpleo.SubsidioCausado deberá ser menor o igual a 407.02 cuando el valor registrado en el atributo NumDiasPagados es menor o igual a 31.

NOM102Nómina 1.2

El valor del atributo Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.SaldoAFavor no es mayor o igual que el valor del atributo CompensacionSaldosAFavor:RemanenteSalFav.

Validación: El valor del atributo Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.SaldoAFavor debe ser mayor o igual que el valor del atributo CompensacionSaldosAFavor:RemanenteSalFav.

NOM103Nómina 1.2

El valor del atributo Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.Año no es igual al año inmediato anterior o al año en curso. Favor de considerar el valor del atributo FechaPago.

Validación: El valor del atributo Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.Año debe ser igual al año inmediato anterior o igual al año en curso siempre que el período de pago sea diciembre. Para determinar el año en curso se deberá considerar el atributo FechaPago.

NOM104Nómina 1.2

El valor del atributo Incapacidad.TipoIncapacidad no cumple con un valor del catálogo c_TIpoIncapacidad.

Validación: El valor del atributo Incapacidad.TipoIncapacidad debe ser una clave del catálogo de c_TIpoIncapacidad publicado en el Portal del SAT en Internet.

NOM105Nómina 1.2

El elemento OtroPago no contiene un atributo TipoOtroPago con la clave "002" o se registró junto con otro atributo TipoOtroPago con clave "007" o "008".

Validación: Si el valor del atributo Nomina.Receptor.TipoRegimen es "02" debe existir el campo TipoOtroPago con la clave "002", siempre que, no se haya registrado otro elemento OtroPago con el valor "007" o "008" en el atributo TipoOtroPago.

NOM106Nómina 1.2

En el atributo TipoOtroPago no deben registrarse las claves "002", "007" o "008" ya que en el atributo TipoRegimen no existe la clave "02".

Validación: Si en el atributo Nomina.Receptor.TipoRegimen existe una clave distinta a "02", el atributo TipoOtroPago no deberá contener la clave "002", "007" o "008".

NOM107Nómina 1.2

El Importe del elemento OtroPago no es menor o igual que el valor del atributo SubsidioCausado.

Validación: Si el valor del atributo TipoOtroPago es "002", este atributo Nomina.OtrosPagos.OtroPago.Importe debe ser menor o igual que el valor del atributo SubsidioCausado.

NOM108Nómina 1.2

El valor del atributo SubsidioCausado no puede ser mayor que el resultado de multiplicar el factor 13.39 por el valor del atributo NumDiasPagados.

Validación: El valor del atributo Nomina.OtrosPagos.OtroPago.SubsidioAlEmpleo.SubsidioCausado no debe ser mayor al resultado de multiplicar el factor de 13.39 por el valor registrado en el atributo NumDiasPagados, siempre que este último sea mayor que 31.

NOM109Nómina 1.2

Error no clasificado.

Validación: Otro error no documentado.

Aclaraciones: Si se identifica un error que no esté tipificado en los registros previos se mostrará este mensaje.

CP101Carta Porte 3.1

El valor registrado en este atributo es diferente a "4.0"

CFDI · Version

Validación: El valor registrado debe ser “4.0”.

CP102Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "T" o "I", o el valor registrado en el atributo "Comprobante:Subtotal" es diferente de cero.

CFDI · Subtotal

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “T”, que corresponde a la descripción de “Traslado”, el valor de este atributo debe ser igual a cero.

CP103Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "T" o el valor registrado en el atributo "Comprobante:Moneda" es diferente de "XXX".

CFDI · Moneda

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “T”, que corresponde a la descripción de “Traslado”, el valor de este atributo debe ser igual a “XXX”.

CP104Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "I" o el valor registrado en el atributo "Comprobante:Moneda" es igual a "XXX".

CFDI · Moneda

Validación: Si el atributo “Comprobante:TipoDeComprobante” contiene el valor “I” que corresponde a la descripción de “Ingreso”, el valor de este atributo debe ser diferente de “XXX”.

CP105Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "T" o "I", o el valor registrado en el atributo "Comprobante:Total" es diferente de cero.

CFDI · Total

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “T”, que corresponde a la descripción de “Traslado”, el valor de este atributo debe ser igual a cero.

CP106Carta Porte 3.1

El valor del atributo "Conceptos:Concepto:ObjetoImp" no contiene un valor del catálogo catCFDI:c_ObjetoImp, o no contiene un valor.

CFDI · ObjetoImp

Validación: El atributo debe contener un valor del catálogo catCFDI:c_ObjetoImp donde la clave corresponda con: • El valor “01”, No objeto de impuesto. • El valor “02”, Sí objeto de impuesto. • El valor “03”, Sí objeto de impuesto y no obligado al desglose. • El valor "04", Sí objeto del impuesto y no causa impuesto. • El valor "05", Sí objeto del impuesto, IVA crédito PODEBI. Cuando el valor sea "02", se deben desglosar los impuestos a nivel Concepto.

CP107Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "T" y el valor registrado en el atributo "Comprobante:Receptor:Rfc" es diferente al registrado en "Comprobante:Emisor:Rfc".

CFDI · Receptor:Rfc

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “T”, que corresponde a la descripción de “Traslado”, el valor de este atributo debe ser igual al registrado en el atributo “Comprobante:Emisor:Rfc”.

CP108Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "I", o el valor del atributo "Comprobante:Receptor:Rfc" no corresponde con el RFC genérico, o no se encuentra en la lista de RFC inscritos no cancelados del SAT (l_RFC).

CFDI · Receptor:Rfc

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “I”, que corresponde a la descripción de “Ingreso”, y no se utilice el RFC genérico, se podrá capturar el RFC del cliente, siempre y cuando éste se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC).

CP109Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante", es diferente de "I" o el valor registrado en el atributo "Conceptos:Concepto:ClaveProdServ" es diferente de alguna de las claves de servicio requeridas.

CFDI · Concepto:ClaveProdServ

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “I”, que corresponde a la descripción de “Ingreso”, se debe registrar alguna de las siguientes claves de servicio: 78101500, 78101501, 78101502, 78101503, 78101600, 78101601, 78101602, 78101603, 78101604, 78101700, 78101701, 78101702, 78101703, 78101704, 78101705, 78101706, 78101800, 78101801, 78101802, 78101803, 78101804, 78101806, 78101807, 78101900, 78101901, 78101902, 78101903, 78101904, 78101905, 78102200, 78102201, 78102203, 78102204, 78102205, 78121603, 78141500, 78141501, 84121806, 92121800, 92121801 o 92121802.

CP110Carta Porte 3.1

El valor del atributo "Comprobante:TipoDeComprobante", es diferente de "I", o el valor registrado en el atributo "Conceptos:Concepto:ClaveProdServ", es diferente de alguna de las claves relacionadas con el transporte intermodal o existe un solo nodo de transporte.

CFDI · Concepto:ClaveProdServ

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “I”, que corresponde a la descripción de “Ingreso” y se registre alguna de las siguientes claves de productos relacionadas con el transporte de carga intermodal: 78101900, 78101901, 78101902, 78101903 o 78101904. En el complemento Carta Porte debe existir más de uno de los siguientes nodos: • "Mercancias:Autotransporte", • “Mercancias:TransporteMaritimo", • "Mercancias:TransporteAereo", • "Mercancias:TransporteFerroviario".

CP111Carta Porte 3.1

El valor registrado en el atributo "Receptor:UsoCFDI", es distinto de "S01" - "Sin efectos fiscales".

CFDI · Receptor:UsoCFDI

Validación: Cuando el atributo "Comprobante:TipoDeComprobante" contenga el valor "T", que corresponde a la descripción de "Traslado", el valor de este atributo debe ser igual a “S01” con descripción “Sin efectos fiscales.” para CFDI 4.0 y posteriores.

CP112Carta Porte 3.1

El nodo "CartaPorte" no se registró como nodo hijo del nodo complemento del CFDI o existe más de uno.

CartaPorte · CartaPorte

Validación: El nodo "CartaPorte" se debe registrar como un nodo hijo del nodo Complemento en el CFDI y solo debe existir uno.

CP113Carta Porte 3.1

El complemento registrado de manera adicional, no corresponde con los complementos con los cuales puede coexistir.

CartaPorte · CartaPorte

Validación: Este complemento puede coexistir con los siguientes complementos: Timbre Fiscal Digital, Comercio Exterior, Persona Física Integrante de Coordinado, Impuestos locales, Leyendas Fiscales y aquellos complementos Concepto en los que se defina su relación con este complemento.

CP114Carta Porte 3.1

El valor registrado en el atributo "Comprobante:TipoDeComprobante" es diferente de "I" o "T".

CartaPorte · CartaPorte

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” sea distinto de "I" o "T", este complemento no debe existir.

CP115Carta Porte 3.1

El valor registrado en este atributo es diferente a "3.1"

CartaPorte · Version

Validación: El valor registrado en este atributo debe ser igual a "3.1".

CP116Carta Porte 3.1

El nodo "CartaPorte:RegimenesAduaneros" no debe existir cuando el atributo "CartaPorte:TranspInternac" tiene un valor distinto de "SÍ"

CartaPorte · RegimenesAduaneros

Validación: Cuando el atributo “TranspInternac” contenga el valor “Sí”, este nodo debe existir, en caso contrario se debe omitir.

CP117Carta Porte 3.1

El atributo "RegimenesAduaneros:RegimenAduaneroCCP:RegimenAduanero" contiene un valor del catálogo catCartaPorte:c_RegimenAduanero y el atributo "EntradaSalidaMerc" esta vacío.

CartaPorte · RegimenesAduaneros:RegimenAduaneroCCP:RegimenAduanero

Validación: Cuando el atributo “EntradaSalidaMerc” contenga un valor, este atributo debe existir y contener un valor del catálogo catCartaPorte:c_RegimenAduanero.

CP118Carta Porte 3.1

El valor registrado no coincide con alguno de los valores del catálogo catCartaPorte:c_RegimenAduanero para una importación.

CartaPorte · RegimenesAduaneros:RegimenAduaneroCCP:RegimenAduanero

Validación: Cuando el atributo "CartaPorte:EntradaSalidaMerc" contenga el valor "Entrada", este atributo debe contener un valor del catálogo catCartaPorte:c_RegimenAduanero donde la columna ImpoExpo contenga el valor "Entrada" o "Salida,Entrada".

CP119Carta Porte 3.1

El valor registrado en el atributo "CartaPorte:TranspInternac" es igual a "Sí" y no se registra el atributo "CartaPorte:EntradaSalidaMerc" con información.

CartaPorte · EntradaSalidaMerc

Validación: Cuando el atributo “CartaPorte:TranspInternac” contenga el valor “Sí”, se debe capturar información en este atributo.

CP120Carta Porte 3.1

El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "No" y se registra el atributo "CartaPorte:EntradaSalidaMerc" con información.

CartaPorte · EntradaSalidaMerc

Validación: Si el atributo “CartaPorte:TranspInternac” contiene el valor “No”, este atributo no debe existir.

CP121Carta Porte 3.1

El valor registrado en el atributo "CartaPorte:TranspInternac" es igual a "Sí" y el valor registrado en el atributo "CartaPorte:PaisOrigenDestino" no corresponde con alguna de las claves del catálogo catCFDI:c_Pais o no contiene valor alguno.

CartaPorte · PaisOrigenDestino

Validación: Cuando el atributo “CartaPorte:TranspInternac” contenga el valor “Sí”, este atributo debe contener un valor del catálogo catCFDI:c_Pais, que corresponda al país de origen o destino de las mercancías que se están trasladando en los distintos medios de transporte.

CP122Carta Porte 3.1

El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "No" y se registró información en el atributo "CartaPorte:PaisOrigenDestino".

CartaPorte · PaisOrigenDestino

Validación: Si el atributo “CartaPorte:TranspInternac” contiene el valor “No”, este atributo no debe existir.

CP123Carta Porte 3.1

El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "Sí" y el valor registrado en el atributo "CartaPorte:ViaEntradaSalida" no corresponde con alguna de las claves del catálogo catCartaPorte:c_CveTransporte o no se registró valor alguno.

CartaPorte · ViaEntradaSalida

Validación: Cuando en el atributo “CartaPorte:TranspInternac” se registre el valor “Sí”, este atributo debe contener una clave del catálogo catCartaPorte:c_CveTransporte, que corresponda al medio de transporte en el que se están trasladando los bienes y/o mercancías.

CP124Carta Porte 3.1

El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "No" y se registra el atributo "CartaPorte:ViaEntradaSalida" con información.

CartaPorte · ViaEntradaSalida

Validación: Si el atributo “CartaPorte:TranspInternac” contiene el valor “No”, este atributo no debe existir.

CP125Carta Porte 3.1

No se registró valor alguno en el atributo "CartaPorte:TotalDistRec" o se registró un nodo diferente a "Autotransporte" o "TransporteFerroviario".

CartaPorte · TotalDistRec

Validación: El atributo "CartaPorte:TotalDistRec" debe contener un valor siempre que existan los nodos “Mercancias:Autotransporte” o “Mercancias:TransporteFerroviario”, en caso contrario este atributo no debe existir.

CP126Carta Porte 3.1

El valor registrado no coincide con la suma de los atributos "Ubicaciones:Ubicación:DistanciaRecorrida".

CartaPorte · TotalDistRec

Validación: El valor registrado en el atributo "CartaPorte:TotalDistRec" deberá corresponder con la suma de los atributos "Ubicaciones:Ubicacion:DistanciaRecorrida", siempre que exista el atributo “Ubicaciones:Ubicacion:TipoUbicacion” con valor “Destino”.

CP127Carta Porte 3.1

Los atributos UbicacionPoloOrigen y UbicacionPoloDestino no deben existir cuando no se registre un valor en el atributo "CartaPorte:RegistroISTMO".

CartaPorte · UbicacionPoloOrigen UbicacionPoloDestino

Validación: Cuando se registre el el valor “Sí” en el atributo "CartaPorte:RegistroISTMO", los atributos UbicacionPoloOrigen y UbicacionPoloDestino deben existir y contener un valor. Cuando el atributo "CartaPorte:RegistroISTMO" no contenga un valor , los atributos "UbicacionPoloOrigen" y "UbicacionPoloDestino" no deben existir.

CP128Carta Porte 3.1

No existe el nodo "Ubicaciones:Ubicacion" con el atributo "Ubicaciones:Ubicacion:TipoUbicacion" que contenga el valor "Origen".

CartaPorte · Ubicaciones:Ubicacion

Validación: Cuando se registre el nodo “Mercancias:TransporteFerroviario”, debe existir al menos un nodo “Ubicaciones:Ubicacion”, donde el atributo “Ubicaciones:Ubicacion:TipoUbicacion” contenga el valor “Origen”.

CP129Carta Porte 3.1

No se registraron los 5 nodos "Ubicaciones:Ubicacion" donde el atributo "Ubicaciones:Ubicacion:TipoUbicacion" contenga el valor "Destino".

CartaPorte · Ubicaciones:Ubicacion

Validación: Cuando se registre el nodo “Mercancias:TransporteFerroviario”, deben existir al menos 5 nodos “Ubicaciones:Ubicacion”, donde el atributo “Ubicaciones:Ubicacion:TipoUbicacion” contenga el valor “Destino”.

CP130Carta Porte 3.1

El número de nodos de "Ubicaciones:Ubicacion" es menor a "2", o no existe al menos un atributo “Ubicaciones:Ubicacion:TipoUbicacion” con el valor "Origen" y "Destino", respectivamente.

CartaPorte · Ubicaciones:Ubicacion

Validación: Cuando exista alguno de los nodos “Mercancias:Autotransporte”, “Mercancias:TransporteMaritimo” o “Mercancias:TransporteAereo”, deben existir al menos 2 nodos “Ubicaciones:Ubicacion”, donde existan los atributos “Ubicaciones:Ubicacion:TipoUbicacion” uno con el valor “Origen” y otro con el valor “Destino”.

CP131Carta Porte 3.1

No existe el atributo "Ubicacion:IDUbicacion" o está vacío, y se registró el nodo “Mercancias:Mercancia:CantidadTransporta”.

CartaPorte · Ubicacion:IDUbicacion

Validación: Cuando exista el nodo “Mercancias:Mercancia:CantidadTransporta”, se debe registrar este atributo, en caso contrario se puede omitir.

CP132Carta Porte 3.1

El valor registrado en el atributo "Ubicaciones:Ubicacion:RFCRemitenteDestinatario" es incorrecto o no se encuentra en la lista de RFC inscritos no cancelados del SAT (l_RFC).

CartaPorte · Ubicacion:RFCRemitenteDestinatario

Validación: Cuando el valor registrado en este atributo no sea un RFC genérico, el RFC debe encontrarse en la lista del RFC inscritos no cancelados del SAT (l_RFC).

CP133Carta Porte 3.1

No se registró el atributo "Ubicacion:RFCRemitenteDestinatario" o no contiene un valor.

CartaPorte · Ubicacion:NumRegIdTrib

Validación: Cuando el valor registrado en el atributo “Ubicaciones:Ubicacion:RFCRemitenteDestinatario” sea el RFC genérico extranjero (XEXX010101000), este atributo debe contener un valor, en caso contrario se debe omitir.

CP134Carta Porte 3.1

No existe información en el atributo "Ubicacion:NumRegIdTrib", la clave registrada en el atributo "Ubicacion:ResidenciaFiscal" no existe en el catálogo catCFDI:c_Pais o el valor registrado es igual a "MEX".

CartaPorte · Ubicacion:ResidenciaFiscal

Validación: Este atributo debe existir siempre que el atributo “Ubicaciones:Ubicacion:NumRegIdTrib” contenga un valor, en caso contrario se debe omitir. La clave registrada en este atributo debe encontrarse en el catálogo catCFDI:c_Pais y debe ser distinta a “MEX”.

CP135Carta Porte 3.1

No debe existir información en el atributo "Ubicacion:NumEstacion", siempre que se registre el nodo “Mercancias:Autotransporte”.

CartaPorte · Ubicacion:NumEstacion

Validación: Cuando exista el nodo “Mercancias:Autotransporte”, este atributo se debe omitir.

CP136Carta Porte 3.1

El valor registrado en el atributo "Ubicacion:NumEstacion" contiene un valor no permitido o el valor registrado no corresponde con alguna de las claves "02","03" o "04".

CartaPorte · Ubicacion:NumEstacion

Validación: Este atributo debe contener un valor de la columna “Clave identificación” del catálogo catCartaPorte:c_Estaciones donde la columna “Clave transporte” corresponda con: • El valor “02”, cuando exista el nodo “Mercancias:TransporteMaritimo”. • El valor “03”, cuando exista el nodo “Mercancias:TransporteAereo”. • El valor “04”, cuando exista el nodo “Mercancias:TransporteFerroviario”.

CP137Carta Porte 3.1

El atributo "Ubicacion:NombreEstacion" no contiene un valor o no corresponde con una clave del catálogo catCartaPorte:_Estaciones.

CartaPorte · Ubicacion:NombreEstacion

Validación: Cuando el atributo “Ubicaciones:Ubicacion:NumEstacion” contenga un valor, este atributo debe existir y la descripción debe corresponder con el catálogo catCartaPorte:c_Estaciones, en caso contrario se debe omitir.

CP138Carta Porte 3.1

La descripción "Extranjera" no es un valor válido para el nombre de la estación.

CartaPorte · Ubicacion:NombreEstacion

Validación: Cuando el atributo “Ubicacion:NumEstacion”, sea la referida a una extranjera, se debe registrar el nombre de dicha estación y no la descripción contenida en el catálogo.

CP139Carta Porte 3.1

No se registró información en el atributo "Ubicacion:NavegacionTrafico" o se registró información en dicho atributo y no existe el nodo "Mercancias:TransporteMaritimo".

CartaPorte · Ubicacion:NavegacionTrafico

Validación: Cuando exista el nodo “Mercancias:TransporteMaritimo”, este atributo debe contener un valor, en caso contrario se debe omitir.

CP140Carta Porte 3.1

No se registró una clave en el atributo “Ubicacion:TipoEstacion” o no corresponde con el catálogo catCartaPorte:c_TipoEstacion, o se registró el nodo "Mercancias:Autotransporte" y este atributo “Ubicacion:TipoEstacion” no debe existir, o el valor registrado en el atributo “Ubicacion:NumEstacion”, corresponde a una estación extranjera.

CartaPorte · Ubicacion:TipoEstacion

Validación: Cuando la clave registrada en el atributo “Ubicaciones:Ubicacion:NumEstacion”, corresponda a una estación extranjera, este atributo no debe existir; en caso contrario y siempre que exista alguno de los siguientes nodos “Mercancias:TransporteFerroviario”, “Mercancias:TransporteMaritimo” o “Mercancias:TransporteAereo”, se debe registrar una clave del catálogo catCartaPorte:c_TipoEstacion.

CP141Carta Porte 3.1

No existe el atributo "Ubicacion:DistanciaRecorrida" o no contiene un valor, o se registró dicho atributo cuando existe el nodo “Mercancias:Autotransporte” o “Mercancias:TransporteFerroviario” cuando el atributo “Ubicación:TipoUbicacion” contiene el valor "Origen".

CartaPorte · Ubicacion:DistanciaRecorrida

Validación: Este atributo debe existir cuando se registre alguno de los siguientes nodos “Mercancias:Autotransporte” o “Mercancias:TransporteFerroviario”, y el atributo “Ubicaciones:Ubicación:TipoUbicacion” contenga el valor “Destino”; en caso contrario se debe omitir.

CP142Carta Porte 3.1

El nodo "Ubicacion:Domicilio" no debe existir cuando el valor registrado en el atributo “Ubicacion:TipoEstacion” sea igual a "02" y exista el nodo "Mercancias:TransporteFerroviario".

CartaPorte · Ubicacion:Domicilio

Validación: Cuando exista el nodo “Mercancias:TransporteFerroviario” y en el atributo “Ubicaciones:Ubicacion:TipoEstacion”, se registre el valor “02” con descripción “Intermedia”, este nodo no debe existir; en caso contrario se debe registrar la información correspondiente en dicho nodo.

CP143Carta Porte 3.1

El atributo "Ubicaciones:Ubicación:Domicilio:Colonia" no contiene una clave del catálogo de catCFDI:c_Colonia cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Ubicaciones:Ubicacion:Domicilio:CodigoPostal", o este está vacío.

CartaPorte · Ubicacion:Domicilio:Colonia

Validación: Cuando la clave del país sea distinta a "MEX", se debe registrar texto libre, en caso contrario en el atributo se debe registrar un valor en el atributo “Ubicaciones:Ubicacion:Domicilio:Colonia”, debe contener una clave del catálogo catCFDI:c_Colonia, donde la columna “c_CodigoPostal”, debe ser igual a la clave registrada en el atributo “Ubicaciones:Ubicacion:Domicilio:CodigoPostal”.

CP144Carta Porte 3.1

El atributo "Ubicaciones:Ubicación:Domicilio:Localidad" no contiene una clave del catálogo de catCFDI:c_Localidad cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Ubicaciones:Ubicacion:Domicilio:Estado", o este está vacío.

CartaPorte · Ubicacion:Domicilio:Localidad

Validación: Cuando el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Pais” sea "MEX", este atributo debe contener un valor del catálogo catCFDI:c_Localidad, donde la columna c_Estado, coincida con el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Estado”, en caso contrario puede registrar texto libre.

CP145Carta Porte 3.1

El atributo "Ubicaciones:Ubicación:Domicilio:Municipio" no contiene una clave del catálogo de catCFDI:c_Municipio cuando la clave del país es "MEX" o la clave registrada no corresponde con el atributo "Ubicaciones:Ubicacion:Domicilio:Estado", o este está vacío.

CartaPorte · Ubicacion:Domicilio:Municipio

Validación: Cuando la clave del país sea distinta a "MEX", se debe registrar texto libre; en caso contrario se debe registrar un valor en el atributo “Ubicaciones:Ubicacion:Domicilio:Municipio” debe contener una clave del catálogo catCFDI:c_Municipio, donde la columna “c_Estado”, debe ser igual a la clave registrada en el atributo “Ubicaciones:Ubicacion:Domicilio:Estado”.

CP146Carta Porte 3.1

El atributo "Ubicaciones:Ubicación:Domicilio:Estado" no contiene una clave del catálogo de cat:CFDI:c_Estado cuando la clave del país es "MEX", "USA" o "CAN". o la clave registrada no corresponde con el valor del atributo "Ubicaciones:Ubicacion:Domicilio:Pais", o este está vacío.

CartaPorte · Ubicacion:Domicilio:Estado

Validación: Cuando el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Pais” sea "MEX”, “USA” o “CAN", este atributo debe contener un valor del catálogo catCFDI:c_Estado, donde la columna “c_Pais”, coincida con el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Pais”, en caso contrario se debe registrar texto libre.

CP147Carta Porte 3.1

El atributo "Ubicaciones:Ubicacion:Domicilio:CodigoPostal" no contiene una clave del catálogo de catCFDI:c_CodigoPostal cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Ubicaciones:Ubicacion:Domicilio:Estado", "Ubicaciones:Ubicacion:Domicilio:Municipio" y "Ubicaciones:Ubicacion:Domicilio:Localidad"; o este está vacío.

CartaPorte · Ubicacion:Domicilio:CodigoPostal

Validación: Cuando el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Pais” sea "MEX”, este atributo debe contener un valor del catálogo catCFDI:c_CodigoPostal, donde: • La clave de la columna “c_Estado”, debe coincidir con el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Estado”, • Cuando se registre un valor en el atributo Ubicaciones:Ubicacion:Domicilio:Municipio”, este valor debe corresponder a la clave de la columna de clave “c_Municipio”. • Cuando se registre un valor en el atributo "Ubicaciones:Ubicacion:Domicilio:Localidad”, este valor debe corresponder a la clave de la columna de clave “c_Localidad”. En caso contrario se debe registrar texto libre.

CP148Carta Porte 3.1

No se registró el nodo "Mercancias:Mercancia" o no existe alguno de los siguientes nodos: "Mercancias:Autotransporte", "Mercancias:TransporteMaritimo", "Mercancias:TransporteAereo" o "Mercancias:TransporteFerroviario"; o dicho nodos están vacíos.

CartaPorte · Mercancias

Validación: Se debe validar que al menos se registre un nodo “Mercancias:Mercancia” y alguno de los siguientes nodos: • "Mercancias:Autotransporte", • “Mercancias:TransporteMaritimo", • "Mercancias:TransporteAereo", • "Mercancias:TransporteFerroviario".

CP149Carta Porte 3.1

El atributo "Mercancias:PesoBrutoTotal" no existe o el valor de este atributo no corresponde a la suma de los atributos "Mercancias:Mercancia:PesoEnKg".

CartaPorte · Mercancias:PesoBrutoTotal

Validación: El valor registrado en este atributo debe ser igual a la suma de los atributos “Mercancias:Mercancia:PesoEnKg” siempre que existan alguno de los siguientes nodos: • "Mercancias:Autotransporte", • "Mercancias:TransporteAereo", • "Mercancias:TransporteFerroviario".

CP150Carta Porte 3.1

El atributo "Mercancias:PesoBrutoTotal" no existe o el valor de este atributo no corresponde a la suma de los atributos "DetalleMercancia:PesoBruto" por cada nodo “Mercancias:Mercancia” registrado.

CartaPorte · Mercancias:PesoBrutoTotal

Validación: Para el caso del nodo “Mercancias:TransporteMaritimo”, el valor de este atributo debe ser igual a la suma de los atributos “Mercancias:Mercancia:DetalleMercancia:PesoBruto”, por cada nodo “Mercancias:Mercancia” registrado.

CP151Carta Porte 3.1

El atributo "Mercancias:PesoNetoTotal" no existe o el valor de este atributo no corresponde a la suma de los atributos "DetalleMercancia:PesoNeto" por cada nodo “Mercancias:Mercancia” registrado.

CartaPorte · Mercancias:PesoNetoTotal

Validación: Cuando exista el nodo “Mercancias:TransporteMaritimo”, el valor de este atributo debe ser igual a la suma de los valores registrados en los atributos “Mercancia:DetalleMercancia:PesoNeto”.

CP152Carta Porte 3.1

El atributo "Mercancias:PesoNetoTotal" no existe o el valor de este atributo no corresponde a la suma de los atributos "Carro:ToneladasNetasCarro" cuando existe el nodo "Mercancias:TransporteFerroviario".

CartaPorte · Mercancias:PesoNetoTotal

Validación: Cuando exista el nodo “Mercancias:TransporteFerroviario”, el valor de este atributo debe ser igual a la suma de los valores registrados en los atributos “TransporteFerroviario:Carro:ToneladasNetasCarro”.

CP153Carta Porte 3.1

No existe la seccion Autotransporte, el atributo Mercancias:LogisticaInversaRecoleccionDevolucion no debe contener un valor.

CartaPorte · Mercancias:LogisticaInversaRecoleccionDevolucion

Validación: Cuando exista el nodo "Mercancias:Autotransporte" el campo Mercancias:LogisticaInversaRecoleccionDevolucion puede existir, en cualquier otro caso se debe omitir.

CP154Carta Porte 3.1

El valor registrado no coincide con el número de elementos "Mercancias:Mercancia" que se registraron en el complemento.

CartaPorte · Mercancias:NumTotalMercancias

Validación: El valor de este atributo debe ser igual al número de elementos “Mercancias:Mercancia”, que se registren en el complemento.

CP155Carta Porte 3.1

El valor registrado en el atributo "Mercancia:MaterialPeligroso" no es válido o el valor registrado en el atributo “Mercancias:Mercancia:BienesTransp” contiene el valor "0" (cero) en la columna "Material peligroso" del catálogo catCartaPorte:c_ClaveProdServCP.

CartaPorte · Mercancia:MaterialPeligroso

Validación: Cuando el valor registrado en el atributo “Mercancias:Mercancia:BienesTransp” del catálogo catCartaPorte:c_ClaveProdServCP, contenga en la columna “Material peligroso” los valores “0,1” o “1”, este atributo debe existir, en caso contrario se debe omitir.

CP156Carta Porte 3.1

El valor registrado en el atributo "Mercancia:CveMaterialPeligroso" es diferente a las establecidas en el catálogo catCartaPorte:c_MaterialPeligroso o no existe dicho atributo.

CartaPorte · Mercancia:CveMaterialPeligroso

Validación: Cuando el valor registrado en el atributo “Mercancias:Mercancia:MaterialPeligroso” es “Sí”, este atributo debe contener una clave del catCartaPorte:c_MaterialPeligroso; en caso contrario no debe existir.

CP157Carta Porte 3.1

El atributo "Mercancia:Embalaje" no existe o el valor registrado no coincide con una clave del catálogo catCartaPorte:c_TipoEmbalaje o no existe el atributo "Mercancias:Mercancia:CveMaterialPeligroso" para que dicho atributo sea registrado.

CartaPorte · Mercancia:Embalaje

Validación: Este atributo debe existir siempre que el atributo “Mercancias:Mercancia:CveMaterialPeligroso”, contenga un valor, en caso contrario este atributo debe omitirse.

CP158Carta Porte 3.1

El valor registrado en el atributo "Mercancia:SectorCOFEPRIS" no coincide con una clave del catálogo catCartaPorte:c_SectorCOFEPRIS.

CartaPorte · Mercancia:SectorCOFEPRIS

Validación: Este atributo puede contener un valor del catálogo catCartaPorte:c_SectorCOFEPRIS

CP159Carta Porte 3.1

Los atributos “Mercancias:Mercancia:DenominacionGenericaProd”, “Mercancias:Mercancia:DenominacionDistintivaProd”, “Mercancias:Mercancia:Fabricante”, “Mercancias:Mercancia:FechaCaducidad”, “Mercancias:Mercancia:LoteMedicamento”, “Mercancias:Mercancia:FormaFarmaceutica”, “Mercancias:Mercancia:CondicionesEspTransp” y “Mercancias:Mercancia:RegistroSanitarioFolioAutorizacion” deben contener un valor cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contiene el valor "01"- "Medicamentos".

CartaPorte · Mercancia:SectorCOFEPRIS

Validación: Cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor “01” del catálogo catCartaPorte:c_SectorCOFEPRIS con descripción “Medicamentos”, los atributos “Mercancias:Mercancia:DenominacionGenericaProd”, “Mercancias:Mercancia:DenominacionDistintivaProd”, “Mercancias:Mercancia:Fabricante”, “Mercancias:Mercancia:FechaCaducidad”, “Mercancias:Mercancia:LoteMedicamento”, “Mercancias:Mercancia:FormaFarmaceutica”, “Mercancias:Mercancia:CondicionesEspTransp” y “Mercancias:Mercancia:RegistroSanitarioFolioAutorizacion” deben existir y contener un valor, en caso contrario se deben omitir.

CP160Carta Porte 3.1

Los atributos "Mercancias:Mercancia:NombreIngredienteActivo”, “Mercancias:Mercancia:NomQuimico”, “Mercancias:Mercancia:Fabricante”, “Mercancias:Mercancia:FechaCaducidad”, “Mercancias:Mercancia:LoteMedicamento”, “Mercancias:Mercancia:FormaFarmaceutica” y “Mercancias:Mercancia:CondicionesEspTransp”deben de contener un valor cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contiene el valor "02" con descripción "Precursores y químicos de uso dual.

CartaPorte · Mercancia:SectorCOFEPRIS

Validación: Cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor “02” del catálogo catCartaPorte:c_SectorCOFEPRIS con descripción “Precursores y químicos de uso dual”, los atributos “Mercancias:Mercancia:NombreIngredienteActivo”, “Mercancias:Mercancia:NomQuimico”, “Mercancias:Mercancia:Fabricante”, “Mercancias:Mercancia:FechaCaducidad”, “Mercancias:Mercancia:LoteMedicamento”, “Mercancias:Mercancia:FormaFarmaceutica” y “Mercancias:Mercancia:CondicionesEspTransp” deben existir y contener un valor, en caso contrario se deben omitir.

CP161Carta Porte 3.1

Los atributos “Mercancias:Mercancia:DenominacionGenericaProd”, “Mercancias:Mercancia:DenominacionDistintivaProd”, “Mercancias:Mercancia:Fabricante”, “Mercancias:Mercancia:FechaCaducidad”, “Mercancias:Mercancia:LoteMedicamento”, “Mercancias:Mercancia:FormaFarmaceutica”, “Mercancias:Mercancia:CondicionesEspTransp” y “Mercancias:Mercancia:RegistroSanitarioFolioAutorizacion” deben contener un valor cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor "03"- "Psicotrópicos y estupefacientes".

CartaPorte · Mercancia:SectorCOFEPRIS

Validación: Cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor “03” del catálogo catCartaPorte:c_SectorCOFEPRIS con descripción “Psicotrópicos y estupefacientes”, los atributos “Mercancias:Mercancia:DenominacionGenericaProd”, “Mercancias:Mercancia:DenominacionDistintivaProd”, “Mercancias:Mercancia:Fabricante”, “Mercancias:Mercancia:FechaCaducidad”, “Mercancias:Mercancia:LoteMedicamento”, “Mercancias:Mercancia:FormaFarmaceutica”, “Mercancias:Mercancia:CondicionesEspTransp” y “Mercancias:Mercancia:RegistroSanitarioFolioAutorizacion” deben existir y contener un valor, en caso contrario se deben omitir.

CP162Carta Porte 3.1

Los atributos “Mercancias:Mercancia:NomQuimico” y “Mercancias:Mercancia:NumCAS” deben contener un valor cuando el atributo "Mercancias:Mercancias:SectorCOFEPRIS" contenga el valor "04"- "Sustancias tóxicas”.

CartaPorte · Mercancia:SectorCOFEPRIS

Validación: Cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor “04” del catálogo catCartaPorte:c_SectorCOFEPRIS con descripción “Sustancias tóxicas”, los atributos “Mercancias:Mercancia:NomQuimico” y “Mercancias:Mercancia:NumCAS” deben existir y contener un valor, en caso contrario se deben omitir

CP163Carta Porte 3.1

Los atributos “Mercancias:Mercancia:NombreIngredienteActivo”, “Mercancias:Mercancia:NumRegSanPlagCOFEPRIS”, “Mercancias:Mercancia:DatosFabricante”, “Mercancias:Mercancia:DatosFormulador”, “Mercancias:Mercancia:DatosMaquilador” y “Mercancias:Mercancia:UsoAutorizado” deben contener un valor cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor "05" - "Plaguicidas y fertilizantes”.

CartaPorte · Mercancia:SectorCOFEPRIS

Validación: Cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga el valor “05” del catálogo catCartaPorte:c_SectorCOFEPRIS con descripción “Plaguicidas y fertilizantes”, los atributos “Mercancias:Mercancia:NombreIngredienteActivo”, “Mercancias:Mercancia:NumRegSanPlagCOFEPRIS”, “Mercancias:Mercancia:DatosFabricante”, “Mercancias:Mercancia:DatosFormulador”, “Mercancias:Mercancia:DatosMaquilador” y “Mercancias:Mercancia:UsoAutorizado” deben existir y contener un valor, en caso contrario se deben omitir.

CP164Carta Porte 3.1

El atributo "Mercancia:PermisoImportacion" no debe existir cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga un valor diferente de “01”, “02” o “03" , el atributo “CartaPorte:TranspInternac” contenga el valor “No" o el atributo “CartaPorte:EntradaSalidaMerc” contenga el valor “Salida".

CartaPorte · Mercancia:PermisoImportacion

Validación: Cuando en el atributo “CartaPorte:TranspInternac” se registre “Sí”, el atributo “CartaPorte:EntradaSalidaMerc” contenga el valor “Entrada” y el atributo SectorCOFEPRIS contenga el valor “01”, “02” o “03” este atributo debe existir, en caso contrario se debe omitir.

CP165Carta Porte 3.1

El atributo "Mercancia:FolioImpoVUCEM" no debe existir cuando el atributo "Mercancias:Mercancia:SectorCOFEPRIS" contenga un valor diferente de “01”, “02”, “04” o “05”, el atributo “CartaPorte:TranspInternac” contenga el valor “No” y el atributo “CartaPorte:EntradaSalidaMerc” contiene el valor “Salida”.

CartaPorte · Mercancia:FolioImpoVUCEM

Validación: Cuando en el atributo “CartaPorte:TranspInternac” se registre “Sí”, el atributo “CartaPorte:EntradaSalidaMerc” contenga el valor “Entrada” y el atributo SectorCOFEPRIS contenga el valor “01”, “02”, “04” o “05” este atributo debe existir, en caso contrario se debe omitir.

CP166Carta Porte 3.1

El atributo "Mercancia:RazonSocialEmpImp" no debe existir cuando "Mercancias:Mercancia:SectorCOFEPRIS" contenga un valor diferente de “04”, el atributo “CartaPorte:TranspInternac” contenga el valor “No” o el atributo “CartaPorte:EntradaSalidaMerc” contiene el valor “Salida”.

CartaPorte · Mercancia:RazonSocialEmpImp

Validación: Cuando en el atributo “CartaPorte:TranspInternac” se registre “Sí”, el atributo “CartaPorte:EntradaSalidaMerc” contenga el valor “Entrada”, y el atributo SectorCOFEPRIS contenga el valor “04” este atributo debe existir,en caso contrario se debe omitir.

CP167Carta Porte 3.1

El atributo "Mercancia:ValorMercancia" no existe o está vacío.

CartaPorte · Mercancia:ValorMercancia

Validación: Cuando exista el nodo “Mercancias:TransporteAereo” el atributo "Mercancias:Mercancia:ValorMercancia" debe contener un valor, en caso contrario se puede omitir.

CP168Carta Porte 3.1

El atributo "Mercancia:Moneda" no existe o está vacío, o no existe el atributo “Mercancia:ValorMercancia".

CartaPorte · Mercancia:Moneda

Validación: Cuando el atributo "Mercancias:Mercancia:ValorMercancia" contenga un valor, el atributo "Mercancias:Mercancia:Moneda" debe existir.

CP169Carta Porte 3.1

El valor registrado no coincide con alguno de los valores del catálogo cat:CartaPorte:c_RegimenAduanero para una exportación.

CartaPorte · RegimenesAduaneros:RegimenAduaneroCCP:RegimenAduanero

Validación: Cuando el atributo "CartaPorte:EntradaSalidaMerc" contenga el valor "Salida", este atributo debe contener un valor del catálogo catCartaPorte:c_RegimenAduanero donde la columna ImpoExpo contenga el valor "Salida" o "Salida,Entrada".

CP170Carta Porte 3.1

El atributo "Mercancia:TipoMateria" no contiene un valor del catálogo catCartaPorte:c_TipoMateria o está vacío y el atributo “CartaPorte:TranspInternac” contiene el valor "Sí".

CartaPorte · Mercancia:TipoMateria

Validación: Cuando en el atributo “CartaPorte:TranspInternac” se registre “Sí”,este atributo debe existir y contener un valor del catálogo catCartaPorte:c_TipoMateria, en caso contrario se debe omitir.

CP171Carta Porte 3.1

El atributo Mercancia:DescripcionMateria no debe existir cuando el valor registrado en el atributo "Mercancias:Mercancia:TipoMateria" es diferente de "05".

CartaPorte · Mercancia:DescripcionMateria

Validación: Cuando el valor registrado en el atributo "Mercancias:Mercancia:TipoMateria", contenga el valor “05” con descripción “Otra”, este atributo debe existir, en caso contrario se debe omitir.

CP172Carta Porte 3.1

El nodo "Mercancia:DocumentacionAduanera" no debe existir cuando se registre el valor "No" en el atributo "CartaPorte:TranspInternac".

CartaPorte · Mercancia:DocumentacionAduanera

Validación: Cuando en el atributo “CartaPorte:TranspInternac” se registre el valor “Sí” y el atributo “EntradaSalidaMerc” contenga el valor “Entrada” este nodo debe existir. Cuando en el atributo “CartaPorte:TranspInternac” se registre el valor “Sí” y el atributo “EntradaSalidaMerc” contenga el valor “Salida” este nodo puede existir. En cualquier otro caso no debe existir.

CP173Carta Porte 3.1

El atributo "DocumentacionAduanera:TipoDocumento" no debe contener el valor "01" - Pedimento cuando se registre el valor "Salida" en el atributo "CartaPorte:EntradaSalidaMerc".

CartaPorte · Mercancia:DocumentacionAduanera:TipoDocumento

Validación: Cuando el atributo “EntradaSalidaMerc” contenga el valor “Salida”, el atributo “TipoDocumento” debe contener una clave distinta de “01” del catálogo “catCartaPorte:c_DocumentoAduanero”.

CP174Carta Porte 3.1

El atributo "DocumentacionAduanera:NumPedimento" no existe, está vacío o no cuenta con la estructura definida.

CartaPorte · Mercancia:DocumentacionAduanera:NumPedimento

Validación: Cuando el atributo "CartaPorte:EntradaSalidaMerc" contenga el valor "Entrada" y el atributo "Mercancia:DocumentacionAduanera:TipoDocumento" contenga el valor "01" con descripción "Pedimento" del catálogo catCartaPorte:c_DocumentoAduanero, este atributo debe existir, en caso contrario se debe omitir. El valor registrado debe cumplir con lo siguiente: • El valor de las posiciones uno y dos deben ser menor o igual que los últimos dos dígitos del año de la fecha actual. • Las posiciones cinco y seis deben corresponder con una clave del catálogo de aduanas (catCFDI:c_Aduanas). • Las posiciones nueve a la doce deben corresponder con un número de patente del catálogo de patentes aduanales (catCFDI:c_PatenteAduanal). El valor de los últimos seis dígitos debe estar entre el valor mínimo 1 y el valor máximo de números consecutivos de la columna cantidad del catálogo catCFDI:c_NumPedimentoAduana que correspondan a los usados por la aduana en ese año.

CP175Carta Porte 3.1

El atributo "DocumentacionAduanera:IdentDocAduanero" no debe existir cuando el atributo "Mercancia:DocumentacionAduanera:TipoDocumento" es "01"-Pedimento

CartaPorte · Mercancia:DocumentacionAduanera:IdentDocAduanero

Validación: Cuando el atributo “Mercancia:DocumentacionAduanera:TipoDocumento” contenga un valor distinto a “01” del catálogo catCartaPorte:c_DocumentoAduanero con descripción “Pedimento”, este atributo debe existir, en caso contrario se debe omitir.

CP176Carta Porte 3.1

El valor registrado en el atributo "RFCImpo" no se encuentra en la lista de RFC inscritos no cancelados del SAT (l_RFC), está vacío o es diferente a XAXX010101000 o XEXX010101000.

CartaPorte · Mercancia:DocumentacionAduanera:RFCImpo

Validación: Cuando el atributo “DocumentacionAduanera:NumPedimento” contenga un valor, este atributo debe existir y contener un RFC que se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC) o un RFC genérico, en caso contrario se debe omitir.

CP177Carta Porte 3.1

No existe el nodo "Mercancia:GuiasIdentificacion" o se registró este nodo cuando el tipo de comprobante es diferente de "T" o el valor registrado en el atributo "Comprobante:ClaveProdServ" es distinto de "31181701" y de "24112700".

CartaPorte · Mercancia:GuiasIdentificacion

Validación: Cuando el atributo “Comprobante:TipoDeComprobante” contenga el valor “T”, que corresponde a la descripción de “Traslado y a nivel “Concepto” en el atributo “Comprobante:ClaveProdServ”, se registren las claves “31181701” o “24112700” con descripción “Empaques” y “Estibas” respectivamente, este nodo debe existir, en caso contrario se puede omitir.

CP178Carta Porte 3.1

El atributo "CantidadTransporta:IDOrigen" no existe, está vacío o no coincide con un valor registrado en el atributo “Ubicacion:IDUbicacion”.

CartaPorte · Mercancia:CantidadTransporta:IDOrigen

Validación: El valor registrado en este atributo debe ser igual a alguno de los valores registrados en los atributos “Ubicaciones:Ubicacion:IDUbicacion”, siempre que el atributo “Ubicaciones:Ubicacion:TipoUbicacion”, contenga el valor “Origen”.

CP179Carta Porte 3.1

El atributo "CantidadTransporta:IDDestino" no existe, está vacío o no coincide con un valor registrado en el atributo “Ubicacion:IDUbicacion”.

CartaPorte · Mercancia:CantidadTransporta:IDDestino

Validación: El valor registrado en este atributo debe ser igual a alguno de los valores registrados en los atributos “Ubicaciones:Ubicacion:IDUbicacion”, siempre que el atributo “Ubicaciones:Ubicacion:TipoUbicacion”, contenga el valor “Destino”.

CP180Carta Porte 3.1

El atributo "CantidadTransporta:CvesTransporte" no existe, es diferente de alguna de las claves del catálogo catCartaPorte:c_CveTransporte, o no existe más de un nodo "Mercancias:Autotransporte", “Mercancias:TransporteMaritimo", "Mercancias:TransporteAereo", "Mercancias:TransporteFerroviario".

CartaPorte · Mercancia:CantidadTransporta:CvesTransporte

Validación: El valor de este atributo debe contener una clave del catálogo catCartaPorte:c_CveTransporte, siempre que se registre más de uno de los siguientes nodos: "Mercancias:Autotransporte", “Mercancias:TransporteMaritimo", "Mercancias:TransporteAereo", "Mercancias:TransporteFerroviario". En caso contrario no debe existir.

CP181Carta Porte 3.1

No existe el nodo "Mercancia:DetalleMercancia", se registró sin información o no existe el nodo "Mercancias:TransporteMaritimo".

CartaPorte · Mercancia:DetalleMercancia

Validación: Cuando exista un nodo “Mercancias:TransporteMaritimo”; este nodo debe existir, en caso contrario debe omitirse.

CP182Carta Porte 3.1

No existe el atributo "Seguros:AseguraMedAmbiente", se registró sin información o el valor del atributo "Mercancia:MaterialPeligroso” es "No".

CartaPorte · Autotransporte:Seguros:AseguraMedAmbiente

Validación: Cuando en el atributo “Mercancias:Mercancia:MaterialPeligroso” se registre “Sí”, este atributo debe contener un valor, en caso contrario se debe omitir.

CP183Carta Porte 3.1

No existe el atributo "Seguros:PolizaMedAmbiente", se registró sin información o no existe el atributo "Seguros:AseguraMedAmbiente”.

CartaPorte · Autotransporte:Seguros:PolizaMedAmbiente

Validación: Cuando se registre un valor en el atributo “Mercancias:Autotransporte:Seguros:AseguraMedAmbiente”; este atributo debe existir, en caso contrario se debe omitir.

CP184Carta Porte 3.1

No existe el nodo "Autotransporte:Remolques", se registró sin información o el valor registrado en el atributo "IdentificacionVehicular:ConfigVehicular" contiene un valor diferente de "0,1" o "1" en la columna "Remolque" del catálogo c_ConfigAutotransporte.

CartaPorte · Autotransporte:Remolques

Validación: Cuando el valor registrado en el atributo “Mercancias:Autotransporte:IdentificacionVehicular:ConfigVehicular” del catálogo catCartaPorte:c_ConfigAutotransporte, contenga en la columna “Remolque” el valor “1”, este nodo debe existir, si contiene el valor “0,1” el nodo puede existir, en caso de contener el valor “0” este nodo se debe omitir.

CP185Carta Porte 3.1

El atributo "TransporteMaritimo:PermisoTempNavegacion" no debe existir cuando el valor registrado en el atributo "TransporteMaritimo:NacionalidadEmbarc es "MEX".

CartaPorte · TransporteMaritimo:PermisoTempNavegacion

Validación: Cuando en el atributo "TransporteMaritimo:NacionalidadEmbarc" contenga un valor diferente de "MEX" este atributo debe existir y contener un valor, en caso contrario se debe omitir.

CP186Carta Porte 3.1

El valor registrado en el atributo "TransporteMaritimo:Contenedor:TipoContenedor" es diferente de "CM011", “TransporteMaritimo:Contenedor:NumPrecinto” y “TransporteMaritimo:Contenedor:MatriculaContenedor” deben contener un valor y "TransporteMaritimo:Contenedor:IdCCPRelacionado", "TransporteMaritimo:Contenedor:PlacaVMCCP" y "TransporteMaritimo:Contenedor:FechaCertificacionCCP" no deben existir.

CartaPorte · TransporteMaritimo:Contenedor:TipoContenedor

Validación: Cuando el valor registrado en el atributo "TransporteMaritimo:Contenedor:TipoContenedor" sea “CM011” con descripción “Ferri” del catálogo catCartaPorte:c_ContenedorMaritimo: • Los atributos “TransporteMaritimo:Contenedor:MatriculaContenedor” y “TransporteMaritimo:Contenedor:NumPrecinto” no deben existir, en caso contrario estos atributos deben contener un valor. • Los atributos "TransporteMaritimo:Contenedor:IdCCPRelacionado", "TransporteMaritimo:Contenedor:PlacaVMCCP" y "TransporteMaritimo:Contenedor:FechaCertificacionCCP" deben existir y contener un valor, en caso contrario se deben omitir.

CP187Carta Porte 3.1

El atributo "TransporteMaritimo:Contenedor:TipoContenedor” contiene un valor distinto de "CM011" y el atributo "TransporteMaritimo:Contenedor:RemolquesCCP" no debe existir.

CartaPorte · TransporteMaritimo:Contenedor:RemolquesCCP

Validación: Cuando la clave del atributo “TransporteMaritimo:Contenedor:TipoContenedor” sea “CM011” con la descripción “Ferri” del catálogo catCartaPorte:c_ContenedorMaritimo, este nodo puede existir, en otro caso se debe omitir.

CP188Carta Porte 3.1

El valor registrado en el atributo "TransporteAereo:RFCEmbarcador" no se encuentra en la lista de RFC inscritos no cancelados del SAT (l_RFC), está vacío o ya se registró el atributo "TransporteAereo:NumRegIdTribEmbarc".

CartaPorte · TransporteAereo:RFCEmbarcador

Validación: El valor registrado en este atributo debe encontrarse en la lista del RFC inscritos no cancelados del SAT (l_RFC).

CP189Carta Porte 3.1

No existe información en el atributo "TransporteAereo:NumRegIdTribEmbarc" o ya se registró el atributo "TransporteAereo:RFCEmbarcador".

CartaPorte · TransporteAereo:NumRegIdTribEmbarc

Validación: Cuando el atributo “Mercancias:TransporteAereo:RFCEmbarcador” no contenga un valor, este atributo debe existir.

CP190Carta Porte 3.1

No existe el atributo "TransporteAereo:ResidenciaFiscalEmbarc", está vacío, no corresponde con alguna de las claves del catálogo catCFDI:c_Pais o la clave registrada es igual a "MEX", o no existe el atributo "NumregIdTribEmbarc".

CartaPorte · TransporteAereo:ResidenciaFiscalEmbarc

Validación: Cuando el atributo “Mercancias:TransporteAereo:NumRegIdTribEmbarc” contenga un valor, la clave registrada en este atributo debe ser distinta a “MEX” y encontrarse en el catálogo catCFDI:c_Pais.

CP191Carta Porte 3.1

No existe el atributo "Carro:ToneladasNetasCarro", está vacío, o la suma no corresponde con los valores registrados en el atributo “Contenedor:PesoNetoMercancia”.

CartaPorte · TransporteFerroviario:Carro:ToneladasNetasCarro

Validación: Cuando exista el nodo “Mercancias:TransporteFerroviario:Carro:Contenedor”, el valor de este atributo debe ser igual a la suma de los valores registrados en kilogramos convertidos en toneladas de los atributos “Mercancias:TransporteFerroviario:Carro:Contenedor:PesoNetoMercancia” En caso de no existir el nodo “Carro:Contenedor”, este atributo debe tener un valor.

CP192Carta Porte 3.1

No existe el nodo "Carro:Contenedor", se registró sin información, o el valor registrado en el atributo "Mercancias:TransporteFerroviario:TipoDeServicio" contiene un valor diferente de "1" en la columna "Contenedor" del catálogo catCartaPorte:c_TipoDeServicio.

CartaPorte · TransporteFerroviario:Carro:Contenedor

Validación: Cuando el valor registrado en el atributo “Mercancias:TransporteFerroviario:TipoDeServicio” del catálogo catCartaPorte:c_TipoDeServicio, contenga en la columna “Contenedor” el valor “1”, este nodo debe existir, en caso contrario se debe omitir.

CP193Carta Porte 3.1

No existe el nodo "CartaPorte:FiguraTransporte" o se registró sin información.

CartaPorte · FiguraTransporte

Validación: Cuando exista el nodo “Mercancias:Autotransporte”, este elemento debe existir.

CP194Carta Porte 3.1

No existe el nodo "FiguraTransporte:TiposFigura" o se registró sin información.

CartaPorte · FiguraTransporte:TiposFigura

Validación: Cuando exista el nodo “Mercancias:Autotransporte”, este nodo debe existir al menos una vez donde el atributo “CartaPorte:FiguraTransporte:TiposFigura:TipoFigura” debe contener la clave “01” del catálogo catCartaPorte:c_FiguraTransporte, que corresponde a “Operador”.

CP195Carta Porte 3.1

El valor registrado en el atributo "TiposFigura:RFCFigura" no se encuentra en la lista de RFC inscritos no cancelados del SAT (l_RFC), está vacío o ya se registró el atributo "TiposFigura:NumRegIdTribFigura".

CartaPorte · TiposFigura:RFCFigura

Validación: El valor registrado en este atributo debe encontrarse en la lista del RFC inscritos no cancelados del SAT (l_RFC), en caso contrario se debe omitir este atributo y registrar la información correspondiente en el atributo "CartaPorte:FiguraTransporte:TiposFigura:NumRegIdTribFigura".

CP196Carta Porte 3.1

No existe el atributo "TiposFigura:NumLicencia", no cumple con el patrón, o el valor registrado en el atributo "TiposFigura:TIpoFigura" es diferente de "01".

CartaPorte · TiposFigura:NumLicencia

Validación: Cuando el valor registrado en el atributo “CartaPorte:FiguraTransporte:TiposFigura:TipoFigura” sea igual a “01”, este atributo debe existir, en caso contrario se debe omitir.

CP197Carta Porte 3.1

No existe información en el atributo "TiposFigura:NumRegIdTribFigura" o ya se registró el atributo "TiposFigura:RFCFigura".

CartaPorte · TiposFigura:NumRegIdTribFigura

Validación: Cuando el atributo “CartaPorte:FiguraTransporte:TiposFigura:RFCFigura” no contenga un valor, este atributo debe existir.

CP198Carta Porte 3.1

No existe el atributo "TiposFigura:ResidenciaFiscalFigura", está vacío, no corresponde con alguna de las claves del catálogo catCFDI:c_Pais o la clave registrada es igual a "MEX" o no existe el atributo "NumRegIdTribFigura".

CartaPorte · TiposFigura:ResidenciaFiscalFigura

Validación: Este atributo debe existir siempre que el atributo “CartaPorte:FiguraTransporte:TiposFigura:NumRegIdTribFigura” contenga un valor, en caso contrario se debe omitir. La clave registrada en este atributo debe encontrarse en el catálogo catCFDI:c_Pais y ser distinta a “MEX”.

CP199Carta Porte 3.1

No existe el nodo "TiposFigura:PartesTransporte", se registró sin información o el valor registrado en el atributo "TiposFigura:TipoFigura" tiene un valor diferente de "02" o "03".

CartaPorte · TiposFigura:PartesTransporte

Validación: Cuando en el atributo “CartaPorte:FiguraTransporte:TiposFigura:TipoFigura” se registre el valor “02” o “03”, este nodo debe existir, en caso contrario se debe omitir.

CP200Carta Porte 3.1

El atributo "TiposFigura:Domicilio:Colonia" no contiene una clave del catálogo de catCFDI:c_Colonia cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Domicilio:CodigoPostal", o este está vacío.

CartaPorte · TiposFigura:Domicilio:Colonia

Validación: Cuando la clave del país sea distinta a "MEX", se debe registrar texto libre, en caso contrario se debe registrar un valor en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Colonia” debe contener una clave del catálogo catCFDI:c_Colonia, donde la columna “c_CodigoPostal”, debe ser igual a la clave registrada en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:CodigoPostal”.

CP201Carta Porte 3.1

El atributo "TiposFigura:Domicilio:Localidad" no contiene una clave del catálogo de c_Localidad cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Domicilio:Estado", o este está vacío.

CartaPorte · TiposFigura:Domicilio:Localidad

Validación: Cuando el valor registrado en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Pais” sea "MEX", este atributo debe contener un valor del catálogo catCFDI:c_Localidad, donde la columna c_Estado, coincida con el valor registrado en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Estado”, en caso contrario puede registrar texto libre.

CP202Carta Porte 3.1

El atributo "TiposFigura:Domicilio:Municipio" no contiene una clave del catálogo de c_Municipio cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Domicilio:Estado", o este está vacío.

CartaPorte · TiposFigura:Domicilio:Municipio

Validación: Cuando la clave del país sea distinta a "MEX", se debe registrar texto libre; en caso contrario se debe registrar un valor en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Municipio” debe contener una clave del catálogo catCFDI:c_Municipio, donde la columna “c_Estado”, debe ser igual a la clave registrada en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Estado”.

CP203Carta Porte 3.1

El atributo "TiposFigura:Domicilio:Estado" no contiene una clave del catálogo de c_Estado cuando la clave del país es "MEX", "USA" o "CAN". o la clave registrada no corresponde con valor del atributo "Domicilio:Pais", o este está vacío.

CartaPorte · TiposFigura:Domicilio:Estado

Validación: Cuando el valor registrado en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Pais” sea "MEX”, “USA” o “CAN", este atributo debe contener un valor del catálogo catCFDI:c_Estado, donde la columna “c_Pais”, coincida con el valor registrado en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Pais”, en caso contrario se debe registrar texto libre.

CP204Carta Porte 3.1

El atributo "TiposFigura:Domicilio:CodigoPostal" no contiene una clave del catálogo de c_CodigoPostal cuando la clave del país es "MEX" o la clave registrada no corresponde con el valor del atributo "Domicilio:Estado", "Domicilio:Municipio" y "Domicilio:Localidad"; o este está vacío.

CartaPorte · TiposFigura:Domicilio:CodigoPostal

Validación: Cuando el valor registrado en el atributo “CartaPorte:FiguraTransporte:TiposFigura:Domicilio:Pais” sea "MEX”, este atributo debe contener un valor del catálogo catCFDI:c_CodigoPostal, donde: • La clave de la columna “c_Estado”, debe coincidir con el valor registrado en el atributo “Ubicaciones:Ubicacion:Domicilio:Estado”, • Cuando se registre un valor en el atributo Ubicaciones:Ubicacion:Domicilio:Municipio”, este valor debe corresponder a la clave de la columna de clave “c_Municipio”. • Cuando se registre un valor en el atributo Ubicaciones:Ubicacion:Domicilio:Localidad”, este valor debe corresponder a la clave de la columna de clave “c_Localidad”. En caso contrario se debe registrar texto libre.

CP999Carta Porte 3.1

Error no clasificado

Carta Porte · No clasificado

Validación: Otro error en el documento

CCE101Comercio Exterior 2.0

El atributo cfdi:Comprobante:TipoDeComprobante no cumple con alguno de los valores permitidos para este complemento.

CFDI · TipoDeComprobante

Validación: El atributo cfdi:Comprobante:TipoDeComprobante puede tener los valores "I", "E" o "T".

CCE102Comercio Exterior 2.0

El nodo Propietario se debe registrar cuando el atributo cfdi:Comprobante:TipoDeComprobante tiene el valor "T" y MotivoTraslado tiene la clave "05".

CFDI · TipoDeComprobante

Validación: El nodo Propietario se debe registrar si el valor de cfdi:Comprobante:TipoDeComprobante es "T" y MotivoTraslado tiene la clave "05".

CCE103Comercio Exterior 2.0

El nodo Propietario no se debe registrar cuando el atributo cfdi:Comprobante:TipoDeComprobante tiene un valor distinto de "T" y MotivoTraslado tiene una clave distinta de "05".

CFDI · TipoDeComprobante

Validación: El nodo Propietario no se debe registrar si el valor de cfdi:Comprobante:TipoDeComprobante es distinto de "T" y MotivoTraslado tiene una clave distinta de "05".

CCE104Comercio Exterior 2.0

La clave registrada en el atributo Exportacion contiene el valor "02" y no existe el complemento de Comercio Exterior.

CFDI · Exportacion

Validación: El atributo cfdi:Comprobante:Exportacion contiene el valor "02" de acuerdo al catCFDI:c_Exportacion, por lo que debe existir el complemento de Comercio Exterior.

CCE105Comercio Exterior 2.0

La clave registrada en el atributo Exportacion contiene el valor "03", el complemento de Comercio Exterior no debe existir.

CFDI · Exportacion

Validación: El atributo cfdi:Comprobante:Exportacion" contiene el valor "03" de acuerdo al catCFDI:c_Exportacion, se debe omitir el complemento de Comercio Exterior.

CCE106Comercio Exterior 2.0

Se registro información en el nodo InformacionGlobal y no debe existir registro.

CFDI · InformacionGlobal

Validación: El nodo "InformacionGlobal" no debe existir.

CCE107Comercio Exterior 2.0

El atributo cfdi:Comprobante:Receptor:Rfc no tiene un RFC registrado en la lista de RFC inscritos no cancelados del SAT (l_RFC), ni el valor "XEXX010101000" o se encuentra vacío.

CFDI · Receptor:Rfc

Validación: El atributo cfdi:Comprobante:Receptor:Rfc puede tener un RFC registrado en la lista de RFC inscritos no cancelados del SAT (l_RFC) o el valor "XEXX010101000", cuando el TipoDeComprobante sea "I".

CCE108Comercio Exterior 2.0

El atributo cfdi:Comprobante:Receptor:Rfc tiene un valor diferente al registrado en el atributo cfdi:Comprobante:Emisor:Rfc o se encuentra vacío.

CFDI · Receptor:Rfc

Validación: El atributo cfdi:Comprobante:Receptor:Rfc debe tener un valor igual al registrado en el atributo cfdi:Comprobante:Emisor:Rfc, cuando el TipoDeComprobante sea "T".

CCE109Comercio Exterior 2.0

Se registró la clave "02" en el atributo "ObjetoImp" y no se tiene información registrada en el nodo cfdi:Concepto:Impuestos

CFDI · Conceptos:Concepto:ObjetoImp

Validación: El atributo "ObjetoImp" contiene el valor "02" por lo que debe tener al menos un elemento cfdi:Concepto:Impuestos.

CCE110Comercio Exterior 2.0

El campo TipoDeComprobante tiene el valor "T" y la clave registrada en el campo "ObjetoImp" es diferente de 01.

CFDI · Conceptos:Concepto:ObjetoImp

Validación: El atributo "ObjetoImp" debe contener el valor "01" cuando el campo TipoDeComprobante tenga el valor "T".

CCE111Comercio Exterior 2.0

Se registró información en el nodo "ACuentaTerceros" y no debe existir.

CFDI · ACuentaTerceros

Validación: El nodo "ACuentaTerceros" no debe existir.

CCE112Comercio Exterior 2.0

Se registró información en el nodo "CuentaPredial" y no debe existir.

CFDI · CuentaPredial

Validación: El nodo "CuentaPredial" no debe existir.

CCE113Comercio Exterior 2.0

El nodo cce20:ComercioExterior no puede registrarse más de una vez.

ComercioExterior · ComercioExterior

Validación: El nodo cce20:ComercioExterior solo debe registrarse una vez.

CCE114Comercio Exterior 2.0

El nodo cce20:ComercioExterior debe registrarse como un nodo hijo del nodo Complemento en el CFDI.

ComercioExterior · ComercioExterior

Validación: El nodo cce20:ComercioExterior se debe registrar como un nodo hijo del nodo Complemento en el CFDI.

CCE115Comercio Exterior 2.0

El nodo cce20:ComercioExterior solo puede coexistir con los complementos Timbre Fiscal Digital, otros derechos e impuestos, leyendas fiscales, CFDI registro fiscal y Carta Porte.

ComercioExterior · ComercioExterior

Validación: El nodo cce20:ComercioExterior solo puede coexistir con los complementos Timbre Fiscal Digital, otros derechos e impuestos, leyendas fiscales, CFDI registro fiscal y Carta Porte.

CCE116Comercio Exterior 2.0

Se registró la clave "01" en el atributo cce20:ComercioExterior:MotivoTraslado y no existe el atributo cfdi:Relacionados:TipoRelacion o el UUID de la factura de la enajenación no se registró o no cumple con la estructura.

ComercioExterior · MotivoTraslado

Validación: El atributo ComercioExterior:MotivoTraslado contiene el valor "01", debe existir el atributo cfdi:Relacionados:TipoRelacion y debe contener el UUID de la factura donde previamente se realizó la enajenación.

CCE117Comercio Exterior 2.0

Se registró la clave "05" en el atributo cce20:ComercioExterior:MotivoTraslado y no existe al menos un nodo "Propietario".

ComercioExterior · MotivoTraslado

Validación: El atributo cce20:ComercioExterior:MotivoTraslado contiene el valor "05" y debe contener al menos un nodo "Propietario", en caso contrario no deben existir nodos "Propietario".

CCE118Comercio Exterior 2.0

El valor de cce20:ComercioExterior:CertificadoOrigen es "0" y se registró el atributo cce20:ComercioExterior:NumCertificadoOrigen

ComercioExterior · NumCertificadoOrigen

Validación: Si el valor registrado en el campo CertificadoOrigen es 1 este campo deberá registrarse, en caso contrario no deberá existir.

CCE119Comercio Exterior 2.0

Se registró el atributo cce20:ComercioExterior:NumeroExportadorConfiable y la clave de país del receptor o del destinatario no corresponde a un país del catálogo catCFDI:c_Pais donde la columna Agrupación tenga el valor Unión Europea.

ComercioExterior · NumeroExportadorConfiable

Validación: El atributo cce20:ComercioExterior:NumeroExportadorConfiable no debe registrarse si la clave de país del receptor o del destinatario no corresponde a un país del catálogo catCFDI:c_Pais donde la columna Agrupación tenga el valor Unión Europea.

CCE120Comercio Exterior 2.0

El atributo “cfdi:Comprobante:Exportacion” contiene el valor "02" y este atributo debe contener un valor.

ComercioExterior · Incoterm

Validación: Si el atributo “cfdi:Comprobante:Exportacion” contiene la clave “02” este campo deberá contener un valor del catálogo catComExt:c_INCOTERM. Cuando el valor registrado sea la clave “04”, este campo se puede omitir.

CCE121Comercio Exterior 2.0

El valor del atributo cce20:ComercioExterior:TipoCambioUSD no corresponde con el número de pesos mexicanos equivalentes a un dólar de Estados Unidos.

ComercioExterior · TipoCambioUSD

Validación: El atributo cce20:ComercioExterior:TipoCambioUSD debe corresponder con el número de pesos mexicanos que equivalen a un dólar de Estados Unidos, de acuerdo al artículo 20 del Código Fiscal de la Federación.

CCE122Comercio Exterior 2.0

El atributo cce20:ComercioExterior:TotalUSD no coincide con la suma de ValorDolares de las mercancías.

ComercioExterior · TotalUSD

Validación: El atributo cce20:ComercioExterior:TotalUSD debe ser igual a la suma de los valores del atributo ValorDolares de las mercancías, el resultado debe estar redondeado a dos decimales.

CCE123Comercio Exterior 2.0

La longitud del atributo Rfc del nodo cfdi:Comprobante:Emisor es igual a 12 y se registró el atributo cce20:ComercioExterior:Emisor:Curp.

ComercioExterior · Emisor:Curp

Validación: El atributo cce20:ComercioExterior:Emisor:Curp no debe registrarse si el atributo Rfc del nodo cfdi:Comprobante:Emisor es de longitud 12.

CCE124Comercio Exterior 2.0

Debe registrarse el atributo cce20:ComercioExterior:Emisor:Curp.

ComercioExterior · Emisor:Curp

Validación: El atributo cce20:ComercioExterior:Emisor:Curp debe registrarse si el atributo Rfc del nodo cfdi:Comprobante:Emisor es de longitud 13

CCE125Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Emisor:Domicilio:Pais contiene una clave distinta de "MEX".

ComercioExterior · Emisor:Domicilio:Pais

Validación: El atributo cce20:ComercioExterior:Emisor:Domicilio:Pais debe contener la clave "MEX".

CCE126Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Emisor:Domicilio:Estado contiene una clave distinta del catálogo catCFDI:c_Estado donde la columna c_Pais tiene el valor "MEX".

ComercioExterior · Emisor:Domicilio:Estado

Validación: El atributo cce20:ComercioExterior:Emisor:Domicilio:Estado debe contener una clave del catálogo catCFDI:c_Estado donde la columna c_Pais tiene el valor "MEX".

CCE127Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Emisor:Domicilio:Municipio contiene una clave distinta del catálogo catCFDI:c_Municipio donde la columna clave de c_Estado debe ser igual a la clave registrada en el atributo Estado.

ComercioExterior · Emisor:Domicilio:Municipio

Validación: El atributo cce20:ComercioExterior:Emisor:Domicilio:Municipio debe contener una clave del catálogo catCFDI:c_Municipio donde la columna clave de c_Estado debe ser igual a la clave registrada en el atributo Estado.

CCE128Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Emisor:Domicilio:Localidad contiene una clave distinta del catálogo catCFDI:c_Localidad donde la columna clave de c_Estado debe ser igual a la clave registrada en el atributo Estado.

ComercioExterior · Emisor:Domicilio:Localidad

Validación: El atributo cce20:ComercioExterior:Emisor:Domicilio:Localidad debe contener una clave del catálogo catCFDI:c_Localidad donde la columna clave de c_Estado debe ser igual a la clave registrada en el atributo Estado.

CCE129Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Emisor:Domicilio:Colonia contiene una clave distinta del catálogo catCFDI:c_Colonia donde la columna c_CodigoPostal debe ser igual a la clave registrada en el atributo CodigoPostal.

ComercioExterior · Emisor:Domicilio:Colonia

Validación: El atributo cce20:ComercioExterior:Emisor:Domicilio:Colonia debe contener una clave del catálogo de catCFDI:c_Colonia donde la columna c_CodigoPostal debe ser igual a la clave registrada en el atributo CodigoPostal solo si el atributo tiene una clave numérica de 4 posiciones.

CCE130Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Emisor:Domicilio:CodigoPostal contiene una clave distinta del catálogo catCFDI:c_CodigoPostal donde la columna clave de c_Estado debe ser igual a la clave registrada en el atributo Estado, la columna clave de c_Municipio debe ser igual a la clave registrada en el atributo Municipio y si existe el atributo de Localidad, la columna clave de c_Localidad debe ser igual a la clave registrada en el atributo Localidad.

ComercioExterior · Emisor:Domicilio:CodigoPostal

Validación: El atributo cce20:ComercioExterior:Emisor:Domicilio:CodigoPostal debe contener una clave del catálogo catCFDI:c_CodigoPostal donde la columna clave de c_Estado debe ser igual a la clave registrada en el atributo Estado, la columna clave de c_Municipio debe ser igual a la clave registrada en el atributo Municipio y si existe el atributo de Localidad, la columna clave de c_Localidad debe ser igual a la clave registrada en el atributo Localidad.

CCE131Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Propietario:NumRegIdTrib no existe en el registro del país indicado en el atributo cce1:Propietario:ResidenciaFiscal de acuerdo al mecanismo de verificación en línea.

ComercioExterior · Propietario:NumRegIdTrib

Validación: El atributo cce20:ComercioExterior:Propietario:NumRegIdTrib debe existir en el registro del país si la clave del país del atributo cce20:Propietario:ResidenciaFiscal tiene mecanismo de verificación en línea en el catálogo catCFDI:c_Pais.

CCE132Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Propietario:NumRegIdTrib no cumple con el patrón publicado en la columna "Formato de registro de identidad tributaria" del país indicado en el atributo cce1:Propietario:ResidenciaFiscal.

ComercioExterior · Propietario:NumRegIdTrib

Validación: El atributo cce20:ComercioExterior:Propietario:NumRegIdTrib debe cumplir con el patrón indicado en la columna "Formato de registro de identidad tributaria" si la clave del país del atributo cce20:Propietario:ResidenciaFiscal no tiene mecanismo de verificación en línea en el catálogo catCFDI:c_Pais.

CCE133Comercio Exterior 2.0

No se registró información en el atributo "NumRegIdTrib" del nodo "Receptor ".

ComercioExterior · Receptor:NumRegIdTrib

Validación: Si el atributo cfdi:Comprobante:Receptor:Rfc contiene el valor "XEXX010101000" entonces, el atributo cce20:ComercioExterior:Receptor:NumRegIdTrib debe contener un valor, en caso contrario, no debe existir.

CCE134Comercio Exterior 2.0

La clave del país de residencia fiscal del receptor registrada en el nodo Receptor:Domicilio es igual si "MEX" y se registró el atributo NumRegIdTrib.

ComercioExterior · Receptor:NumRegIdTrib

Validación: Cuando el atributo cce20:ComercioExterior:Receptor:NumRegIdTrib contiene un valor, entonces la clave del país de residencia fiscal del receptor registrada en el nodo Receptor:Domicilio debe ser diferente de "MEX".

CCE135Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Receptor:NumRegIdTrib tiene un valor que no existe en el registro del país, no cumple con el patrón publicado en la columna "Formato de registro de identidad tributaria" indicado en el atributo cfdi:Comprobante:Receptor:Domicilio:Pais.

ComercioExterior · Receptor:NumRegIdTrib

Validación: Cuando el atributo NumRegIdTrib contenga un valor, la clave registrada en el atributo Pais del nodo Receptor:Domicilio debe ser diferente de "MEX", y además si para dicha clave la columna "Validación del registro de identidad tributaria" no tiene un valor, el atributo NumRegIdTrib debe cumplir con el patrón que se publique en la columna "Formato de registro de identidad tributaria"; por otro lado si la clave del atributo Pais contiene un valor en la columna "Validación del registro de identidad tributaria", se debe validar en línea el NumRegIdTrib; en caso de que para dicha clave las columnas "Validación del registro de identidad tributaria" y "Formato de registro de identidad tributaria" no tengan algún valor, se debe omitir esta validación.

CCE136Comercio Exterior 2.0

La clave del atributo Pais es "MEX" y el atributo cce20:ComercioExterior:Receptor:Domicilio:Colonia no tiene una clave del catálogo de colonia o la clave registrada en la columna código postal es diferente de la registrada en el atributo "CodigoPostal"; o la clave numérica es diferente de cuatro posiciones.

ComercioExterior · Receptor:Domicilio:Colonia

Validación: El atributo cce20:ComercioExterior:Receptor:Domicilio:Colonia no se debe validar cuando la clave del país sea distinta a "MEX", en caso contrario el atributo cce20:ComercioExterior:Receptor:Domicilio:Colonia debe contener un valor del catálogo catCFDI:c_Colonia, donde la columna código postal sea igual a la clave registrada en el atributo "CodigoPostal" y contener una cadena numérica de cuatro posiciones.

CCE137Comercio Exterior 2.0

La clave del atributo Pais es "MEX", el atributo cce20:ComercioExterior:Receptor:Domicilio:Localidad tiene un valor no registrado en el catálogo de localidades catCFDI:c_Localidad; o la clave de la columna c_Estado es distinta a la registrada en el atributo "Estado".

ComercioExterior · Receptor:Domicilio:Localidad

Validación: El atributo cce20:ComercioExterior:Receptor:Domicilio:Localidad debe contener una clave del catálogo de localidades catCFDI:c_Localidad, donde la columna c_Estado sea igual a la clave registrada en el atributo Estado, esto siempre que el valor del atributo Pais sea "MEX".

CCE138Comercio Exterior 2.0

La clave del atributo Pais es "MEX" y el atributo cce20:ComercioExterior:Receptor:Domicilio:Municipio tiene un valor no registrado en el catálogo de Municipios catCFDI:c_Municipio; o la columna c_Estado es diferente a la clave registrada en el atributo Estado.

ComercioExterior · Receptor:Domicilio:Municipio

Validación: Cuando la clave del atributo Pais sea distinta a "MEX", el atributo cce20:ComercioExterior:Receptor:Domicilio:Municipio, debe contener texto libre; en caso contrario el atributo cce20:ComercioExterior:Receptor:Domicilio:Municipio debe contener una clave del catálogo de municipios catCFDI:c_Municipio, donde la columna c_Estado sea igual a la clave registrada en el atributo Estado.

CCE139Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Receptor:Domicilio:Estado tiene una clave diferente del catálogo de estados catCFDI:c_Estado, o el valor de la columna c_Pais es diferente a la clave del país registrada en el atributo Pais.

ComercioExterior · Receptor:Domicilio:Estado

Validación: Si la clave de país es "ZZZ" o no existe en la columna c_Pais del catálogo catCFDI:c_Estado, se debe registrar texto libre; en caso contrario, el atributo cce20:ComercioExterior:Receptor:Domicilio:Estado debe contener una clave del catálogo de estados catCFDI:c_Estado, donde el valor de la columna c_Pais sea igual a la clave registrada en el atributo Pais.

CCE140Comercio Exterior 2.0

La clave registrada en el atributo Pais es distinta de “MEX” y el valor del atributo cce20:ComercioExterior:Receptor:Domicilio:CodigoPostal no cumple con el patrón especificado en el catálogo de países publicado en el portal del SAT para dicha clave, o se encuentra vacío.

ComercioExterior · Receptor:Domicilio:CodigoPostal

Validación: Cuando la clave registrada en el atributo Pais sea distinta a "MEX", si en el catálogo de países publicado en el portal del SAT en internet se especifica un patrón para el formato del código postal en ese país, el contenido de este atributo debe cumplir con dicho patrón; en caso contrario se debe registrar texto libre.

CCE141Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Receptor:Domicilio:CodigoPostal no contiene una clave del catálogo de códigos postales catCFDI:c_CodigoPostal; o el valor de la columna c_Estado es diferente de la clave registrada en el atributo Estado; o la columna c_Municipio es diferente de la clave registrada en el atributo Municipio; o la columna c_Localidad es distinta a la clave registrada en el atributo Localidad.

ComercioExterior · Receptor:Domicilio:CodigoPostal

Validación: Cuando la clave registrada en el atributo Pais sea "MEX", el atributo cce20:ComercioExterior:Receptor:Domicilio:CodigoPostal debe contener una clave del catálogo de códigos postales catCFDI:c_CodigoPostal, donde el valor de la columna c_Estado sea igual a la clave registrada en el atributo Estado, la columna c_Municipio sea igual a la clave registrada en el atributo Municipio y la columna c_Localidad sea igual a la clave registrada en el atributo Localidad. En caso de no existir clave registrada en Localidad, solo se debe verificar el valor de las columnas c_Estado y c_Municipio.

CCE142Comercio Exterior 2.0

Se registró más de un Destinatario, para el tipo de comprobante "T".

ComercioExterior · Destinatario

Validación: Cuando el tipo de comprobante sea "T" sólo se puede registrar un Destinatario.

CCE143Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Destinatario:NumRegIdTrib no tiene un valor y la clave del país indicado en el atributo cce20:ComercioExterior:Destinatario:Domicilio:Pais es distinto de "MEX".

ComercioExterior · Destinatario:NumRegIdTrib

Validación: El atributo cce20:ComercioExterior:Destinatario:NumRegIdTrib tiene un valor y la clave del país registrada en el atributo cce20:ComercioExterior:Destinatario:Domicilio:Pais debe ser diferente de "MEX".

CCE144Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Destinatario:NumRegIdTrib tiene un valor que no existe en el registro del país, no cumple con el patrón publicado en la columna "Formato de registro de identidad tributaria" indicado en el atributo cce20:ComercioExterior:Destinatario:Domicilio:Pais, o no contiene un valor.

ComercioExterior · Destinatario:Domicilio:Pais

Validación: Cuando el atributo NumRegIdTrib contenga un valor, la clave registrada en el atributo Pais del nodo Destinatario:Domicilio debe ser diferente de "MEX", y además si para dicha clave la columna "Validación del registro de identidad tributaria" no tiene un valor, el atributo NumRegIdTrib debe cumplir con el patrón que se publique en la columna "Formato de registro de identidad tributaria"; por otro lado si la clave del atributo Pais contiene un valor en la columna "Validación del registro de identidad tributaria", se debe validar en línea el NumRegIdTrib; en caso de que para dicha clave las columnas "Validación del registro de identidad tributaria" y "Formato de registro de identidad tributaria" no tengan algún valor, se debe omitir esta validación.

CCE145Comercio Exterior 2.0

La clave del atributo Pais es "MEX" y el atributo cce20:ComercioExterior:Destinatario:Domicilio:Colonia no tiene una clave del catálogo de colonia o la clave registrada en la columna código postal es diferente de la registrada en el atributo "CodigoPostal"; o la clave numérica es diferente de cuatro posiciones.

ComercioExterior · Destinatario:Domicilio:Colonia

Validación: El atributo cce20:ComercioExterior:Destinatario:Domicilio:Colonia no se debe validar cuando la clave del país sea distinta a "MEX", en caso contrario el atributo cce20:ComercioExterior:Destinatario:Domicilio:Colonia debe contener un valor del catCFDI:c_Colonia, donde la columna código postal sea igual a la clave registrada en el atributo "CodigoPostal" y contener una cadena numérica de cuatro posiciones.

CCE146Comercio Exterior 2.0

La clave del atributo Pais es "MEX" y el atributo cce20:ComercioExterior:Destinatario:Domicilio:Localidad tiene un valor no registrado en el catálogo de localidades catCFDI:c_Localidad; o la clave de la columna c_Estado es distinta a la registrada en el atributo "Estado".

ComercioExterior · Destinatario:Domicilio:Localidad

Validación: El atributo cce20:ComercioExterior:Destinatario:Domicilio:Localidad no se debe validar cuando la clave registrada en el atributo Pais sea distinta a "MEX". Cuando la clave registrada en el atributo Pais es “MEX”, el atributo cce20:ComercioExterior:Destinatario:Domicilio:Localidad debe contener una clave del catálogo de localidades catCFDI:c_Localidad, donde la columna c_Estado sea igual a la clave registrada en el atributo Estado.

CCE147Comercio Exterior 2.0

La clave del atributo Pais es "MEX" y el atributo cce20:ComercioExterior:Destinatario:Domicilio:Municipio tiene un valor no registrado en el catálogo de Municipios catCFDI:c_Municipio; o la columna c_Estado es diferente a la clave registrada en el atributo Estado.

ComercioExterior · Destinatario:Domicilio:Municipio

Validación: Cuando la clave del atributo Pais sea distinta a "MEX", el atributo cce20:ComercioExterior:Destinatario:Domicilio:Municipio, debe contener texto libre; en caso contrario el atributo cce20:ComercioExterior:Destinatario:Domicilio:Municipio debe contener una clave del catálogo de municipios catCFDI:c_Municipio, donde la columna c_Estado sea igual a la clave registrada en el atributo Estado.

CCE148Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Destinatario:Domicilio:Estado tiene una clave diferente del catálogo de estados catCFDI:c_Estado, o el valor de la columna c_Pais es diferente a la clave del país registrada en el atributo Pais.

ComercioExterior · Destinatario:Domicilio:Estado

Validación: Si la clave de país es "ZZZ" o no existe en la columna c_Pais del catálogo catCFDI:c_Estado, se debe registrar texto libre; en caso contrario, el atributo cce20:ComercioExterior:Destinatario:Domicilio:Estado debe contener una clave del catálogo de estados catCFDI:c_Estado, donde el valor de la columna c_Pais sea igual a la clave registrada en el atributo Pais.

CCE149Comercio Exterior 2.0

La clave registrada en el atributo Pais es distinta de “MEX” y valor del atributo cce20:ComercioExterior:Destinatario:Domicilio:CodigoPostal no cumple con el patrón especificado en el catálogo de países publicado en el portal del SAT para dicha clave, o se encuentra vacío.

ComercioExterior · Destinatario:Domicilio:CodigoPostal

Validación: Cuando la clave registrada en el atributo Pais sea distinta a "MEX", si en el catálogo de países publicado en el portal del SAT se especifica un patrón para el formato del código postal en ese país, el contenido del atributo cce20:ComercioExterior:Destinatario:Domicilio:CodigoPostal, debe cumplir con dicho patrón; en caso contrario se debe registrar texto libre.

CCE150Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Destinatario:Domicilio:CodigoPostal no contiene una clave del catálogo de códigos postales catCFDI:c_CodigoPostal; o el valor de la columna c_Estado es diferente de la clave registrada en el atributo Estado; o la columna c_Municipio es diferente de la clave registrada en el atributo Municipio; o la columna c_Localidad es distinta a la clave registrada en el atributo Localidad.

ComercioExterior · Destinatario:Domicilio:CodigoPostal

Validación: Cuando la clave registrada en el atributo Pais sea "MEX", el atributo cce20:ComercioExterior:Destinatario:Domicilio:CodigoPostal debe contener una clave del catálogo de códigos postales catCFDI:c_CodigoPostal, donde el valor de la columna c_Estado sea igual a la clave registrada en el atributo Estado, la columna c_Municipio sea igual a la clave registrada en el atributo Municipio y la columna c_Localidad sea igual a la clave registrada en el atributo Localidad. En caso de no existir clave registrada en Localidad, solo se debe verificar el valor de las columnas c_Estado y c_Municipio.

CCE151Comercio Exterior 2.0

Alguno de los conceptos registrados en el nodo cfdi:Comprobante:Conceptos no contiene el atributo cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion.

ComercioExterior · Mercancias:Mercancia:NoIdentificacion.

Validación: Por cada concepto registrado en el nodo cfdi:Comprobante:Conceptos debe tener registrado el atributo cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion y el NoIdentificacion se puede repetir.

CCE152Comercio Exterior 2.0

El valor registrado en el atributo cce20:ComercioExterior:Mercancias:Mercancia:NoIdentificacion no corresponde con alguno de los atributos cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion.

ComercioExterior · Mercancias:Mercancia:NoIdentificacion.

Validación: El nodo cfdi:Comprobante:Conceptos debe tener al menos un concepto registrado por cada mercancía registrada en el nodo cce20:ComercioExterior:Mercancias donde el atributo cce20:ComercioExterior:Mercancias:Mercancia:NoIdentificacion sea igual al atributo cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion.

CCE153Comercio Exterior 2.0

Los valores registrados en los atributos "NoIdentificacion" y "FraccionArancelaria" se repiten en un elemento "Mercancia".

ComercioExterior · Mercancias:Mercancia:NoIdentificacion.

Validación: En el elemento cce20:ComercioExterior:Mercancias no se deben repetir elementos Mercancia donde el NoIdentificacion y la FraccionArancelaria sean iguales.

CCE154Comercio Exterior 2.0

El tipo de comprobante es "T", no existe el atributo Mercancia:CantidadAduana y el atributo cfdi:Comprobante:Conceptos:Concepto:Cantidad no cumple con alguno de los valores permitidos cuando no existe el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana.

ComercioExterior · Mercancias:Mercancia:CantidadAduana

Validación: Cuando el tipo del comprobante sea "T" y no exista el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana, el atributo cfdi:Comprobante:Conceptos:Concepto:Cantidad debe tener como valor mínimo incluyente "0.001" y debe cumplir con el patrón [0-9]{1,14}(.([0-9]{1,3}))?

CCE155Comercio Exterior 2.0

El tipo de comprobante es "T", no existe el atributo Mercancia:CantidadAduana y el atributo cfdi:Comprobante:Conceptos:Concepto:Unidad no cumple con alguno de los valores del catálogo catComExt:c_UnidadAduana cuando no existe el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana.

ComercioExterior · Mercancias:Mercancia:CantidadAduana

Validación: Cuando el tipo del comprobante sea "T" y no exista el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana, el atributo cfdi:Comprobante:Conceptos:Concepto:Unidad debe tener un valor del catálogo catComExt:c_UnidadAduana.

CCE156Comercio Exterior 2.0

El tipo de comprobante es "T", no existe el atributo Mercancia:CantidadAduana y el atributo cfdi:Comprobante:Conceptos:Concepto:ValorUnitario no cumple con alguno de los valores permitidos cuando no se registra el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana.

ComercioExterior · Mercancias:Mercancia:CantidadAduana

Validación: Cuando el tipo del comprobante sea "T" y no exista el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana, el atributo cfdi:Comprobante:Conceptos:Concepto:ValorUnitario debe tener como valor mínimo incluyente "0.0000", debe cumplir con el patrón [0-9]{1,16}(.([0-9]{1,4}))? y debe estar registrado con la cantidad de decimales que soporte la moneda en la que se expresan las cantidades del comprobante.

CCE157Comercio Exterior 2.0

La suma de los campos cfdi:Comprobante:Conceptos:Concepto:Importe no corresponde, se encuentra fuera de los valores mínimo y máximo calculados, o los valores registrados en cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares son "0" o "1", o los a tributos NoIdentificacion de Concepto y Mercancia son distintos; o el tipo de comprobante es distinto de "I" o "E".

ComercioExterior · Mercancias:Mercancia:ValorDolares

Validación: Para los atributos cce20:ComercioExterior:Mercancias:Mercancia:NoIdentificacion que tengan atributos cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares con valor distinto de "0" o "1", se debe obtener la suma de los campos cfdi:Comprobante:Conceptos:Concepto:Importe donde los conceptos tengan el mismo cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion y sea igual al de la mercancía; además si el tipo de comprobante es "I" o "E", el valor de la suma obtenida se debe convertir a la moneda en la que se expresa el comprobante y debe estar entre el valor mínimo y máximo calculados.

CCE158Comercio Exterior 2.0

La suma de los campos cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares no corresponde con la suma de los importes a nivel Concepto cuando el atributo NoIdentificacion de Concepto sea igual al de Mercancia, se encuentra fuera de los valores mínimo y máximo calculados, o los valores registrados en cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares son "0" o "1", o los a tributos NoIdentificacion de Concepto y Mercancia son distintos; o el tipo de comprobante es distinto de "I" o "E".

ComercioExterior · Mercancias:Mercancia:ValorDolares

Validación: Para los atributos cce20:ComercioExterior:Mercancias:Mercancia:NoIdentificacion que tengan atributos cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares con valor distinto de "0" o "1", si el tipo de comprobante es "I" o "E", se debe obtener la suma de los campos cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares de todas las mercancías que tenga el mismo NoIdentificacion y este sea igual al NoIdentificacion del concepto; dicho valor debe ser mayor o igual al importe mínimo y menor o igual al importe máximo de la suma de los importes a nivel Concepto cuando el atributo NoIdentificacion de Concepto sea igual al de Mercancia.

CCE159Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria contiene un valor cuando el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana tiene el valor "99" o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tiene el valor "E48".

ComercioExterior · Mercancias:Mercancia:FraccionArancelaria

Validación: El atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria no debe ser registrado cuando el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana tiene el valor "99" o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tiene el valor "E48".

CCE160Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria no existe y el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana tiene una clave distinta de "99"; o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tiene una clave distinta de "E48".

ComercioExterior · Mercancias:Mercancia:FraccionArancelaria

Validación: El atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria debe ser registrado cuando el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana contiene una clave distinta de "99" o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tiene un valor distinto de "E48".

CCE161Comercio Exterior 2.0

El valor registrado en el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria no se encuentra vigente conforme al catálogo catComExt:c_FraccionArancelaria y el valor del atributo UnidadAduana es diferente al especificado en la columna "UMT" del catálogo catComExt:c_FraccionArancelaria.

ComercioExterior · Mercancias:Mercancia:FraccionArancelaria

Validación: El atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria debe tener un valor vigente del catálogo catComExt:c_FraccionArancelaria, es decir, la fecha del CFDI debe estar entre la fecha de inicio y fin de vigencia en el catálogo; y si existe el atributo UnidadAduana, este debe tener el valor especificado en el catálogo catComExt:c_FraccionArancelaria de la columna "UMT".

CCE162Comercio Exterior 2.0

El atributo Unidad del concepto no corresponde con el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria de acuerdo a la columna "UMT" del catálogo catComExt:c_FraccionArancelaria, o el atributo Unidad tiene un valor no válido o está vacío.

ComercioExterior · Mercancias:Mercancia:FraccionArancelaria

Validación: Cuando el atributo FraccionArancelaria contiene un valor vigente del catálogo catComExt:c_FraccionArancelaria y no existe el atributo UnidadAduana, el atributo Unidad del concepto relacionado (donde el NoIdentificacion es igual al de la Mercancia), debe tener el valor especificado en la columna "UMT” del catálogo catComExt:c_FraccionArancelaria.

CCE163Comercio Exterior 2.0

El valor registrado en el atributo FraccionArancelaria es "9801000100" y los valores del atributo cfdi:Comprobante:Conceptos:Concepto:Descuento que se suman, no contienen el mismo valor en el atributo NoIdentificacion; o dicha suma no coincide con la conversión a la moneda que se expresa en el comprobante.

ComercioExterior · Mercancias:Mercancia:FraccionArancelaria

Validación: Si existe el valor "9801000100" (Importaciones o exportaciones de muestras y muestrarios) en el atributo FraccionArancelaria en alguno de los elementos Mercancia, la suma de los valores del atributo cfdi:Comprobante:Conceptos:Concepto:Descuento que tengan el mismo valor en el atributo NoIdentificacion, debe convertirse a la moneda en la que se expresa el comprobante.

CCE164Comercio Exterior 2.0

La suma del atributo cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares es mayor a la suma de los valores del atributo cfdi:Comprobante:Conceptos:Concepto:Descuento.

ComercioExterior · Mercancias:Mercancia:ValorDolares

Validación: Si existe el valor "9801000100" (Importaciones o exportaciones de muestras y muestrarios) en el atributo FraccionArancelaria en alguno de los elementos Mercancia, la suma de los valores del atributo cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares que tengan el mismo valor en el atributo NoIdentificacion y el NoIdentificacion del concepto debe ser menor o igual a la suma de los valores del atributo cfdi:Comprobante:Conceptos:Concepto:Descuento.

CCE165Comercio Exterior 2.0

No se registró todos o alguno de los atributos CantidadAduana, UnidadAduana o ValorUnitarioAduana, o el atributo NoIdentificacion registrado en los conceptos son diferentes .

ComercioExterior · Mercancias:Mercancia:CantidadAduana Mercancias:Mercancia:UnidadAduana Mercancias:Mercancia:ValorUnitarioAduana

Validación: Si se registra alguno de los atributos CantidadAduana, UnidadAduana y ValorUnitarioAduana o existe más de un registro Concepto con el mismo NoIdentificacion se deben registrar estos tres atributos en los registros.

CCE166Comercio Exterior 2.0

No se registraron todos o alguno de los atributos CantidadAduana, UnidadAduana o ValorUnitarioAduana.

ComercioExterior · Mercancias:Mercancia:CantidadAduana Mercancias:Mercancia:UnidadAduana Mercancias:Mercancia:ValorUnitarioAduana

Validación: Si un elemento cce20:ComercioExterior:Mercancias:Mercancia tiene alguno de los atributos CantidadAduana, UnidadAduana y ValorUnitarioAduana, entonces todos los elementos Mercancia del comprobante deben tener los tres atributos.

CCE167Comercio Exterior 2.0

El valor registrado en el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana no se encuentra en el catálogo de fracciones arancelarias catComExt:c_FraccionArancelaria columna "UMT", o el valor de la columna c_FraccionArancelaria es distinta a la clave registrada en el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria.

ComercioExterior · Mercancias:Mercancia:UnidadAduana

Validación: Si existe un valor registrado en el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana se debe verificar que el valor se encuentre en el catálogo de fracciones arancelarias catComExt:c_FraccionArancelaria columna "UMT", y que la columna c_FraccionArancelaria sea igual a la clave registrada en el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria.

CCE168Comercio Exterior 2.0

El valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana es igual a "99" o el atributo cce20:ComercioExterior:Mercancias:Mercancia:ValorUnitarioAduana es igual a cero.

ComercioExterior · Mercancias:Mercancia:UnidadAduana

Validación: Si el valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana es distinto de "99" que corresponde a los servicios, entonces el cce20:ComercioExterior:Mercancias:Mercancia:ValorUnitarioAduana debe ser mayor que cero.

CCE169Comercio Exterior 2.0

El atributo cce20:ComercioExterior:Mercancias:ValorDolares de cada mercancía registrada debe ser mayor o igual que el límite inferior y menor o igual que el límite superior o uno, cuando la normatividad lo permita y exista el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana.

ComercioExterior · Mercancias:Mercancia:ValorDolares

Validación: El atributo cce20:ComercioExterior:Mercancias:ValorDolares de cada mercancía registrada debe ser mayor o igual que el límite inferior y menor o igual que el límite superior o uno, cuando la normatividad lo permita, siempre que exista el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana.

CCE170Comercio Exterior 2.0

El valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana es distinto a "99" o existe el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria.

ComercioExterior · Mercancias:Mercancia:UnidadAduana

Validación: Si el valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana es igual a "99" que corresponde a los servicios, entonces el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria no debe existir.

CCE171Comercio Exterior 2.0

El valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares de cada mercancía registrada, se encuentra fuera de los límites inferior y superior, si el atributo ValorDolares contiene un valor diferente de “0” o “1”.

ComercioExterior · Mercancias:Mercancia:CantidadAduana

Validación: Si existe el atributo cce20:ComercioExterior:Mercancias:Mercancia:CantidadAduana, el valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares de cada mercancía registrada, debe ser mayor o igual que el límite inferior y menor o igual que el límite superior; o Uno, cuando la normatividad lo permita. En caso de que el atributo ValorDolares tenga el valor “0” o “1” no se deben aplicar las validaciones de los limites superiores o inferiores del atributo NumIdentificacion.

CCE172Comercio Exterior 2.0

El valor del atributo ValorDolares es diferente al producto del valor del atributo cfdi:Comprobante:Conceptos:Concepto:Importe por el valor del atributo cfdi:Comprobante:TipoCambio y dividido entre el valor del atributo cce20:ComercioExterior:TipoDeCambioUSD; o es diferente de Cero, cuando el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tienen el valor "99" y "E48" respectivamente, que corresponde a los servicios y el servicio no forma parte del valor en aduana.

ComercioExterior · Mercancias:Mercancia:ValorDolares

Validación: El valor del atributo ValorDolares puede ser igual al producto del valor del atributo cfdi:Comprobante:Conceptos:Concepto:Importe por el valor del atributo cfdi:Comprobante:TipoCambio y dividido entre valor del atributo cce20:ComercioExterior:TipoDeCambioUSD, registrando la cantidad con centésimas (usar la regla del atributo NoIdentificacion para obtener los valores mínimo y máximo, el valor debe estar en este rango), donde el atributo cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion es igual al atributo cce20:ComercioExterior:Mercancias:Mercancia:NoIdentificacion y el NoIdentificacion no se repite en conceptos ni en mercancías; o Cero, cuando el atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana o el atributo cfdi:Comprobante:Conceptos:Concepto:ClaveUnidad tienen el valor "99" y "E48" respectivamente, que corresponde a los servicios y el servicio no forma parte del valor en aduana; o uno, cuando la normatividad lo permita.

CCE999Comercio Exterior 2.0

Error no clasificado

ComercioExterior · Mercancias:Mercancia:ValorDolares

Validación: Otro error en el documento

Reten20101Retenciones 2.0

El resultado de la digestión debe ser igual al resultado de la desencripción del sello.

Retenciones · Sello

Validación: Desencriptar el contenido de este atributo usando el certificado incluido en el atributo "Cert". 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.

Reten20102Retenciones 2.0

EL certificado no cumple con alguno de los valores permitidos.

Retenciones · Certificado

Validación: El atributo debe contener un archivo .cer válido.

Reten20103Retenciones 2.0

El campo FechaExp no cumple con el patrón requerido.

Retenciones · FechaExp

Validación: Este atributo 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.

Reten20104Retenciones 2.0

El campo LugarExpRetenc no contiene un valor del catálogo c_CodigoPostal.

Retenciones · LugarExpRetenc

Validación: Este atributo debe contener un valor del catálogo c_CodigoPostal.

Reten20105Retenciones 2.0

El campo CveRetenc no contiene un valor del catálogo c_CveRetenc.

Retenciones · CveRetenc

Validación: Este atributo debe contener una clave vigente del catálogo c_CveRetenc.

Reten20106Retenciones 2.0

El campo DescRetenc debe existir.

Retenciones · CveRetenc

Validación: Si el valor de este atributo es "25", debe existir el atributo DescRetenc.

Reten20107Retenciones 2.0

El campo CveRetenc no contiene el complemento asociado a la clave.

Retenciones · CveRetenc

Validación: Cuando el catálogo señale un complemento asociado al tipo de retención, se debe incluir dicho complemento en el comprobante.

Reten20108Retenciones 2.0

Los campos MontoTotGrav y MontoTotExent contienen un valor diferente de cero.

Retenciones · CveRetenc

Validación: Si el valor registrado en este atributo es "28", los atributos MontoTotGrav y MontoTotExent deben tener el valor cero.

Reten20109Retenciones 2.0

El campo TipoRelacion no contiene un valor del catálogo c_TipoRelacion.

Retenciones:CfdiRetenRelacionados · TipoRelacion

Validación: Este atributo debe contener un valor del catálogo c_TipoRelacion.

Reten20110Retenciones 2.0

El valor del campo NomDenRazSocE del emisor debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Retenciones:Emisor · NomDenRazSocE

Validación: El valor de este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Reten20111Retenciones 2.0

El campo RegimenFiscalE, no contiene un valor del catálogo c_RegimenFiscalE.

Retenciones:Emisor · RegimenFiscalE

Validación: Este atributo, debe contener un valor del catálogo c_RegimenFiscalE.

Reten20112Retenciones 2.0

La clave del campo RegimenFiscalE debe corresponder con el tipo de persona (física o moral).

Retenciones:Emisor · RegimenFiscalE

Validación: El valor de este atributo debe corresponder con el tipo de persona del emisor, es decir, si el RFC tiene longitud de 12 posiciones, debe ser de persona moral y si tiene longitud de 13 posiciones debe ser de persona física.

Reten20113Retenciones 2.0

El valor del campo RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT.

Retenciones:Receptor/Nacional · RfcR

Validación: Si el valor de este atributo es diferente de la clave del RFC genérica "XAXX010101000", este valor debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Reten20114Retenciones 2.0

El valor del campo RFC del receptor no es un RFC genérico "XAXX010101000".

Retenciones:Receptor/Nacional · RfcR

Validación: Si el valor de este atributo es "XAXX010101000", este valor no se debe validar en la lista de RFC inscritos no cancelados en el SAT.

Reten20115Retenciones 2.0

El valor del campo NomDenRazSocR del receptor debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Retenciones:Receptor/Nacional · NomDenRazSocR

Validación: El valor de este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Reten20116Retenciones 2.0

El valor del campo NomDenRazSocR debe pertenecer al nombre asociado al RFC registrado en el campo RfcR del Receptor. El valor del campo RfcR del Receptor debe ser "XAXX010101000" cuando el campo NomDenRazSocR contenga el valor “PÚBLICO EN GENERAL”.

Retenciones:Receptor/Nacional · NomDenRazSocR

Validación: El valor de este atributo debe pertenecer al nombre asociado al RFC registrado en el atributo RfcR del Nodo Receptor/Nacional. Si el valor registrado en este atributo es “PÚBLICO EN GENERAL”, el valor "XAXX010101000" debe existir en el atributo RfcR del nodo Receptor/Nacional.

Reten20117Retenciones 2.0

El campo RfcR no corresponde a persona física.

Retenciones:Receptor/Nacional · CurpR

Validación: Este atributo no debe existir si la clave del RFC del atributo RfcR tiene longitud de 12 posiciones.

Reten20119Retenciones 2.0

El valor del campo DomicilioFiscalR debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Retenciones:Receptor/Nacional · DomicilioFiscalR

Validación: El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.

Reten20120Retenciones 2.0

El valor del campo DomicilioFiscalR debe pertenecer al RFC registrado en el campo RfcR. El valor del campo DomicilioFiscalR debe ser igual al valor del atributo LugarExpRetenc, si el valor del atributo RfcR es XAXX010101000.

Retenciones:Receptor/Nacional · DomicilioFiscalR

Validación: El valor de este atributo debe estar asociado al RFC registrado en el atributo RfcR del Nodo Nacional/Receptor. Si el valor del atributo RfcR es "XAXX010101000”, el valor de este atributo debe ser igual al registrado en el atributo LugarExpRetenc.

Reten20121Retenciones 2.0

El campo MesIni no contiene un valor del catálogo c_Periodo.

Retenciones:Periodo · MesIni

Validación: Este atributo debe contener una clave vigente del catálogo c_Periodo.

Reten20122Retenciones 2.0

El valor del campo MesIni no es menor o igual que el valor registrado en el campo MesFin.

Retenciones:Periodo · MesIni

Validación: La clave vigente del catálogo c_Periodo registrada en este atributo debe ser menor o igual que el atributo MesFin.

Reten20123Retenciones 2.0

El campo MesFin no contiene un valor del catálogo c_Periodo.

Retenciones:Periodo · MesFin

Validación: Este atributo debe contener una clave vigente del catálogo c_Periodo.

Reten20124Retenciones 2.0

El valor del campo MesFin no es mayor o igual que el valor registrado en el campo MesIni.

Retenciones:Periodo · MesFin

Validación: La clave vigente del catálogo c_Periodo registrada en este atributo debe ser mayor o igual que el atributo MesIni.

Reten20126Retenciones 2.0

El valor registrado en el campo Ejercicio, no es igual al año en curso o no contiene un valor de hasta 5 ejercicios anteriores.

Retenciones:Periodo · Ejercicio

Validación: El valor de este atributo debe expresar el año al que corresponde la información del comprobante que ampara retenciones e información de pagos.

Reten20127Retenciones 2.0

El valor del campo MontoTotOperacion no es igual a la suma de los atributos MontoTotGrav y MontoTotExent.

Retenciones:Totales · MontoTotOperacion

Validación: El valor de este atributo debe ser igual a la suma de los atributos MontoTotGrav y MontoTotExent.

Reten20128Retenciones 2.0

El valor del atributo MontoTotGrav es mayor al atributo MontoTotOperacion

Retenciones:Totales · MontoTotGrav

Validación: El valor de este atributo debe ser menor o igual al atributo MontoTotOperacion.

Reten20129Retenciones 2.0

El valor del atributo MontoTotExent es mayor al atributo MontoTotOperacion

Retenciones:Totales · MontoTotExent

Validación: El valor de este atributo debe ser menor o igual al atributo MontoTotOperacion.

Reten20130Retenciones 2.0

No existen los Impuestos Retenidos.

Retenciones:Totales · MontoTotRet

Validación: Si el valor de este atributo es mayor que cero, debe existir al menos un nodo hijo de ImpRetenidos.

Reten20131Retenciones 2.0

El valor del campo MontoTotRet no es igual a la suma de los campos MontoRet.

Retenciones:Totales · MontoTotRet

Validación: Si el valor de este atributo es mayor que cero, debe ser igual a la suma de los atributos MontoRet.

Reten20132Retenciones 2.0

El valor del campo UtilidadBimestral no es mayor que cero.

Retenciones:Totales · UtilidadBimestral

Validación: Si el valor registrado en el atributo CveRetenc es "28", el valor de este atributo debe ser mayor que cero.

Reten20133Retenciones 2.0

El valor del campo ISRCorrespondiente no es mayor que cero.

Retenciones:Totales · ISRCorrespondiente

Validación: Si el valor registrado en el atributo CveRetenc es "28", el valor de este atributo debe ser mayor que cero.

Reten20134Retenciones 2.0

El campo TipoPagoRet no contiene un valor del catálogo c_TipoPagoRet.

Retenciones:Totales:ImpRetenidos · TipoPagoRet

Validación: Este atributo debe contener una clave vigente del catálogo c_TipoPagoRet.

Reten20135Retenciones 2.0

El valor del campo TipoPagoRet no corresponde con el tipo de impuesto asociado con el valor registrado en el campo ImpuestoRet.

Retenciones:Totales:ImpRetenidos · TipoPagoRet

Validación: Este atributo debe corresponder con el valor de la columna "Tipo impuesto" del catálogo c_TipoPagoRet registrado en el atributo ImpuestoRet.

Reten20136Retenciones 2.0

El valor del campo NomDenRazSocE debe pertenecer al nombre asociado a la clave del RFC registrado en el campo RfcE del Emisor.

Retenciones:Emisor · NomDenRazSocE

Validación: El valor de este atributo debe pertenecer al nombre asociado al RFC registrado en el atributo RfcE del Nodo Emisor.

Cómo llega un error a tu sistema

Un rechazo del SAT responde HTTP 400 con code 400 y la clave al inicio de message. El texto que sigue a la clave es el de la matriz, aunque el SAT lo ajusta de vez en cuando; a veces lo acompaña un - Detalle: … del proveedor de timbrado.

Los códigos propios de la API llegan en code (702, 601, 5034…) con su explicación en message. El 702 trae además la lista errors con el campo y el valor que no pasaron el esquema del SAT. En Respuestas y errores está el formato completo.

// res: el JSON de la respuesta con HTTP 400
const clave = /^([A-Za-z]+\d+)\s*-/.exec(res.message ?? "")?.[1];

if (clave) {
  // Rechazo del SAT: CFDI40143, CRP20217, NOM45…
  manejarRechazoSat(clave, res.message);
} else {
  // Código de la API: 702, 601, 5034…
  manejarCodigoApi(res.code, res);
}

Fuentes

Las claves del SAT salen de sus matrices de errores vigentes, descargadas del portal del SAT el 3 de noviembre de 2026. Los códigos de la API salen del código de la API v5 que corre en producción.

Revisado contra la API v5 en producción el 2026-11-03.