
DIOT in Mexico: what it is and how to file it
May 24, 2026
The DIOT (Mexico's monthly informative return on transactions with suppliers and the VAT they charged, Declaración Informativa de Operaciones con Terceros) is the return people most often file late, wrong, or somehow both. The concept is simple enough. Most people get it wrong because they fill it in by hand, when the data already lives in the CFDIs (Mexico's electronic invoices) they received, along with the IVA (Mexico's value-added tax, VAT) each supplier charged. In 2025 the SAT (Mexico's tax authority, Servicio de Administración Tributaria) retired the old desktop application (the A-29 form with its .dec file), and the DIOT in Mexico is now filed only on a new web platform.
Maybe you run finance or systems for the Mexican subsidiary of a foreign company, or you're the foreign supplier that shows up on a client's DIOT. This guide covers how to build the return, how to file it on the new platform, and why your IVA credit (acreditamiento, offsetting the VAT you paid against the VAT you charge) doesn't match your books. All from the technical side, not the accounting side.
What is the DIOT in Mexico
The DIOT is a monthly return where you report to the SAT the transactions you had with your suppliers: how much you paid them, how much IVA they charged you, the withholding (retención) you applied, and what type of transaction it was. The obligation comes from Article 32, Section VIII of the Value Added Tax Law (LIVA, Ley del Impuesto al Valor Agregado).
In practice, the DIOT mirrors the CFDIs you received. Every invoice a supplier issues to you has an Impuestos > Traslados node with the IVA it charged you, and that's the IVA you report in the DIOT. If the CFDI carries withholdings (Impuestos > Retenciones), the IVA withheld goes in too. Everything in the return comes from data that already exists; the DIOT consolidates it. Foreign suppliers are the exception: they don't issue CFDIs, so their rows come from your own records.
If the DIOT is one of your obligations, file it even in a month with no transactions. The platform has a sin operaciones (no transactions) option for that, and plenty of people forget it because "nothing happened." You still get an acknowledgment of receipt, and you should keep it.
Who must file the DIOT
Every individual (persona física) or legal entity (persona moral) that must pay IVA files the DIOT, unless a rule relieves it. That includes:
- Legal entities in the general tax regime (régimen fiscal, the SAT category a taxpayer is registered under, such as
601or626), whose key is601. The Mexican subsidiary of a foreign company is a typical example. - Individuals with business and professional activities (
612) that carry out acts subject to IVA. - Landlords who charge IVA on real estate rent.
The 2026 RMF (Resolución Miscelánea Fiscal, the SAT's annual tax rules) relieves two groups from filing it. One is taxpayers in RESICO (Régimen Simplificado de Confianza, Mexico's simplified tax regime for small taxpayers), whether individuals or legal entities. The other is individuals with business, professional, digital platform, or rental income whose total income in the previous year didn't exceed $4,000,000 MXN, or who start activities in the year and expect to stay under that amount.
People who only carry out exempt activities are out too (for example, certain medical services, bank interest for individuals, or the sale of a home). If your activities don't trigger IVA, there's no DIOT.
DIOT filing deadline
You file the DIOT during the month after the one the transactions belong to (Rule 4.5.1 of the 2026 RMF). January's DIOT is due by the last day of February, February's by the last day of March, and so on.
There's no annual period. It's month by month, and the only semiannual option is for agricultural, livestock, forestry, and fishing companies that file their IVA returns semiannually. Don't wait for a reminder from the SAT. The infraction for not filing it is in Article 81, Section XXVI of the Código Fiscal de la Federación (Mexico's Federal Tax Code), and the consequences range from a fine for each omitted return to a negative Opinión de Cumplimiento (the SAT's opinion on whether a taxpayer is current with its tax obligations).
The SAT's new DIOT platform (2025-2026)
Until July 2025, you could generate the DIOT in a desktop application that produced a .dec file and upload it to the SAT portal. That flow is over. The SAT launched its web platform in February 2025, and since August 1, 2025, it's the only way to file the DIOT, including late returns for earlier years. The platform isn't pre-filled from your CFDIs. You capture each supplier row in a form, or you upload a TXT file with all the rows.
Two rules shape what goes in each row, and almost nobody explains them:
- Creditable IVA needs a valid CFDI. If a supplier invoiced you without stamping the CFDI (stamping: the certification by a SAT-authorized provider that makes a CFDI valid), or canceled it, that transaction has no valid CFDI behind it, so you can't credit its IVA as it stands. Review it by hand before you report it.
- Creditable IVA depends on how and when you pay. Two CFDI fields matter: the form of payment (how the customer paid: cash, bank transfer, card; the
FormaPagokey) and the payment method (whether the CFDI is paid in full when issued,PUE, or later or in installments,PPD; not how the customer pays). A PPD (paid in installments or later, Pago en parcialidades o diferido) invoice doesn't generate creditable IVA until you pay it, and the payment complement (the complement that records each payment received against aPPDinvoice; the typePCFDI that carries it is also called REP) documents that payment. The DIOT reports paid amounts, so if your accounting isn't up to date with payment complements, the DIOT won't add up.
That second point is behind many of the mismatches accountants see today.
How to build the DIOT from your CFDIs
The platform doesn't build the return for you, so you need to know what information goes in each row and where it comes from. When something doesn't add up, that's where you go to check.
Identify every CFDI you received in the month#
Download every CFDI your RFC (Mexico's taxpayer ID, Registro Federal de Contribuyentes) received in the month. The SAT's bulk download (the SAT service that delivers the CFDIs a taxpayer issued and received) gets them in batches. Filter by income invoices (type I, the regular sales invoice) and credit notes (an Egreso CFDI, type E) that third parties issued to your RFC.
A CFDI the supplier canceled doesn't belong in the DIOT. Before you process it, verify each CFDI with the SAT's status service to confirm it's active (vigente: not canceled with the SAT); the service returns the status Vigente. If you build the DIOT from your own accounting, your system has to apply this filter.
Each DIOT row needs a supplier type and a transaction type (see the table below). The right classification isn't in the CFDI; it depends on the supplier's line of business and the nature of the expense. This is where most DIOTs go wrong: people assume every invoice is 85 (other) when many are 02, 03, or 06.
Extract the IVA amounts from the XML#
From the cfdi:Impuestos > cfdi:Traslados > cfdi:Traslado node you read the base, the rate, and the amount. The relevant rates are 0.16 (general), 0.08 (border region), 0.00 (zero rate), and exempt. Each one goes in its own column, and the 8% rate splits into northern and southern border region columns. The Mexico VAT guide explains when each rate applies.
Apply the IVA credit rule by payment method#
If the CFDI's MetodoPago is PUE (paid in full when the CFDI is issued, Pago en una sola exhibición), the invoice was paid when it was issued, so the IVA is creditable in that month. If it's PPD, the IVA is creditable only in the month you pay it, and the payment complement is what documents that payment. Ignoring this rule is one of the most common causes of mismatches between your books and the DIOT.
If you withheld tax from the supplier (typically a legal entity paying an individual for professional services or rent), the IVA withheld goes in its own column. The IVA withholding is two-thirds of the IVA charged in both cases (two-thirds of 16% = 10.67%). The ISR (Mexico's income tax, Impuesto Sobre la Renta) withholding is usually 10% in both cases (1.25% when the individual is in RESICO), but the DIOT has no ISR column: it only reports IVA.
The DIOT requires the RFC with the correct homoclave. The SAT checks that each domestic supplier's RFC exists in its records and rejects rows with a malformed RFC. If you received an invoice with a misspelled RFC, the problem is the supplier's. Ask for a correction before you file.
The DIOT technical flow
DIOT transaction types
The SAT's format for 2025 onward pairs each supplier type with its own transaction types. This table summarizes when each one applies.
| Supplier type | Transaction type | When to use it |
|---|---|---|
04 Proveedor Nacional (domestic supplier) | 02 Enajenación de bienes (sale of goods) | Purchases of goods and merchandise |
04 Proveedor Nacional (domestic supplier) | 03 Prestación de Servicios Profesionales (professional services) | Fees, consulting, technical services, legal or accounting advice, medical services invoiced with IVA |
04 Proveedor Nacional (domestic supplier) | 06 Uso o goce temporal de bienes (temporary use of goods) | Rent of offices, commercial premises, warehouses, and land. The code covers the temporary use of any goods, so equipment and vehicle leases go here too |
04 Proveedor Nacional (domestic supplier) | 08 Importación por transferencia virtual (import by virtual transfer) | Goods imported through a virtual transfer |
04 Proveedor Nacional (domestic supplier) | 85 Otros (other) | Non-professional services, energy, telephone, software, advertising, transport of goods |
05 Proveedor Extranjero (foreign supplier) | 02 sale of goods, 03 professional services, 07 Importación de bienes o servicios (import of goods or services) | Payments to a supplier resident abroad |
15 Proveedor Global (global supplier) | 87 Operaciones globales (global transactions) | Suppliers you don't list one by one: up to 10% of the month's payments and no more than $50,000 MXN per supplier (Rule 4.5.2 of the 2026 RMF) |
The rule of thumb: if you're torn between 03 and 85, ask whether the supplier issued the invoice practicing a regulated profession (lawyer, accountant, doctor, engineer, and so on). If so, it's 03. If it's an operational service, it's 85. If it's a tangible good, it's 02.
DIOT and foreign suppliers
Payments to suppliers resident abroad go in the DIOT too, under supplier type 05. The RFC is optional for these rows, because a foreign supplier usually doesn't have one. What you must report is the supplier's foreign tax ID, its name, and its country or jurisdiction of tax residence, taken from the SAT's country catalog. The format also has its own columns for imports at 16%, split into goods cleared through customs and intangibles and services, plus exempt imports.
These rows almost never show up in your CFDI data, because a foreign supplier doesn't issue a Mexican CFDI. Your system builds them from the supplier's invoice and your payment records.
If you're the foreign supplier, your Mexican client reports you with your foreign tax ID, your name, and your country of tax residence. Make sure it has all three right.
Common DIOT filing errors
I've seen the same mistakes so many times that I gave them names.
The PPD invoice without a payment complement
A PPD invoice for $100,000 MXN plus IVA arrives in January. The accountant puts it in January's DIOT because "it's January." Nobody has paid it yet, so the SAT has no payment complement for it. Result: a mismatch between what you declared and what the SAT sees.
The rule is strict: with CFDI 4.0 and the PPD payment method, the IVA is creditable only in the period you pay it, and the payment complement is the proof of that payment. No payment, no creditable IVA, so it stays out of the DIOT.
Classifying everything as "85 other"
Code 85 is a handy catch-all, and a dangerous one. Professional services under code 03 have to be separated because they're subject to withholding. A wrong code also makes your DIOT harder to defend if the SAT compares it with the CFDIs and withholdings it already holds.
A generic RFC without a reason
Reporting transactions against the generic RFC XAXX010101000 or XEXX010101000 is reserved for specific cases (the general public, or foreign residents without an RFC). In the DIOT, XAXX010101000 goes on the global supplier row, and a foreign supplier goes in with its foreign tax ID. If an invoice from a Mexican supplier arrives with a generic RFC, something went wrong when it was issued. It isn't a normal case.
Forgetting invoices from RESICO suppliers
Suppliers in RESICO issue CFDIs with the same structure and charge IVA. Those transactions go in the DIOT like any other. The confusion comes from the regime itself: RESICO simplifies the supplier's taxes, and even relieves the supplier from filing its own DIOT. Your obligation as the recipient to report the transaction stays the same.
Not filing the DIOT "sin operaciones"
If you had no suppliers with IVA in a month and the DIOT is still one of your obligations, file it marked sin operaciones. Skipping it because "there's nothing to declare" leaves that period unfiled, and an unfiled DIOT can turn your Opinión de Cumplimiento negative.
How to file the DIOT on the new platform
Sign in with your e.firma or password#
Sign in to the SAT portal with your RFC and SAT password or with your e.firma (the SAT advanced electronic signature that identifies a taxpayer, formerly FIEL). Legal entities need the e.firma to submit the return. You reach the DIOT platform from the Declaraciones (Returns) section of the SAT portal. It isn't a separate system.
Choose the month and year to declare, and whether you file with data or sin operaciones. You can file the current period and earlier ones, but not future periods.
Capture the rows or upload the TXT file#
In the form, you add one row per supplier and transaction type: supplier type, RFC or foreign tax ID, paid amounts by rate and region, creditable IVA, and IVA withheld. Manual capture takes up to 30 rows; with more suppliers, upload a TXT file instead: one row per line, fields separated by pipes (|), saved as UTF-8, and amounts in whole pesos. If the file has errors, the platform gives you an error file with the line, the field, and the error to fix.
Check the transaction type of each row. The platform doesn't know the nature of the expense, so that classification is on you. This is also where you add transactions with no Mexican CFDI behind them, such as payments to foreign residents.
Submit and download the acknowledgment#
You confirm and sign the submission (legal entities sign with their e.firma). The platform generates the acknowledgment of receipt right away. Keep it: that acknowledgment is your proof of compliance. If you need it again, you can reprint it from the same platform.
How to automate the DIOT with an API
The DIOT bottleneck is building it: downloading thousands of CFDIs a month, validating them, classifying them by transaction type, reconciling PPD invoices against payment complements, and resolving mismatches. For companies with hundreds of suppliers, that manual work doesn't scale.
Fiscalapi exposes endpoints for automated bulk download of issued and received CFDIs, status validation with the SAT, and reading each XML, tax nodes included. With that data you can build the DIOT summary by supplier before you sign in to the SAT platform, then capture it or turn it into the TXT file the platform accepts. The Fiscalapi documentation covers the download and validation flows, and the SDKs return the XML data (issuer, payment method, and each tax with its base, rate, and amount) that you map to the DIOT columns.
Frequently asked questions
What's next
The new DIOT platform is one more step toward the pre-filled returns the SAT already offers for provisional and definitive ISR and IVA payments. The DIOT itself isn't pre-filled, but the direction is clear: more detail per supplier and more reconciliation against data that's already in the CFDIs. The upside is fewer arithmetic errors. The hard part is that any inconsistency in your CFDIs (a late payment complement, a forgotten cancellation, a wrong payment method) now becomes visible to the SAT before you catch it.
The defense is operational: monitor received CFDIs as they arrive, validate their status, and keep payment complements up to date. The monthly return stops being an event and becomes the result of a continuous process.