# [MX] Withholding Invoice (CFDI Retenciones e Información de Pagos 2.0)

What is a Withholding Invoice?

A Withholding Invoice is issued by a platform operator to report taxes withheld from a service provider during a billing period. If you run a digital platform (rideshare, delivery, hospitality) and withhold ISR and IVA from your providers, this is the document you issue at the end of each period.

FieldValue
invoice_typewithholding
document_typewithholding invoice
e_invoicetrue
currencyMXN

Document Structure

A withholding payload always has two layers:

  • The root (withholding invoice) — the period header with totals and recipient info.
  • One entry in relations[] (digital platform invoice) — the complement with the service-by-service breakdown.

relations[] always contains exactly one element for this document type.


Field by Field

Root fields

FieldRequiredWhat to send
invoice_numberNoYour internal folio for this document. 1–20 alphanumeric characters.
invoice_dateYesThe date you're issuing this document. Format: YYYY-MM-DD.
additional_infoYesA short description of the withholding (e.g. "Retención por servicios de plataformas tecnológicas"). Max 100 characters.

Period (categories[])

These four entries define the fiscal period this document covers.

listcode exampleRequiredWhat to send
withholding_type"25"YesThe type of withholding you're reporting. Use "25" for digital platforms. See catalog below.
initial month code"01"YesThe first month of the period. "01" = January, "12" = December.
final month code"02"YesThe last month of the period. Must be equal to or later than initial month code.
fiscal year"2026"NoThe fiscal year. If omitted, Brinta uses the year from invoice_date. Only send this if they differ.

Withholding Type Codes

CodeWhen to use
01Sale of shares
02Dividends
03Interest
06Rental
09Professional fees
14Fees paid to individuals
25Digital platforms (rideshare, delivery, hospitality)

Recipient (buyer)

The buyer is the service provider receiving the withholding notice — the person or company whose taxes you withheld.

FieldRequiredWhat to send
buyer.company.legal_nameYesThe provider's registered legal name.
buyer.company.typeYes"business" for companies, "person" for individuals.
buyer.company.address.postal_codeYesTheir 5-digit fiscal postal code.
buyer.company.address.countryYes"MX" for Mexican providers. Any other value = foreign provider.
tax_registrations type "RFC"Yes (Mexican)Required when country is "MX".
tax_registrations type "CURP"NoOnly for individual ("person") Mexican providers.
tax_registrations type "tax_id"NoForeign providers only — their tax ID in their home country.

Period Totals (amounts[] and taxes[])

These are the aggregated totals for the entire period. They must match the sum of all individual service entries in relations[].items[].

amounts[]

nametypeRequiredWhat to send
"final amount""final"YesTotal value of all operations in the period, before taxes.

taxes[]

nametypewithholding_typeRequiredWhat to send
"total taxes""total"(absent)YesThe total taxable base across all services in the period.
"exempt taxes""exempt"(absent)YesThe total exempt base. Send 0 if there are no exempt amounts.
"total taxes""total""withholding"YesThe total amount withheld. Must equal the sum of all individual withholding entries below.
"total VAT""VAT""withholding"YesTotal IVA withheld. Include taxable_amount, amount, and rate.
"total ISR""GIT""withholding"YesTotal ISR withheld. Include taxable_amount, amount, and rate.

Important: The amount in the "total taxes" / "withholding" entry must equal the sum of "total VAT" withheld + "total ISR" withheld. If these don't match, the document will be rejected.


Digital Platform Complement (relations[])

This section contains the service-level breakdown. Always one element.

relations[].payment_method

Set payment_method.type here if all services in the period were paid the same way (e.g. all bank transfers). If providers used different payment methods across services, omit this and set it per service via items[].categories[].

relations[].categories[]

listcode exampleRequiredWhat to send
"periodicity""04"YesHow often you report. See catalog below.
"number of services""10"YesTotal number of service operations in the period. Must match the number of entries in items[].

Periodicity Codes

CodeDescription
01Daily
02Weekly
03Bi-weekly
04Monthly
05Bi-monthly

relations[].amounts[]

nametypeRequiredWhat to send
"amount""base amount"YesTotal of all service prices excluding VAT. Sum of all items[].amount.
"total commision""commision"YesTotal platform commissions charged across all services.
"total government contribution""payment"ConditionalRequired only if any service has a government contribution (e.g. hotel tax). Sum of all individual contributions.

relations[].taxes[]

nametypewithholding_typeRequiredWhat to send
"total VAT""VAT"(absent)YesTotal VAT charged across all services.
"total VAT""VAT""withholding"YesTotal VAT withheld across all services.
"total ISR""GIT""withholding"YesTotal ISR withheld across all services.
"VAT difference""VAT"(absent)YesThe VAT that was actually paid to the provider (VAT charged minus VAT withheld).

Service Detail (relations[].items[])

One entry per service operation in the period. The count must match "number of services" in relations[].categories[].

FieldRequiredWhat to send
nameYesDescription of the service.
amountYesPrice of the service, excluding VAT.
quantityYesAlways 1 per service operation.

items[].categories[]

