Calcular Sueldo Neto Perú (SueldoJusto.pe)
Purpose
Convert a Peruvian gross monthly salary (sueldo bruto) into the net take-home amount (sueldo neto / líquido) by driving the on-page calculator at https://sueldojusto.pe/herramientas/calculadora-sueldo-neto/. Returns gross, total deductions, net, and a per-line breakdown of AFP/ONP contributions and 5ta-categoría income tax. Read-only: the page is a client-side React calculator with no public API, no URL-param prefill, and no backend submission — every field must be driven in the browser. The result section reflects 2026 statutory values (UIT S/5,500, RMV S/1,130, 7 UIT income-tax floor at S/38,500/year).
When to Use
- A user supplies a monthly gross salary in soles and asks for their net take-home in Peru.
- A user wants the breakdown of pension contribution (AFP or ONP), 5ta-categoría income tax, and asignación familiar.
- A user is comparing AFP vendors (Habitat / Integra / Prima / Profuturo) and wants the line-by-line deduction for each at their salary level.
- A user wants to validate their payroll deductions against an independent calculator.
- A user wants the effect of toggling asignación familiar (+S/ 113.00) on their net.
Do NOT use this skill for:
- CTS, gratificación, liquidación, or utilidades calculations — those have separate calculators on sueldojusto.pe.
- Régimen de honorarios (4ta categoría) — this calculator is for 5ta categoría (planilla) only.
- Regímenes especiales (Pequeña Empresa, Microempresa, Construcción Civil, Agrario, Minero) — calculator assumes Régimen General; ask the user to confirm before reporting results for non-general regimes.
Workflow
-
Open the calculator page.
browse open "https://sueldojusto.pe/herramientas/calculadora-sueldo-neto/" --remoteThe page loads to the same form regardless of URL query string —
?sueldo=…®imen=…style params are not honored. The spinbutton defaults to2500. -
Take an accessibility snapshot to capture the field refs.
browse snapshot --remoteRefs are assigned per-page-load (e.g.
[4-32]on first load) and change after most interactions. Always re-snapshot after toggling AFP/ONP — the AFP sub-controls (combobox, radio group) only render under the AFP branch and only exist in the tree once that branch is active. -
Fill the gross monthly salary. The spinbutton is a controlled React input —
browse fillalone will fail silently if the field has a pre-existing value (the visible default2500will remain). Clear it first:browse click @<spinbutton-ref> --remote browse press "Control+A" --remote browse press "Delete" --remote browse fill @<spinbutton-ref> "<gross-soles>" --remoteUse integers (e.g.
4500), not decimals. No "S/" prefix, no thousands separator. -
Pick the pension regime. Two pill buttons toggle between branches:
- AFP (Privado) — default selected; reveals AFP combobox + comisión radio group.
- ONP (13%) — flat 13% deduction, no further inputs.
Click whichever the user is on. The page does NOT auto-recalculate on toggle.
-
(AFP branch only) Pick the AFP vendor and comisión type.
- Combobox values:
AFP Habitat(default),AFP Integra,AFP Prima,AFP Profuturo. Drive withbrowse fill @<combobox-ref> "AFP Integra"or click the combobox and select. - Comisión radios:
Sobre Flujo (1.47% / 1.55% / 1.60% / 1.69%)(default) orMixta (0.00% flujo + saldo). Mixta returns 0.00% on the monthly slip — the actual fee is annual on the accumulated balance, which this calculator cannot show. If the user is on Mixta, warn them the displayed monthly comisión of S/0.00 understates their true cost.
- Combobox values:
-
(Optional) Toggle "Recibo Asignación Familiar (+S/ 113.00)". Click the checkbox. The S/113 is added to the deduction base (not just paid out separately) — i.e. ONP becomes
13% × (gross + 113), not13% × gross. See the Gotchas for the display vs base inconsistency. -
(Optional) Fill "Otros Ingresos Anuales". Leave at
0for automatic 5ta-categoría projection fromgross × 14(12 months + 2 gratificaciones). Fill if the user reports additional bonuses or variable income to fold into the annual projection. -
Click "Calcular Sueldo Neto" — the recalc button at the bottom of the form. The result panel renders below with id
Tu Sueldo Neto Mensual. There is no loading state and no network round-trip; computation is synchronous client-side. -
Read the result. Extract these fields from the result panel (see Expected Output for the JSON shape):
Bruto— the input gross (NOTE: does not include asignación familiar even when checked).- Descuentos— total deduction sum.Neto— take-home.- The "% recibes" / "% descontado" pair.
- Desglose lines:
Aporte AFP (10%)orAporte ONP (13%),Comisión <vendor> (flujo|mixta),Seguro de invalidez (1.37%),Impuesto 5ta categoría (aprox)(may be missing if annual projection ≤ 7 UIT).
-
Return the JSON. Always include the disclaimer: "cálculo referencial, no es liquidación oficial".
No browser fallback exists
There is no public API, no GraphQL endpoint, no URL-deep-link, no SueldoJusto MCP server, and no documented CLI. The calculation runs entirely in client-side JavaScript on the calculadora page. If running the browser is not possible, the formulas are documented on the same page and can be applied manually:
net = (gross + asignación_familiar_or_0)
- aporte_pensión
- impuesto_5ta_categoría
aporte_pensión:
ONP: 0.13 × (gross + asig)
AFP flujo: 0.10 × (gross + asig) # aporte
+ flujo_pct × (gross + asig) # comisión
+ 0.0137 × (gross + asig) # seguro
AFP mixta: 0.10 × (gross + asig) # comisión sobre flujo = 0
+ 0.0137 × (gross + asig)
flujo_pct: Habitat 0.0147 | Integra 0.0155 | Prima 0.0160 | Profuturo 0.0169
impuesto_5ta_categoría:
anual_proyectado = (gross + asig) × 14 + otros_ingresos_anuales
base_imponible = max(0, anual_proyectado - 7 × 5500) # 7 UIT = S/38,500
tax_anual = piecewise on base_imponible:
8% on the first 5 UIT (S/27,500)
14% on the next 15 UIT (S/82,500)
17% on the next 15 UIT (S/82,500)
20% on the next 10 UIT (S/55,000)
30% on the rest
retención_mensual = tax_anual / 12
This manual formula is what the site itself documents in its "Fórmula oficial 2026" section. Prefer the calculator — the page handles tax-bracket edge cases and rounding consistent with what the user will see if they verify themselves.
Site-Specific Gotchas
- No URL-param prefill. Adding
?sueldo=5000®imen=onpor any other query string to the calculator URL does nothing — the spinbutton still loads to its default2500. Confirmed against the live page. Don't waste time crafting a deep-link. - No API endpoint. All deductions are computed in client JS. There is no XHR/fetch to a backend for the result. Network panel shows zero requests on "Calcular" click.
- Spinbutton fill needs an explicit clear. A bare
browse fill @<spinbutton> "4500"against the existing2500may leave the visible value as2500and produce a result based on the wrong number. The reliable sequence isclick → Control+A → Delete → fill. Always confirm the result panel'sBruto:line matches the value you intended before reporting. - Toggling AFP/ONP does not recalculate. The result panel persists with stale numbers after you switch regime. You MUST click "Calcular Sueldo Neto" again. The visible breakdown labels will flip (e.g. "Aporte ONP (13%)" → "Aporte AFP (10%)") but the sum is unchanged until recalculation.
- AFP-branch refs are conditionally rendered. The AFP combobox, comisión radio group, and Calculate button only exist in the snapshot tree when the AFP pill is active. If you snapshot under ONP and try to use the AFP combobox ref, the call fails silently. Re-snapshot after each branch switch.
- The displayed "Bruto" excludes asignación familiar, but the deduction base includes it. With S/1,500 gross + asignación checked:
Bruto: S/ 1,500.00shown, but ONP 13% = S/209.69, which is0.13 × 1,613(i.e.0.13 × (1500 + 113)). Net =1500 + 113 - 209.69 = S/ 1,403.31. When reporting to the user, expose this — the page's "Bruto" line is a misleading label and they will not be able to reconcile the numbers from it alone. - Comisión Mixta shows S/0.00 on the monthly breakdown. The page intentionally renders comisión Mixta as
-S/ 0.00because the actual Mixta fee is annual on the accumulated balance, not monthly on the flow. The calculator does NOT model this annual saldo fee, so for Mixta-affiliated users the result understates true cost. Mention this explicitly when returning a Mixta calculation. - 5ta-categoría kicks in at gross ≈ S/2,750/month. Below that (
gross × 14 ≤ 7 × 5,500 = 38,500), the "Impuesto 5ta categoría" line is omitted from the desglose entirely (not rendered as 0). Don't rely on the line's presence to detect tax — branch on the annual projection. - 2026-specific constants are hard-coded into the page. UIT S/5,500 (D.S. 301-2025-EF), RMV S/1,130 (D.S. 006-2024-TR), Asignación Familiar S/113.00. If these change in 2027, the page will be updated server-side but the SKILL.md formulas under "browser fallback" above will need a refresh.
- Page renders fine without stealth. No anti-bot wall. The skill works equally on
browse cloud sessions create(no flags) and with--verified --proxies. The verified+proxies session this skill was authored against was overkill for this site — stealth-off is fine. - The "Copiar resultado" button exists — clicking it places a plaintext summary in the clipboard. Not needed for agent use (read the result panel directly via snapshot/markdown), but worth knowing if a user asks for a "copy/paste-able" version.
- No site-specific anti-bot, captcha, or rate-limit issues observed. Page returned 200 on direct
browse cloud fetchwithout proxies.
Expected Output
Return one JSON object. All currency fields are floats in soles (S/). The deductions map is partial — keys are present only when the corresponding line exists in the page's desglose.
{
"gross_monthly": 4500.00,
"regime": "AFP",
"afp": {
"vendor": "Habitat",
"comision_type": "flujo"
},
"asignacion_familiar": false,
"otros_ingresos_anuales": 0.00,
"deductions": {
"aporte_pension": 450.00,
"comision_afp": 66.15,
"seguro_invalidez": 61.65,
"impuesto_5ta_categoria": 163.33
},
"total_deductions": 741.13,
"net_monthly": 3758.87,
"pct_received": 83.5,
"pct_deducted": 16.5,
"disclaimer": "Cálculo referencial. No constituye liquidación oficial ni asesoría contable. Consulta con RRHH de tu empresa.",
"source": "sueldojusto.pe/herramientas/calculadora-sueldo-neto",
"year": 2026,
"constants_used": {
"uit": 5500,
"rmv": 1130,
"asignacion_familiar_amount": 113.00,
"tope_5ta_anual": 38500
}
}
Outcome shapes (one example per branch)
ONP, no asignación, salary above 7 UIT projection — both pension and 5ta apply:
{
"gross_monthly": 4500.00,
"regime": "ONP",
"asignacion_familiar": false,
"deductions": {
"aporte_pension": 585.00,
"impuesto_5ta_categoria": 163.33
},
"total_deductions": 748.33,
"net_monthly": 3751.67,
"pct_received": 83.4
}
ONP, asignación familiar checked, salary below 7 UIT projection — only pension applies:
{
"gross_monthly": 1500.00,
"regime": "ONP",
"asignacion_familiar": true,
"deductions": {
"aporte_pension": 209.69
},
"total_deductions": 209.69,
"net_monthly": 1403.31,
"pct_received": 87.0,
"notes": [
"Aporte ONP de S/ 209.69 = 13% × (gross + asignación) = 13% × S/ 1,613. La página muestra Bruto: S/ 1,500.00 pero la base de descuento incluye los S/ 113 de asignación."
]
}
AFP Mixta — emit a notes warning:
{
"gross_monthly": 4500.00,
"regime": "AFP",
"afp": { "vendor": "Integra", "comision_type": "mixta" },
"deductions": {
"aporte_pension": 450.00,
"comision_afp": 0.00,
"seguro_invalidez": 61.65,
"impuesto_5ta_categoria": 163.33
},
"total_deductions": 674.98,
"net_monthly": 3825.02,
"notes": [
"Comisión Mixta aparece como S/ 0.00 en la boleta mensual. La comisión real es anual sobre el saldo acumulado en tu cuenta AFP, y no está incluida en este cálculo. Tu costo total real será mayor."
]
}