Country deep dive
Mexico's CFDI system is over a decade old — the interesting activity today is version upgrades and annual catalog maintenance, not a fundamental rebuild.
The Comprobante Fiscal Digital por Internet replaces paper invoicing economy-wide, establishing the PAC-based clearance model still in use today.
Replaces CFDI 3.3, introducing stricter receiver-data validation — invoices are now checked against SAT's taxpayer registry, not just internal XML consistency.
SAT's annual catalog refresh (product/service codes, payment methods, tax regimes, and more) goes live — invoices using retired codes are rejected outright ("rebota al timbrar") from this date.
A tax reform effective this year strengthens SAT's enforcement powers, adding tighter authenticity checks and criminal liability provisions for false or simulated CFDIs.
Anexo 20 is the master reference — but almost every specific transaction type layers its own additional complemento on top.
Anexo 20 dictates not just which fields are required, but the acceptable values for each — an XML with every required field present can still be rejected if a fiscal regime code is invalid.
A CFDI for payroll or freight must satisfy Anexo 20 and its specific complemento's technical annex simultaneously — these aren't optional add-ons once your transaction type requires them.
Confirm your system or PAC has ingested the latest catalog version at the start of each fiscal year — using a retired code is one of the most common causes of stamping rejections.
The Folio Fiscal (UUID) is what every downstream system references — treat it the same way you'd treat Brazil's chave de acesso or Italy's SDI reference number.
Mexico's clearance runs through private, government-authorised certifiers (PACs) rather than a single government portal — closer to France's PA model than Italy's SDI.
Since CFDI 4.0, validation includes pre-checking the receiver's RFC, name, and fiscal regime against SAT's own taxpayer registry — an internally consistent XML can still fail if the receiver's details don't match what SAT has on file.
Compare total cost of ownership at your actual monthly volume rather than headline per-stamp rates, and verify your chosen PAC genuinely supports every complemento your business needs (Carta Porte for freight, Comercio Exterior for international trade) before committing.
Modern invoicing platforms validate receiver data and catalog currency before ever reaching the PAC — automating this pre-check largely eliminates the most common rejection categories.
Choosing the wrong relationship type code on a correction is a frequent source of downstream reconciliation problems — verify which of the three applies to your specific scenario before issuing.
There's no single "register here" step — compliance runs through your RFC, your e.firma, and your chosen PAC relationship.
Your Registro Federal de Contribuyentes and registered fiscal regime are the foundation every CFDI references — make sure these are current with SAT.
These credentials are what let you sign CFDIs before submission to a PAC.
If you handle freight, confirm full Carta Porte support. If you trade internationally, confirm Comercio Exterior support. Verify the PAC's track record of implementing new complemento versions promptly.
Confirm you're using this fiscal year's catalog versions — stale codes are the single most common source of stamping rejections.
Check the receiver's RFC, name, and fiscal regime against SAT's registry proactively — this catches CFDI 4.0's stricter validation before it becomes a rejection.
Build out Carta Porte, Pagos, Comercio Exterior, or Nómina support as your transaction types require — each has its own technical annex on top of the base CFDI.
Retain both the XML CFDIs and their PAC stamps/UUIDs for the statutory retention period.
2026's reform sharpened SAT's teeth considerably — treat CFDI authenticity as a genuine compliance risk, not just a formatting exercise.