🇿🇦 Built for South Africans · 2026/27 SARS Tax Tables sataxhub.co.za
SA

SA TaxHub

Free South African Tax Calculators · 2026/27

Advertisement · Google AdSense Leaderboard (728×90)

South Africa's #1 Free Tax Calculator Suite

Accurate 2026/27 SARS tax calculations for individuals, businesses and property owners. Fast, free, no sign-up required.

💰 PAYE / Income Tax 🧾 VAT 15% 🏢 Company Tax 🏡 Bond Repayment
💰

Income Tax / PAYE

Calculate monthly & annual PAYE with rebates, UIF & SDL

🧾

VAT Calculator

Add or remove 15% VAT instantly from any amount

🏢

Company Tax

Corporate tax & SBC rates for small businesses

🏡

Bond Repayment

Monthly home loan repayment with amortisation schedule

📅

Provisional Tax

Estimate your IRP6 payments (1st & 2nd period)

🔧

More Tools

Medical credits, retirement, capital gains & more

2026/27 Key Tax Facts
R95,750
R17,235
15%
45%
27%
18%
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice. Always consult a registered tax practitioner or SARS directly. Calculations may not cover all individual circumstances.
About SA TaxHub

SA TaxHub is South Africa's free online tax calculator suite, built specifically for South African taxpayers, small business owners, and financial professionals. All calculators are updated for the 2026/27 SARS tax year and use the latest official tax tables published by the South African Revenue Service (SARS).

Whether you need to calculate your monthly PAYE deductions, work out the VAT on a transaction, estimate your company tax liability, or plan your home loan repayments, SA TaxHub gives you instant, accurate results — completely free, with no registration required.

Our calculators are designed to be simple yet powerful, giving you the gross income, tax payable, and nett amounts clearly — just like a professional tax spreadsheet, but accessible from any device.

Understanding South African Income Tax 2026/27

South Africa uses a progressive tax system, meaning the more you earn, the higher the percentage of tax you pay. SARS divides income into tax brackets, with rates ranging from 18% on the lowest income band up to 45% on income above R1,817,000 per year.

Every South African taxpayer is entitled to a Primary Rebate of R17,235 per year (2026/27), which is deducted directly from your tax liability — not your income. Taxpayers aged 65 and over receive an additional Secondary Rebate, and those 75 and over receive a Tertiary Rebate as well.

The tax-free threshold for the 2026/27 tax year is R95,750 for taxpayers under 65. This means if your annual income is below this amount, you pay no income tax at all.

PAYE (Pay As You Earn) is the system SARS uses to collect income tax from salaried employees. Your employer deducts PAYE from your salary every month and pays it directly to SARS on your behalf. Use our PAYE Calculator to see exactly how much tax is deducted from your salary.

VAT in South Africa — What You Need to Know

Value Added Tax (VAT) in South Africa is currently set at 15%, effective since 1 April 2018 when it was increased from 14%. VAT is administered by SARS and applies to most goods and services sold in South Africa.

Businesses with an annual turnover exceeding R1 million are required to register for VAT. Businesses with turnover between R50,000 and R1 million may register voluntarily. Once registered, businesses must charge VAT on their sales, claim back VAT on their purchases, and submit regular VAT returns to SARS.

Certain goods and services are zero-rated (VAT charged at 0%), including basic food items like brown bread, maize meal, milk, eggs, and vegetables. Some services are VAT exempt entirely, including residential rental and certain financial services. Use our VAT Calculator to quickly add or remove VAT from any amount.

Frequently Asked Questions

How do I calculate my take-home pay in South Africa?

Use our PAYE Calculator above. Enter your gross annual salary, select your age group, and add any retirement fund contributions or medical aid members. The calculator instantly shows your income tax, UIF deduction, nett annual salary, and monthly take-home pay.

What is the tax threshold for 2026/27?

For the 2026/27 tax year, individuals under 65 pay no income tax if their annual income is below R95,750. The threshold is R148,217 for taxpayers aged 65–74 and R165,689 for those aged 75 and over.

How much VAT do I pay in South Africa?

