Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.invopop.com/llms.txt

Use this file to discover all available pages before exploring further.

https://assets.invopop.com/apps/sat-mexico/icon.svg

Issue invoices

Issuing guide ›
https://assets.invopop.com/apps/sat-mexico/icon.svg

Receive invoices

Receiving guide ›
DeveloperInvopop
CategoryGovernment
ScopeB2B, B2C, B2G
CountryMexico
Invopop’s SAT Mexico app enables full compliance with Mexico’s CFDI e-invoicing framework. Use ready-made workflows to register suppliers, authorize the local PAC, and issue CFDI v4 invoices directly from Invopop. The app also provides CFDI import capabilities, converting CFDI XML documents to GOBL format for use in accounts payable and other processing workflows.

Key features

  • Workflow automation: The app makes workflow steps available for post-registration, supplier registration, issuing invoices, and importing CFDIs.
  • CFDI import: Convert CFDI XML documents to GOBL format. Combine with the SW Sapien app to bulk download CFDIs from SAT.
  • PDF generation: Optional PDF creation with configurable layout, locale, and formatting.
  • PAC authorization: One-time e.firma (FIEL) sign-off to allow the PAC to stamp and submit CFDIs on your behalf.
  • CFDI v4 compliance: Validations and transformations powered by the GOBL library and the mx-cfdi-v4 addon.
  • Supplier onboarding: Collect RFC and fiscal regime code; upload CSD (certificate & key) and activate via a secure registration link.
  • White-label support: Invoicing can be performed either under a client’s brand (white-label) or directly by the issuing organization, according to operational needs.
Check out our Issuing invoices guide for instructions on how to issue invoices and onboard suppliers, or the Receiving invoices guide for importing CFDIs.

FAQ

Invoicing questions
Purchases under $100 mxn don’t need to be issued, but they need to be registered in the global CFDI. Often issuing all invoices will simplify your operation.
Yes. We must obtain a the supplier’s CSD (digtial seal) and credentials to issue invoices in that company’s name. We are especially powerful and simple for this. Read more in our white label use case.
Yes. The mx-cfdi-v4 addon supports both PUE and PPD on the original invoice. What is not automated is the issuance of the subsequent payment receipts (REPs / Pago / complemento de pago) that must be emitted as payments are collected. If your operation regularly issues PPD invoices, you will need a separate mechanism for the REP lifecycle.
Yes, if the original was issued as PUE and payment is not received by the last day of the issuance month, rule 2.7.1.32 RMF requires cancelling the original and re-issuing as PPD with FormaPago = 99, then issuing REPs as payments come in. This is calendar-driven, not payment-event-driven, and it surprises most non-Mexican implementations. The conservative approach is to issue PPD whenever there is any uncertainty about same-month payment.
REPs must be issued by the fifth calendar day of the month following payment receipt (rule 2.7.1.35 RMF). Missing the deadline does not invalidate the underlying invoice, but it prevents the customer from deducting the expense in the correct period and exposes the issuer to fines. This is a recurring source of friction and the reason customers will sometimes refuse to accept cancellations from a supplier with poor REP discipline.
Install the SAT Mexico app (uses SW Sapien as PAC) plus the SW Sapien app for credentials. Onboard each issuing supplier with their CSD certificate and mx-cfdi-issue-place. Run invoices through the Issue CFDI workflow.
The library that transforms GOBL into CFDI documents is publicly available as an open-source project and can be found at github.com/invopop/gobl.cfdi.For further details on how GOBL prepares data for conversion, see the Mexico Tax Regime.
The most common cause is a mismatch between the receiver’s postal code in the CFDI and the postal code SAT has on file for that RFC. Resolution: ask the customer for their CIF (Constancia de Situación Fiscal) and use the postal code printed there, exactly. Secondary causes:
  • The postal code is real but not yet in c_CodigoPostal. Use the closest catalog code from the place of issuance.
  • The receiver is XAXX010101000 or XEXX010101000 and DomicilioFiscalReceptor differs from LugarExpedicion. They must be equal for generic RFCs.
  • The branch issuing the document is configured with the matriz’s postal code instead of its own.
