Eswatini PAYE
Calculator 2025/26

SRA progressive tax (20%–33%) on annual income. SNPF pension (5%+5%, capped E600/mo). E8,200 rebate. Annual calculation per SRA bands.

✦ Includes AI Advisor SRA 2025/26 Verified SZL · Lilangeni

Last verified: July 2025 · Source: SRA (sra.org.sz)

2025/26 Key Facts: SRA annual tax bands: 20% first E41,000/yr; 25% E41,001–80,000; 30% E80,001–100,000; 33% above E100,000. SNPF: 5% employee + 5% employer, capped at E600/mo. Tax rebate: E8,200/yr. Calculated annually.

Enter Your Details Lilangeni · SZL
Annual Gross Salary E600,000
E50,000E3,000,000
Or type exact annual amountBefore any deductions
E
Active DeductionsToggle to include / exclude
SNPF Pension
5% employee (capped E600/mo)

SNPF employee contribution (5% annually, capped at E600/month) is deductible from taxable income before SRA PAYE is calculated. Employer SNPF (5%) is additional cost to employer.

Annual Take-Home Pay
E 0
After PAYE, SNPF & all deductions
Effective Tax Rate 0%
Eswatini Tax FAQ

Common PAYE Questions

What is the Eswatini PAYE tax structure?

Eswatini PAYE is calculated annually using four progressive bands starting at 20% on the first E41,000, rising to 33% above E100,000. A tax rebate of E8,200 is applied after tax calculation. SNPF pension deductions are allowed before tax is computed.

What is SNPF and how much is capped?

The Swaziland National Provident Fund (SNPF) is a mandatory retirement savings scheme. Employee contribution is 5% of gross salary, capped at E600 per month (E7,200 per year). Employer contributes matching 5%. Only employee SNPF is deductible from taxable income.

How does the E8,200 tax rebate work?

The tax rebate of E8,200 is applied after calculating SRA tax on taxable income. It effectively reduces your final tax liability. For example, if your calculated tax is E12,000, after the E8,200 rebate your payable tax becomes E3,800.

Is SNPF deductible from taxable income?

Yes. The employee's 5% SNPF contribution is fully deductible from gross pay before calculating SRA PAYE. This reduces your taxable income and therefore your tax liability. The employer's 5% contribution is not deductible from the employee's income.

When must employers remit PAYE?

PAYE is calculated and remitted annually in Eswatini. Employees file tax returns by a specified deadline, and employers must remit employee tax withholdings to SRA within the prescribed timeframe set annually by the Commissioner of Income Tax.

Can I reduce my Eswatini tax?

SNPF contributions (5%, capped at E600/mo) directly reduce taxable income. The E8,200 rebate applies to all residents. Some approved life insurance policies may allow deductions. Consult SRA or a tax advisor on any other qualifying deductions.

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); } } function shareResult() { if (!RESULT) return; const text = `My Eswatini PAYE breakdown: Gross E${Math.round(RESULT.gross).toLocaleString()}/yr → Take-home E${Math.round(RESULT.netAnnual).toLocaleString()}/yr (${pct(RESULT.effectiveRate)} effective rate). Calculated at afrotools.com/eswatini/sz-paye`; if (navigator.share) { navigator.share({title:'My Eswatini PAYE',text,url:'https://afrotools.com/eswatini/sz-paye'}); } else if (navigator.clipboard) { navigator.clipboard.writeText(text); const btn = document.getElementById('szShareBtn'); btn.textContent = '✓ Copied!'; setTimeout(()=>btn.innerHTML=` Share Result`,2500); } } 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 = `Eswatini PAYE analysis (2025/26, SRA): - Annual gross: E${Math.round(R.gross).toLocaleString()} - SNPF deduction (5%, capped): E${Math.round(R.snpf).toLocaleString()} - Taxable income: E${Math.round(R.gross - R.snpf).toLocaleString()} - Annual PAYE (after E8,200 rebate): E${Math.round(R.annualTax).toLocaleString()} - Annual take-home: E${Math.round(R.netAnnual).toLocaleString()} - Effective tax rate: ${pct(R.effectiveRate)} Give: 1) Summary of SRA position 2) Two tax reduction strategies (SNPF cap, rebate optimization) 3) One SRA compliance point 4) One common mistake. Under 150 words. No markdown.`; 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 Eswatini PAYE — SRA progressive tax, SNPF pension, tax rebate. Be concise, specific, practical. No markdown.', 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, Eswatini. User: gross E${Math.round(R.gross).toLocaleString()}/yr, take-home E${Math.round(R.netAnnual).toLocaleString()}/yr, 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; msgs.scrollTop = msgs.scrollHeight; } catch(err) { aiEl.textContent = 'AI temporarily unavailable.'; } }