An employee’s Moroccan payslip draws on two places in their profile: the Morocco payroll tab, which holds what is specific to Moroccan payroll (CNSS number, agreed net salary, CIMR, dependants), and the Salary tab, shared by all payrolls, where the salary and the month’s items are entered. This article explains how to complete this data, how to simulate a payslip before the month is calculated, and how Morocco payroll goes from gross to net. It is intended for payroll managers and administrators.
Before you start #
- The Morocco payroll module is installed and open to you (see Getting started with Morocco payroll).
- The Moroccan payroll tab of the employee profile: CNSS number, CIMR and dependents of the contract permission: Access tier to read the tab and simulate, Execute tier to save. It applies to people in your role’s population.
- The employee has at least one Moroccan contract (office in Morocco). Otherwise, the Morocco payroll tab does not appear on their profile.
- Entering the salary and the month’s items on the Salary tab requires the usual permissions for that tab.
Opening the Morocco payroll tab #
- Open the employee’s profile.
- If the person has several contracts, choose the Moroccan contract in the profile’s contract selector. The tab works contract by contract; on a contract not paid in Morocco, it shows “This contract is not paid in Morocco.”.
- Click the Morocco payroll tab.
The tab shows up to three cards:
- To complete, if data is missing for this contract’s payslip;
- Record, the data specific to Moroccan payroll;
- Items of the month, a reminder that salary, recurring and one-time payments, bonuses, advances, loans and overtime are entered on the Salary tab, with the Open the Salary tab link.
Completing the record #
- In the Record card, enter the employee’s CNSS number (9 digits).
- If the salary was agreed net, enter the Agreed net base salary (MAD). When filled, it takes precedence over the Salary tab: payroll derives the gross from it, and bonuses and overtime are added gross. Leave it empty for a salary agreed gross.
- Check the Dependants. The help text under the field shows the number derived from the profile (spouse, children). Leave the field empty to keep that number, or enter another number to override it.
- If the employee contributes to the CIMR, tick CIMR member, then enter their Number, the Employee rate and the Employer rate, as decimals (for example 0.06 for 6%).
- Click Save. The message “Record saved.” confirms it.
How dependants are derived #
Morocco payroll reads the “Dependants” section of the profile: the spouse and children under 21 on the last day of the month count; a child without a date of birth also counts. Student children up to 27 and children with a disability cannot be inferred: override the number in the record. The family allowance deduction covers six people at most.
Entering the salary and the month’s items #
Everything that varies from month to month is entered on the profile’s Salary tab, as for other payrolls:
- base salary: the contract’s current salary line, in dirhams (MAD);
- recurring and one-time payments: bonuses, allowances, 13th salary, benefits in kind, etc. Each type becomes a payslip line, under its name, treated according to its Moroccan payroll setting (see Setting up Morocco payroll);
- deductions: loan instalment, advance recovery, taken from net pay after income tax;
- overtime, as payments, if your space does not use the Attendance module.
A weekly or bi-weekly recurring payment is converted to a monthly amount; a recurring payment that does not cover the whole month is pro-rated. Earnings of the same type are added up for the month before its exemption cap is applied.
When the Attendance module pays overtime, Morocco payroll picks it up automatically: daytime, night-time or rest-day hours (Sundays and public holidays), with the working-time profile’s premium, never below the statutory premium of the rate schedule.
On the Salary tab, a banner flags the person’s payment types that do not yet have a Moroccan payroll treatment and block their payslip, with the Set up the remuneration types link.
What blocks a payslip, and what is only flagged #
The To complete card shows the gaps the month’s calculation will run into:
- Blocking (the contract will have no payslip): “No salary on the Salary tab and no agreed net pay”; “Salary or payment not in dirhams on the Salary tab: Moroccan payroll only calculates in MAD”; “Payment type to set up for the Moroccan payroll”.
- Flagged (the payslip is calculated with the note attached): “CNSS number missing”; “CIMR member without a rate”; “Target bonus without an amount: it is not on the payslip”; “Rates to be validated”.
Simulating an employee’s pay #
You can see a month’s payslip before calculating it for the whole company.
- On the profile’s Salary tab, click Simulate the payroll.
- The Payroll simulation panel opens. If the person is covered by several payrolls, choose Morocco payroll in the Payroll list.
- Choose the month, the year and, if there are several, the contract.
- Read the simulated payslip. If data specific to the Morocco payroll tab is missing, the Complete in the Morocco payroll tab link takes you there.
- If needed, click Download the PDF.
The simulation is not binding: it calculates the month’s pay with what is known today, in the payslip template, and saves nothing.
From gross to net: what Morocco payroll calculates #
- Base salary: the one on the Salary tab, or the gross derived from the agreed net. An incomplete month (joining or leaving mid-month) is paid pro rata to the working days under contract, Monday to Saturday, out of 26.
- Seniority bonus, on base salary: 5% after 2 years, 10% after 5, 15% after 12, 20% after 20, 25% after 25 (Labour Code, art. 350 and 351), from the hire date.
- Overtime: hourly rate = monthly base salary ÷ monthly hours of the rate schedule, increased according to the category (Labour Code, art. 201).
- The month’s items, each in gross taxable and gross contributory pay according to its treatment.
- Employee contributions: the CNSS contribution on capped contributory pay, AMO on all contributory pay, CIMR at the employee’s rate.
- Professional expenses, deducted from gross taxable pay according to the rate and cap of the schedule (General Tax Code, art. 59).
- Net taxable salary = gross taxable − professional expenses − employee contributions.
- Income tax: the annual scale applied to annualised net taxable salary, brought back to the month, less the family allowance deduction (General Tax Code, art. 73 and 74).
- Net pay = gross − employee contributions − income tax − deductions from net, plus the previous month’s rounding, minus the current month’s rounding if the employer rounds net pay.
- Employer contributions (CNSS contribution, family allowances, vocational training tax, AMO and AMO participation, CIMR) and employer cost = gross + employer contributions.
Good to know #
- Rates, ceilings and brackets come from a dated rate schedule, published by Illizeo and stored with each payslip. A month’s payslip uses the schedule in force on the last day of that month.
- Each save of the record is logged with the names of the fields changed, never their values. Viewing the record and each simulation are also logged.
- A contract without a sub-company is paid by the company; otherwise by its sub-company. That employer’s numbers appear on the payslip.
Frequently asked questions #
The employee has a salary in Swiss francs on the Salary tab. What happens? #
The contract is blocked: Morocco payroll does not convert currencies. Enter the salary in MAD, or enter an agreed net base salary, which replaces it.
Where do I enter a transport allowance? #
On the Salary tab, with a remuneration type whose Moroccan payroll treatment is set (for example not taxable, not contributory, with a monthly exemption cap). Above the cap, the excess becomes taxable and contributory.
Why doesn’t the number of dependants match the employee’s family? #
Only the spouse and children under 21 are derived from the profile. Override the number in the record for a student child or a child with a disability.