In Mexico, a reduced VAT rate of 8% applies to transactions in border zones (northern and southern border regions). To successfully issue invoices with this rate, both of the following conditions must be met:
  1. The supplier’s RFC must be enabled by the SAT to invoice with the reduced rate in border zones.
  2. Both the mx-cfdi-issue-place field and the customer’s postal code (when included) must correspond to border zones.
If either condition is not met, the SAT will reject the invoice with an error.
CFDI40999 is a generic “unclassified error” returned by the SAT when no other, more specific error code applies. This error can have multiple causes.A common scenario is invoicing in border zones with the reduced 8% VAT rate. If you receive this error in that context, verify:
  1. RFC registration: The supplier’s RFC must be registered in the taxpayers registry for the appropriate border region tax incentive. Without this registration, the SAT will reject all invoices with the reduced rate. See SAT’s registration requirements and procedures for more information.
  2. Issue place postal code: The mx-cfdi-issue-place field must contain a postal code from a municipality within a border zone.
  3. Tax rate: Ensure you’re applying the correct percentage (typically 8%) for the border zone.
If the error persists after verifying these points, or you’re getting this error for other reasons, please reach out to our support team.
The UsoCFDI must be allowed for the receiver’s RegimenFiscal. The catalog defines the valid combinations; not every code works for every régimen. For example, D01–D10 (personal deductions) are only valid for individuals, never for legal entities. RESICO contributors (régimen 626) have a restricted set. When in doubt, default to S01 (Sin efectos fiscales) — it is always valid but produces a non-deductible invoice for the receiver. Always ask the customer which UsoCFDI they need before issuing.
By default, Invopop uses Mexico City’s time zone (UTC-6) when automatically setting the issue_date and issue_time fields. However, the SAT validates these fields based on the time zone of the postal code specified in mx-cfdi-issue-place.If the issuing location is in a different time zone, the SAT may reject the invoice with an error indicating the timestamp is in the future, as it only allows up to 5 minutes ahead of the local time.To avoid this, explicitly set issue_date and issue_time in your GOBL invoice using the local time zone of the issuing location when operating outside Mexico City’s time zone.
For non-MXN invoices, TipoCambio must be present and use the FIX rate published by Banxico in the DOF the day prior to the operation (Article 20 CFF, Article 56 Ley Aduanera). Common errors:
  • Using the day-of rate instead of the prior day’s.
  • Quoting the inverse (USD per MXN instead of MXN per USD).
  • Setting TipoCambio on an MXN invoice (it must be 1 or absent).
  • Rounding inconsistently between line totals and document totals — Anexo 20 has specific rounding rules.
See the Mexico tax regime in GOBL for tax categories, RFC structure, and CFDI extensions. The mx-cfdi-v4 addon documents required fields including UsoCFDI, RegimenFiscal, and place-of-issue.
Registering supplier questions
Invopop uses SW Sapien, an Authorised Certification Provider (PAC), to sign and stamp CFDI documents for the Mexican tax authority.
Without a valid CSD, the issuer cannot stamp any CFDI through any PAC. SAT can administratively revoke a CSD when it suspects fraudulent activity, repeated non-compliance, or tax debts. Operations halt until the supplier resolves the underlying cause and obtains a new CSD. CSDs also expire every four years. Suppliers should monitor CSD validity proactively; Invopop relies on the CSD uploaded during supplier registration and does not manage its lifecycle.
Generate a registration link via the SAT Mexico Register Supplier workflow. The supplier uploads their CSD certificate (.cer + .key + password) and authorizes the PAC. Once validated, the supplier is ready to issue CFDIs.
A CSD (Certificado de Sello Digital) issued by SAT specifically for invoicing — distinct from the FIEL (e.firma) used for portal login. The CSD comprises a .cer (X.509) and .key (encrypted private key) with a password set at generation. Validity: 4 years.
The CSD certificate (.cer), private key (.key), and key password are stored encrypted at rest. Invopop uses them only to seal CFDIs before transmission to the PAC; the password and key are never returned in API responses.
More answers in our Mexico FAQ section

Participate in our community

Ask and answer questions about SAT Mexico App →