Error matrix
The 555 keys the SAT uses to reject a CFDI 4.0 or its complements, and the 106 codes of the API v5 itself. Type a key, a field name or part of the message. The SAT publishes its messages in Spanish only, so they reach your system in Spanish.
Find a key
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>]
When: The X-Api-Key header didn't arrive, is empty, isn't Base64, or the key doesn't match any account in THIS environment. The most common cause is using the production key against the sandbox or the other way around: they're separate databases and keys. The [Environment: …] suffix tells you which environment answered.
What to do: Send X-Api-Key with the key in Base64 exactly as GET /api/v5/account/authorize returns it (preferably the x_api_key_v2 field) and confirm the URL belongs to the same environment as the key.
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>]
When: The key uses the v2 scheme (prefix fdk_live_, fdk_test_ or fdk_dev_) and its prefix belongs to another environment: for example a production key (fdk_live_) against the sandbox.
What to do: Use the key issued for the environment you're calling: the production one against app.facturadigital.com.mx and the sandbox one against sandbox-app.facturadigital.com.mx. Each environment gives you its own in GET /api/v5/account/authorize.
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>]
When: The previous key (RFC-guid format, with no fdk_ prefix) is past its cutoff date, July 1, 2027. Before the cutoff that key keeps working, but every response carries the X-FD-ApiKey-Deprecation header with the date.
What to do: Call GET /api/v5/account/authorize with your username and password and use the x_api_key_v2 field in X-Api-Key.
Invalid X-API-Key. Please make sure you're passing the X-API-Key in the Header.
When: In these two methods any key failure (missing, invalid, from another environment or an expired legacy key) gets this generic text, without the environment detail, and goes into the attempts log.
What to do: Check the key as with code 501: Base64 of x_api_key_v2, from the same environment as the URL.
<texto del error original>, p. ej. "Missing parameter 'rfc' in GET." o "The RFC expression does not contain a valid date"
When: In validator/lrfc EVERY error other than an RFC with invalid parts comes out with code "401" (text): invalid key, missing rfc parameter, no validator credits or an RFC whose date doesn't exist. The message keeps the text of the actual error.
What to do: Read message to see which one it was: fix the key, send ?rfc=, top up your validator credits or check the RFC date (AAMMDD).
Username or password invalid.
When: The api_usuario and api_password headers don't match an active user of the account. Each failed attempt counts toward the IP and user block, and the response takes between 0.5 and 1.5 s on purpose.
What to do: Fix the username and password (the same ones you use to log in on the web). If your password changed, use the new one.
Too many failed attempts. Try again later.
When: The IP is blocked, or the IP + user pair got blocked after earlier failed attempts (the same mechanism as the web login).
What to do: Wait for the block to expire before you try again, and check that your integration isn't retrying with old credentials.
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.
When: The account has an unpaid excess traffic order and this request is identical (same body and header fingerprint) to one the API v5 already rejected in the last 24 hours. It comes with the Retry-After: 86400 header. The request isn't processed.
What to do: Don't resend the same request: fix the value that made it fail (which changes the fingerprint) or pay the order in Mi Cuenta (My Account) to lift the brake.
Insufficient credits in your account. Go to www.facturadigital.com.mx and get more credits.
When: The account's stamping credit balance is zero or less. It's checked before calling the PAC. In cancel the text is "Cancel failed. Insufficient credits in your account. Go to www.facturadigital.com.mx for purchase more credits." and in send "You have no credits available in your account. Go to www.facturadigital.com.mx to purchase a package." (or "You have no credits available in your account."). Cancelling and resending by email don't deduct credits, but they require a balance above zero; cancelwithcsd doesn't require it.
What to do: Buy credits in Mi Cuenta and send again. Check the balance with GET /api/v5/account/balance.
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>
When: The validator credits (a balance separate from the stamping one) reached zero. In validator/lrfc this same error comes out with code "401".
What to do: Buy validator credits. Check that balance with GET /api/v5/validator/balance.
Please upload a valid Digital Seal Certificate (CSD). Go to your control panel, menu Settings (Configuración ---> Certificados CSD), and upload them.
When: The account has no active digital seal certificate (CSD). In retention the text is in Spanish: "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." Note: POST /invoice/cancel doesn't run this check (see the 400 "No se pudo procesar la cancelación").
What to do: Upload the CSD .cer, .key and password in Configuración › Certificados CSD or with POST /api/v5/account/csd.
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.
When: The account has an active CSD, but sealing the XML failed: the .cer or the .key is missing on the server, the .cer isn't valid, the saved password doesn't open the key or the sealing itself failed. errorType: csd_cer_no_disponible, csd_key_no_disponible or csd_sello_fallido; docs: https://docs.facturadigital.com.mx/errores/706. The PAC wasn't called.
What to do: Upload the full CSD again (.cer, .key and password) in Configuración › Certificados or with POST /api/v5/account/csd, and stamp again.
The 'b64Cer' and 'b64Key' parameters are required in the body.
When: The CSD files in the body are missing or malformed. Other texts for the same case: "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." (account/csd only) and "Could not read the RFC from the provided certificate. Make sure 'b64Cer' is a valid SAT certificate (.cer)." (cancelwithcsd only).
What to do: Send b64Cer and b64Key in the body (form-encoded) with the Base64 of the .cer and .key files exactly as the SAT issued them, and passwordCSD with the password.
The certificate password is incorrect.
When: The CSD was rejected when it was analyzed. Other texts for the same case: "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." and "The certificate files could not be processed. Verify they are valid SAT CSD files."
What to do: Upload a current CSD (not the e.firma) from the same RFC as the account, with the .cer and the .key from the same request and the correct password.
Invalid or non received json in headers or body.
When: The json parameter didn't arrive in the body, and neither did the JSON header (in selfservice/ticket, the JSONCFDI header).
What to do: Send the voucher as JSON text in the json field of the body (form-data or x-www-form-urlencoded).
The 'json' parameter is not valid JSON (<error del lector JSON>). El parámetro 'json' no es un JSON válido.
When: The json text can't be read as JSON, or it can be read but isn't an object: "The 'json' parameter must be a JSON object ({...}). El parámetro 'json' debe ser un objeto JSON." In retention the text is "Invalid json received.".
What to do: Validate the JSON before you send it (quotes, commas, control characters) and send an object {...} at the root.
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>.
When: A node has a type the XML builder doesn't accept: Receptor or Emisor as text, an attribute as an array, a line item or a tax that is text instead of an object, and so on. errorType: json_type_validation; errors[] carries field and message for each field. It's checked before the PAC.
What to do: Fix the type of each field listed in errors (an object {...} where a node goes, text or a number where an attribute goes), following the example in the documentation.
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...
When: Version is missing from the JSON root or isn't exactly the text "4.0": "The 'Version' field must be '4.0'.".
What to do: Put "Version": "4.0" (as text) at the JSON root.
Invalid 'plantilla_id' / 'config_plantilla_id': the PDF template does not exist, is not active, or does not belong to this account/environment.
When: The PDF template you asked for doesn't exist, isn't active or belongs to another account or environment. If plantilla_id isn't a positive integer: "The 'plantilla_id' field must be a positive integer (the template id shown in your PDF templates screen).". It's checked before stamping.
What to do: Use the id of an active template in your account in that environment, or remove plantilla_id / config_plantilla_id to use the default one.
The 'enviar_mail.destinatarios' attribute is required and must contain valid email addresses.
When: The enviar_mail block has an empty or invalid destinatarios. Other texts from the same block: "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." and "The 'enviar_mail.mensaje' attribute exceeds the 2000 character limit.". It's checked before stamping.
What to do: Send valid addresses separated by commas (or semicolons) within the limits, or remove the enviar_mail block.
No folio range found for Serie='<serie>' and TipoDeComprobante='<tipo>'. Configure it in your control panel (Configuracion -> Series y Folios).
When: You asked for Folio "AUTO" and there's no range set up for that Serie and TipoDeComprobante. With Folio AUTO, Serie is also required ("Folio 'AUTO' requires a non-empty 'Serie' attribute at root level.") and so is TipoDeComprobante ("Folio 'AUTO' requires the 'TipoDeComprobante' attribute.").
What to do: Set up the series in Configuración › Series y Folios with the same voucher type, or send an explicit folio.
Invalid 'ImpuestosLocales' complement: <mensaje de cada regla, en inglés>
When: The Local Taxes complement didn't pass the rules checked before the PAC. errorType: implocal_validation; for each problem, errors[] carries severity, code (NOMBRE_VACIO, TASA_RANGO, TOTAL_NO_CUADRA…), field (TrasladosLocales[i], RetencionesLocales[i] or ImpuestosLocales), tax and message.
What to do: Look up each errors[].code in this matrix and fix the row shown in 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.
When: It comes in errors[].code of a 400 implocal_validation: part of the ImpuestosLocales node isn't shaped as a row (name, rate and amount). Those parts used to be dropped and the CFDI went out without the complement.
What to do: Send each local tax as an object with its name, rate and amount inside TrasladosLocales or RetencionesLocales.
Local <transferred|withheld> tax #<n> has no name; the SAT requires it.
When: It comes in errors[].code of a 400 implocal_validation: a local tax row has no name.
What to do: Put the local tax name in that row (for example ISH).
Tax rate for "<impuesto>" ("<valor>") is not a number. Use a percentage with a decimal point and no thousands separator: 3.00.
When: It comes in errors[].code of a 400 implocal_validation: the rate of a local tax isn't a number.
What to do: Write the rate as a percentage with a decimal point, with no thousands separator or % sign: 3.00.
Tax rate for "<impuesto>" is <tasa>%. It must be between 0 and 100; it is a percentage, not a factor.
When: It comes in errors[].code of a 400 implocal_validation: the rate is negative or greater than 100.
What to do: The local rate goes as a percentage (3.00 for 3%), not as a factor (0.03), and never above 100.
Amount for "<impuesto>" ("<valor>") is not a number. Use a decimal point and no thousands separator: 1500.00.
When: It comes in errors[].code of a 400 implocal_validation: the amount of a local tax isn't a number (for example, it has a thousands comma).
What to do: Write the amount with a decimal point and no thousands separator: 1500.00.
Amount for "<impuesto>" is negative (<importe>).
When: It comes in errors[].code of a 400 implocal_validation: the amount of a local tax is negative.
What to do: Send the amount as a positive number; if it's a withholding, it goes in RetencionesLocales.
Amount for "<impuesto>" (<importe>) is greater than the invoice base (<base>).
When: It comes in errors[].code of a 400 implocal_validation: the local amount is greater than the voucher base (SubTotal minus Descuento), with a tolerance of 0.01.
What to do: Check the amount: with a rate of up to 100% it can never exceed SubTotal − Descuento.
<TotaldeTraslados|TotaldeRetenciones> declares "<valor>", which is not a number. Use a decimal point and no thousands separator: 1500.00.
When: It comes in errors[].code of a 400 implocal_validation: the declared total of the complement isn't a number.
What to do: Write TotaldeTraslados / TotaldeRetenciones with a decimal point and no thousands separator, or remove it so it gets calculated.
<TotaldeTraslados|TotaldeRetenciones> declares <declarado> but the local <transferred|withheld> taxes add up to <suma>.
When: It comes in errors[].code of a 400 implocal_validation: the declared total isn't the sum of the rows (tolerance 0.01).
What to do: Make the declared total the exact sum of the row amounts, or remove it so it gets calculated.
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 .
When: The Carta Porte complement (3.0 gets converted to 3.1 first) fails rules from the SAT CCP 3.1 matrix that the API checks before the PAC: CP104, CP106, CP107, CP109, CP110, CP130, CP141, CP149, CP154, CP176, CP193, CP194, CP196 and CP199. errorType: cartaporte_validation; docs points to the guide; errors[] carries severity, code (CPxxx), field and message (in Spanish, written by Factura Digital).
What to do: Look up each errors[].code in the Carta Porte 3.1 matrix and fix the field shown in field.
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'.
When: A payroll CFDI has HorasExtra but no earning with TipoPercepcion 019 to attach them to.
What to do: Add earning 019 (Horas extra, overtime) with its amount and put the HorasExtra inside it.
El CFDI no cumple con el esquema del SAT. Se encontraron <n> errores de validación. Revisa el campo 'errors' para el detalle.
When: The built XML doesn't pass the SAT XSDs (a required field is missing, or a value fails the catalog, pattern or length). It's validated before the PAC. errorType: cfdi_schema_validation (in retention: cfdi_retenciones_schema_validation, with "El CFDI de Retenciones no cumple…"); docs: https://docs.facturadigital.com.mx/errores/702; errors[] carries severity, libxmlCode, message (in Spanish), rawMessage (the original libxml text) and, when they can be extracted, element, namespace, field, value, line and column.
What to do: Fix each field listed in errors (field and value tell you which one and with what value) and send again.
El CFDI no declara xsi:schemaLocation; no se puede validar dinámicamente. Cadena XML: <xml>
When: The built XML has no xsi:schemaLocation. In practice this doesn't happen: the builder always writes it. If it shows up, it's a platform defect.
What to do: Tell support, with the time it happened.
No se resolvió ningún XSD del SAT en xsi:schemaLocation; no se puede validar. Cadena XML: <xml>
When: None of the schemas in xsi:schemaLocation is from the SAT. In practice this doesn't happen with the API's builder. If it shows up, it's a platform defect.
What to do: Tell support, with the time it happened.
xsi:schemaLocation mal formado (se esperan pares namespace-url). Cadena XML: <xml>
When: The built xsi:schemaLocation doesn't come in namespace-URL pairs. In practice this doesn't happen with the API's builder. If it shows up, it's a platform defect.
What to do: Tell support, with the time it happened.
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.
When: A PHP error before stamping, almost always from a node with a shape the builder didn't expect and the type check didn't cover. In 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."; in stampxml and stampxmlfile: "No se pudo procesar el XML recibido (<clase>).".
What to do: Compare your JSON with the documentation example node by node (objects, lists and text). If you can't find the difference, send the JSON to support.
The document was generated successfully
When: Successful stamping; the cfdi node carries the UUID, the seals, XmlBase64 and the PDF and XML links (with Folio AUTO, also Serie and Folio). stampxml and stampxmlfile respond "XML stamped successfully"; retention responds with mensaje/codigo "Timbrado exitoso" / 200. With OmitirTimbrado = "si" it responds "The document was generated successfully without stamp (SIN TIMBRAR)" with xmlBase64 and does NOT stamp or charge. If the PAC returns a UUID the account already had registered, it responds with the existing one and ya_existia: true, and doesn't charge again. If something fails while saving after the stamp, the response is still this success.
What to do: Store the UUID and the XML. With ya_existia: true nothing new was stamped.
307 - El comprobante contiene un timbre previo. Ya fue timbrado con el UUID <UUID>; no se volvió a timbrar ni se consumió crédito.
When: The PAC responded 307: that same XML was already stamped (typical when the first response got lost and you resend). errorType: timbre_previo; context.uuid carries the UUID of the earlier stamp when the PAC sends it. The text before the period is the PAC's. With Folio AUTO, the folio does NOT go back to the counter.
What to do: Don't resend: that CFDI already exists with the SAT under the UUID in context.uuid. Get its XML (in stampxml and stampxmlfile, the docs/xml link) or look it up with GET /api/v5/validator/cfdi.
<CLAVE> - <mensaje del SAT> - Detalle: <detalle del PAC>
When: A SAT rejection passed on by the PAC: the SAT matrix key (CFDI40143, CRP20217, NOM45, CP101…) goes at the start of message and code is the HTTP status the PAC responded with (400). It can carry " - Detalle: …". In retention it ends in " *FDSWRET* " and comes with mensaje/codigo as well as message/code. URLs in the text are replaced with "Servicio no disponible. Favor de reintentar en unos minutos." and the DomicilioFiscalReceptor text is rewritten as "El campo Codigo Postal (DomicilioFiscalReceptor) no coincide con los registros del SAT".
What to do: Look up the key in the SAT matrix and fix the value; until the value changes, the SAT responds the same.
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>.
When: UNCERTAIN response: the request did reach the PAC, but the PAC didn't answer within 120 s, dropped the connection, or responded with a 5xx or something unreadable (variant: "La respuesta del PAC llegó incompleta o con un error suyo: …"). The platform saved nothing, but the PAC may have stamped. In create the response carries the Serie and Folio keys (also with Folio AUTO) and the phrase "Se usó …". With Folio AUTO, the folio does NOT go back to the counter.
What to do: Before you resend, look on the SAT portal or in your mailbox for a CFDI with that series and folio. If it exists, don't stamp it again. If it doesn't, resend. In stampxml and stampxmlfile you can resend the same XML: if it was already stamped, the PAC responds 307 with the UUID instead of duplicating it.
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).
When: The PAC DID stamp, but the response couldn't be built. context.uuid carries the UUID when it's readable. Variants: "…quedó guardado…" (create: the row exists and the credit was charged); "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."; in stampxml/stampxmlfile "…El XML timbrado está en <liga>. No lo vuelvas a enviar."; with no readable UUID: "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.".
What to do: Don't resend. Use context.uuid: confirm it with GET /api/v5/validator/cfdi, look for it in GET /api/v5/invoice/list… (if the message says "quedó guardado") or download the XML from the link in the message. If it says it wasn't registered, ask support to register it with that UUID.
No se pudo conectar con el PAC: tu factura no se timbró (no se envió nada). Intenta de nuevo en unos minutos.
When: The API couldn't even connect to the PAC (DNS, connection refused, TLS or a timeout while connecting, 10 s limit): not a single byte went out, so there's no CFDI. With Folio AUTO, the folio goes back to the counter.
What to do: Retry as is in a few minutes; there's no risk of duplicates.
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.
When: A platform lock before the PAC: a column that stamping writes after the stamp is missing (a database change that wasn't applied). Nothing was sent to the PAC.
What to do: Tell support; it isn't a problem with your data.
Invalid or missing xmlbase64 parameters in body.
When: The xmlbase64 field didn't arrive in the body, or it's empty.
What to do: Send the already sealed XML, Base64-encoded, in xmlbase64.
<p>El tipo de archivo que esta tratando de subir no está permitido.</p>
When: The xml file upload (multipart) failed. CodeIgniter provides the text in Spanish and it comes with <p> tags: also "<p>No ha seleccionado ningún archivo para subir.</p>" or "<p>El archivo que está tratando de subir es más grande que el tamaño permitido.</p>" (40 MB limit). Only .xml files are accepted.
What to do: Upload the XML in the xml field of the multipart form, with the .xml extension.
Estamos preparando tu espacio de documentos; tus créditos siguen intactos. Escríbenos y lo dejamos listo en un momento.
When: The account's document folder on the server doesn't exist or can't be written; the request stops before the PAC and before any charge. In stampxmlfile you can also get "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." if the upload folder couldn't be prepared.
What to do: Write to support; once they confirm, resend. Nothing was sent to the SAT.
UUID to be cancelled (folio fiscal) not found in the headers.
When: The UUID header is missing, or doesn't have a UUID format: "The 'UUID' header has an invalid format. Expected format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.". In cancelwithcsd the UUID goes in the body: "The 'uuid' parameter is required in the body." / "The 'uuid' parameter has an invalid format. Expected format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.". It's checked before the PAC.
What to do: Send the full fiscal folio (36 characters with hyphens) in the UUID header (in cancelwithcsd, in the uuid field of the body).
Invalid cancellation reason ('MOTIVO'). Valid values: 01, 02, 03, 04.
When: The reason isn't 01, 02, 03 or 04. With no reason, 02 is used. In cancel and cancelretention a single digit ("2") is padded to "02"; in cancelretention, a reason that isn't 1 to 4 as a number responds "Invalid cancellation reason. Valid values: 01, 02, 03, 04" (without ('MOTIVO')). cancelwithcsd doesn't pad the digit: "2" responds "Invalid cancellation reason ('motivo'). Valid values: 01, 02, 03, 04.".
What to do: Send MOTIVO with two digits: 01, 02, 03 or 04.
When using reason '01', the substitute UUID ('FOLIOSUSTITUCION') is required.
When: With reason 01 the substitute folio is missing, or doesn't have a UUID format: "The 'FOLIOSUSTITUCION' header has an invalid format. Expected format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.". In cancelretention: "When using reason '01', the substitute UUID (FOLIOSUSTITUCION) is required."; in cancelwithcsd: "When using reason '01', the substitute UUID ('folioSustitucion') is required.".
What to do: First stamp the CFDI that replaces it and send its UUID in FOLIOSUSTITUCION (in cancelwithcsd, folioSustitucion in the body).
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.
When: The CFDI has self-invoicing tickets and another global invoice for the same period is linking or stamping them right now. It stops before the PAC: nothing was cancelled.
What to do: Wait a minute and try again.
No se pudo procesar la cancelación (<TypeError|Error>).
When: A PHP error before or during the cancellation. The most common case: in POST /invoice/cancel the account has no active CSD (that method doesn't respond 602 and fails when it reads the certificate password).
What to do: Check that the account has its CSD uploaded and current (or use cancelwithcsd and send the CSD). If it does, tell support with the time and the UUID.
Respuesta inválida del PAC (HTTP <n>): curl #<n> <detalle> - [CAN-SW]
When: There was no response from the PAC when cancelling (connection, 120 s timeout) or what it responded isn't JSON ("Respuesta inválida del PAC (HTTP <n>). - [CAN-SW]"). In cancelretention the tag is [CAN-RET-SW-REST], but it almost never shows up there: an empty response comes as code 0 with HTTP 200.
What to do: Check the CFDI status with GET /api/v5/validator/cfdi and cancel again if it's still active. Resending a cancellation doesn't duplicate anything: if it was already cancelled, the SAT responds 202.
Respuesta inválida del PAC (HTTP 0): curl #<n> <detalle> - [CAN-CSD-SW-V2]
When: In cancelwithcsd, the PAC didn't respond (code 502) or responded with something that isn't JSON; in that case code is the PAC's HTTP status (for example 500 or 504) and the text is "Respuesta inválida del PAC (HTTP <n>). - [CAN-CSD-SW-V2]".
What to do: Check the status with GET /api/v5/validator/cfdi and cancel again if it's still active.
Solicitud de cancelación exitosa * Se considera una solicitud de cancelación exitosa, sin embargo esto no asegura su cancelación
When: The SAT received the request. The 201 comes in uuid_estatus (and estatus_uuid); in code it's normalized to 200. With that 200 the platform marks the CFDI as cancelled and saves the acknowledgment (acuse key, in Base64). In cancelwithcsd the PAC provides the text.
What to do: Save the acknowledgment. If the CFDI needs the recipient's acceptance, the final status shows up in GET /api/v5/validator/cfdi (estatuscancelacion).
UUID cancelado * La constancia de retenciones quedó cancelada ante el SAT.
When: The withholding certificate got cancelled. The 1201 comes in uuid_estatus (and estatus_uuid); in code it's normalized to 200 and the platform marks it as cancelled.
What to do: Save the acknowledgment from the acuse key.
Folio Fiscal Previamente Cancelado * Se considera solicitud de cancelación previamente enviada. Estatus Cancelado ante el SAT.
When: The CFDI was already cancelled with the SAT. It comes in code, uuid_estatus and estatus_uuid with HTTP 200. With 202 the platform does NOT update the local record (it only does with 200): if the first cancellation got lost, the CFDI can still show as active in your Factura Digital list.
What to do: You don't need to cancel again. If it still shows as active in your list, confirm it with GET /api/v5/validator/cfdi and ask support to update it.
UUID previamente cancelado * La constancia de retenciones ya estaba cancelada ante el SAT.
When: The withholding certificate was already cancelled. It comes in code, uuid_estatus and estatus_uuid with HTTP 200; the platform doesn't update the local record with this code.
What to do: You don't need to cancel again.
Folio Fiscal No Correspondiente al Emisor *
When: The UUID doesn't belong to the RFC requesting the cancellation. It comes in code, uuid_estatus and estatus_uuid with HTTP 200.
What to do: Check that the UUID is from a CFDI issued by the account's RFC (or by the CSD you sent in cancelwithcsd).
UUID no corresponde al emisor * El UUID no corresponde al RFC del emisor que solicita la cancelación.
When: The withholding certificate doesn't belong to the account's RFC. HTTP 200.
What to do: Check the UUID: it must be from a certificate issued by the account's RFC.
Folio Fiscal No Aplicable a Cancelación *
When: The SAT doesn't allow cancelling that UUID. It comes in code, uuid_estatus and estatus_uuid with HTTP 200.
What to do: Check its status and whether it can be cancelled with GET /api/v5/validator/cfdi (escancelable).
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.
When: The SAT doesn't have the UUID registered yet (typical with a CFDI that was just stamped). It comes in code, uuid_estatus and estatus_uuid with HTTP 200.
What to do: Wait until the CFDI shows as active with the SAT (up to 48 h) and cancel again.
UUID no existe * El SAT no encuentra la constancia. Si se acaba de timbrar, espera unos minutos y vuelve a intentar.
When: The SAT can't find the withholding certificate. HTTP 200.
What to do: If it was just stamped, wait a few minutes and retry; if not, check the UUID.
UUID no corresponde a un CFDI del Sector Primario *
When: SAT response for a UUID that isn't from the primary sector in a request that required it. It comes in code, uuid_estatus and estatus_uuid with HTTP 200.
What to do: Check the UUID and the voucher type you're trying to cancel.
No se especificó el motivo de cancelación o el motivo no es valido *
When: The SAT didn't accept the reason. It almost never comes back: the API already rejects a reason other than 01-04 with a 400 before the PAC. HTTP 200.
What to do: Send MOTIVO 01, 02, 03 or 04.
Folio Sustitución invalido *
When: With reason 01, the SAT doesn't recognize the UUID of the substitute folio (it has a valid format, but it isn't an active CFDI that replaces it). HTTP 200.
What to do: Check that FOLIOSUSTITUCION is the UUID of the new CFDI, already stamped and active.
Folio Sustitución no requerido *
When: A substitute folio was sent with a reason other than 01. In /cancel the API passes FOLIOSUSTITUCION to the PAC with any reason; cancelretention and cancelwithcsd only send it with 01. HTTP 200.
What to do: Remove FOLIOSUSTITUCION if the reason isn't 01.
La fecha de solicitud de cancelación es mayor a la fecha de declaración *
When: The SAT doesn't allow the cancellation because the deadline tied to the tax return has passed. HTTP 200.
What to do: Review the options for that CFDI with your accountant; the API can't force the cancellation.
La fecha de solicitud de cancelación límite para factura global *
When: The deadline to cancel a global invoice has passed. HTTP 200.
What to do: Check with your accountant; the API can't force the cancellation.
Relación no valida o inexistente *
When: The relation between the CFDI to cancel and the one that replaces it isn't valid. HTTP 200.
What to do: Check that the replacement CFDI relates the cancelled one (CfdiRelacionados with TipoRelacion 04).
CACFDI33 - Problemas con el xml. * CR1308 - Certificado revocado o caduco
When: The PAC rejected the cancellation request with an error of its own. code is the number at the start of its message, before the first hyphen ("CACFDI33 - …" gives 33; a message with no digits gives 0); message is "<mensaje del PAC> * <detalle>" and msg_error / msg_error_detailt (in cancelretention, msg_error_detail) carry each part. HTTP 200. The example (CR1308, revoked certificate) is the one in the public Postman collection.
What to do: Read msg_error_detailt: it's almost always the CSD (revoked, expired or from another RFC) or the UUID. Fix it and cancel again.
Error desconocido *
When: In cancelretention, the PAC didn't respond or its response couldn't be read: there's no exception and the response comes out with code 0 and HTTP 200. In all three methods code 0 also comes back when the PAC rejects with a message that has no number at the start.
What to do: Check the UUID status with GET /api/v5/validator/cfdi; if it's still active, cancel again.
The recipient parameter is invalid or empty.
When: The RECIPIENT header is missing or has invalid addresses, or BCC has an invalid one: "The BCC parameter contains invalid email addresses." / "The recipient or BCC parameter is invalid.".
What to do: Send valid addresses separated by commas in RECIPIENT (and in BCC if you use it).
The UUID was not found or does not correspond to the requesting account.
When: The UUID header is missing, empty or isn't from a CFDI of this account in this environment.
What to do: Send in the UUID header the fiscal folio of a CFDI issued by the key's account.
Could not queue the email.
When: Internal failure while queuing or sending the email. In selfservice: "The ticket status could not be updated; try again." / "The ticket could not be deleted; try again." (the database failed halfway through the operation and it was rolled back).
What to do: Retry in a few minutes; if it keeps happening, tell support.
Missing 'Type' parameter in the HEADERS. Possible values: I = Income, E = Expense, P = Payment, N = Payroll
When: A required parameter is missing. In listings they go as headers (Type, Month, Year, Datefrom, Dateto, Startdate, Enddate; Filters in listwithfilters: "Missing 'Filters' parameter in the HEADERS. Please set an array like {field: value}"); in validator and selfservice/catalog GET they go in the URL ("Missing parameter '<nombre>' in GET."); in fiscalinfo they go as headers written exactly Rfc, Nombre, Codigopostal and Regimen ("Missing parameter '<Nombre>' in HEADERS. (Please send it Capitalized).").
What to do: Add the parameter the message names, with the exact name and in the place it says (header or URL).
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).
When: The optional Documentorigin header has a value other than issued, received or all.
What to do: Send issued, received or all, or remove the header to get everything.
Invalid filter field '<campo>'. Only columns of the documents listing can be used as filters.
When: A filter in the Filters header uses a field that isn't a listing column, or an operator that isn't allowed: "Invalid filter operator '<operador>' for field '<campo>'. Allowed operators: =, !=, <, <=, >, >=, LIKE.".
What to do: Use only listing columns (the ones in listextended) and the operators =, !=, <, <=, >, >= or LIKE after the field name ("fecha >=").
La referencia del ticket no puede estar vacía.
When: The ticket has no Referencia, or it has fewer than 5 characters ("La referencia del ticket debe contener al menos 5 caracteres, los cuales pueden ser alfanuméricos."). It also comes out when the JSON couldn't be read: every field arrives empty and Referencia is the first one checked.
What to do: Send a Referencia with at least 5 characters and check that the JSON is valid.
El campo Fecha es requerido y no se encuentra en el JSON.
When: Fecha is missing, or it's older than the 13-month horizon: "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.".
What to do: Send the purchase Fecha (AAAA-MM-DD) within the last 13 months.
El campo Moneda es requerido y no se encuentra en el JSON.
When: The ticket has no Moneda.
What to do: Send Moneda (MXN, USD…).
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.
When: The ticket has no TipoCambio.
What to do: Send TipoCambio: 1.000000 for MXN or that day's exchange rate for another currency.
El campo Subtotal debe ser mayor a cero.
When: Subtotal is missing, is zero or isn't a number.
What to do: Send Subtotal as a number greater than zero.
El campo Total debe ser mayor a cero.
When: Total is missing, is zero or isn't a number.
What to do: Send Total as a number greater than zero.
Ticket duplicado. Se omitió.
When: The account already has a ticket with the same Referencia and Total (the date doesn't count). No new one was saved.
What to do: Nothing, if it's a resend: the ticket already exists (look it up with GET /api/v5/selfservice/ticket). If it's another purchase, use another reference.
Non received 'referencia' in POST body.
When: Data is missing or invalid. Other texts: "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)." and "Non received 'monto_total' in POST body.".
What to do: Send referencia and, depending on the method, estatus (1, 4, 5 or 6) or monto_total.
Error: Ticket not found in <nombre de la cuenta>.
When: The account has no ticket with that reference (in ticketdelete, with that reference and that monto_total). In ticketdelete, if there's a single ticket and it couldn't be deleted, message is the reason: "Error: Cant delete this ticket because has estatus <n>" or "Error: Cant delete this ticket right now: it is being invoiced (kiosk or global invoice). Try again later.".
What to do: Check the reference (and the amount). An invoiced ticket (status other than 1) can't be deleted.
Updated <n> of <m> ticket(s) with this referencia; <k> rejected (see tickets[].motivo).
When: There are several tickets with that reference and some couldn't be changed or deleted; the rest WERE applied. tickets[] carries the result of each one (updated, unchanged, deleted or rejected) and its reason, for example "The ticket is already invoiced (estatus <n>) and cannot be changed through the API. Cancel its invoice first." or "The ticket is reserved for a global invoice that is being issued (or was issued); try again later.". In ticketdelete: "Deleted <n> of <m> ticket(s) with this referencia and monto_total; <k> rejected (see tickets[].motivo).".
What to do: Check tickets[].motivo for the rejected ones; retry only the ones that say "try again later".
The service is busy; try again in a few seconds.
When: Another ticket operation in the same account (a global invoice or the kiosk) holds the lock and didn't release it in time. Nothing was changed.
What to do: Retry in a few seconds.
No se encuentra el ticket.
When: The query found no tickets (in the lists: "No se encontraron tickets"). It comes with HTTP 200 and code "404" as text. In ticket the lookup uses the exact reference, date and amount.
What to do: Check the filters (exact reference, date and amount, or the date range and the status).
Field 'nombre' is required in the BODY.
When: nombre or rfc is missing from the body: "Field 'rfc' is required in the BODY.".
What to do: Send nombre and rfc in the body.
No se pueden crear cuentas con un RFC genérico (XAXX010101000 o XEXX010101000): lo comparten muchos clientes y no identifica a ninguno.
When: The customer portal account was requested with a generic RFC, or with one that isn't a valid RFC: "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.".
What to do: Use the customer's real RFC.
Error, la cuenta ya está registrada.
When: A customer portal account with that RFC already exists in the account. In supplieruser: "Error, la cuenta <RFC> ya está registrada. RFC Encontrado: <RFC>, Nombre: <nombre>". It's checked by RFC before the guid: updating by guid an account with the same RFC also responds 1.
What to do: Don't create it again; manage the existing account from Configuración › Portales.
Customer not found.
When: The account has no customer with that guid. It comes with HTTP 200, code "404" (text) and data null.
What to do: Check the guid; it's the one POST /api/v5/catalog/customer returned.
The '<campo>' parameter is required in the body.
When: The partner account creation request has a missing or invalid value. Other texts: "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." and "The '<campo>' parameter exceeds the maximum length of <n> characters." (correo up to 50).
What to do: Fix the field the message names.
The RFC is already registered on the platform.
When: An account with that RFC already exists, or you lost a race against another simultaneous creation of the same RFC ("The account could not be created. Please try again." with 409).
What to do: Don't create it again; if it was a race, check whether the other request created it.
This account is not authorized to use this method.
When: The key's account isn't registered as a partner, or the IP isn't on its allowed list. The message is the same in both cases on purpose.
What to do: Ask Factura Digital to register you as a partner and register the IPs you call from.
Your account is not verified. The main user must be active with a confirmed email address.
When: The partner doesn't meet a requirement to create accounts. Other texts: "Your account does not have a valid digital seal certificate (CSD). Upload a current CSD before creating accounts." and "Insufficient credits. A minimum balance of <n> credits is required to create accounts. Current balance: <saldo>.".
What to do: Meet the requirement the message names: a confirmed email for the main user, a current CSD or a minimum credit balance.
Too many failed attempts. Try again later.
When: That IP already made 30 or more attempts with an invalid key in the last hour; they're no longer logged or detailed.
What to do: Fix the key and wait for the hour to pass.
Too many certificate upload attempts. Try again later.
When: Usage limit: 20 or more CSD uploads for the account in the last hour, or (in account/create) the partner's daily account creation quota: "Daily account creation quota reached (<n>). Try again tomorrow.".
What to do: Wait for the hour to pass (CSD) or until the next day (account creation).
The account could not be created. Please try again.
When: Internal failure while creating the account or saving the CSD ("The certificate could not be stored. Please try again."), or an unexpected error while reading the body ("The request could not be processed. Please try again."). Whatever was already written gets rolled back.
What to do: Retry; if it keeps happening, tell support. In account/create, first confirm the account wasn't created.
El RFC proporcionado es inválido. Favor de verificar.
When: The RFC doesn't have an RFC's structure (letters, date and homoclave). code comes as the text "400". An RFC with the right structure but a date that doesn't exist comes out with code "401".
What to do: Check the RFC: 12 characters (company) or 13 (individual).
CFDI40143 - Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT.
When: The tax data you sent (Rfc, Nombre, Codigopostal, Regimen) doesn't pass the test stamping. The response carries type "RequestException", short "Wrong Data", sat_code (the key before the first hyphen, for example CFDI40143), message (DomicilioFiscalReceptor shows up as "DomicilioFiscalReceptor (Código Postal)") and old_balance = new_balance: no validator credit was charged.
What to do: Fix the value sat_code points to (RFC, exact name as on the Constancia de Situación Fiscal, postal code or regime) and validate again.
WARNING! This RFC is BLACKLISTED
When: The RFC is on the blacklist the platform keeps; codestr "blacklisted" and data with the record. If it's clean: code "200", codestr "whitelisted", "This RFC is clean.". Both responses charge one validator credit.
What to do: Check data before you do business with that RFC.
Successful Request.
When: Success for queries and creations. Other texts: "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, with the result in sat_response), "The fiscal information provided is correct." (fiscalinfo, charges one validator credit). In validator/cfdi, blacklist, selfservice and catalog GET, code comes as the text "200". relations responds with no code or message.
What to do: Nothing.
El campo Fecha no cumple con el patrón requerido.
Validation: 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.
El resultado de la digestión debe ser igual al resultado de la desencripción del sello.
Validation: 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.
Si existe el tipo de comprobante T, N o P el campo FormaPago no debe existir.
Validation: Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante.
El campo FormaPago no contiene un valor del catálogo c_FormaPago.
Validation: Este atributo, debe contener un valor del catálogo c_FormaPago.
El campo FormaPago no contiene el valor "99".
Validation: Este atributo debe contener el valor “99” cuando el atributo MetodoPago contenga el valor “PPD”.
EL certificado no cumple con alguno de los valores permitidos.
Validation: El atributo debe contener un archivo .cer válido.
El valor de este campo SubTotal excede la cantidad de decimales que soporta la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
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.
Validation: 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.
El TipoDeComprobante es T o P y el importe no es igual a 0, o cero con decimales.
Validation: Si el comprobante es T o P el importe debe ser 0, o cero con decimales.
El valor registrado en el campo Descuento no es menor o igual que el campo Subtotal.
Validation: El valor registrado debe ser menor o igual que el atributo Subtotal.
El TipoDeComprobante no es I,E o N, y un concepto incluye el campo descuento.
Validation: 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.
El valor del campo Descuento excede la cantidad de decimales que soporta la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
El campo Moneda no contiene un valor del catálogo c_Moneda.
Validation: Este atributo, debe contener un valor del catálogo c_Moneda.
El campo TipoCambio no tiene el valor "1" y la moneda indicada es MXN.
Validation: Si este atributo es MXN, puede omitirse el atributo TipoCambio, pero si se incluye, debe tener el valor "1".
El campo TipoCambio se debe registrar cuando el campo Moneda tiene un valor distinto de MXN y XXX.
Validation: Este atributo es requerido cuando el atributo Moneda tenga un valor distinto de MXN y XXX.
El campo TipoCambio no se debe registrar cuando el campo Moneda tiene el valor XXX.
Validation: Este atributo no se debe registrar cuando el atributo Moneda tenga el valor XXX.
El campo TipoCambio no cumple con el patrón requerido.
Validation: Este atributo debe cumplir con el patrón [0-9]{1,18}(.[0-9]{1,6})?.
Cuando el valor del campo TipoCambio se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion.
Validation: 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.
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.
Validation: 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.
Cuando el valor del campo Total se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion.
Validation: 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.
El campo TipoDeComprobante, no contiene un valor del catálogo c_TipoDeComprobante.
Validation: Este atributo, debe contener un valor del catálogo c_TipoDeComprobante.
El campo Exportacion contiene el valor "02", el CFDI debe contener el complemento para Comercio Exterior.
Validation: Atributo requerido para expresar si el comprobante ampara una operación de exportación.
El campo Exportacion no contiene un valor del catálogo c_Exportacion.
Validation: Este atributo, debe contener un valor del catálogo c_Exportacion.
El campo MetodoPago, no contiene un valor del catálogo c_MetodoPago.
Validation: Este atributo, debe contener un valor del catálogo c_MetodoPago.
Se debe omitir el campo MetodoPago cuando el TipoDeComprobante es T o P.
Validation: Se debe omitir el atributo MetodoPago cuando el TipoDeComprobante es T o P.
El campo LugarExpedicion, no contiene un valor del catálogo c_CodigoPostal.
Validation: Este atributo, debe contener un valor del catálogo c_CodigoPostal.
El campo Confirmacion no debe existir cuando los campos TipoCambio y/o Total están dentro del rango permitido.
Validation: Este atributo no debe existir cuando los atributos TipoCambio y/o Total están dentro del rango permitido.
Número de confirmación inválido.
Validation: El Proveedor de Certificación debe verificar que el emisor le haya solicitado esta clave de confirmación.
Número de confirmación utilizado previamente.
Validation: El Proveedor de Certificación debe verificar que la clave de confirmación no se utilice en más de un comprobante.
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.
Validation: 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”.
El campo Periodicidad, no contiene un valor del catálogo c_Periodicidad.
Validation: Este atributo, debe contener un valor del catálogo c_Periodicidad
El campo RegimenFiscal, no contiene el valor 621
Validation: Cuando el valor de este atributo contenga la clave “05” el atributo RegimenFiscal debe contener el valor “621”.
El campo Meses, no contiene un valor del catálogo c_Meses.
Validation: Este atributo, debe contener un valor del catálogo c_Meses
El campo Meses, no contiene alguno de los valores “01”, “02”, “03”, “04”, “05”, “06”, “07”, “08”, “09”, “10”, “11” o "12".
Validation: 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".
El campo Meses, no contiene alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”.
Validation: Si el atributo Periodicidad contiene el valor “05”, este atributo debe contener alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”.
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.
Validation: Atributo requerido para expresar el año al que corresponde la información del comprobante global.
El campo TipoRelacion, no contiene un valor del catálogo c_TipoRelacion.
Validation: Este atributo, debe contener un valor del catálogo c_TipoRelacion.
El campo Nombre del emisor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: Este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
El campo Nombre del emisor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Emisor.
Validation: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Emisor.
El campo RegimenFiscal, no contiene un valor del catálogo c_RegimenFiscal.
Validation: Este atributo, debe contener un valor del catálogo c_RegimenFiscal.
La clave del campo RegimenFiscal debe corresponder con el tipo de persona (fisica o moral).
Validation: El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del emisor.
El campo FacAtrAdquirente, no contiene un número de operación valido.
Validation: 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.
Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT.
Validation: Cuando no se utilice un RFC genérico, el RFC debe estar en la lista de RFC inscritos no cancelados en el SAT.
El campo Nombre del receptor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: Este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
El campo Nombre del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor.
Validation: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Receptor.
El campo RFC del receptor debe contener el valor "XAXX010101000".
Validation: Si el valor registrado en este atributo es “PUBLICO EN GENERAL”, el valor del atributo RFC del receptor debe ser “XAXX010101000”.
El campo DomicilioFiscalReceptor del receptor, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: Este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
El campo DomicilioFiscalReceptor del receptor, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del Receptor.
Validation: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo Receptor.
El campo DomicilioFiscalReceptor, no es igual al valor del campo LugarExpedicion.
Validation: Si el valor del atributo Rfc del receptor es "XAXX010101000" o "XEXX010101000", este atributo debe ser igual al valor del atributo LugarExpedicion.
El campo ResidenciaFiscal, no contiene un valor del catálogo c_Pais.
Validation: Este atributo, debe contener un valor del catálogo c_Pais.
El RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional y existe el campo ResidenciaFiscal.
Validation: Si el RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional, este atributo NO debe existir.
El valor del campo ResidenciaFiscal no puede ser MEX.
Validation: El valor del atributo no puede ser MEX.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: Si el RFC del receptor es un RFC genérico extranjero y el comprobante incluye el complemento de comercio exterior, debe existir este atributo.
El campo NumRegIdTrib no cumple con el patrón correspondiente.
Validation: 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.
El campo RegimenFiscalR, no contiene un valor del catálogo c_RegimenFiscal.
Validation: Este atributo, debe contener un valor del catálogo c_RegimenFiscal.
La clave del campo RegimenFiscalR debe corresponder con el tipo de persona (física o moral).
Validation: El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona del receptor.
La clave del campo RegimenFiscalR no corresponde de acuerdo al RFC del receptor.
Validation: Si el atributo Rfc del Receptor contiene el valor “XAXX010101000” o el valor “XEXX010101000” en este atributo se debe registrar la clave “616”
El campo UsoCFDI, no contiene un valor del catálogo c_UsoCFDI.
Validation: Este atributo, debe contener un valor del catálogo c_UsoCFDI.
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.
Validation: 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.
El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ.
Validation: Este atributo, debe contener un valor del catálogo c_ClaveProdServ.
No existe el complemento requerido para el valor de ClaveProdServ.
Validation: Deben existir los complementos que señale el catálogo c_ClaveProdServ aplicables para este atributo.
No está declarado el impuesto relacionado con el valor de ClaveProdServ.
Validation: Deben existir los impuestos trasladados y/o retenidos que señale el catálogo c_ClaveProdServ aplicables para este atributo.
El campo ClaveUnidad no contiene un valor del catálogo c_ClaveUnidad.
Validation: Este atributo, debe contener un valor del catálogo c_ClaveUnidad.
El valor del campo ValorUnitario debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.
Validation: El valor de este atributo debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.
El valor del campo Importe no se encuentra entre el limite inferior y superior permitido.
Validation: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.
El valor del campo Descuento no contiene la misma cantidad de decimales registrados en el campo Importe del concepto.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que se tengan registrados en el atributo Importe del concepto.
El valor del campo Descuento es mayor que el campo Importe.
Validation: El valor registrado debe ser menor o igual al atributo Importe.
El campo ObjetoImp, no contiene un valor del catálogo c_ObjetoImp.
Validation: Este atributo, debe contener un valor del catálogo c_ObjetoImp.
El nodo concepto, no contiene el nodo hijo Impuestos.
Validation: Si este atributo contiene el valor "02" el nodo hijo Impuestos del nodo concepto debe existir.
El nodo hijo Impuestos del nodo Concepto, no debe existir.
Validation: Si este atributo contiene el valor "01", "03", "04" o "05", el nodo hijo Impuestos del nodo Concepto no debe existir.
En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones.
Validation: En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones.
El valor del campo Base que corresponde a Traslado debe ser mayor que cero.
Validation: El valor debe ser mayor que cero.
El valor del campo Impuesto que corresponde a Traslado no contiene un valor del catálogo c_Impuesto.
Validation: Este atributo, debe contener un valor del catálogo c_Impuesto.
El valor del campo TipoFactor que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor.
Validation: Este atributo, debe contener un valor del catálogo c_TipoFactor.
Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Exento no se deben registrar los campos TasaOCuota ni Importe.
Validation: Si el valor registrado es Exento no se deben registrar los atributos TasaOCuota ni Importe.
Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Tasa o Cuota, se deben registrar los campos TasaOCuota e Importe.
Validation: Si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuota e Importe.
El valor del campo TasaOCuota que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango.
Validation: 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.
El valor del campo Importe o que corresponde a Traslado no se encuentra entre el limite inferior y superior permitido.
Validation: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.
El valor del campo Base que corresponde a Retención debe ser mayor que cero.
Validation: El valor debe ser mayor que cero.
El valor del campo Impuesto que corresponde a Retención no contiene un valor del catálogo c_Impuesto.
Validation: Este atributo, debe contener un valor del catálogo c_Impuesto.
El valor del campo TipoFactor que corresponde a Retención no contiene un valor del catálogo c_TipoFactor.
Validation: Este atributo, debe contener un valor del catálogo c_TipoFactor.
Si el valor registrado en el campo TipoFactor que corresponde a Retención debe ser distinto de Exento.
Validation: El valor registrado debe ser distinto de Exento.
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.
Validation: 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.
El valor del campo Importe que corresponde a Retención no se encuentra entre el limite inferior y superior permitido.
Validation: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.
El valor registrado en el campo RfcACuentaTerceros, no se encuentra en la lista l_LCO.
Validation: Si el valor de este atributo, es distinto de “EXT990101NI1”, debe encontrarse en la lista l_LCO.
El valor del campo RfcACuentaTerceros, debe ser diferente de los valores de los campos Rfc del Emisor y Receptor.
Validation: El valor registrado en este atributo deber ser diferente al valor registrado en los atributos Rfc de los nodos Emisor y Receptor.
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”.
Validation: 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”.
El campo NombreACuentaTerceros, debe pertenecer al nombre asociado al RFC registrado en el campo Rfc del tercero.
Validation: Este atributo, debe pertenecer al nombre asociado al RFC registrado en el atributo Rfc del Nodo ACuentaTerceros.
El campo RegimenFiscalACuentaTerceros, no contiene un valor del catálogo c_RegimenFiscal.
Validation: Este atributo, debe contener un valor del catálogo c_RegimenFiscal.
El valor registrado en el atributo DomicilioFiscalACuentaTerceros, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
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".
Validation: 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".
El número de pedimento es inválido.
Validation: Este atributo, debe cumplir con las reglas de validación definidas.
El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.
Validation: El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.
El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ.
Validation: Este atributo, debe contener un valor del catálogo c_ClaveProdServ.
El valor del campo ValorUnitario debe ser mayor que cero (0).
Validation: El valor de este atributo debe ser mayor que cero (0).
El valor del campo Importe no se encuentra entre el limite inferior y superior permitido.
Validation: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.
El número de pedimento es inválido.
Validation: Este atributo, debe cumplir con las reglas de validación definidas.
El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.
Validation: El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior.
Cuando el TipoDeComprobante sea T o P, el elemento Impuestos no debe existir.
Validation: Cuando el TipoDeComprobante sea T o P, este elemento no debe existir.
El valor del campo TotalImpuestosRetenidos debe tener hasta la cantidad de decimales que soporte la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion.
Validation: El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Retencion.
El valor del campo TotalImpuestosTrasladados debe tener hasta la cantidad de decimales que soporte la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
El valor del campo TotalImpuestosTrasladados no es igual a la suma de los importes registrados en el elemento hijo Traslado.
Validation: El valor de este atributo debe ser igual a la suma de los importes registrados en el elemento hijo Traslado.
Debe existir el campo TotalImpuestosRetenidos.
Validation: Debe existir el atributo TotalImpuestosRetenidos.
El campo Impuesto no contiene un valor del catálogo c_Impuesto.
Validation: Es atributo, debe contener un valor del catálogo c_Impuesto.
Debe haber sólo un registro por cada tipo de impuesto retenido.
Validation: Debe haber sólo un registro por cada tipo de impuesto retenido.
Debe existir el campo TotalImpuestosRetenidos.
Validation: Debe existir el atributo TotalImpuestosRetenidos.
El valor del campo Importe correspondiente a Retención debe tener hasta la cantidad de decimales que soporte la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
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.
Validation: 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.
Debe existir el campo TotalImpuestosTrasladados.
Validation: Debe existir el atributo TotalImpuestosTrasladados, cuando existan conceptos con un TipoFactor distinto a Exento.
Deben existir los campos Base, Impuesto y TipoFactor
Validation: En el caso de que sólo existan conceptos con TipoFactor Exento, en este nodo solo deben existir los atributos Base, Impuesto y TipoFactor.
El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
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.
Validation: 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.
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.
Validation: 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.
El campo Impuesto no contiene un valor del catálogo c_Impuesto.
Validation: Este atributo, debe contener un valor del catálogo c_Impuesto.
Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.
Validation: Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.
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.
Validation: 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.
El valor del campo Importe correspondiente a Traslado debe tener hasta la cantidad de decimales que soporte la moneda.
Validation: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda.
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.
Validation: 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.
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.
Validation: 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.
El valor registrado en el atributo RegimenFiscalACuentaTerceros es distinto a “616”.
Validation: Si el atributo RfcACuentaTerceros contiene el valor “EXT990101NI1” en este atributo se debe registrar la clave “616”.
El valor 001 (ISR) en el atributo "Impuesto" del nodo hijo “Retencion” del elemento “Retenciones” a nivel Concepto no debe existir.
Validation: 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).
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.
Validation: 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.
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.
Validation: 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”.
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.
Validation: 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" .
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".
Validation: 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.
El valor registrado en el campo TipoDeComprobante es "N" y no existe el Complemento de Nómina.
Validation: Cuando el TipoDeComprobante sea “N” debe existir el "Complemento Nómina".
El valor registrado en el campo TipoDeComprobante es "P" y no existe el Complemento para recepción de Pagos.
Validation: Cuando el TipoDeComprobante sea “P” debe existir el "Complemento para recepción de Pagos”.
Error no clasificado.
Validation: Error no clasificado.
El valor del campo TipoDeComprobante debe ser "P"
Validation: El valor registrado debe ser P
El valor del campo Exportacion debe ser "01"
Validation: El valor registrado debe ser "01"
El valor del campo SubTotal debe ser cero "0".
Validation: El atributo SubTotal debe tener el valor "0".
El valor del campo Moneda debe ser "XXX".
Validation: El atributo Moneda debe tener el valor "XXX".
El campo FormaPago no se debe registrar en el CFDI.
Validation: El atributo FormaPago no debe existir.
El campo MetodoPago no se debe registrar en el CFDI.
Validation: El atributo MetodoPago no debe existir.
El campo CondicionesDePago no se debe registrar en el CFDI.
Validation: El atributo CondicionesDePago no debe existir.
El campo Descuento no se debe registrar en el CFDI.
Validation: El atributo Descuento no debe existir.
El campo TipoCambio no se debe registrar en el CFDI.
Validation: El atributo TipoCambio no debe existir.
El valor del campo Total debe ser cero "0".
Validation: El atributo Total debe tener el valor "0".
Solo debe existir un Concepto en el CFDI.
Validation: El nodo Conceptos debe tener un solo concepto.
Si no existe el nodo AcuentaTerceros, no se deben registrar apartados dentro de Conceptos
Validation: El nodo Conceptos no debe tener nodos hijo, solo cuando se trate del nodo AcuentaTerceros
El valor del campo ClaveProdServ debe ser "84111506".
Validation: El atributo ClaveProdServ correspondiente a concepto debe tener el valor "84111506".
El campo NoIdentificacion no se debe registrar en el CFDI.
Validation: El atributo NoIdentificacion no debe existir.
El valor del campo Cantidad debe ser "1".
Validation: El atributo Cantidad debe tener el valor "1".
El valor del campo ClaveUnidad debe ser "ACT".
Validation: El atributo ClaveUnidad debe tener el valor "ACT".
El campo Unidad no se debe registrar en el CFDI.
Validation: El atributo Unidad no debe existir.
El valor del campo Descripcion debe ser "Pago".
Validation: El atributo Descripcion debe tener el valor "Pago".
El valor del campo ValorUnitario debe ser cero "0".
Validation: El atributo ValorUnitario debe tener el valor "0".
El valor del campo Importe debe ser cero "0".
Validation: El atributo Importe debe tener el valor "0".
El campo Descuento no se debe registrar en el CFDI.
Validation: El atributo Unidad no debe existir.
El valor del campo ObjetoImp debe ser "01".
Validation: El atributo ObjetoImp debe tener el valor "01"
No se debe registrar el apartado de Impuestos en el CFDI.
Validation: El nodo Impuestos no se debe registrar en el CFDI.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
El valor del campo FormaDePagoP debe ser distinto de "99".
Validation: El valor registrado debe ser diferente de 99.
El campo MonedaP debe ser distinto de "XXX"
Validation: El atributo MonedaP debe ser diferente de "XXX".
El campo TipoCambioP se debe registrar.
Validation: Si el atributo MonedaP es diferente de MXN, debe existir información en el atributo TipoCambioP.
El campo TipoCambioP debe contener el valor "1".
Validation: Si el atributo MonedaP es MXN, se debe registrar el valor "1" en el atributo TipoCambioP.
Cuando el valor del campo TipoCambioP se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion
Validation: 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.
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.
Validation: 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.
El valor del campo Monto no es mayor que cero "0".
Validation: Debe ser mayor a 0.
El valor del campo Monto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaP.
Validation: 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.
Cuando el valor del campo Monto se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion
Validation: 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.
El campo RfcEmisorCtaOrd no se debe registrar.
Validation: 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.
El RFC del campo RfcEmisorCtaOrd no se encuentra en la lista de RFC.
Validation: Cuando no se utilice el RFC genérico XEXX010101000, el RFC debe estar en la lista de RFC inscritos en el SAT.
El campo NomBancoOrdExt se debe registrar.
Validation: Cuando se utilice el RFC genérico XEXX010101000 en el campo RfcEmisorCtaOrd, entonces el campo NomBancoOrdExt debe ser requerido.
El campo CtaOrdenante no se debe registrar.
Validation: 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.
El campo CtaOrdenante no cumple con el patrón requerido.
Validation: Si existe el atributo CtaOrdenante debe cumplir con el patrón especificado en el catálogo c_FormaPago
El campo CtaBeneficiario no cumple con el patrón requerido.
Validation: Si existe el atributo CtaBeneficiario debe cumplir con el patrón especificado en el catálogo c_FormaPago
El campo RfcEmisorCtaBen no se debe registrar.
Validation: Cuando el valor del campo FormaDePagoP sea diferente a la clave 02, 03, 04, 05, 28 y 29, entonces este atributo no debe existir.
El campo CtaBeneficiario no se debe registrar.
Validation: Cuando el valor del campo FormaDePagoP sea diferente a la clave 02, 03, 04, 05, 28 y 29, entonces este atributo no debe existir.
El campo TipoCadPago no se debe registrar.
Validation: SI el valor del atributo FormaDePagoP es diferente a la clave 03, el atributo TipoCadPago no debe existir.
El campo CertPago se debe registrar.
Validation: Si existe el campo TipoCadPago es obligatorio registrar los campos "CertPago", "CadPago" y “SelloPago”.
El campo CertPago no se debe registrar.
Validation: Si no existe el campo TipoCadPago no se deben registrar los campos "CertPago", "CadPago" y “SelloPago”.
El campo CadPago se debe registrar.
Validation: Si existe el campo TipoCadPago es obligatorio registrar los campos "CertPago", "CadPago" y “SelloPago”.
El campo CadPago no se debe registrar.
Validation: Si no existe el campo TipoCadPago no se deben registrar los campos "CertPago", "CadPago" y “SelloPago”.
El campo SelloPago se debe registrar.
Validation: Si existe el campo TipoCadPago es obligatorio registrar los campos "CertPago", "CadPago" y “SelloPago”.
El campo SelloPago no se debe registrar.
Validation: Si no existe el campo TipoCadPago no se deben registrar los campos "CertPago", "CadPago" y “SelloPago”.
El valor del campo MonedaDR debe ser distinto de "XXX"
Validation: El atributo MonedaP debe ser diferente de "XXX".
El campo EquivalenciaDR se debe registrar.
Validation: Si el valor del atributo MonedaDR es diferente al valor registrado en el atributo MonedaP, se debe registrar información en el atributo EquivalenciaDR.
El campo EquivalenciaDR debe contener el valor "1".
Validation: 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.
El campo ImpSaldoAnt debe mayor a cero.
Validation: Debe ser mayor a cero
El valor del campo ImpSaldoAnt debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR.
Validation: 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.
El campo ImpPagado debe mayor a cero.
Validation: Debe ser mayor a cero
El valor del campo ImpPagado debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR.
Validation: 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.
El valor del campo ImpSaldoInsoluto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR.
Validation: 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.
El campo ImpSaldoInsoluto debe ser mayor o igual a cero y calcularse con la suma de los campos ImpSaldoAnt menos el ImpPagado.
Validation: Debe ser mayor o igual a 0 y debe calcularse de los atributos: ImpSaldoAnt menos el ImpPagado,
El campo ObjetoImpDR, debe tener un valor del catálogo c_ObjetoImp.
Validation: El atributo ObjetoImpDR debe tener un valor del catálogo c_ObjetoImp.
El nodo hijo ImpuestosDR del nodo DoctoRelacionado debe existir.
Validation: Si el valor del atributo ObjetoImpDR es “02” el nodo hijo ImpuestosDR del nodo DoctoRelacionado debe existir.
El nodo hijo de ImpuestosDR del nodo DoctoRelacionado, no debe existir.
Validation: Si este atributo contiene el valor "01", "03","04" o "05", el nodo hijo ImpuestosDR del nodo DoctoRelacionado, no debe existir.
En caso de utilizar el nodo Impuestos en un documento relacionado, se deben incluir impuestos de traslados y/o retenciones.
Validation: En caso de utilizar el nodo Impuestos en un DoctoRelacionado, se deben incluir impuestos de traslados y/o retenciones.
El valor del campo BaseDR que corresponde a Retención debe ser mayor que cero.
Validation: Debe ser mayor que cero.
El valor del campo ImpuestoDR que corresponde a Retención no contiene un valor del catálogo c_Impuesto.
Validation: El atributo ImpuestoDR debe contener un valor del catálogo c_Impuesto.
El valor del campo TipoFactorDR que corresponde a Retención no contiene un valor del catálogo c_TipoFactor.
Validation: El atributo TipoFactorDR debe contener un valor del catálogo c_TipoFactor.
El valor registrado en el campo TipoFactorDR que corresponde a Retención debe ser distinto de Exento.
Validation: El valor registrado debe ser distinto de Exento.
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.
Validation: 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.
El valor del campo ImporteDR que corresponde a Retención no se encuentra entre el limite inferior y superior permitido.
Validation: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.
El valor del campo BaseDR que corresponde a Traslado debe ser mayor que cero
Validation: El valor debe ser mayor que cero.
El valor del campo ImpuestoDR que corresponde a Traslado no contiene un valor del catálogo c_Impuesto.
Validation: El atributo ImpuestoDR debe contener un valor del catálogo c_Impuesto.
El valor del campo TipoFactorDR que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor.
Validation: El atributo TipoFactorDR debe contener un valor del catálogo c_TipoFactor.
Si el valor registrado en el campo TipoFactorDR es Exento no se deben registrar los campos TasaOCuotaDR ni ImporteDR.
Validation: Si el valor registrado es Exento no se deben registrar los atributos TasaOCuotaDR ni ImporteDR.
Si el valor registrado en el campo TipoFactorDR que corresponde a Traslado es Tasa o Cuota, se deben registrar los campos TasaOCuotaDR e ImporteDR.
Validation: Si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuotaDR e ImporteDR.
El valor del campo TasaOCuotaDR que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango.
Validation: 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.
El valor del campo ImporteDR o que corresponde a Traslado no se encuentra entre el limite inferior y superior permitido.
Validation: El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior.
El campo ImpuestoP no contiene un valor del catálogo c_Impuesto.
Validation: El atributo ImpuestoP debe contener un valor del catálogo c_Impuesto.
Debe haber sólo un registro por cada tipo de impuesto retenido.
Validation: Debe haber sólo un registro por cada tipo de impuesto retenido.
Debe existir al menos uno de los campos TotalRetencionesIVA, TotalRetencionesISR, TotalRetencionesIEPS.
Validation: Deben existir al menos uno de los atributos TotalRetencionesIVA, TotalRetencionesISR, TotalRetencionesIEPS.
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.
Validation: 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.
Deben existir los campos BaseP, ImpuestoP y TipoFactorP
Validation: En el caso de que sólo existan conceptos con TipoFactorDR Exento, en este nodo solo deben existir los atributos BaseP, ImpuestoP y TipoFactorP.
Debe existir al menos uno de los campos TotalTrasladosBaseIVA16 y/o TotalTrasladosBaseIVA8 y/o TotalTrasladosBaseIVA0 y/o TotalTrasladosBaseIVAExento.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
El campo ImpuestoP que corresponde a Traslado no contiene un valor del catálogo c_Impuesto.
Validation: El atributo ImpuestoP debe contener un valor del catálogo c_Impuesto.
Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.
Validation: Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado.
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.
Validation: 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.
Deben existir al menos uno de los campos TotalTrasladosImpuestoIVA16, TotalTrasladosImpuestoIVA8, TotalTrasladosImpuestoIVA0 cuando existan conceptos con un TipoFactor distinto a Exento.
Validation: 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.
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.
Validation: 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.
El valor del campo ImpPagado del nodo DoctoRelacionado no se encuentra entre el limite inferior y superior permitido.
Validation: 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.
El valor del campo Monto no se encuentra entre el límite inferior y superior permitido.
Validation: 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.
El valor de EquivalenciaDR para la fórmula del cálculo del margen de variación debe ser “1.0000000000”.
Validation: 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.
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).
Validation: 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.
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).
Validation: 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.
Error no clasificado.
Validation: Error no clasificado.
El atributo Comprobante.Moneda no tiene el valor = “MXN”.
Validation: En el atributo Comprobante.Moneda se debe registrar el valor "MXN".
El atributo Comprobante.TipoDeComprobante no tiene el valor = "N".
Validation: En el atributo Comprobante.TipoDeComprobante, se debe registrar la clave "N".
El atributo Comprobante.Exportacion no tiene el valor = "01".
Validation: En el atributo Comprobante.Exportacion, se debe registrar la clave "01".
El nodo Comprobante.InformacionGlobal, no debe existir.
Validation: El nodo Comprobante.InformacionGlobal, no debe existir.
El atributo Nomina12:Emisor:Curp, no aplica para persona moral.
Validation: Si el atributo Comprobante.Emisor.Rfc, tiene longitud 12 (RFC de persona moral), entonces no debe existir el atributo Nomina12:Emisor:Curp.
El atributo Nomina12:Emisor:Curp, aplica para persona física.
Validation: Si el atributo Comprobante.Emisor.Rfc tiene longitud 13, el atributo Nomina12:Emisor:Curp, debe existir.
El atributo Comprobante.Emisor.FacAtrAdquirente, no debe existir.
Validation: El atributo Comprobante.Emisor.FacAtrAdquirente, no debe existir.
El atributo Comprobante.Receptor.Rfc, debe ser de longitud 13.
Validation: El atributo Comprobante.Receptor.Rfc debe ser persona física.
El atributo Comprobante.Receptor.Rfc, no está en la lista de RFC inscritos no cancelados en el SAT (l_RFC).
Validation: El atributo Comprobante.Receptor.Rfc debe estar en la lista de RFC inscritos no cancelados en el SAT (l_RFC).
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.
Validation: Si el atributo Comprobante.Receptor.Rfc tiene registrado el RFC genérico XAXX010101000, el atributo Nomina12:Receptor:Curp, debe existir.
El atributo Comprobante.Receptor.RegimenFiscalReceptor no tiene el valor = "605".
Validation: 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.
El atributo Comprobante.Receptor.UsoCFDI no tiene el valor = "CN01".
Validation: En el atributo Comprobante.Receptor.UsoCFDI, se debe registrar la clave "CN01".
El nodo Comprobante.Conceptos.Concepto, solo puede registrar un nodo concepto, sin elementos hijo.
Validation: El nodo Comprobante.Conceptos.Concepto, se debe registrar solo un nodo concepto sin elementos hijo.
El atributo Comprobante.Conceptos.Concepto.ClaveProdServ no tiene el valor = “84111505”.
Validation: El atributo Comprobante.Conceptos.Concepto.ClaveProdServ, se debe registrar la clave "84111505".
El atributo Comprobante.Conceptos.Concepto.NoIdentificacion, no debe existir.
Validation: El atributo Comprobante.Conceptos.Concepto.NoIdentificacion, no debe existir.
El atributo Comprobante.Conceptos.Concepto.Cantidad no tiene el valor = “1”.
Validation: El atributo Comprobante.Conceptos.Concepto.Cantidad, se debe registrar la clave “1”.
Notes: Se debe registrar el valor "1" sin decimales.
El atributo Comprobante.Conceptos.Concepto.ClaveUnidad no tiene el valor = “ACT”.
Validation: El atributo Comprobante.Conceptos.Concepto.ClaveUnidad, se debe registrar la clave “ACT”.
El atributo Comprobante.Conceptos.Concepto.Unidad, no debe existir.
Validation: El atributo Comprobante.Conceptos.Concepto.Unidad, no debe existir.
El atributo Comprobante.Conceptos.Concepto.Descripcion no tiene el valor = “Pago de nómina”.
Validation: El atributo Comprobante.Conceptos.Concepto.Descripcion, se debe registrar el valor “Pago de nómina”.
El valor del atributo Comprobante.Conceptos.Concepto.ValorUnitario no coincide con la suma TotalPercepciones más TotalOtrosPagos.
Validation: El atributo Comprobante.Conceptos.Concepto,.ValorUnitario, se debe registrar la suma de los atributos TotalPercepciones más TotalOtrosPagos.
El valor del atributo Comprobante.Conceptos.Concepto.Importe no coincide con la suma TotalPercepciones más TotalOtrosPagos.
Validation: El atributo Comprobante.Conceptos.Concepto.Importe, se debe registrar la suma de los atributos TotalPercepciones más TotalOtrosPagos.
El valor del atributo Comprobante.Conceptos.Concepto.Descuento no es igual a el valor del campo Nomina12:TotalDeducciones.
Validation: El atributo Comprobante.Conceptos.Concepto.Descuento, se debe registrar el valor del campo Nomina12:TotalDeducciones.
El atributo Comprobante.Conceptos.Concepto.ObjetoImp no tiene el valor = “01”.
Validation: El atributo Comprobante.Conceptos.Concepto.ObjetoImp, se debe registrar la clave “01”.
El nodo Comprobante.Conceptos.Concepto.Impuestos, no debe existir.
Validation: El nodo Comprobante.Conceptos.Concepto.Impuestos, no debe existir.
El nodo Comprobante.Conceptos.Concepto.ACuentaTerceros, no debe existir.
Validation: El nodo Comprobante.Conceptos.Concepto.ACuentaTerceros, no debe existir.
El nodo Comprobante.Conceptos.Concepto.InformacionAduanera, no debe existir.
Validation: El nodo Comprobante.Conceptos.Concepto.InformacionAduanera, no debe existir.
El nodo Comprobante.Conceptos.Concepto.CuentaPredial, no debe existir.
Validation: El nodo Comprobante.Conceptos.Concepto.CuentaPredial, no debe existir.
El nodo Comprobante.Conceptos.Concepto.ComplementoConcepto, no debe existir.
Validation: El nodo Comprobante.Conceptos.Concepto.ComplementoConcepto, no debe existir.
El nodo Comprobante.Conceptos.Concepto.Parte, no debe existir.
Validation: El nodo Comprobante.Conceptos.Concepto.Parte, no debe existir.
El nodo Nomina no se puede utilizar dentro del elemento ComplementoConcepto.
Validation: El nodo Nomina se debe registrar como un nodo hijo del nodo Complemento en el CFDI.
El nodo Nomina no tiene valores en TotalPercepciones y/o TotalOtrosPagos.
Validation: En el nodo Nomina, debe existir el atributo TotalPercepciones o TotalOtrosPagos, o ambos.
El valor del atributo Nomina.TipoNomina no cumple con un valor del catálogo c_TipoNomina.
Validation: El atributo Nomina.TipoNomina debe ser una clave del catálogo c_TipoNomina.
El valor del atributo tipo de periodicidad es "99".
Validation: Si el atributo Nomina.TipoNomina es ordinaria el tipo de periodicidad de pago debe ser distinta de la clave "99".
El valor del atributo tipo de periodicidad no tiene el valor "99".
Validation: Si el atributo Nomina.TipoNomina es extraordinaria el tipo de periodicidad de pago debe ser la clave "99".
El valor del atributo Nomina.FechaInicialPago no es menor o igual al valor del atributo FechaFinalPago.
Validation: El atributo Nomina.FechaInicialPago debe ser menor o igual al valor del atributo FechaFinalPago.
El atributo Nomina.TotalPercepciones, no debe existir.
Validation: Si el nodo Percepciones no existe, el atributo Nomina.TotalPercepciones no debe existir.
El valor del atributo Nomina.TotalPercepciones no coincide con la suma de los atributos TotalSueldos más TotalSeparacionIndemnizacion más TotalJubilacionPensionRetiro del nodo Percepciones.
Validation: 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.
El atributo Nomina.TotalDeducciones, no debe existir.
Validation: Si el nodo Deducciones no existe, el atributo de Nomina.TotalDeducciones no debe existir.
El valor del atributo Nomina.TotalDeducciones no coincide con la suma de los atributos TotalOtrasDeducciones más TotalImpuestosRetenidos del elemento Deducciones.
Validation: 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.
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.
Validation: 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.
El atributo Nomina.Emisor.RfcPatronOrigen no está inscrito o bien, inscrito y sí cancelado en el SAT (l_RFC).
Validation: El atributo Nomina.Emisor.RfcPatronOrigen debe estar inscrito no cancelado en el SAT (l_RFC).
El atributo Nomina.Emisor.RegistroPatronal se debe registrar.
Validation: Si el atributo TipoContrato está entre las claves del 01 al 08, el atributo Nomina.Emisor.RegistroPatronal debe existir.
El atributo Nomina.Emisor.RegistroPatronal no se debe registrar.
Validation: Si el atributo TipoContrato tiene el valor 09, 10 o 99, el atributo Nomina.Emisor.RegistroPatronal no debe existir.
El(Los) atributo(s) xxxxxx debe(n) existir.
Validation: 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.
El elemento Nomina.Emisor.EntidadSNCF debe existir.
Validation: 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.
El elemento Nomina.Emisor.EntidadSNCF no debe existir.
Validation: 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.
El valor del atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso no cumple con un valor del catálogo c_OrigenRecurso.
Validation: El atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso debe ser una clave del catálogo c_OrigenRecurso publicado en el Portal del SAT en Internet.
El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio debe existir.
Validation: Si el valor registrado en el atributo Nomina.Emisor.EntidadSNCF.OrigenRecurso corresponde a la clave "IM" (Ingresos Mixtos), el atributo MontoRecursoPropio debe existir.
El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio no debe existir.
Validation: 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.
El valor del atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio no es menor a la suma de los valores de los atributos TotalPercepciones y TotalOtrosPagos.
Validation: El atributo Nomina.Emisor.EntidadSNCF.MontoRecursoPropio debe ser menor que la suma de los valores de los atributos TotalPercepciones y TotalOtrosPagos.
El valor del atributo Nomina.Receptor.TipoContrato no cumple con un valor del catálogo c_TipoContrato.
Validation: El atributo Nomina.Receptor.TipoContrato debe ser una clave del catálogo c_TipoContrato publicado en el Portal del SAT en Internet.
El valor del atributo Nomina.Receptor.TipoJornada no cumple con un valor del catálogo c_TipoJornada.
Validation: El atributo Nomina.Receptor.TipoJornada debe ser una clave del catálogo de c_TipoJornada publicado en el Portal del SAT en Internet.
El valor del atributo Nomina.Receptor.FechaInicioRelLaboral no es menor o igual al atributo a FechaFinalPago.
Validation: El atributo Nomina.Receptor.FechaInicioRelLaboral, debe ser menor o igual al atributo FechaFinalPago.
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.
Validation: 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.
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.
Validation: 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.
El valor del atributo Nomina.Receptor.TipoRegimen no cumple con un valor del catálogo c_TipoRegimen.
Validation: El atributo Nomina.Receptor.TipoRegimen debe ser una clave del catálogo de c_TipoRegimen publicado en el Portal del SAT en Internet.
El valor del atributo Nomina.Receptor.TipoRegimen no es "02", "03" o "04".
Validation: 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".
El valor del atributo Nomina.Receptor.TipoRegimen no está entre "05" a "99".
Validation: Si el atributo TipoContrato tiene una clave "09" o superior, entonces el atributo Nomina.Receptor.TipoRegimen debe ser una clave "05" hasta el "99".
El valor del atributo Nomina.Receptor.RiesgoPuesto no cumple con un valor del catálogo c_RiesgoPuesto.
Validation: El atributo Nomina.Receptor.RiesgoPuesto debe ser una clave del catálogo de c_RiesgoPuesto publicado en el Portal del SAT en Internet.
El valor del atributo Nomina.Receptor.PeriodicidadPago no cumple con un valor del catálogo c_PeriodicidadPago.
Validation: El atributo Nomina.Receptor.PeriodicidadPago debe ser una clave del catálogo de c_PeriodicidadPago publicado en el Portal del SAT en Internet.
El valor del atributo Nomina.Receptor.Banco no cumple con un valor del catálogo c_Banco.
Validation: El atributo Nomina.Receptor.Banco debe ser una clave del catálogo de c_Banco publicado en el Portal del SAT en Internet.
El atributo Nomina.Receptor.CuentaBancaria no cumple con la longitud de 10, 11, 16 o 18 posiciones.
Validation: El atributo Nomina.Receptor.CuentaBancaria debe tener una longitud de 10, 11, 16 o 18 posiciones.
El atributo Banco no debe existir.
Validation: Si se registra una cuenta CLABE (número con 18 posiciones), el atributo Banco no debe existir.
El dígito de control del atributo CLABE no es correcto.
Validation: Si se registra una cuenta CLABE (número con 18 posiciones), se debe confirmar que el dígito de control es correcto.
El atributo Banco debe existir.
Validation: 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.
El valor del atributo Nomina.Receptor.ClaveEntFed no cumple con un valor del catálogo c_Estado.
Validation: 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".
El valor del atributo Nomina.Receptor.SubContratacion.RfcLabora no está en la lista de RFC (l_RFC).
Validation: El valor del atributo Nomina.Receptor.SubContratacion.RfcLabora debe existir en la lista de RFC inscritos no cancelados en el SAT (l_RFC).
La suma de los valores registrados en el atributo Nomina.Receptor.SubContratacion.PorcentajeTiempo no es igual a 100.
Validation: La suma de los valores PorcentajeTiempo registrados en el atributo Nomina.Receptor.SubContratacion.PorcentajeTiempo debe ser igual a 100.
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.
Validation: 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.
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".
Validation: 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".
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".
Validation: 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".
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".
Validation: 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".
El valor del atributo Nomina.Percepciones.TotalGravado, no es igual a la suma de los atributos ImporteGravado de los nodos Percepcion.
Validation: El valor del atributo Nomina.Percepciones.TotalGravado, debe ser igual a la suma de los atributos ImporteGravado de los nodos Percepcion.
El valor del atributo Nomina.Percepciones.TotalExento, no es igual a la suma de los atributos ImporteExento de los nodos Percepcion.
Validation: El valor del atributo Nomina.Percepciones.TotalExento, debe ser igual a la suma de los atributos ImporteExento de los nodos Percepcion.
La suma de los importes de los atributos ImporteGravado e ImporteExento no es mayor que cero.
Validation: El valor del atributo Nomina.Percepciones.Percepcion.ImporteGravado, la suma de los importes de los atributos ImporteGravado e ImporteExento debe ser mayor que cero.
El valor del atributo Nomina.Percepciones.Percepcion.TipoPercepcion no cumple con un valor del catálogo c_TipoPercepcion.
Validation: 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.
El atributo TotalSueldos, debe existir, ya que la clave expresada en Nomina.Percepciones.Percepcion.TipoPercepcion es distinta de "022", "023", "025", "039" y "044".
Validation: 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.
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".
Validation: 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.
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".
Validation: 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.
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".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "039" debe existir TotalUnaExhibicion, no deben existir TotalParcialidad, MontoDiario.
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".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "044" no debe existir TotalUnaExhibicion, deben existir TotalParcialidad, MontoDiario.
El elemento AccionesOTitulos debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "045".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "045", debe existir el elemento AccionesOTitulos, en caso contrario no debe existir.
El elemento AccionesOTitulos no debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "045".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "045", no debe existir el elemento AccionesOTitulos.
El elemento HorasExtra, debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "019".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "019", debe existir el elemento HorasExtra, en caso contrario no debe existir.
El elemento HorasExtra, no debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "019".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion no es "019", no debe existir el elemento HorasExtra.
El nodo Incapacidades debe existir, ya que la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "014".
Validation: Si la clave expresada en el atributo Nomina.Percepciones.Percepcion.TipoPercepcion es "014" el nodo Incapacidades debe existir.
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".
Validation: 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.
El valor del atributo Nomina.Percepciones.Percepcion.HorasExtra.TipoHoras no cumple con un valor del catálogo c_TipoHoras.
Validation: 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.
Los atributos MontoDiario y TotalParcialidad no deben existir, ya que existe valor en Nomina.Percepciones.JubilacionPensionRetiro.TotalUnaExhibicion.
Validation: Si existe valor en el atributo Nomina.Percepciones.JubilacionPensionRetiro.TotalUnaExhibicion los atributos MontoDiario y TotalParcialidad no deben existir.
El atributo MontoDiario debe existir y el atributo TotalUnaExhibicion no debe existir, ya que Nomina.Percepciones.JubilacionPensionRetiro.TotalParcialidad tiene valor.
Validation: Si existe valor en el atributo Nomina.Percepciones.JubilacionPensionRetiro.TotalParcialidad el atributo MontoDiario debe existir y el atributo TotalUnaExhibicion no debe existir.
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.
Validation: 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.
El atributo Nomina.Deducciones.TotalImpuestosRetenidos no debe existir, ya que no existen deducciones con clave "002" en el atributo TipoDeduccion.
Validation: Si no existen deducciones con clave "002", el valor en el atributo Nomina.Deducciones.TotalImpuestosRetenidos no debe existir.
El valor del atributo Nomina.Deducciones.Deduccion.TipoDeduccion no cumple con un valor del catálogo c_TipoDeduccion.
Validation: 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.
Debe existir el elemento Incapacidades, ya que la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es "006".
Validation: Si la clave expresada en Nomina.Deducciones.Deduccion.TipoDeduccion es "006", debe existir el elemento Incapacidades.
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".
Validation: 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.
El atributo Nomina.Deducciones.Deduccion.Importe no es mayor que cero.
Validation: El valor del atributo Nomina.Deducciones.Deduccion.Importe debe ser mayor que cero.
El valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago no cumple con un valor del catálogo c_TipoOtroPago.
Validation: 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.
El nodo CompensacionSaldosAFavor debe existir, ya que el valor de Nomina.OtrosPagos.OtroPago.TipoOtroPago es "004".
Validation: Si el valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago es "004" es obligatorio el nodo CompensacionSaldosAFavor.
El nodo SubsidioAlEmpleo debe existir, ya que el valor de Nomina.OtrosPagos.OtroPago.TipoOtroPago es "002".
Validation: Si el valor del atributo Nomina.OtrosPagos.OtroPago.TipoOtroPago es "002" es obligatorio el nodo SubsidioAlEmpleo.
El Importe del elemento OtroPago no es mayor que cero.
Validation: Si el valor del atributo TipoOtroPago es diferente a "002", este atributo Nomina.OtrosPagos.OtroPago.Importe debe ser mayor que cero.
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.
Validation: 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.
El valor del atributo Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.SaldoAFavor no es mayor o igual que el valor del atributo CompensacionSaldosAFavor:RemanenteSalFav.
Validation: El valor del atributo Nomina.OtrosPagos.OtroPago.CompensacionSaldosAFavor.SaldoAFavor debe ser mayor o igual que el valor del atributo CompensacionSaldosAFavor:RemanenteSalFav.
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.
Validation: 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.
El valor del atributo Incapacidad.TipoIncapacidad no cumple con un valor del catálogo c_TIpoIncapacidad.
Validation: El valor del atributo Incapacidad.TipoIncapacidad debe ser una clave del catálogo de c_TIpoIncapacidad publicado en el Portal del SAT en Internet.
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".
Validation: 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.
En el atributo TipoOtroPago no deben registrarse las claves "002", "007" o "008" ya que en el atributo TipoRegimen no existe la clave "02".
Validation: 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".
El Importe del elemento OtroPago no es menor o igual que el valor del atributo SubsidioCausado.
Validation: 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.
El valor del atributo SubsidioCausado no puede ser mayor que el resultado de multiplicar el factor 13.39 por el valor del atributo NumDiasPagados.
Validation: 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.
Error no clasificado.
Validation: Otro error no documentado.
Notes: Si se identifica un error que no esté tipificado en los registros previos se mostrará este mensaje.
El valor registrado en este atributo es diferente a "4.0"
Validation: El valor registrado debe ser “4.0”.
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.
Validation: 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.
El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "T" o el valor registrado en el atributo "Comprobante:Moneda" es diferente de "XXX".
Validation: 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”.
El valor del atributo "Comprobante:TipoDeComprobante" es diferente de "I" o el valor registrado en el atributo "Comprobante:Moneda" es igual a "XXX".
Validation: 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”.
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.
Validation: 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.
El valor del atributo "Conceptos:Concepto:ObjetoImp" no contiene un valor del catálogo catCFDI:c_ObjetoImp, o no contiene un valor.
Validation: 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.
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".
Validation: 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”.
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).
Validation: 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).
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.
Validation: 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.
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.
Validation: 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".
El valor registrado en el atributo "Receptor:UsoCFDI", es distinto de "S01" - "Sin efectos fiscales".
Validation: 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.
El nodo "CartaPorte" no se registró como nodo hijo del nodo complemento del CFDI o existe más de uno.
Validation: El nodo "CartaPorte" se debe registrar como un nodo hijo del nodo Complemento en el CFDI y solo debe existir uno.
El complemento registrado de manera adicional, no corresponde con los complementos con los cuales puede coexistir.
Validation: 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.
El valor registrado en el atributo "Comprobante:TipoDeComprobante" es diferente de "I" o "T".
Validation: Cuando el atributo “Comprobante:TipoDeComprobante” sea distinto de "I" o "T", este complemento no debe existir.
El valor registrado en este atributo es diferente a "3.1"
Validation: El valor registrado en este atributo debe ser igual a "3.1".
El nodo "CartaPorte:RegimenesAduaneros" no debe existir cuando el atributo "CartaPorte:TranspInternac" tiene un valor distinto de "SÍ"
Validation: Cuando el atributo “TranspInternac” contenga el valor “Sí”, este nodo debe existir, en caso contrario se debe omitir.
El atributo "RegimenesAduaneros:RegimenAduaneroCCP:RegimenAduanero" contiene un valor del catálogo catCartaPorte:c_RegimenAduanero y el atributo "EntradaSalidaMerc" esta vacío.
Validation: Cuando el atributo “EntradaSalidaMerc” contenga un valor, este atributo debe existir y contener un valor del catálogo catCartaPorte:c_RegimenAduanero.
El valor registrado no coincide con alguno de los valores del catálogo catCartaPorte:c_RegimenAduanero para una importación.
Validation: 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".
El valor registrado en el atributo "CartaPorte:TranspInternac" es igual a "Sí" y no se registra el atributo "CartaPorte:EntradaSalidaMerc" con información.
Validation: Cuando el atributo “CartaPorte:TranspInternac” contenga el valor “Sí”, se debe capturar información en este atributo.
El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "No" y se registra el atributo "CartaPorte:EntradaSalidaMerc" con información.
Validation: Si el atributo “CartaPorte:TranspInternac” contiene el valor “No”, este atributo no debe existir.
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.
Validation: 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.
El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "No" y se registró información en el atributo "CartaPorte:PaisOrigenDestino".
Validation: Si el atributo “CartaPorte:TranspInternac” contiene el valor “No”, este atributo no debe existir.
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.
Validation: 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.
El valor registrado en el atributo “CartaPorte:TranspInternac” es igual a "No" y se registra el atributo "CartaPorte:ViaEntradaSalida" con información.
Validation: Si el atributo “CartaPorte:TranspInternac” contiene el valor “No”, este atributo no debe existir.
No se registró valor alguno en el atributo "CartaPorte:TotalDistRec" o se registró un nodo diferente a "Autotransporte" o "TransporteFerroviario".
Validation: 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.
El valor registrado no coincide con la suma de los atributos "Ubicaciones:Ubicación:DistanciaRecorrida".
Validation: 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”.
Los atributos UbicacionPoloOrigen y UbicacionPoloDestino no deben existir cuando no se registre un valor en el atributo "CartaPorte:RegistroISTMO".
Validation: 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.
No existe el nodo "Ubicaciones:Ubicacion" con el atributo "Ubicaciones:Ubicacion:TipoUbicacion" que contenga el valor "Origen".
Validation: 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”.
No se registraron los 5 nodos "Ubicaciones:Ubicacion" donde el atributo "Ubicaciones:Ubicacion:TipoUbicacion" contenga el valor "Destino".
Validation: 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”.
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.
Validation: 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”.
No existe el atributo "Ubicacion:IDUbicacion" o está vacío, y se registró el nodo “Mercancias:Mercancia:CantidadTransporta”.
Validation: Cuando exista el nodo “Mercancias:Mercancia:CantidadTransporta”, se debe registrar este atributo, en caso contrario se puede omitir.
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).
Validation: 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).
No se registró el atributo "Ubicacion:RFCRemitenteDestinatario" o no contiene un valor.
Validation: 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.
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".
Validation: 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”.
No debe existir información en el atributo "Ubicacion:NumEstacion", siempre que se registre el nodo “Mercancias:Autotransporte”.
Validation: Cuando exista el nodo “Mercancias:Autotransporte”, este atributo se debe omitir.
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".
Validation: 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”.
El atributo "Ubicacion:NombreEstacion" no contiene un valor o no corresponde con una clave del catálogo catCartaPorte:_Estaciones.
Validation: 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.
La descripción "Extranjera" no es un valor válido para el nombre de la estación.
Validation: 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.
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".
Validation: Cuando exista el nodo “Mercancias:TransporteMaritimo”, este atributo debe contener un valor, en caso contrario se debe omitir.
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.
Validation: 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.
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".
Validation: 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.
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".
Validation: 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.
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.
Validation: 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”.
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.
Validation: 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.
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.
Validation: 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”.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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".
El atributo "Mercancias:PesoBrutoTotal" no existe o el valor de este atributo no corresponde a la suma de los atributos "Mercancias:Mercancia:PesoEnKg".
Validation: 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".
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.
Validation: 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.
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.
Validation: 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”.
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".
Validation: 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”.
No existe la seccion Autotransporte, el atributo Mercancias:LogisticaInversaRecoleccionDevolucion no debe contener un valor.
Validation: Cuando exista el nodo "Mercancias:Autotransporte" el campo Mercancias:LogisticaInversaRecoleccionDevolucion puede existir, en cualquier otro caso se debe omitir.
El valor registrado no coincide con el número de elementos "Mercancias:Mercancia" que se registraron en el complemento.
Validation: El valor de este atributo debe ser igual al número de elementos “Mercancias:Mercancia”, que se registren en el complemento.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: Este atributo debe existir siempre que el atributo “Mercancias:Mercancia:CveMaterialPeligroso”, contenga un valor, en caso contrario este atributo debe omitirse.
El valor registrado en el atributo "Mercancia:SectorCOFEPRIS" no coincide con una clave del catálogo catCartaPorte:c_SectorCOFEPRIS.
Validation: Este atributo puede contener un valor del catálogo catCartaPorte:c_SectorCOFEPRIS
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".
Validation: 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.
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.
Validation: 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.
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".
Validation: 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.
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”.
Validation: 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
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”.
Validation: 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.
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".
Validation: 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.
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”.
Validation: 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.
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”.
Validation: 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.
El atributo "Mercancia:ValorMercancia" no existe o está vacío.
Validation: Cuando exista el nodo “Mercancias:TransporteAereo” el atributo "Mercancias:Mercancia:ValorMercancia" debe contener un valor, en caso contrario se puede omitir.
El atributo "Mercancia:Moneda" no existe o está vacío, o no existe el atributo “Mercancia:ValorMercancia".
Validation: Cuando el atributo "Mercancias:Mercancia:ValorMercancia" contenga un valor, el atributo "Mercancias:Mercancia:Moneda" debe existir.
El valor registrado no coincide con alguno de los valores del catálogo cat:CartaPorte:c_RegimenAduanero para una exportación.
Validation: 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".
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í".
Validation: 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.
El atributo Mercancia:DescripcionMateria no debe existir cuando el valor registrado en el atributo "Mercancias:Mercancia:TipoMateria" es diferente de "05".
Validation: 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.
El nodo "Mercancia:DocumentacionAduanera" no debe existir cuando se registre el valor "No" en el atributo "CartaPorte:TranspInternac".
Validation: 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.
El atributo "DocumentacionAduanera:TipoDocumento" no debe contener el valor "01" - Pedimento cuando se registre el valor "Salida" en el atributo "CartaPorte:EntradaSalidaMerc".
Validation: Cuando el atributo “EntradaSalidaMerc” contenga el valor “Salida”, el atributo “TipoDocumento” debe contener una clave distinta de “01” del catálogo “catCartaPorte:c_DocumentoAduanero”.
El atributo "DocumentacionAduanera:NumPedimento" no existe, está vacío o no cuenta con la estructura definida.
Validation: 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.
El atributo "DocumentacionAduanera:IdentDocAduanero" no debe existir cuando el atributo "Mercancia:DocumentacionAduanera:TipoDocumento" es "01"-Pedimento
Validation: 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.
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.
Validation: 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.
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".
Validation: 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.
El atributo "CantidadTransporta:IDOrigen" no existe, está vacío o no coincide con un valor registrado en el atributo “Ubicacion:IDUbicacion”.
Validation: 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”.
El atributo "CantidadTransporta:IDDestino" no existe, está vacío o no coincide con un valor registrado en el atributo “Ubicacion:IDUbicacion”.
Validation: 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”.
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".
Validation: 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.
No existe el nodo "Mercancia:DetalleMercancia", se registró sin información o no existe el nodo "Mercancias:TransporteMaritimo".
Validation: Cuando exista un nodo “Mercancias:TransporteMaritimo”; este nodo debe existir, en caso contrario debe omitirse.
No existe el atributo "Seguros:AseguraMedAmbiente", se registró sin información o el valor del atributo "Mercancia:MaterialPeligroso” es "No".
Validation: Cuando en el atributo “Mercancias:Mercancia:MaterialPeligroso” se registre “Sí”, este atributo debe contener un valor, en caso contrario se debe omitir.
No existe el atributo "Seguros:PolizaMedAmbiente", se registró sin información o no existe el atributo "Seguros:AseguraMedAmbiente”.
Validation: Cuando se registre un valor en el atributo “Mercancias:Autotransporte:Seguros:AseguraMedAmbiente”; este atributo debe existir, en caso contrario se debe omitir.
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.
Validation: 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.
El atributo "TransporteMaritimo:PermisoTempNavegacion" no debe existir cuando el valor registrado en el atributo "TransporteMaritimo:NacionalidadEmbarc es "MEX".
Validation: 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.
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.
Validation: 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.
El atributo "TransporteMaritimo:Contenedor:TipoContenedor” contiene un valor distinto de "CM011" y el atributo "TransporteMaritimo:Contenedor:RemolquesCCP" no debe existir.
Validation: 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.
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".
Validation: El valor registrado en este atributo debe encontrarse en la lista del RFC inscritos no cancelados del SAT (l_RFC).
No existe información en el atributo "TransporteAereo:NumRegIdTribEmbarc" o ya se registró el atributo "TransporteAereo:RFCEmbarcador".
Validation: Cuando el atributo “Mercancias:TransporteAereo:RFCEmbarcador” no contenga un valor, este atributo debe existir.
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".
Validation: 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.
No existe el atributo "Carro:ToneladasNetasCarro", está vacío, o la suma no corresponde con los valores registrados en el atributo “Contenedor:PesoNetoMercancia”.
Validation: 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.
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.
Validation: 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.
No existe el nodo "CartaPorte:FiguraTransporte" o se registró sin información.
Validation: Cuando exista el nodo “Mercancias:Autotransporte”, este elemento debe existir.
No existe el nodo "FiguraTransporte:TiposFigura" o se registró sin información.
Validation: 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”.
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".
Validation: 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".
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".
Validation: 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.
No existe información en el atributo "TiposFigura:NumRegIdTribFigura" o ya se registró el atributo "TiposFigura:RFCFigura".
Validation: Cuando el atributo “CartaPorte:FiguraTransporte:TiposFigura:RFCFigura” no contenga un valor, este atributo debe existir.
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".
Validation: 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”.
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".
Validation: 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.
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.
Validation: 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”.
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.
Validation: 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.
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.
Validation: 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”.
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.
Validation: 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.
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.
Validation: 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.
Error no clasificado
Validation: Otro error en el documento
El atributo cfdi:Comprobante:TipoDeComprobante no cumple con alguno de los valores permitidos para este complemento.
Validation: El atributo cfdi:Comprobante:TipoDeComprobante puede tener los valores "I", "E" o "T".
El nodo Propietario se debe registrar cuando el atributo cfdi:Comprobante:TipoDeComprobante tiene el valor "T" y MotivoTraslado tiene la clave "05".
Validation: El nodo Propietario se debe registrar si el valor de cfdi:Comprobante:TipoDeComprobante es "T" y MotivoTraslado tiene la clave "05".
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".
Validation: 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".
La clave registrada en el atributo Exportacion contiene el valor "02" y no existe el complemento de Comercio Exterior.
Validation: 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.
La clave registrada en el atributo Exportacion contiene el valor "03", el complemento de Comercio Exterior no debe existir.
Validation: El atributo cfdi:Comprobante:Exportacion" contiene el valor "03" de acuerdo al catCFDI:c_Exportacion, se debe omitir el complemento de Comercio Exterior.
Se registro información en el nodo InformacionGlobal y no debe existir registro.
Validation: El nodo "InformacionGlobal" no debe existir.
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.
Validation: 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".
El atributo cfdi:Comprobante:Receptor:Rfc tiene un valor diferente al registrado en el atributo cfdi:Comprobante:Emisor:Rfc o se encuentra vacío.
Validation: 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".
Se registró la clave "02" en el atributo "ObjetoImp" y no se tiene información registrada en el nodo cfdi:Concepto:Impuestos
Validation: El atributo "ObjetoImp" contiene el valor "02" por lo que debe tener al menos un elemento cfdi:Concepto:Impuestos.
El campo TipoDeComprobante tiene el valor "T" y la clave registrada en el campo "ObjetoImp" es diferente de 01.
Validation: El atributo "ObjetoImp" debe contener el valor "01" cuando el campo TipoDeComprobante tenga el valor "T".
Se registró información en el nodo "ACuentaTerceros" y no debe existir.
Validation: El nodo "ACuentaTerceros" no debe existir.
Se registró información en el nodo "CuentaPredial" y no debe existir.
Validation: El nodo "CuentaPredial" no debe existir.
El nodo cce20:ComercioExterior no puede registrarse más de una vez.
Validation: El nodo cce20:ComercioExterior solo debe registrarse una vez.
El nodo cce20:ComercioExterior debe registrarse como un nodo hijo del nodo Complemento en el CFDI.
Validation: El nodo cce20:ComercioExterior se debe registrar como un nodo hijo del nodo Complemento en el CFDI.
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.
Validation: 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.
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.
Validation: 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.
Se registró la clave "05" en el atributo cce20:ComercioExterior:MotivoTraslado y no existe al menos un nodo "Propietario".
Validation: 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".
El valor de cce20:ComercioExterior:CertificadoOrigen es "0" y se registró el atributo cce20:ComercioExterior:NumCertificadoOrigen
Validation: Si el valor registrado en el campo CertificadoOrigen es 1 este campo deberá registrarse, en caso contrario no deberá existir.
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.
Validation: 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.
El atributo “cfdi:Comprobante:Exportacion” contiene el valor "02" y este atributo debe contener un valor.
Validation: 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.
El valor del atributo cce20:ComercioExterior:TipoCambioUSD no corresponde con el número de pesos mexicanos equivalentes a un dólar de Estados Unidos.
Validation: 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.
El atributo cce20:ComercioExterior:TotalUSD no coincide con la suma de ValorDolares de las mercancías.
Validation: 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.
La longitud del atributo Rfc del nodo cfdi:Comprobante:Emisor es igual a 12 y se registró el atributo cce20:ComercioExterior:Emisor:Curp.
Validation: El atributo cce20:ComercioExterior:Emisor:Curp no debe registrarse si el atributo Rfc del nodo cfdi:Comprobante:Emisor es de longitud 12.
Debe registrarse el atributo cce20:ComercioExterior:Emisor:Curp.
Validation: El atributo cce20:ComercioExterior:Emisor:Curp debe registrarse si el atributo Rfc del nodo cfdi:Comprobante:Emisor es de longitud 13
El atributo cce20:ComercioExterior:Emisor:Domicilio:Pais contiene una clave distinta de "MEX".
Validation: El atributo cce20:ComercioExterior:Emisor:Domicilio:Pais debe contener la clave "MEX".
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".
Validation: 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".
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
No se registró información en el atributo "NumRegIdTrib" del nodo "Receptor ".
Validation: 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.
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.
Validation: 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".
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.
Validation: 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.
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.
Validation: 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.
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".
Validation: 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".
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
Se registró más de un Destinatario, para el tipo de comprobante "T".
Validation: Cuando el tipo de comprobante sea "T" sólo se puede registrar un Destinatario.
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".
Validation: 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".
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.
Validation: 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.
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.
Validation: 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.
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".
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
Alguno de los conceptos registrados en el nodo cfdi:Comprobante:Conceptos no contiene el atributo cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion.
Validation: 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.
El valor registrado en el atributo cce20:ComercioExterior:Mercancias:Mercancia:NoIdentificacion no corresponde con alguno de los atributos cfdi:Comprobante:Conceptos:Concepto:NoIdentificacion.
Validation: 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.
Los valores registrados en los atributos "NoIdentificacion" y "FraccionArancelaria" se repiten en un elemento "Mercancia".
Validation: En el elemento cce20:ComercioExterior:Mercancias no se deben repetir elementos Mercancia donde el NoIdentificacion y la FraccionArancelaria sean iguales.
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.
Validation: 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}))?
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.
Validation: 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.
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.
Validation: 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.
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".
Validation: 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.
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".
Validation: 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.
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".
Validation: 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".
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".
Validation: 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".
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.
Validation: 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".
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.
Validation: 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.
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.
Validation: 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.
La suma del atributo cce20:ComercioExterior:Mercancias:Mercancia:ValorDolares es mayor a la suma de los valores del atributo cfdi:Comprobante:Conceptos:Concepto:Descuento.
Validation: 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.
No se registró todos o alguno de los atributos CantidadAduana, UnidadAduana o ValorUnitarioAduana, o el atributo NoIdentificacion registrado en los conceptos son diferentes .
Validation: 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.
No se registraron todos o alguno de los atributos CantidadAduana, UnidadAduana o ValorUnitarioAduana.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
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.
Validation: 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.
El valor del atributo cce20:ComercioExterior:Mercancias:Mercancia:UnidadAduana es distinto a "99" o existe el atributo cce20:ComercioExterior:Mercancias:Mercancia:FraccionArancelaria.
Validation: 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.
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”.
Validation: 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.
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.
Validation: 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.
Error no clasificado
Validation: Otro error en el documento
El resultado de la digestión debe ser igual al resultado de la desencripción del sello.
Validation: 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.
EL certificado no cumple con alguno de los valores permitidos.
Validation: El atributo debe contener un archivo .cer válido.
El campo FechaExp no cumple con el patrón requerido.
Validation: 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.
El campo LugarExpRetenc no contiene un valor del catálogo c_CodigoPostal.
Validation: Este atributo debe contener un valor del catálogo c_CodigoPostal.
El campo CveRetenc no contiene un valor del catálogo c_CveRetenc.
Validation: Este atributo debe contener una clave vigente del catálogo c_CveRetenc.
El campo DescRetenc debe existir.
Validation: Si el valor de este atributo es "25", debe existir el atributo DescRetenc.
El campo CveRetenc no contiene el complemento asociado a la clave.
Validation: Cuando el catálogo señale un complemento asociado al tipo de retención, se debe incluir dicho complemento en el comprobante.
Los campos MontoTotGrav y MontoTotExent contienen un valor diferente de cero.
Validation: Si el valor registrado en este atributo es "28", los atributos MontoTotGrav y MontoTotExent deben tener el valor cero.
El campo TipoRelacion no contiene un valor del catálogo c_TipoRelacion.
Validation: Este atributo debe contener un valor del catálogo c_TipoRelacion.
El valor del campo NomDenRazSocE del emisor debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: El valor de este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
El campo RegimenFiscalE, no contiene un valor del catálogo c_RegimenFiscalE.
Validation: Este atributo, debe contener un valor del catálogo c_RegimenFiscalE.
La clave del campo RegimenFiscalE debe corresponder con el tipo de persona (física o moral).
Validation: 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.
El valor del campo RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT.
Validation: 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.
El valor del campo RFC del receptor no es un RFC genérico "XAXX010101000".
Validation: 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.
El valor del campo NomDenRazSocR del receptor debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: El valor de este atributo, debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
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”.
Validation: 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.
El campo RfcR no corresponde a persona física.
Validation: Este atributo no debe existir si la clave del RFC del atributo RfcR tiene longitud de 12 posiciones.
El valor del campo DomicilioFiscalR debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
Validation: El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el SAT.
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.
Validation: 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.
El campo MesIni no contiene un valor del catálogo c_Periodo.
Validation: Este atributo debe contener una clave vigente del catálogo c_Periodo.
El valor del campo MesIni no es menor o igual que el valor registrado en el campo MesFin.
Validation: La clave vigente del catálogo c_Periodo registrada en este atributo debe ser menor o igual que el atributo MesFin.
El campo MesFin no contiene un valor del catálogo c_Periodo.
Validation: Este atributo debe contener una clave vigente del catálogo c_Periodo.
El valor del campo MesFin no es mayor o igual que el valor registrado en el campo MesIni.
Validation: La clave vigente del catálogo c_Periodo registrada en este atributo debe ser mayor o igual que el atributo MesIni.
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.
Validation: 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.
El valor del campo MontoTotOperacion no es igual a la suma de los atributos MontoTotGrav y MontoTotExent.
Validation: El valor de este atributo debe ser igual a la suma de los atributos MontoTotGrav y MontoTotExent.
El valor del atributo MontoTotGrav es mayor al atributo MontoTotOperacion
Validation: El valor de este atributo debe ser menor o igual al atributo MontoTotOperacion.
El valor del atributo MontoTotExent es mayor al atributo MontoTotOperacion
Validation: El valor de este atributo debe ser menor o igual al atributo MontoTotOperacion.
No existen los Impuestos Retenidos.
Validation: Si el valor de este atributo es mayor que cero, debe existir al menos un nodo hijo de ImpRetenidos.
El valor del campo MontoTotRet no es igual a la suma de los campos MontoRet.
Validation: Si el valor de este atributo es mayor que cero, debe ser igual a la suma de los atributos MontoRet.
El valor del campo UtilidadBimestral no es mayor que cero.
Validation: Si el valor registrado en el atributo CveRetenc es "28", el valor de este atributo debe ser mayor que cero.
El valor del campo ISRCorrespondiente no es mayor que cero.
Validation: Si el valor registrado en el atributo CveRetenc es "28", el valor de este atributo debe ser mayor que cero.
El campo TipoPagoRet no contiene un valor del catálogo c_TipoPagoRet.
Validation: Este atributo debe contener una clave vigente del catálogo c_TipoPagoRet.
El valor del campo TipoPagoRet no corresponde con el tipo de impuesto asociado con el valor registrado en el campo ImpuestoRet.
Validation: Este atributo debe corresponder con el valor de la columna "Tipo impuesto" del catálogo c_TipoPagoRet registrado en el atributo ImpuestoRet.
El valor del campo NomDenRazSocE debe pertenecer al nombre asociado a la clave del RFC registrado en el campo RfcE del Emisor.
Validation: El valor de este atributo debe pertenecer al nombre asociado al RFC registrado en el atributo RfcE del Nodo Emisor.
No key matches that search. Try the full key (CFDI40143), the field name as it appears in the XML, or fewer words.
How an error reaches your system
A SAT rejection responds HTTP 400 with code 400 and the key at the start of message. The text after the key is the matrix wording, which the SAT tweaks now and then; sometimes a - Detalle: … from the stamping provider follows it.
The API's own codes arrive in code (702, 601, 5034…) with the explanation in message. A 702 also carries the errors list with the field and value that failed the SAT schema. Responses and errors has the full format.
// res: the JSON body of an HTTP 400 response
const key = /^([A-Za-z]+\d+)\s*-/.exec(res.message ?? "")?.[1];
if (key) {
// SAT rejection: CFDI40143, CRP20217, NOM45…
handleSatRejection(key, res.message);
} else {
// API code: 702, 601, 5034…
handleApiCode(res.code, res);
}// $res: the JSON body of an HTTP 400 response, as an array
if (preg_match('/^([A-Za-z]+\d+)\s*-/', $res['message'] ?? '', $m)) {
// SAT rejection: CFDI40143, CRP20217, NOM45…
handleSatRejection($m[1], $res['message']);
} else {
// API code: 702, 601, 5034…
handleApiCode($res['code'], $res);
}import re
# res: the JSON body of an HTTP 400 response, as a dict
m = re.match(r"^([A-Za-z]+\d+)\s*-", res.get("message") or "")
if m:
# SAT rejection: CFDI40143, CRP20217, NOM45…
handle_sat_rejection(m.group(1), res["message"])
else:
# API code: 702, 601, 5034…
handle_api_code(res["code"], res)Sources
The SAT keys come from its current error matrices, downloaded from the SAT portal on November 3, 2026. The API codes come from the API v5 code running in production.
| Matrix | SAT file | Keys |
|---|---|---|
| CFDI 4.0 | MatrizDeErrores_CFDI_v40_20260720.xls | 131 |
| Pagos 2.0 | MatrizDeErrores_CRP_V20_RevB.xls | 103 |
| Nómina 1.2 | 29122021_Matriz_ErroresNomina_v12_RevC.xls | 109 |
| Carta Porte 3.1 | Matriz_Errores_CCP_V31.xls | 105 |
| Comercio Exterior 2.0 | Matriz_de_Errores_CCE_v2.0.xls | 73 |
| Retenciones 2.0 | MatrizDeErrores_CFDI_Retenciones_v20.xls | 34 |
Checked against the production API v5 on 2026-11-03.