The standard VAT rate in South Africa is 15%. To calculate VAT on a price, multiply the amount by 0.15. To remove VAT from a VAT-inclusive price, divide by 1.15. Our VAT Calculator does this instantly for you.

What is the company tax rate in South Africa?

The standard corporate income tax rate in South Africa is 27% for the 2026/27 tax year. Small Business Corporations (SBCs) with an annual turnover below R20 million qualify for reduced progressive tax rates starting at 0% on the first R95,750 of taxable income.

Do I need to submit a tax return in South Africa?

Most salaried employees whose only income is from one employer and whose tax affairs are straightforward are automatically assessed by SARS and may not need to file a return. However, if you have additional income sources, investments, rental income, or are a provisional taxpayer, you will need to submit an ITR12 return annually via SARS eFiling.

Income Tax / PAYE Calculator 2026/27
R
R
R0 R2M
R0
R0
R0
R0
R0
0%
Tax burden 0%
Tax Bracket Breakdown
Enter an income above.
Advertisement · In-Content (728×90)
Calculation History
#Gross IncomeTaxNettEff. RateDate
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice. Always consult a registered tax practitioner or SARS directly. Calculations may not cover all individual circumstances.
VAT Calculator – 15% South Africa
R
%
R0
R0
R0
VAT History
#ModeExcl. VATVATIncl. VATDate
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice. Always consult a registered tax practitioner or SARS directly.
Company Tax / SBC Calculator 2026/27
R
R0
R0
R0
0%
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice. Always consult a registered tax practitioner or SARS directly.
Home Loan / Bond Repayment Calculator
R
R
%
R0
R0
R0
R0
R100K R10M
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice. Always consult a registered tax practitioner or SARS directly.
Provisional Tax Estimator (IRP6) 2026/27
R
R
R
R0
R0
R0
R0
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice. Always consult a registered tax practitioner or SARS directly.
Medical Aid Tax Credits 2026/27
R
R
R0
R0
R0
R0
Disclaimer: This tool provides estimates only based on current SARS tax tables (2026/27). It is not official tax advice.
💬 Tax Assistant
Hi! I'm SA TaxHub's AI assistant. Ask me to explain any of your tax results, or ask a general SA tax question.
// ── TAX TABLES 2026/27 ── (easy to update) const TAX={ brackets:[ {min:0,max:237100,base:0,rate:.18}, {min:237101,max:370500,base:42678,rate:.26}, {min:370501,max:512800,base:77362,rate:.31}, {min:512801,max:673000,base:121475,rate:.36}, {min:673001,max:857900,base:179147,rate:.39}, {min:857901,max:1817000,base:251258,rate:.41}, {min:1817001,max:Infinity,base:644489,rate:.45} ], rebates:{under65:17235,age65:9444,age75:3145}, thresholds:{under65:95750,age65:148217,age75:165689}, medCredit:{main:364,dep1:246,addl:246}, sbcBrackets:[ {min:0,max:95750,base:0,rate:0}, {min:95751,max:365000,base:0,rate:.07}, {min:365001,max:550000,base:18858.25,rate:.21}, {min:550001,max:Infinity,base:57703.25,rate:.27} ] }; function calcTax(income,age){ const b=TAX.brackets; let tax=0; for(let i=0;ib[i].min-1){ const chunk=Math.min(income,b[i].max)-(b[i].min-1); tax=b[i].base+(income-(b[i].min-1))*b[i].rate; if(income<=b[i].max)break; } } // Rebates let rebate=TAX.rebates.under65; if(age==='65to74')rebate+=TAX.rebates.age65; if(age==='75plus')rebate+=TAX.rebates.age65+TAX.rebates.age75; tax=Math.max(0,tax-rebate); // Below threshold → 0 const thresh=age==='under65'?TAX.thresholds.under65:age==='65to74'?TAX.thresholds.age65:TAX.thresholds.age75; if(income<=thresh)tax=0; return tax; } function fmt(n){return'R'+Math.round(n).toLocaleString('en-ZA')} function fmt2(n){return'R'+n.toLocaleString('en-ZA',{minimumFractionDigits:2,maximumFractionDigits:2})} function pct(n){return(n*100).toFixed(1)+'%'} // ── PAYE ── function calcPAYE(){ const income=+document.getElementById('paye-income').value||0; const age=document.getElementById('paye-age').value; const retire=Math.min(+document.getElementById('paye-retire').value||0,Math.min(income*.275,350000)); const med=+document.getElementById('paye-medical').value||0; const slider=document.getElementById('paye-slider'); slider.value=income; document.getElementById('paye-slider-val').textContent=income.toLocaleString('en-ZA'); const taxIncome=Math.max(0,income-retire); let tax=calcTax(taxIncome,age); // Medical tax credit let mtc=0; if(med>=1)mtc+=TAX.medCredit.main*12; if(med>=2)mtc+=TAX.medCredit.dep1*12; if(med>=3)mtc+=TAX.medCredit.addl*(med-2)*12; tax=Math.max(0,tax-mtc); const uif=Math.min(income*.01,17712*.01*12); const nett=income-tax-uif; const eff=income>0?tax/income:0; document.getElementById('pr-gross').textContent=fmt(income); document.getElementById('pr-tax').textContent=fmt(tax); document.getElementById('pr-uif').textContent=fmt(uif); document.getElementById('pr-nett').textContent=fmt(nett); document.getElementById('pr-monthly').textContent=fmt(nett/12); document.getElementById('pr-eff').textContent=pct(eff); document.getElementById('pr-bar').style.width=Math.min(eff*100,100)+'%'; document.getElementById('pr-bar-pct').textContent=pct(eff); // Bracket breakdown let html=''; TAX.brackets.forEach(br=>{ if(taxIncome>br.min-1){ const chunk=Math.min(taxIncome,br.max)-(br.min-1); const t=chunk*br.rate; html+=``; } }); html+=``; html+='
BracketRateTax
R${(br.min).toLocaleString('en-ZA')} – ${br.max===Infinity?'R1,817,001+':'R'+br.max.toLocaleString('en-ZA')}${(br.rate*100).toFixed(0)}%${fmt(t)}
Less Rebates & Credits-${fmt(mtc+TAX.rebates[age==='under65'?'under65':age==='65to74'?'age65':'age65']+retire*0)}
'; document.getElementById('paye-bracket-table').innerHTML=html; } let payeHistory=[]; function addPayeHistory(){ const income=+document.getElementById('paye-income').value||0; payeHistory.push({income,tax:document.getElementById('pr-tax').textContent,nett:document.getElementById('pr-nett').textContent,eff:document.getElementById('pr-eff').textContent,date:new Date().toLocaleDateString('en-ZA')}); renderHistory('paye'); } function renderHistory(type){ const tbody=document.getElementById(type+'-history'); const arr=type==='paye'?payeHistory:type==='vat'?vatHistory:[]; tbody.innerHTML=arr.map((r,i)=>{ if(type==='paye')return`${i+1}${fmt(r.income)}${r.tax}${r.nett}${r.eff}${r.date}`; return`${i+1}${r.mode}${r.excl}${r.vat}${r.incl}${r.date}`; }).join(''); } function clearHistory(type){ if(type==='paye')payeHistory=[]; else if(type==='vat')vatHistory=[]; renderHistory(type); } function exportCSV(type){ const arr=type==='paye'?payeHistory:vatHistory; if(!arr.length){alert('No history to export.');return;} const headers=type==='paye'?'#,Gross Income,Tax,Nett,Eff Rate,Date':'#,Mode,Excl VAT,VAT,Incl VAT,Date'; const rows=arr.map((r,i)=>type==='paye'?`${i+1},${r.income},${r.tax},${r.nett},${r.eff},${r.date}`:`${i+1},${r.mode},${r.excl},${r.vat},${r.incl},${r.date}`); const csv=[headers,...rows].join('\n'); const a=document.createElement('a'); a.href='data:text/csv;charset=utf-8,'+encodeURIComponent(csv); a.download='sataxhub-'+type+'-history.csv'; a.click(); } // ── VAT ── let vatMode_='add'; function vatMode(m){ vatMode_=m; document.getElementById('vat-tab-add').classList.toggle('active',m==='add'); document.getElementById('vat-tab-rem').classList.toggle('active',m==='rem'); document.getElementById('vat-input-label').textContent=m==='add'?'Amount Excluding VAT (R)':'Amount Including VAT (R)'; calcVAT(); } function setVAT(v){document.getElementById('vat-amount').value=v;calcVAT();} function calcVAT(){ const amt=+document.getElementById('vat-amount').value||0; const rate=+document.getElementById('vat-rate').value/100||.15; let excl,vat,incl; if(vatMode_==='add'){excl=amt;vat=amt*rate;incl=amt+vat;} else{incl=amt;excl=amt/(1+rate);vat=incl-excl;} document.getElementById('vr-excl').textContent=fmt2(excl); document.getElementById('vr-vat').textContent=fmt2(vat); document.getElementById('vr-incl').textContent=fmt2(incl); } let vatHistory=[]; function addVatHistory(){ vatHistory.push({mode:vatMode_==='add'?'Add VAT':'Remove VAT',excl:document.getElementById('vr-excl').textContent,vat:document.getElementById('vr-vat').textContent,incl:document.getElementById('vr-incl').textContent,date:new Date().toLocaleDateString('en-ZA')}); renderHistory('vat'); } // ── COMPANY ── let coMode_='corp'; function coMode(m){ coMode_=m; document.getElementById('co-tab-corp').classList.toggle('active',m==='corp'); document.getElementById('co-tab-sbc').classList.toggle('active',m==='sbc'); document.getElementById('co-turnover-group').style.display=m==='sbc'?'block':'none'; calcCompany(); } function calcCompany(){ const income=+document.getElementById('co-income').value||0; let tax=0; if(coMode_==='corp'){ tax=income*.27; }else{ const b=TAX.sbcBrackets; for(let i=0;ib[i].min-1&&income<=b[i].max){ tax=b[i].base+(income-b[i].min)*b[i].rate; break; }else if(i===b.length-1&&income>b[i].min){ tax=b[i].base+(income-b[i].min)*b[i].rate; } } } const nett=income-tax; document.getElementById('cor-gross').textContent=fmt(income); document.getElementById('cor-tax').textContent=fmt(tax); document.getElementById('cor-nett').textContent=fmt(nett); document.getElementById('cor-eff').textContent=income>0?pct(tax/income):'0%'; } // ── BOND ── function calcBond(){ const price=+document.getElementById('bond-price').value||0; const deposit=+document.getElementById('bond-deposit').value||0; const annualRate=+document.getElementById('bond-rate').value/100||.1175; const years=+document.getElementById('bond-term').value||20; const loan=Math.max(0,price-deposit); const r=annualRate/12; const n=years*12; const monthly=loan>0&&r>0?loan*r*Math.pow(1+r,n)/(Math.pow(1+r,n)-1):0; const total=monthly*n; const interest=total-loan; document.getElementById('br-loan').textContent=fmt(loan); document.getElementById('br-monthly').textContent=fmt(monthly); document.getElementById('br-total').textContent=fmt(total); document.getElementById('br-interest').textContent=fmt(interest); } // ── PROVISIONAL ── function calcProv(){ const income=+document.getElementById('prov-income').value||0; const age=document.getElementById('prov-age').value; const paye=+document.getElementById('prov-paye').value||0; const credits=+document.getElementById('prov-credits').value||0; const totalTax=calcTax(income,age); const balance=Math.max(0,totalTax-paye-credits); const p1=balance/2; const p2=balance-p1; document.getElementById('pvr-total').textContent=fmt(totalTax); document.getElementById('pvr-credits').textContent=fmt(paye+credits); document.getElementById('pvr-p1').textContent=fmt(p1); document.getElementById('pvr-p2').textContent=fmt(p2); } // ── MEDICAL ── function calcMed(){ const members=+document.getElementById('med-members').value||1; const contrib=+document.getElementById('med-contrib').value||0; const oop=+document.getElementById('med-oop').value||0; const age=document.getElementById('med-age').value; let monthlyCr=TAX.medCredit.main; if(members>=2)monthlyCr+=TAX.medCredit.dep1; if(members>2)monthlyCr+=TAX.medCredit.addl*(members-2); const annualCr=monthlyCr*12; const annualContrib=contrib*12; const excess=Math.max(0,annualContrib-annualCr*4); let addlCr=0; if(age==='65plus'){addlCr=(oop+excess)*.33;} else{const thresh=excess-annualCr*3;addlCr=thresh>0?thresh*.25:0;} document.getElementById('mr-monthly').textContent=fmt(monthlyCr); document.getElementById('mr-annual').textContent=fmt(annualCr); document.getElementById('mr-excess').textContent=fmt(excess); document.getElementById('mr-add').textContent=fmt(addlCr); } // ── RETIREMENT ── function calcRet(){ const income=+document.getElementById('ret-income').value||0; const contrib=+document.getElementById('ret-contrib').value||0; const maxPct=income*.275; const maxAmt=350000; const maxDed=Math.min(maxPct,maxAmt); const deduct=Math.min(contrib,maxDed); const nonDed=Math.max(0,contrib-deduct); const saving=deduct*.36;// approx marginal document.getElementById('rr-max').textContent=fmt(maxDed); document.getElementById('rr-deduct').textContent=fmt(deduct); document.getElementById('rr-nonded').textContent=fmt(nonDed); document.getElementById('rr-saving').textContent=fmt(saving); } // ── CGT ── function calcCGT(){ const proceeds=+document.getElementById('cgt-proceeds').value||0; const base=+document.getElementById('cgt-base').value||0; const type=document.getElementById('cgt-type').value; const primaryExcl=+document.getElementById('cgt-primary').value||0; const rawGain=Math.max(0,proceeds-base); const gain=Math.max(0,rawGain-primaryExcl); const annualExcl=40000; const taxableGain=Math.max(0,gain-annualExcl)*.4; const rates={ind:.45,company:.27,trust:.45}; const cgt=taxableGain*rates[type]; document.getElementById('cgr-gain').textContent=fmt(gain); document.getElementById('cgr-taxable').textContent=fmt(taxableGain); document.getElementById('cgr-cgt').textContent=fmt(cgt); } // ── TOOLS MODE ── function toolMode(m){ ['med','ret','cgt'].forEach(t=>{ document.getElementById('tool-'+t).style.display=t===m?'block':'none'; document.getElementById('tool-tab-'+t).classList.toggle('active',t===m); }); } // ── PAGE NAV ── function showPage(id,btn){ document.querySelectorAll('.page').forEach(p=>p.classList.remove('active')); document.getElementById('page-'+id).classList.add('active'); document.querySelectorAll('.tab-btn').forEach(b=>b.classList.remove('active')); if(btn)btn.classList.add('active'); window.scrollTo({top:0,behavior:'smooth'}); } // ── AI CHAT ── function toggleChat(){ document.getElementById('chatPanel').classList.toggle('open'); } async function sendChat(){ const inp=document.getElementById('chatInput'); const q=inp.value.trim(); if(!q)return; inp.value=''; const msgs=document.getElementById('chatMsgs'); msgs.innerHTML+=`
${q}
`; msgs.innerHTML+=`
Thinking...
`; msgs.scrollTop=msgs.scrollHeight; try{ const res=await fetch('https://api.anthropic.com/v1/messages',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({model:'claude-sonnet-4-20250514',max_tokens:300,system:'You are a helpful South African tax assistant for SA TaxHub. Answer questions about SARS tax, PAYE, VAT, and South African tax law concisely in 2-3 sentences. Always end with a disclaimer to consult a registered tax practitioner.',messages:[{role:'user',content:q}]})}); const data=await res.json(); const txt=data.content?.[0]?.text||'Sorry, I could not get a response.'; document.getElementById('chat-typing').textContent=txt; }catch(e){ document.getElementById('chat-typing').textContent='AI assistant unavailable. Please consult a registered tax practitioner for advice.'; } msgs.scrollTop=msgs.scrollHeight; } // ── INIT ── calcPAYE();calcVAT();calcCompany();calcBond();calcProv();calcMed();calcRet();calcCGT();