Zambia PAYE
Calculator 2025/26

ZRA progressive tax (0%–37.5%), NAPSA social security (5% employee + 5% employer, capped K1,221.80/month). Annual computation per ZRA bands.

✦ Includes AI Advisor ZRA 2025/26 Verified NAPSA · Capped ZMW · Zambian Kwacha

Last verified: July 2025 · Source: ZRA (zra.org.zm) · Income Tax Act · NAPSA Act

2025/26 Key Facts: PAYE bands on annual income: 0% up to K57,600; 20% on K57,601–81,600; 30% on K81,601–116,400; 37.5% above K116,400. NAPSA employee contribution 5% of gross salary, capped at K1,221.80/month (K14,661.60/year). Employer pays 5% with no cap. Employee NAPSA is deductible from taxable income.

Enter Your Details Zambian Kwacha · ZMW
Annual Gross Salary K 150,000
K 50,000K 5,000,000
Or type exact annual amountBefore any deductions
K
Active DeductionsToggle to include / exclude
NAPSA
5% employee — capped K1,221.80/mo

NAPSA employee contribution (5%) is capped at K1,221.80 per month and is fully deductible from taxable income before PAYE is calculated. Employer NAPSA (5%) is an additional cost with no cap.

Annual Take-Home Pay
K 0
After PAYE & all deductions
Effective Tax Rate 0%
Zambia Tax FAQ

Common PAYE Questions

What are the Zambia PAYE tax bands for 2025/26?

Four annual bands: 0% on first K57,600; 20% on K57,601–81,600; K4,800 plus 30% on K81,601–116,400; K15,240 plus 37.5% above K116,400. These bands apply to taxable income after NAPSA deduction.

Is NAPSA contribution deductible from PAYE taxable income?

Yes — the employee's NAPSA contribution (5%, capped at K1,221.80/month) is fully deductible from gross pay before calculating PAYE. This reduces your taxable income and therefore your PAYE tax liability. The employer's matching contribution is a separate employer cost.

What is the NAPSA contribution cap?

The employee NAPSA contribution is capped at K1,221.80 per month, which equals K14,661.60 annually. If your calculated 5% contribution exceeds this cap, the cap applies. The employer contribution has no cap.

How is NAPSA calculated if my salary is very high?

If your gross annual salary is high, your 5% NAPSA would exceed the cap. In that case, you pay the capped amount (K14,661.60/year), which is still deductible from your taxable income for PAYE purposes. The employer continues to pay 5% of the full gross with no cap.

When must employers remit PAYE and NAPSA to ZRA?

PAYE must be filed and paid to ZRA by the 21st of the month following the payroll month. NAPSA contributions are remitted to NAPSA by the 10th of the following month. Late payments attract interest and penalties.

Are there other deductions beyond NAPSA?

For standard PAYE, only NAPSA is shown here. Employees may claim other deductions under specific circumstances (travel allowances, professional fees, medical aid) but these require ZRA approval and documentation. Consult your employer's payroll administrator.

More African Tax Tools

🇳🇬 Nigeria PAYE Calculator 🇰🇪 Kenya PAYE Calculator 🇬🇭 Ghana PAYE Calculator 🇿🇦 South Africa PAYE Calculator 🌍 Pan-African VAT Calculator 💱 African Currency Converter
`; const blob = new Blob([html],{type:'text/html;charset=utf-8'}); const url = URL.createObjectURL(blob); const w = window.open(url,'_blank'); if(w){ w.addEventListener('load',()=>{setTimeout(()=>{w.print();setTimeout(()=>URL.revokeObjectURL(url),3000)},600)}); setTimeout(()=>{try{w.print()}catch(e){}},1200); } } // ── SHARE ───────────────────────────────────────────────────── function shareResult() { if (!RESULT) return; const text = `My Zambia PAYE breakdown: Gross K${Math.round(RESULT.gross).toLocaleString()}/year → Take-home K${Math.round(RESULT.netAnnual).toLocaleString()}/year (${pct(RESULT.effectiveRate)} effective rate). Calculated at afrotools.com/zambia/zm-paye`; if (navigator.share) { navigator.share({title:'My Zambia PAYE',text,url:'https://afrotools.com/zambia/zm-paye'}); } else if (navigator.clipboard) { navigator.clipboard.writeText(text); const btn = document.getElementById('zmShareBtn'); btn.textContent = '✓ Copied!'; setTimeout(()=>btn.innerHTML=` Share Result`,2500); } } // ── AI ADVISOR ──────────────────────────────────────────────── async function getAI() { if (!RESULT) return; const R = RESULT; const btn = document.getElementById('aiBtn'); const respEl = document.getElementById('aiResp'); btn.disabled = true; btn.textContent = 'Analysing…'; respEl.style.display = 'block'; respEl.className = 'ai-response typing'; respEl.textContent = ''; document.getElementById('aiStatus').style.display = 'none'; const prompt = `Zambia PAYE analysis (2025/26, ZRA): - Annual gross: K${Math.round(R.gross).toLocaleString()} - NAPSA employee (5%, capped K14,661.60): K${Math.round(R.napsa).toLocaleString()}/year - Taxable income after NAPSA: K${Math.round(R.gross - R.napsa).toLocaleString()}/year - Annual PAYE: K${Math.round(R.annualPAYE).toLocaleString()} - Annual take-home: K${Math.round(R.netAnnual).toLocaleString()} - Effective tax rate: ${pct(R.effectiveRate)} - Employer NAPSA (5%, uncapped): K${Math.round(R.empNapsa).toLocaleString()}/year - Total employer cost: K${Math.round(R.totalEmployerCostAnnual).toLocaleString()}/year Give: 1) Plain English summary of PAYE position 2) Two specific ways to reduce Zambia tax (NAPSA cap strategy, pension contributions) 3) One ZRA compliance point 4) One thing most Zambian employees get wrong about NAPSA capping. Under 200 words. No markdown, no asterisks, no bullet symbols.`; try { const res = await fetch('/.netlify/functions/ai-advisor', { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ system:'You are AfroTools AI Tax Advisor specialising in Zambian PAYE — ZRA progressive tax, NAPSA with capping, Income Tax Act. Be concise, specific, practical. No markdown, no asterisks.', messages:[{role:'user',content:prompt}] }) }); if(!res.ok) throw new Error('HTTP '+res.status); const data = await res.json(); const text = data.text || 'Unable to generate analysis.'; respEl.className = 'ai-response'; respEl.textContent = ''; let i = 0; const type = () => { if(i${msg}`; const aiEl = document.createElement('div'); aiEl.className = 'msg a'; aiEl.textContent = '…'; msgs.appendChild(aiEl); msgs.scrollTop = msgs.scrollHeight; CHAT_HISTORY.push({role:'user',content:msg}); try { const res = await fetch('/.netlify/functions/ai-advisor',{ method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({ system:`AfroTools AI Tax Advisor, Zambia. User: gross K${Math.round(R.gross).toLocaleString()}/year, take-home K${Math.round(R.netAnnual).toLocaleString()}/year, effective rate ${pct(R.effectiveRate)}. Concise. No markdown.`, messages:CHAT_HISTORY }) }); const data = await res.json(); const text = data.text || 'Unable to respond.'; aiEl.textContent = text; CHAT_HISTORY.push({role:'assistant',content:text}); msgs.scrollTop = msgs.scrollHeight; } catch { aiEl.textContent='Network error. Please try again.'; } } document.getElementById('grossSalary').addEventListener('keydown',e=>{if(e.key==='Enter')calculate();});