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

# Mexico FAQ

> Frequently asked questions about invoicing compliance in Mexico

### Compliance questions

<AccordionGroup>
  <Accordion title="When did mandatory CFDI invoicing start in Mexico?">
    CFDI 1.0 became mandatory for large taxpayers in 2011 and was extended to all taxpayers in 2014. CFDI 4.0 (the current version) replaced 3.3 on 1 April 2023. There is no entity below the mandate threshold — any taxpayer issuing an invoice must do so as a CFDI.
  </Accordion>

  <Accordion title="Who can act as a supplier in Mexico?">
    Any taxpayer registered with SAT — Persona Física (13-char RFC) or Persona Moral (12-char RFC). The supplier must have an active CSD (Certificado de Sello Digital) and a fiscal regime (`RegimenFiscal`) recorded in their CIF.
  </Accordion>

  <Accordion title="What are the legal obligations for receiving invoices in Mexico?">
    Recipients must verify each CFDI's UUID through SAT's public consultation, retain the XML for 5 years (Article 30 CFF), and accept or reject cancellation requests within 3 business days when applicable.
  </Accordion>

  <Accordion title="What periodic reporting obligations exist in Mexico?">
    Monthly provisional ISR and IVA payments (DyP) plus the annual ISR return. RESICO contributors have a fully automated monthly tax base computed from issued CFDIs and REPs. Stamping replaces invoice-level reporting.
  </Accordion>

  <Accordion title="Can I require a customer's CIF before invoicing them?">
    No. Conditioning invoicing on the receiver providing their CIF document is unlawful under Article 83 § IX of the CFF and carries fines. The data on the CIF (RFC, name, régimen, postal code) is required, but the issuer must be willing to accept those four pieces of information by other means. In practice, most B2B workflows still ask for the CIF, but it cannot be made a hard precondition.
  </Accordion>

  <Accordion title="Why can't I cancel an invoice my customer hasn't acknowledged?">
    Cancellation in Mexico is bilateral by default. The issuer submits a request, the receiver has three business days to accept or reject, and rejection keeps the CFDI valid. Issuers cannot unilaterally void an invoice that requires acceptance. The exceptions are listed above (small amounts, certain document types, same-day cancellation, público en general). The practical recommendation is to coordinate with the customer before submitting any cancellation request, especially for high-value B2B invoices.
  </Accordion>

  <Accordion title="Why does PPD vs PUE matter so much?">
    Beyond the procedural difference, the two methods determine *when* income is recognized for ISR and IVA purposes. PUE income is recognized at issuance; PPD income is recognized as REPs are issued. Choosing the wrong method shifts tax liability into the wrong period and creates discrepancies during SAT's automated reconciliation. RESICO contributors are particularly exposed because their entire monthly tax base is computed from CFDIs and REPs.
  </Accordion>

  <Accordion title="What's the difference between a complemento and an addenda?">
    A complemento is a SAT-defined XML extension with a published XSD, sealed inside the digital signature, and validated at stamping. An addenda is a non-fiscal XML block defined unilaterally by a private buyer (Walmart, Liverpool, Pemex, automotive OEMs, etc.) and inserted into the `<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.
  </Accordion>

  <Accordion title="Are there special supplier obligations under SAT/CFDI?">
    The supplier must have an active CSD (not a FIEL — FIEL is for SAT login, CSD is for invoicing), be in good standing on Lista 69-B (not classified as EFOS), and maintain valid postal codes matching their CIF.
  </Accordion>
</AccordionGroup>

### Invoicing questions

<AccordionGroup>
  <Accordion title="Do I have to issue B2C invoices in Mexico?">
    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.
  </Accordion>

  <Accordion title="Does Invopop support the white label (B2B2B) model in Mexico?">
    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](/guides/white-label).
  </Accordion>

  <Accordion title="Can I issue a PPD invoice through Invopop?">
    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.
  </Accordion>

  <Accordion title="My customer paid late and now I have to cancel and re-issue?">
    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.
  </Accordion>

  <Accordion title="What happens if I miss the REP deadline?">
    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.
  </Accordion>

  <Accordion title="How do I configure my workspace for Mexican invoicing?">
    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.
  </Accordion>

  <Accordion title="Where can I find the mapping of GOBL fields to CFDI?">
    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](https://github.com/invopop/gobl.cfdi).

    For further details on how GOBL prepares data for conversion, see the [Mexico Tax Regime](https://github.com/invopop/gobl/blob/main/regimes/mx/README.md).
  </Accordion>

  <Accordion title="The PAC keeps rejecting my invoice with a postal code error">
    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.
  </Accordion>

  <Accordion title="How do I issue invoices with the 8% tax rate in border zones?">
    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.
  </Accordion>

  <Accordion title="What does the CFDI40999 error mean and how do I resolve it?">
    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](https://www.sat.gob.mx/minisitio/EstimulosFiscalesFronteraNorteSur/) for more information.
    2. **Issue place postal code**: The [`mx-cfdi-issue-place`](https://docs.gobl.org/addons/mx-cfdi-v4#place-of-issue) 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.
  </Accordion>

  <Accordion title="Why does my customer's UsoCFDI keep getting rejected?">
    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.
  </Accordion>

  <Accordion title="How does Invopop handle time zones for Mexican invoices?">
    By default, Invopop uses Mexico City's time zone (UTC-6) when automatically setting the [`issue_date`](https://docs.gobl.org/draft-0/bill/invoice#issue-date) and [`issue_time`](https://docs.gobl.org/draft-0/bill/invoice#issue-time) fields. However, the SAT validates these fields based on the time zone of the postal code specified in [`mx-cfdi-issue-place`](https://docs.gobl.org/addons/mx-cfdi-v4#place-of-issue).

    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.
  </Accordion>

  <Accordion title="My foreign-currency invoice is failing validation">
    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.
  </Accordion>

  <Accordion title="Where do I find Mexico-specific GOBL documentation?">
    See the [Mexico tax regime in GOBL](https://docs.gobl.org/regimes/mx) for tax categories, RFC structure, and CFDI extensions. The [`mx-cfdi-v4`](https://docs.gobl.org/addons/mx-cfdi-v4) addon documents required fields including UsoCFDI, RegimenFiscal, and place-of-issue.
  </Accordion>
</AccordionGroup>

### Registering supplier questions

<AccordionGroup>
  <Accordion title="Which PAC (Proveedor Autorizado de Certificación) does Invopop use?">
    Invopop uses [SW Sapien](https://sw.com.mx), an Authorised Certification Provider (PAC), to sign and stamp CFDI documents for the Mexican tax authority.
  </Accordion>

  <Accordion title="What happens if my CSD certificate is revoked?">
    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.
  </Accordion>

  <Accordion title="How do I onboard a new supplier in Mexico?">
    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.
  </Accordion>

  <Accordion title="What certificates does SAT/CFDI require to authenticate a supplier?">
    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.
  </Accordion>

  <Accordion title="How are supplier credentials stored in Invopop for Mexico?">
    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.
  </Accordion>
</AccordionGroup>

***

<MexicoResources />

<Card title="Participate in our community" icon="forumbee" href="https://community.invopop.com" arrow="true" horizontal>
  Ask and answer questions about Mexico's regulation →
</Card>
