Côte d'Ivoire PAYE
Calculator 2025

DGI progressive tax (0%–25%), CNPS social security (6.3% employee + 15.75% employer). Monthly computation per DGI bands.

✦ Includes AI Advisor DGI 2025 Verified CNPS Social Security XOF · CFA Franc

Last verified: January 2025 · Source: DGI (dgi.gouv.ci) · Côte d'Ivoire Tax Code

2025 Key Facts: DGI bands (monthly): XOF 0–300,000 at 0%; XOF 300,001–600,000 at 10%; XOF 600,001–900,000 at 15%; XOF 900,001–1,500,000 at 20%; above XOF 1,500,000 at 25%. CNPS employee 6.3%, tax-deductible. Employer 15.75%.

Enter Your Details CFA Franc · XOF
Monthly Gross Salary XOF 750,000
XOF 100,000XOF 20,000,000
Or type exact monthly amountBefore any deductions
XOF
Active DeductionsToggle to include / exclude
CNPS Social Security
6.3% employee — tax-deductible

CNPS employee contribution (6.3%) is fully deductible from taxable income before DGI is calculated. This reduces your taxable income and therefore your DGI tax. Employer CNPS (15.75%) is a separate employer cost.

Monthly Take-Home Pay
XOF 0
After DGI & all deductions
Effective Tax Rate 0%
Côte d'Ivoire Tax FAQ

Common PAYE Questions

What are the Côte d'Ivoire DGI tax bands for 2025?

Five monthly bands: 0% on first XOF 300,000; 10% on XOF 300,001–600,000; 15% on XOF 600,001–900,000; 20% on XOF 900,001–1,500,000; 25% above XOF 1,500,000. These bands are applied monthly against taxable income (after CNPS deduction).

Is CNPS contribution deductible from DGI taxable income?

Yes — the employee CNPS contribution (6.3%) is fully deductible from gross pay before calculating DGI tax. This reduces your taxable income and therefore your DGI tax. The employer's CNPS contribution (15.75%) is a separate employer cost.

What is CNPS in Côte d'Ivoire?

The Caisse Nationale de Prévoyance Sociale (CNPS) is the mandatory social security scheme covering pensions, health insurance, and disability benefits. Employee contribution is 6.3% of gross salary and is fully tax-deductible.

When must employers remit DGI to tax authorities?

DGI taxes must be filed and paid monthly to the DGI, typically by the 15th of the following month. CNPS contributions are also typically remitted monthly. Check with DGI (dgi.gouv.ci) for your specific filing schedule.

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 Côte d'Ivoire PAYE breakdown: Gross XOF ${Math.round(RESULT.gross).toLocaleString('fr-CI')}/mo → Take-home XOF ${Math.round(RESULT.netMonthly).toLocaleString('fr-CI')}/mo (${pct(RESULT.effectiveRate)} effective rate). Calculated at afrotools.com/cote-divoire/ci-paye`; if (navigator.share) { navigator.share({title:'My Côte d\'Ivoire PAYE',text,url:'https://afrotools.com/cote-divoire/ci-paye'}); } else if (navigator.clipboard) { navigator.clipboard.writeText(text); const btn = document.getElementById('ciShareBtn'); 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 = `Côte d'Ivoire PAYE analysis (2025, DGI): - Monthly gross: XOF ${Math.round(R.gross).toLocaleString('fr-CI')} - CNPS employee (6.3%, tax-deductible): XOF ${Math.round(R.cnps).toLocaleString('fr-CI')}/mo - Taxable income after CNPS: XOF ${Math.round(R.gross - R.cnps).toLocaleString('fr-CI')}/mo - Monthly DGI: XOF ${Math.round(R.monthlyDGI).toLocaleString('fr-CI')} - Monthly take-home: XOF ${Math.round(R.netMonthly).toLocaleString('fr-CI')} - Effective tax rate: ${pct(R.effectiveRate)} - Employer CNPS (15.75%): XOF ${Math.round(R.empCNPS).toLocaleString('fr-CI')}/mo - Total employer cost: XOF ${Math.round(R.totalEmployerCostMonthly).toLocaleString('fr-CI')}/mo Give: 1) Plain English summary of DGI position 2) Two specific legal ways to reduce Côte d'Ivoire tax liability 3) One DGI compliance point. Under 200 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 Côte d\'Ivoire DGI — progressive tax, CNPS contributions. Be concise, 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, Côte d'Ivoire. User: monthly gross XOF ${Math.round(R.gross).toLocaleString('fr-CI')}, take-home XOF ${Math.round(R.netMonthly).toLocaleString('fr-CI')}, 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();});