About this tool
The Payroll Calculator works out what an employee actually takes home from a gross monthly salary in Cambodia, by subtracting the two statutory deductions that appear on almost every payslip: the National Social Security Fund contribution and Tax on Salary. Enter a gross salary in riel, the number of qualifying dependent children and whether the employee is a resident, and the page returns the dependent allowance, taxable income, TOS, the NSSF deduction, net pay and the effective tax rate, with a bracket-by-bracket table showing exactly where the tax came from. It is written for the monthly payroll cycle: an HR officer checking a payslip before it is issued, an employee testing whether a deduction is right, a manager costing a raise, or an accountant preparing the monthly TOS declaration. The resident case is covered in detail and the non-resident flat-rate case in outline. It does not model a non-earning spouse, a 13th-month wage, overtime, allowances or benefits in kind, seniority indemnity, or the annual TOS reconciliation for employees with income beyond salary. It does not file or pay anything. None of it is legal or tax advice.
How it works
The page is a thin shell over the finance core in `lib/finance/tos.ts` and `lib/finance/nssf.ts`. For a resident, it subtracts 150,000 KHR for each dependent child from the gross salary — the spouse reduction is not applied, because the form has no spouse field — and applies the monthly brackets of Sub-Decree №48 Article 3 to the remainder: 0% up to 1,500,000 KHR, 5% from 1,500,001 to 2,000,000, 10% up to 8,500,000, 15% up to 12,500,000 and 20% above 12,500,000. For a non-resident it applies a flat 20% to the gross with no deduction. NSSF is computed separately on the wage bands — 2% pension on the contributory wage clamped to 400,000–1,200,000 KHR (healthcare is fully employer-borne since 2018, so it never deducts from the employee) (the floors are minimum contributory wages, so low salaries are contributed on the floor base) — and the two are added into one deduction line. Net pay = gross − NSSF − TOS. The dependent count is limited to 0–20 and must be a whole number; a blank or negative salary stops the calculation with a field error rather than returning a figure. Results are displayed in whole riel and the effective rate is TOS divided by gross salary.
Use cases
- An HR officer in Phnom Penh checking a monthly payslip before it is handed to the employee
- An employee verifying that the TOS withheld on their payslip matches the Sub-Decree №48 brackets
- A manager costing a 200,000 KHR raise by seeing how much of it survives tax and NSSF
- An accountant preparing the monthly TOS declaration and needing the bracket split per employee
- A job seeker converting a gross offer into take-home pay before accepting it
- A finance team running a set of salary scenarios to see where the 10% and 15% brackets start to bite
- A payroll clerk explaining to a new hire why a 2,000,000 KHR salary does not pay tax at 10% throughout
Frequently asked questions
What are the monthly Tax on Salary brackets for 2026?
For resident employees, Sub-Decree №48 OrNKr.BK (11 March 2024) Article 3 sets 0% on the first 1,500,000 KHR, 5% from 1,500,001 to 2,000,000 KHR, 10% from 2,000,001 to 8,500,000 KHR, 15% from 8,500,001 to 12,500,000 KHR and 20% above 12,500,000 KHR. The brackets are marginal, so a salary in the 10% band does not pay 10% on the whole amount. Non-residents pay a flat 20% on Cambodian-sourced salary with no deductions.
Why is the NSSF line larger than 2%?
The line is now pension only: healthcare moved fully to the employer from 1 January 2018, so it never deducts. Pension is 2% of the contributory wage capped at 1,200,000 KHR, so at 1,200,000 KHR or above the line is 24,000 KHR per month.
Does the NSSF deduction reduce taxable income?
No. Cambodian Tax on Salary does not allow the employee NSSF contribution as a deduction from the tax base. Only the 150,000 KHR per dependent child reduces taxable salary for a resident. That is why the calculator shows the dependent allowance as a separate line above taxable income and the NSSF line only as a deduction from net pay.
Why can I not enter a non-earning spouse?
The payroll form only has a dependent-children field, so this page never applies the 150,000 KHR household-spouse reduction that Sub-Decree №48 Article 3.2 also allows. If the employee has a non-earning spouse, open the salary tax calculator, which has a spouse toggle, and use its figure for the tax. The payroll calculator will therefore overstate tax by up to 150,000 KHR of tax base in that case.
Does the NSSF line match the published NSSF table?
This page applies each rate to the contributory wage capped at the band ceiling, the same base the NSSF published table uses: pension at or above the ceiling comes out at 24,000 KHR — identical to the table maximum. Employer-side healthcare (max 31,200 KHR) is fully employer-borne and never deducted. For a payroll figure that must match a declaration, the NSSF table and this page now agree.
What does the calculator leave out?
It leaves out the 13th-month wage, overtime, allowances, benefits in kind, seniority indemnity and any non-salary income, and it does not compute the annual TOS reconciliation. It also assumes the employee is the only claimant of the dependent allowance, which matters where both spouses work: Sub-Decree №48 allows the per-child deduction to be claimed by one of them only.
Is this calculator official, and does it file my tax?
No. It is an unofficial calculator built from published instruments, and it neither files nor pays anything. It does not connect to the General Department of Taxation, does not read your salary history and cannot confirm what an employer has declared. Use it to check a figure; use GDT’s own systems, your payroll software or a registered tax agent for the filing itself.
Why does the bracket table show fewer than five rows?
Only brackets where the taxable salary actually lands are listed. A 1,500,000 KHR salary with no dependents produces no rows at all because the whole amount sits in the 0% bracket, and a 2,200,000 KHR taxable salary lists the 5% and 10% rows only. The table is a breakdown of the tax charged, not a reference chart of all five brackets.
Data and accuracy
TOS brackets and the 150,000 KHR dependent reduction are hard-coded in `lib/finance/tos.ts` (TOS_RATE_SET, last reviewed 2026-08-26) from Sub-Decree №48 OrNKr.BK (11 March 2024) Article 3, with implementation guidance from GDT Prakas №575 MEF.PK.GDT (19 September 2024). NSSF employee rates come from Prakas №449 (10 November 2017, effective 1 January 2018) for healthcare and Sub-Decree №32 (4 March 2021) for pension, both hard-coded in `lib/finance/nssf.ts`. The instruments are published on the GDT, NSSF and MLVT indexes linked below; this page was checked against them on 21 October 2026.
Sources
- GDT — Sub-Decree index (Sub-Decree №48 OrNKr.BK, 11 March 2024, Article 3: monthly TOS brackets and dependent reduction) — General Department of Taxation, Ministry of Economy and Finance
- GDT — Prakas index (Prakas №575 MEF.PK.GDT, 19 September 2024) — General Department of Taxation, Ministry of Economy and Finance
- NSSF — Prakas index (Prakas №449, 10 November 2017, effective 1 January 2018: healthcare contribution) — National Social Security Fund (NSSF)
- Sub-Decree №32 (4 March 2021) — NSSF pension scheme — National Social Security Fund (NSSF)
Content last reviewed 21 October 2026