listcode exampleRequiredWhat to send
"service type""01"YesThe type of service. See catalog below.
"subtype service type""0101"ConditionalRequired for transport and hospitality services. See sub-catalog below.
"service date""2026-04-15"YesThe date the client paid for this service. Format: YYYY-MM-DD.
"payment method type""03"ConditionalOnly needed if relations[].payment_method is not set at the relation level.
"authorized RFC""PEGJ850312AB1"NoRFC of an authorized third-party helper (individuals only).
"government contribution amount""120.00"ConditionalAmount of government tax paid for this service (e.g. hotel tax).
"government contribution entity""CMX"ConditionalThe state where the government contribution was paid. Required if "government contribution amount" is present.
"commision taxable amount""10000.00"NoThe base used to calculate the platform commission for this service.
"commision taxable rate""0.150"NoThe commission rate as a decimal (e.g. 0.150 = 15%).
"commision amount""1500.00"ConditionalThe commission amount charged for this service. Required if a commission applies.

Service Type Codes

CodeDescriptionSubtype required?
01Passenger transportYes
02Hospitality / lodgingYes
03Food and grocery deliveryNo
04Sale of goodsNo
05Other servicesNo

Service Subtype Codes

CodeDescription
0101Passenger transport — Domestic
0102Passenger transport — International
0201Lodging — Without meals
0202Lodging — With meals

items[].taxes[]

One entry per tax type per service.

nametypewithholding_typeRequiredWhat to send
"VAT""VAT"(absent)YesVAT charged on this service. Set adds_to_final_amount: true.
"VAT""VAT""withholding"YesVAT withheld by the platform on this service.
"ISR""GIT""withholding"YesISR withheld by the platform on this service.

Replacing a Previous Document

If this document replaces a previously issued withholding, pass the original document's UUID:

FieldWhat to send
original_invoice_idThe UUID of the withholding document being replaced.

Full Example Payload

{
    "supplier_company_id": "{{company_id}}",
    "invoice_number": "R0001",
    "invoice_type": "withholding",
    "invoice_date": "2026-04-01",
    "document_type": "withholding invoice",
    "e_invoice": true,
    "currency": "MXN",
    "additional_info": "Retención por servicios de plataformas tecnológicas",
    "categories": [
        { "code": "25",   "list": "withholding_type" },
        { "code": "2026", "list": "fiscal year" },
        { "code": "01",   "list": "initial month code" },
        { "code": "02",   "list": "final month code" }
    ],
    "buyer": {
        "company": {
            "name": "PRESTADOR DE SERVICIOS S.A. DE C.V.",
            "legal_name": "PRESTADOR DE SERVICIOS S.A. DE C.V.",
            "type": "business",
            "address": {
                "address_line_1": "Av. Insurgentes 500",
                "city": "Ciudad de Mexico",
                "state": "MX-CMX",
                "postal_code": "06600",
                "country": "MX"
            },
            "tax_registrations": [
                { "type": "RFC", "number": "PSS900101AB1", "level": "country", "location": "MX" }
            ]
        }
    },
    "amounts": [
        { "amount": 100000, "name": "final amount", "type": "final" }
    ],
    "taxes": [
        { "taxable_amount": 80000, "name": "total taxes",  "type": "total" },
        { "taxable_amount": 20000, "name": "exempt taxes", "type": "exempt" },
        { "amount": 12800, "name": "total taxes", "type": "total", "withholding_type": "withholding" },
        { "taxable_amount": 80000, "amount": 8000, "name": "total VAT", "type": "VAT", "withholding_type": "withholding", "rate": 0.10, "rate_type": "percentage" },
        { "taxable_amount": 80000, "amount": 4800, "name": "total ISR", "type": "GIT", "withholding_type": "withholding", "rate": 0.06, "rate_type": "percentage" }
    ],
    "relations": [
        {
            "invoice_type": "withholding",
            "document_type": "digital platform invoice",
            "currency": "MXN",
            "payment_method": { "type": "bank transfer" },
            // all services paid by bank transfer — omit if mixed
            "categories": [
                { "code": "04", "list": "periodicity" },
                // monthly
                { "code": "10", "list": "number of services" }
                // 10 services in the period
            ],
            "amounts": [
                { "amount": 100000, "name": "amount",          "type": "base amount" },
                { "amount": 15000,  "name": "total commision", "type": "commision" }
            ],
            "taxes": [
                { "taxable_amount": 100000, "amount": 16000, "name": "total VAT", "type": "VAT", "rate": 0.16, "rate_type": "percentage" },
                { "amount": 8000, "name": "total VAT", "type": "VAT", "withholding_type": "withholding" },
                { "amount": 4800, "name": "total ISR", "type": "GIT", "withholding_type": "withholding" },
                { "amount": 8000, "name": "VAT difference", "type": "VAT" }
            ],
            "items": [
                {
                    "name": "Servicio de transporte de pasajeros",
                    "amount": 10000,
                    "quantity": 1,
                    "categories": [
                        { "code": "01",         "list": "service type" },
                        // passenger transport
                        { "code": "0101",       "list": "subtype service type" },
                        // domestic
                        { "code": "2026-04-15", "list": "service date" }
                    ],
                    "taxes": [
                        { "taxable_amount": 10000, "amount": 1600, "name": "VAT", "type": "VAT", "rate": 0.16, "rate_type": "percentage", "adds_to_final_amount": true },
                        { "taxable_amount": 10000, "amount": 800,  "name": "VAT", "type": "VAT", "withholding_type": "withholding", "rate": 0.10, "rate_type": "percentage" },
                        { "taxable_amount": 10000, "amount": 480,  "name": "ISR", "type": "GIT", "withholding_type": "withholding", "rate": 0.06, "rate_type": "percentage" }
                    ]
                }
            ]
        }
    ]
}