Documentation Index
Fetch the complete documentation index at: https://invopop-mintlify-gobl-payment-methods-1778254135.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Executive summary
Mexico mandates electronic invoicing through the CFDI (Comprobante Fiscal Digital por Internet) system, managed by the SAT (Servicio de Administración Tributaria). All taxpayers must issue electronic invoices in XML format. The system uses a clearance model: invoices must be validated and certified by an authorized certification provider (PAC) before they acquire fiscal effect, and SAT receives the certified document in real time. This continuous feed gives SAT visibility into every transaction in the economy, and is the basis for automated VAT reconciliation, pre-filled returns, and audit-by-data. CFDI 4.0 is the current schema version and applies to B2B, B2C, and B2G transactions equally.| Scope | B2B, B2C, B2G |
| Format | CFDI 4.0 (XML) |
| Infrastructure | PAC → SAT |
| Clearance model | Real-time stamping (timbrado) before fiscal effect |
| Agency | SAT |
| Invopop addon | SAT Mexico App |
| PAC | SW Sapien |
SAT Mexico
The SAT CFDI system
SAT is the tax agency in Mexico, CFDI is the invoice format required by SAT. It is an XML document that must be sealed with the issuer’s Certificado de Sello Digital (CSD), submitted to a PAC for validation, and stamped by SAT through that PAC. The result is a CFDI with a fiscal folio (UUID) and a SAT digital seal. Without those, the document has no fiscal effect. There are six CFDI document types:| Type | Code | Description | Invopop coverage |
|---|---|---|---|
| Ingreso | I | Standard sales invoice. | Yes |
| Egreso | E | Credit note (returns, discounts, post-sale adjustments). | Yes |
| Pago | P | Payment receipt (REP) issued when collecting against a previously-issued PPD invoice. | Q2 2026 |
| Nómina | N | Payroll receipt, one per employee per pay period. | No |
| Traslado | T | Movement of goods without a sale (carries the Carta Porte complement for transport). | No |
| Retenciones e Información de Pagos | R | Withholding declaration, uses a separate XSD schema. | No |
Invopop CFDI support
Covered by Invopop
Covered by Invopop
| Type | Description |
|---|---|
| Ingreso | Standard B2B and B2C sales invoices. |
| Egreso | Credit notes for returns, discounts, and corrections. |
| Code | Description |
|---|---|
PUE | Pago en Una sola Exhibición (payment in a single exhibition) |
PPD | Pago en Parcialidades o Diferido (payment in installments or deferred) |
FormaPago is validated against the c_FormaPago catalog.Relationships| Code | Description |
|---|---|
01 | Nota de crédito (credit note) |
02 | Nota de débito (debit note) |
03 | Devolución de mercancía (return) |
04 | Sustitución (substitution) |
05 | Traslados de mercancías (transport of goods) |
06 | Factura por traslados previos (previously-moved goods) |
07 | Anticipo (advance) |
SW Sapien
| Mode | Description |
|---|---|
| CFDI Globales | Público-en-general aggregation, with periodicity (daily, weekly, biweekly, monthly, bimonthly), month, and year extensions. |
| Third-party sales | Vendido a terceros via the seller object on individual lines. |
| White-label / B2B2B | Invopop can issue invoices on behalf of multiple suppliers under a single platform, each with their own CSD. |
| Capability | Description |
|---|---|
| PAC integration | Through SW Sapien, including supplier onboarding (CSD upload, e.firma authorization for the PAC). |
| Stamping | Timbrado and retrieval of the certified XML. |
| PDF generation | Includes QR and CFDI stamps. Configurable layout, locale, and currency/date format. |
| Sandbox environment | Pre-registered test CSDs for testing. |
Not yet covered by Invopop
Not yet covered by Invopop
| Type | Description |
|---|---|
| Pago | Payment receipt (REP / complemento de pago). Invopop can issue an invoice marked as PPD, but the subsequent payment receipts that must be emitted as money is collected are not generated by the addon. Customers issuing PPD invoices must handle REPs through other means. |
| Nómina | Payroll receipts. |
| Traslado | Standalone transfer documents. |
| Retenciones | Uses a different XSD; not part of the CFDI 4.0 base schema. |
| Complemento | Description |
|---|---|
| Carta Porte | Required for in-country freight movement. |
| Comercio Exterior 2.0 | Required for definitive exports. |
| Hidrocarburos y Petrolíferos | Mandatory for the energy sector since 2026. |
| Sector-specific complementos | Donatarias, INE, IEDU, Divisas, Detallista, Servicios Parciales de Construcción, Aerolíneas, Notarios, etc. |
| Item | Description |
|---|---|
| Addendas | Proprietary B2B XML extensions defined by individual buyers (Walmart, Liverpool, Pemex, automotive OEMs, etc.). Each is buyer-specific and not standardized by SAT. |
| Cancellation flow | Submission of cancellation requests with MotivoCancelacion codes is not currently exposed through the app. Cancellations must be handled directly with SAT or through the PAC’s portal. |
| Real-time data access | For digital platforms under the May 2026 Article 30-B obligation. Separate reporting channel, not a CFDI flow. |
| Buzón Tributario | Monitoring or interaction. |
| Lista 69-B | Screening of counterparties. |
| Contabilidad electrónica and DIOT | Periodic informational filings. |
CFDI document types
Each document type has its own schema and business rules for how it relates to other documents in accounting.Ingreso (sales invoice)
Ingreso (sales invoice)
MetodoPago attribute (PUE vs PPD).Egreso (credit note)
Egreso (credit note)
CfdiRelacionados node.Common TipoRelacion codes for Egresos:01— Nota de crédito de los documentos relacionados.02— Nota de débito de los documentos relacionados.03— Devolución de mercancía sobre facturas o traslados previos.07— CFDI por aplicación de anticipo.
Pago (payment receipt)
Pago (payment receipt)
MetodoPago = PPD. The Pago complement carries the actual payment date, currency, exchange rate, form of payment, and a list of DoctoRelacionado nodes referencing each invoice the payment applies to, with the partial amount, the running balance before and after, and the partiality number.A single REP can settle payments against multiple invoices. A single invoice paid in installments produces multiple REPs over time.Deadline: the REP must be issued no later than the fifth calendar day of the month following the one in which the payment was received (rule 2.7.1.35 of the RMF).Invopop coverage: Invopop allows issuing invoices marked as PPD, but does not currently generate the subsequent payment receipts. Customers issuing PPD invoices through Invopop must produce REPs through another mechanism. We are aiming to support complementos de pago in Q2 2026.Nómina (payroll)
Nómina (payroll)
Traslado (goods movement)
Traslado (goods movement)
SubTotal and Total must be zero. In nearly all real-world cases, a Traslado must carry the Carta Porte complement describing the route, transport mode, vehicle, operator, and goods.Retenciones e Información de Pagos (withholdings) — not supported
Retenciones e Información de Pagos (withholdings) — not supported
CFDI complement types
Extra blocks of information that attach to a CFDI when the operation falls under a specific sector or activity. When a complement is required, the invoice cannot be stamped without it.Carta Porte
Carta Porte
Comercio Exterior 2.0
Comercio Exterior 2.0
Hidrocarburos y Petrolíferos v1.0 (Revision A)
Hidrocarburos y Petrolíferos v1.0 (Revision A)
c_TipoPermiso catalog. Revision A (April 2026) added new permit types for commercialization activities along with their specific format structures and validation regular expressions.Donatarias
Donatarias
INE
INE
IEDU
IEDU
Divisas
Divisas
Pago
Pago
DoctoRelacionado nodes — one per invoice the payment applies to — with the original invoice’s UUID, the partial amount being settled, the partiality number, and the running balance before and after.A single Pago complement can settle multiple invoices, and a single PPD invoice can accumulate multiple Pago complements over time as installments are paid.Nómina
Nómina
CFDI payment types
Mexican invoices declare upfront whether the customer is paying at issuance or paying later. The choice determines whether a follow-up payment receipt (REP) must be issued, and it changes when income tax and VAT are recognized.PUE — Pago en Una sola Exhibición (pay in full)
PUE — Pago en Una sola Exhibición (pay in full)
- Cancel the original PUE invoice (motivo 01, with substitution).
- Issue a new CFDI as PPD with
FormaPago = 99, related to the original viaTipoRelacion = 04(Sustitución de los CFDI previos). - Issue REPs as payments are subsequently received.
PPD — Pago en Parcialidades o Diferido (pay in installments)
PPD — Pago en Parcialidades o Diferido (pay in installments)
FormaPago = 99 (Por definir) on the original document, since the actual form of payment isn’t yet known. For each payment received afterward, the issuer must produce a CFDI of type P (REP) referencing the original UUID, with the actual FormaPago of that specific payment, the partial amount, and the running balance.For tax effects, income is recognized as REPs are issued, on a cash basis. This is the mechanism that makes ISR and IVA recognition follow the actual cash event rather than the invoice issuance date — particularly relevant for RESICO contributors, whose entire tax base is computed from emitted CFDIs and REPs.Each REP must be issued by the fifth calendar day of the month following the one in which payment was received (rule 2.7.1.35 RMF). Missing the deadline doesn’t invalidate the invoice but prevents the customer from deducting in the correct period.Invopop supports issuing the PPD invoice itself, but does not generate the subsequent REPs.Party identification and reporting
RFCs and tax identification
RFCs and tax identification
PEJL850315ABC for Juan Pérez López born 15 March 1985.Persona Moral (12 characters)Issued to companies, associations, and other legal entities. Structure: 3 letters from the entity name + 6 digits for date of constitution (YYMMDD) + 3-character homoclave.The shorter length is the immediate visual cue distinguishing morales from físicas.Generic RFCsPredefined codes used when the receiver does not have a real RFC.XAXX010101000— generic national. Used for público en general (Mexican consumers who don’t request invoices) and for nationals not yet registered with SAT.XEXX010101000— generic foreign. Used for receivers without Mexican fiscal residence.
RegimenFiscalReceptormust be616(Sin obligaciones fiscales).UsoCFDImust beS01(Sin efectos fiscales). The CFDI is not deductible.DomicilioFiscalReceptormust equalLugarExpedicion.- For
XEXX010101000, the receiver’s country code (perc_Pais) and foreign tax ID should be supplied where available.
Postal codes
Postal codes
c_CodigoPostal catalog (Anexo 20) and against the receiver’s CIF.LugarExpedicion (issuer)Postal code of the physical location where the document is issued (mx-cfdi-issue-place in GOBL). If invoiced from a branch, use the branch’s postal code regardless of where the billing system is hosted. Drives the document’s time zone (Mexico has eight) and the fiscal stimulus zone flag (border-zone IVA reduction).DomicilioFiscalReceptor (receiver)Postal code of the receiver’s tax domicile. For real RFCs, this must match what SAT has on file. A mismatch causes the PAC to reject stamping.For generic RFCs (XAXX010101000, XEXX010101000), this field must equal LugarExpedicion.Catalog gapsSAT’s c_CodigoPostal catalog is updated periodically (multiple times in 2026 alone) and does not always contain every postal code in active use. When the receiver’s postal code is not in the catalog, SAT’s filling guide instructs the issuer to register the closest catalog code from the place of issuance. This is one of the most common causes of stamping failures during new customer onboarding.Régimen fiscal (fiscal regime)
Régimen fiscal (fiscal regime)
RegimenFiscal from the c_RegimenFiscal catalog. The catalog distinguishes regimes available to parties. The receiver’s régimen also constrains which UsoCFDI codes are valid for that invoice — not all combinations are allowed.The full catalog (all supported by Invopop):| Code | Description |
|---|---|
601 | General de Ley Personas Morales |
603 | Personas Morales con Fines no Lucrativos |
605 | Sueldos y Salarios e Ingresos Asimilados a Salarios |
606 | Arrendamiento |
607 | Régimen de Enajenación o Adquisición de Bienes |
608 | Demás ingresos |
610 | Residentes en el Extranjero sin Establecimiento Permanente en México |
611 | Ingresos por Dividendos (socios y accionistas) |
612 | Personas Físicas con Actividades Empresariales y Profesionales |
614 | Ingresos por intereses |
615 | Régimen de los ingresos por obtención de premios |
616 | Sin obligaciones fiscales (generic RFCs only) |
620 | Sociedades Cooperativas de Producción que optan por diferir sus ingresos |
621 | Incorporación Fiscal (legacy, being phased out) |
622 | Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras |
623 | Opcional para Grupos de Sociedades |
624 | Coordinados |
625 | Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas |
626 | Régimen Simplificado de Confianza (RESICO) |
Customer invoice purpose codes
Customer invoice purpose codes
UsoCFDI field declares the receiver’s intended fiscal treatment of the document. The most common codes:| Code | Description |
|---|---|
G01 | Adquisición de mercancías |
G02 | Devoluciones, descuentos o bonificaciones |
G03 | Gastos en general |
I01–I08 | Construcciones, mobiliario, transporte, cómputo, telecomunicaciones, otra maquinaria |
D01–D10 | Personal deductions (medical, funeral, donations, mortgage interest, voluntary retirement, schooling). Available only to personas físicas |
CP01 | Pagos. Used on REPs |
CN01 | Nómina. Used on payroll CFDIs |
S01 | Sin efectos fiscales. Used for non-deductible documents and globales |
UsoCFDI must be allowed for the receiver’s RegimenFiscal. Picking the wrong combination is one of the most frequent stamping errors.B2C aggregation reporting
Retail-style operations that don’t issue per-transaction invoices to consumers must issue a periodic factura global aggregating all operations with público en general.CFDI Globales
CFDI Globales
mx-cfdi-v4 addon supports this via the global invoice tag, with extensions for:| Field | Extension | Values |
|---|---|---|
| Period | mx-cfdi-global-period | daily (01), weekly (02), biweekly (03), monthly (04), bimonthly (05) |
| Month | mx-cfdi-global-month | individual months 01–12 or paired months 13–18 |
| Year | mx-cfdi-global-year | 4-digit year |
XAXX010101000 with régimen 616 and UsoCFDI S01. Purchases under MXN 100 are not required to be invoiced individually but must still be included in the global. In practice, many operations issue globals as the simpler path.Cancellations
The issuer submits a cancellation request through SAT or a PAC, and the receiver has three business days to accept or reject the cancellation. If the receiver takes no action, the cancellation is accepted.Cancellation rejection/acceptance
Cancellation rejection/acceptance
- CFDIs of type Egreso (E), Traslado (T), Retenciones (R), and Nómina (N).
- CFDIs cancelled within one business day of issuance.
- Operations with público en general (RFC
XAXX010101000). - CFDIs received by foreign residents.
- CFDIs with total value up to MXN 1,000 (with carve-outs for Pago, Hidrocarburos, and Carta Porte for fuels).
- CFDIs issued by financial system members.
| Code | Description |
|---|---|
01 | Comprobante emitido con errores con relación. The original is being replaced by a substitute CFDI; the substitute’s UUID must be supplied. |
02 | Comprobante emitido con errores sin relación. No replacement. |
03 | No se llevó a cabo la operación. The transaction did not occur. |
04 | Operación nominativa relacionada en una factura global. The operation was included in a previous global invoice; the global’s UUID must be supplied. |
Substitution flow (motivo 01)
Substitution flow (motivo 01)
02(no replacement) and issuing a new invoice- Issue the new CFDI with
TipoRelacion = 04(Sustitución de los CFDI previos), referencing the UUID of the document being replaced. - Submit the cancellation request for the original, motivo 01, referencing the new UUID.
- The PAC validates whether receiver acceptance is required and routes accordingly.
Annual cancellation deadline
Annual cancellation deadline
- Personas morales: 31 March of the following year.
- Personas físicas: 30 April of the following year.
Compliance
Legally required invoice content
Legally required invoice content
- RFC, name, and régimen fiscal of the issuer.
- RFC, name, régimen fiscal, and postal code of the receiver.
- Folio fiscal (UUID) and SAT digital seal.
- Issuer’s CSD digital seal and the serial number of the certificate used.
- Place and date of issuance (
LugarExpedicion,Fecha). - UsoCFDI declared by the receiver.
- Per-line: quantity, unit of measure (from
c_ClaveUnidad), description, product/service code (fromc_ClaveProdServ), unit value, taxes itemised by rate, withholdings where applicable. MetodoPago(PUE/PPD) andFormaPagofromc_FormaPago.MonedaandTipoCambiofor non-MXN invoices.- Pedimento number and date for first-hand sales of imported goods.
- Certification date, time, and SAT certificate serial.
- QR code as defined in section I.D of Anexo 20.
- Serial numbers of the issuer’s and SAT’s CSDs.
- The legend: “Este documento es una representación impresa de un CFDI.”
- Issuance and certification timestamps.
- Original string (cadena original) of the SAT certification complement.
Archival period
Archival period
- The period starts from the date the relevant tax return was filed, or should have been.
- For records covering a longer period, the five years run from the last fiscal year covered.
- If records are part of an active legal case, the period starts when the final decision is issued.
Proveedor Autorizado de Certificación (PAC)
Proveedor Autorizado de Certificación (PAC)
Buzón Tributario
Buzón Tributario
Lista 69-B
Lista 69-B
Real-time data access (May 2026)
Real-time data access (May 2026)
FAQ
Compliance questionsWhat does it mean that Mexico has a clearance model for invoicing?
What does it mean that Mexico has a clearance model for invoicing?
Can I require a customer's CIF before invoicing them?
Can I require a customer's CIF before invoicing them?
Why can't I cancel an invoice my customer hasn't acknowledged?
Why can't I cancel an invoice my customer hasn't acknowledged?
Why does PPD vs PUE matter so much?
Why does PPD vs PUE matter so much?
What's the difference between a complemento and an addenda?
What's the difference between a complemento and an addenda?
<cfdi:Addenda> node of the CFDI. SAT does not validate addenda content, but the buyer’s ERP rejects payment without it. Each large enterprise customer typically defines its own addenda spec; there is no central catalog. Addendas are not currently supported by Invopop.My RESICO customer wants S01 — is that right?
My RESICO customer wants S01 — is that right?
UsoCFDI = S01. The invoice is still valid — it just has no deductible effect for them. RESICO contributors issuing invoices follow normal rules and their tax base is computed automatically from their issued CFDIs and REPs.