Introduction
A CFDI stamped by the SAT can only be withdrawn by requesting its cancellation. The request carries a reason (motivo), and for most B2B invoices and payment receipts the receiver must accept it within three business days, otherwise it is accepted automatically. See Cancellations in Mexico for the rules. In this guide you’ll learn how to cancel invoices and payment receipts (comprobantes de pago) issued with the SAT Mexico app. A cancellation is requested with a GOBL status document that references the CFDI to cancel.Prerequisites
- A document issued through Invopop: the CFDI must have been stamped by the SAT Mexico app, following the CFDI issuing guide, and its
sat-uuidstamp is needed to reference it. - The cancellation reason: one of the four SAT motivos listed below.
- For motivo 01: the replacement CFDI, already issued with the original in its
precedinglist and relation type04(mx-cfdi-rel-type).
Setup
All of the following steps must be carried out from the Invopop Console.Set up the SAT cancel CFDI workflow
SAT cancel CFDI workflow
- Workflow
- Code
How it works
Sign envelope
Cancel CFDI at SAT
cancel-acuse.xml. The step then waits for the outcome, checking every minute, or every four hours while the receiver has to accept.Set state
completed. If the request fails or the receiver rejects it, the rescue step sets it to error.Cancel a document
Create a status document of typeupdate with one rejected line referencing the CFDI to cancel, then run the cancel workflow on it.
rejected line must include:
doc.codewith the document’s code, and thesat-uuidstamp of the CFDI.extwith the reason inmx-cfdi-cancel-reason.
01, add a second line with key issued that references the replacement CFDI and its sat-uuid stamp. Each status document cancels a single CFDI.
Cancellation without replacement (motivo 02)
Cancellation without replacement (motivo 02)
Cancellation with substitution (motivo 01)
Cancellation with substitution (motivo 01)
Outcomes
The cancel step ends with one of these results, and the error codes can be used to route the workflow:FAQ
Do I have to issue B2C invoices in Mexico?
Do I have to issue B2C invoices in Mexico?
Does Invopop support the white label (B2B2B) model in Mexico?
Does Invopop support the white label (B2B2B) model in Mexico?
Can I issue a PPD invoice through Invopop?
Can I issue a PPD invoice through Invopop?
mx-cfdi-v4 addon supports both PUE and PPD on the original invoice, and Invopop also issues the subsequent payment receipts (REPs / Pago / comprobante de pago) that must be emitted as payments are collected. Model each receipt as a GOBL bill.Payment referencing the PPD invoices being settled and run it through the SAT issue payment workflow. See the payment receipt example in the issuing guide.My customer paid late and now I have to cancel and re-issue?
My customer paid late and now I have to cancel and re-issue?
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.What happens if I miss the REP deadline?
What happens if I miss the REP deadline?
How do I configure my workspace for Mexican invoicing?
How do I configure my workspace for Mexican invoicing?
mx-cfdi-issue-place. Run invoices through the Issue CFDI workflow.Where can I find the mapping of GOBL fields to CFDI?
Where can I find the mapping of GOBL fields to CFDI?
The PAC keeps rejecting my invoice with a postal code error
The PAC keeps rejecting my invoice with a postal code error
- The postal code is real but not yet in
c_CodigoPostal. Use the closest catalog code from the place of issuance. - The receiver is
XAXX010101000orXEXX010101000andDomicilioFiscalReceptordiffers fromLugarExpedicion. They must be equal for generic RFCs. - The branch issuing the document is configured with the matriz’s postal code instead of its own.
How do I issue invoices with the 8% tax rate in border zones?
How do I issue invoices with the 8% tax rate in border zones?
- The supplier’s RFC must be enabled by the SAT to invoice with the reduced rate in border zones.
- Both the
mx-cfdi-issue-placefield and the customer’s postal code (when included) must correspond to border zones.
What does the CFDI40999 error mean and how do I resolve it?
What does the CFDI40999 error mean and how do I resolve it?
- 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.
- Issue place postal code: The
mx-cfdi-issue-placefield must contain a postal code from a municipality within a border zone. - Tax rate: Ensure you’re applying the correct percentage (typically 8%) for the border zone.
I'm getting the error 'Access denied, supplier XXX is not registered in this workspace'. What should I do?
I'm getting the error 'Access denied, supplier XXX is not registered in this workspace'. What should I do?
Why does my customer's UsoCFDI keep getting rejected?
Why does my customer's UsoCFDI keep getting rejected?
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.How does Invopop handle time zones for Mexican invoices?
How does Invopop handle time zones for Mexican invoices?
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.My foreign-currency invoice is failing validation
My foreign-currency invoice is failing validation
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
TipoCambioon an MXN invoice (it must be 1 or absent). - Rounding inconsistently between line totals and document totals — Anexo 20 has specific rounding rules.
Where do I find Mexico-specific GOBL documentation?
Where do I find Mexico-specific GOBL documentation?
mx-cfdi-v4 addon documents required fields including UsoCFDI, RegimenFiscal, and place-of-issue.🇲🇽 Invopop resources for Mexico
🇲🇽 Invopop resources for Mexico