Skip to main content

Overview

For Mexican CFDI, use is the recipient’s intended Uso CFDI. Ask the recipient which use applies and check its compatibility with their fiscal regime and person type. It is not the issuing team’s business activity and does not by itself make an expense deductible.

How to Use It

The invoice field is use. The recipient’s regime is client.tax_system (or the stored customer’s tax_system). An invoice-body fragment looks like this:
This only shows field placement; it is not a complete invoice. Use the full invoice recipe and income contract. There is no cfdi_usage, tax_regime, or enclosing invoice object in that request.

What We See

The following 24 codes and compatibility lists are present in gigstack’s catalog. They explain its labels and are not a promise of fiscal acceptance for every transaction. The public invoice schema accepts use as a string; the provider validates the fiscal combination. Check the SAT’s current filling material and catalogs for code validity and applicability.

CFDI Usage Codes by Category

General Business Expenses (G Codes)

Investment Expenses (I Codes)

Personal Deductible Expenses (D Codes)

Special Cases (S Codes)

Payment Documents (CP Codes)

Payroll Documents (CN Codes)

Tax Regime Compatibility Matrix

The lists above reproduce the code groups in gigstack’s catalog; they are not rules for whether an actual expense may be deducted. In particular:
  • CN01 is the payroll use associated with 605; 605 is not limited to CN01 for every document.
  • S01 and CP01 use the explicitly listed regimes, not an unconditional “all regimes” rule.
  • A G, I, or D code must fit the recipient’s intended use as well as its registered information.
  • A payroll code in a catalog does not mean the income-invoice endpoint is a payroll API.

Implementation Examples

API Request Example

For the tutorial’s invoice, "use": "G03" is a top-level input. For a general-public global invoice, follow the dedicated receiver rules, which use S01 in that flow. These are different cases, not interchangeable defaults.

Validation Logic

If you maintain a local code selector, retain the catalog’s version, recipient-type constraints, regime compatibility, and validity dates together. Do not copy a short partial JavaScript mapping and treat missing entries as official fiscal exclusions.

Usage Code Validation

Check the actual provider error when a use is rejected. A syntactically valid string can still be incompatible with the recipient or document. Do not silently replace the selected use with G03 or S01 to make a request pass.

Common Use Cases

These labels do not establish eligibility for a deduction or permission to issue a particular document type. D10’s tuition label, for example, does not make all education spending deductible.

Important Notes

S01 does not mean the underlying transaction has no tax consequences. CP01 does not record a payment by itself; use the actual payment-complement flow. These SAT meanings apply to Mexico; Colombia has different fiscal fields even though the shared API currently still requires use.

Error Prevention

Collect the recipient’s actual requested use, verify its registered regime, and inspect the issued XML. If the intended value changes, follow the appropriate correction process rather than altering an already-issued document locally. See Cancellation motives.