This is the step people skip, and the one that blocks everything else. Djib-Payroll will not run a production payroll until the statutory tables are company-verified and the rules are active. That gate is deliberate — it exists so nobody pays a workforce using unchecked tax rates.
The two tables
CNSS — social security contributions, split between employee and employer, each with its own rate and a contribution ceiling.
ITS — impôt sur les traitements et salaires, a progressive bracket table applied to taxable pay after deductible CNSS.
Configure CNSS rates
- Go to Payroll → CNSS & Taxes → CNSS rates.
- Click Add CNSS rate.
- Enter the employee and employer percentages, the salary floor and ceiling, and the effective-from date.
- Record the source — the circular or official document the figures came from. This is optional but it is what makes the later verification meaningful.
- Save.
Values are stored as percentages, not decimal multipliers. Enter 4 for 4%, not 0.04.
Configure ITS brackets
- Go to Payroll → CNSS & Taxes → ITS brackets.
- Either upload a table file, or paste bracket rows copied from Excel or Google Sheets — three columns, thousands separators supported.
- Set the tax year.
- Save.
Imported tables land as inactive. That is intended.
Verify and activate
Nothing calculates until you complete both steps:
- Mark company verified — confirms the table was checked against an official source. Recorded with who verified it and when.
- Activate — makes the version live. Activating retires any previously active version.
Editing a rate or bracket resets verification. Any change means it must be checked again before it can go live.
Reading the readiness panel
The compliance page shows one of:
- Ready for Activation — tables verified and rule metadata reviewed. You still activate explicitly.
- NEEDS VERIFICATION — something is missing. The message names exactly what: no verified employee rate, no verified employer rate, no verified ITS table, missing floor/ceiling metadata, or unclassified rules.
Work the list until it clears. Do not work around it.
Test before you commit
Use Run dry-run reconciliation. It pushes a rollback-only pass through the calculation engine and compares statutory output against an anonymised sample. Nothing is saved. If reconciliation fails, your rates are wrong or incomplete.
Common questions
Rates changed mid-year. What do I do? Create a new version with the new effective-from date, verify it, and activate. The previous version retires automatically and history keeps using the rates in force at the time.
Can I bulk-activate everything? No, and you should not want to. Activation is per version and deliberate.
Why is my run blocked when the rates are clearly entered? Entered is not the same as verified and active. Check the readiness panel for the specific reason.
Next
Continue with Running payroll.