CFDI Invoicing Guide

Setting up a hotel in Mexico to issue CFDI 4.0 invoices valid for the SAT

What it is for, and who uses itMexican e-invoicing, from Vezpa

In Mexico a valid invoice is a CFDI 4.0: a file signed with the hotel's tax certificate and «stamped» by a provider authorised by the SAT (a PAC). Vezpa connects to a PAC for you: you do not need an account anywhere else.

The page opens from «Dashboard» → «Accounting» → «CFDI invoicing» and exists only for properties registered in Mexico. Manager and assistant see it.

First you set up the hotel, once; then the CFDI is issued from the booking. Foreign guests and those who do not ask for an invoice get no CFDI of their own: they go into the global invoice.

The tax detailsAs shown on the constancia de situación fiscal

  1. RFC: 12 characters for a persona moral, 13 for a persona física.
  2. Legal name: exactly as on the SAT constancia, without the company type (no «S.A. de C.V.»).
  3. Tax regime: pick yours from the list.
  4. Postal code of issue: the 5 digits of the place you issue from (lugar de expedición).
  5. Series: optional, for example H.
  6. VAT on accommodation: 16%, or 8% if the hotel is in the border zone with the estímulo fiscal.

Tap «Save». The VAT rate is the same one Vezpa uses for accommodation across the property.

The certificate (CSD)Two files and a password

The CSD (Certificado de Sello Digital) is the certificate with which the SAT authorises the hotel to issue invoices. You download it from the SAT with the Certifica application. It is not the e.firma: that one also has a .cer and a .key, but it does not issue invoices.

  1. Choose the .cer file and the .key file.
  2. Type the key password.
  3. Tap «Upload certificate».
Vezpa checks that password, file pair, RFC and expiry are right, then hands the certificate to the stamping service. It does not keep it.

A CSD lasts four years. When 30 days are left the page says so: request a new one from the SAT and upload it here.

Test or liveInvoices count only when you decide

At first the hotel is in test mode: invoices have no tax value and show you how they come out. Once details and certificate are in place, the box at the top says «Ready to issue CFDIs» and «Switch to live invoices» turns on: from then on invoices are valid for the SAT.

«Back to test» does the opposite, for example to try out a change.

Issuing an invoiceFrom the booking, in a minute

  1. Open the booking and, from the top menu, choose «Billing».
  2. Customer: type the RFC. If you have invoiced them before, name, regime, postal code and use fill in on their own.
  3. Lines: Vezpa proposes the stay, with VAT taken out of the total and the ISH (the lodging tax) as a local tax, plus the charges. You can correct descriptions and amounts or remove a line.
  4. Payment form: proposed from the recorded payments; check it.
  5. Tap «Issue CFDI».

Amounts are entered including VAT, as the guest paid them: the CFDI shows the base, VAT and ISH, and the total matches to the cent. If the customer's email is there, XML and PDF reach them right away; otherwise use «Send by email» on the invoice card.

All invoices are in «Issued invoices»: from «Dashboard» → «Accounting» or from the «CFDI invoicing» page, searchable by RFC, name, UUID or folio.

The payment method is PUE (paid in a single payment): issue once the booking is fully paid. If it is not, the page says so. For a company that pays later there is deferred payment, below.

Customers who pay later: deferred paymentInvoice now, complements at each payment

When a company pays at 30 or 60 days, the invoice is issued right away with «Deferred payment (PPD)»: the switch appears on the sheet when the booking is not fully paid. The CFDI goes out with method PPD and form 99 «Por definir».

Then there is nothing to do: every payment you record on the booking becomes on its own a payment complement (type P CFDI) linked to the invoice, with the installment number and the remaining balance. Vezpa issues them within half an hour; the SAT wants them by the 5th of the following month. The invoice card shows «Still to collect» and the complements already issued.

A payment larger than the balance only covers the balance. Payments recorded before the PPD invoice also get their complement.

The global invoiceThe general public, without thinking about it

Guests who do not ask for an invoice (and foreign guests) have no CFDI of their own, but the SAT still wants an invoice for that income: the «público en general» global invoice. Vezpa issues it on its own as soon as the period closes, with all the payments received in the period for bookings without their own CFDI.

  • Frequency: daily, fortnightly or monthly, in the tax details («Global invoice frequency»). Monthly suits most hotels; ask your contador.
  • One line per booking, with its reference; VAT and ISH are split over the payment as in the bill.
  • Each payment goes in only once. The «Global invoice» box shows the current period: how many bookings and how much.
If a guest asks for the invoice after their payments ended up in a global invoice, Vezpa does not issue it: it would declare the same income twice. That global invoice must be cancelled first; guests without their own CFDI then go into the global invoice that replaces it. Counter sales without a booking are not in the global invoice yet.

The global invoice starts from the day the hotel is ready, and again from the day you switch to live invoices: nothing retroactive.

Cancelling, correcting, refundingThree ways, from the invoice card

  • «Correct and reissue»: for a wrong detail (RFC, name, postal code, amount). The form starts from the data of the invoice; when you issue, the new CFDI is linked to the old one and the old one is cancelled on its own.
  • «Credit note»: for a refund or a discount after the invoice. Enter the amount to give back, including VAT: a linked egreso CFDI is created, and the invoice stays valid.
  • «Cancel CFDI»: when the invoice should not exist. Choose the reason: errors without replacing it, or the stay did not take place.
Above certain thresholds the SAT asks the customer to accept the cancellation. The card says so («waiting for the customer to accept») and Vezpa checks the answer on its own every two hours; if the customer rejects or does not answer, the invoice stays valid.

Closing the monthEverything your contador needs, in one file

In «Issued invoices» the «Export the month» button prepares a ZIP with the XML of every CFDI stamped in the month (invoices, credit notes, complements, global invoices) and a CSV summary: date, type, folio, UUID, customer, payment method and form, subtotal, VAT, ISH, total and status. It opens in Excel with the accents intact.

The month is the hotel's, not Italy's: a CFDI stamped at 10 pm on the last day stays in that month. Cancelled ones are included, marked Cancelado, so the contador sees them and does not count them.

If something does not add upThe symptoms, and the cause of each

  • I cannot see «Accounting». Your role is neither manager nor assistant, or the property is not registered in Mexico.
  • «The password does not open the private key». It is the password of the CSD's .key file, not the one of the SAT portal.
  • «The .cer and .key files are not from the same pair». You picked files from two different certificates, often a CSD and an e.firma.
  • «This certificate belongs to a different RFC». The CSD is not for the RFC saved in the tax details: check the RFC or the certificate.
  • «Switch to live invoices» is greyed out. The tax details or the certificate are missing: the box at the top shows which. If it says only Vezpa's activation is missing, there is nothing for you to do: we have already been notified.
  • «Generic RFCs are not invoiced one by one». XAXX010101000 and XEXX010101000 (general public and foreigners) go into the global invoice, not into a CFDI per booking.
  • The CFDI was rejected. Below the message is the SAT's text: almost always the customer's name, postal code or regime do not match their constancia. Correct them and issue again.
  • The invoice says «Uncertain outcome». The service did not answer in time: tap «Retry» on the invoice. Vezpa first checks whether it was already stamped, so no second one is created.
  • «Issue CFDI» is greyed out and there is a red notice about the global invoice. That booking's payments are already declared in a global invoice: see «The global invoice».
  • «The customer rejected the cancellation». The invoice stays valid: talk to the customer, or refund with a credit note.
  • «The stamping service is not responding». A temporary problem: try again in a few minutes, the details already saved stay.

Need help?

Contact us from the app through the support system in Configuration.