How the Mexico resico calculator is verified
Inputs
| Input | Field | Type |
|---|---|---|
| Annual income collected (MXN) | annualIncome | number |
The formula
Each derived value below is computed by the Valem engine from the expression shown, in this order. Nothing else runs — there is no hidden code path.
| Derived value | Field | Formula (JSONata) |
|---|---|---|
| Monthly Income | monthlyIncome | $round(annualIncome / 12, 2) |
| ISR rate (%) | isrRatePercent | $round((monthlyIncome <= $const.m1 ? $const.r1 : (monthlyIncome <= $const.m2 ? $const.r2 : (monthlyIncome <= $const.m3 ? $const.r3 : (monthlyIncome <= $const.m4 ? $const.r4 : $const.r5)))) * 100, 3) |
| ISR / year | isr | $round(annualIncome * isrRatePercent / 100, 2) |
| Net income / year | netIncome | $round($max([0, annualIncome - isr]), 2) |
Rates and thresholds
The expressions above read these as $const. They are the figures the annual refresh replaces, so they live as data rather than being written into the formulas — which is what makes a year-on-year change a one-line diff instead of an edit to arithmetic.
| Constant | Value |
|---|---|
m1 | 25000 |
m2 | 50000 |
m3 | 83333 |
m4 | 208333 |
m5 | 291667 |
r1 | 0.01 |
r2 | 0.011 |
r3 | 0.015 |
r4 | 0.02 |
r5 | 0.025 |
annualCap | 3500000 |
Test vectors (3)
Every case is executed against this model on each build, by the Java engine and independently by a JavaScript one. A mismatch of a single cent fails the build, so the page cannot ship advertising a figure the model no longer produces.
Case 1 — 600,000 MXN collected — a typical full-time freelancer
given annualIncome | 600000 |
|---|---|
expect monthlyIncome | 50000 |
expect isrRatePercent | 1.1 |
expect isr | 6600 |
expect netIncome | 593400 |
Case 2 — 240,000 MXN — the lowest 1% band
given annualIncome | 240000 |
|---|---|
expect monthlyIncome | 20000 |
expect isrRatePercent | 1 |
expect isr | 2400 |
expect netIncome | 237600 |
Case 3 — 3,000,000 MXN — near the ceiling of the regime
given annualIncome | 3000000 |
|---|---|
expect monthlyIncome | 250000 |
expect isrRatePercent | 2.5 |
expect isr | 75000 |
expect netIncome | 2925000 |
Sources
- SAT — Régimen Simplificado de Confianza para personas físicas · checked 2026-08-22
- Tabla ISR RESICO 2026 — tasas del 1% al 2.5% por ingreso mensual · checked 2026-08-22
Check it yourself — and reuse it
The whole model as JSON — inputs, outputs, formulas, vectors and sources in one re-runnable document.
This model is published under CC BY 4.0: use it, adapt it, build on it, with attribution. The licence covers the model — the expression of each rule and the arrangement of the catalog. The rates and thresholds are law, and nobody licenses those; the sources above are where they come from.
← Back to the Mexico resico calculator
Built with Valem — a live, verifiable calculator you can fork and embed.