Payment terms in Morocco: what law 69-21 requires of you

60 and 120-day caps, a fine indexed on the central bank rate, a DGI declaration: what law 69-21 changes for your receivables — and your payables.

RegulatoryAbdelmoula Haddouri

For a long time, a late payment in Morocco was a private matter between a supplier and its customer: missing cash on one side, free credit on the other. Since law 69-21, it is also a tax matter. Paying late now exposes the payer to a fine, and the delay must be declared to the tax administration by the party that caused it.

In other words, the question is no longer just “when will my customers pay me?” but also “can I prove that I pay my suppliers on time?”. Both are managed with the same data — the data sitting in your Sage accounting.

What the law sets

Law 69-21, which amends law 15-95 (the commercial code), lays down a simple principle: an invoice is due at 60 days from its issue date. The parties may contractually agree on a longer term, capped at 120 days; certain long-cycle sectors can be granted, by regulation, a derogation of up to 180 days.

Entry into force was phased by company size, measured on turnover: the largest companies were covered from July 2023, then the threshold stepped down to reach most companies with more than two million dirhams of turnover. If you are reading this in 2026, you are unlikely to be out of scope — but that point, like the other implementation details, is worth confirming with your advisor.

The fine, and the declaration that comes with it

The mechanism has two stages, and the second is the one people underestimate:

  1. A monetary fine on invoices paid late, calculated on the invoice amount: Bank Al-Maghrib’s policy rate for the first month of delay, then an additional percentage per further month or fraction of a month.
  2. A periodic declaration to the DGI, in which the company itself declares its late-paid invoices and spontaneously pays the corresponding fine. Failing to declare is itself sanctioned.

That second stage changes the nature of the subject. A fine can be provisioned. A periodic declaration has to be produced — which means knowing, invoice by invoice, the issue date, the payment date, and the applicable contractual term.

The same number, seen from both sides

On the supplier side, your exposure is direct: every purchase invoice paid beyond the deadline feeds your own declaration and your own fine. The invoice approval loop — the very one that drags when an invoice wanders from desk to desk — becomes a compliance issue. It is one of the most concrete arguments for automating supplier invoice capture: an invoice read, checked and posted on the day it arrives starts three weeks ahead of the same invoice re-keyed at month end.

On the customer side, the law does not collect your receivables for you, but it shifts the balance of power: your in-scope customers now face a tax cost for paying you late. Provided, that is, you invoice quickly, track actual due dates, and react before the delay settles in. A bad debt is rarely decided at reminder time — it is decided when one more order is accepted from a customer already over their limit. That is exactly the ground OptiRisque covers: a creditworthiness record per customer, exposure alerts, a block applied inside Sage.

What your Sage database already knows — and what it does not say

Everything the law requires already exists in your accounts: document dates, due dates, settlements, matching. The problem is not the data, it is setting it in motion. An aged balance printed once a month records the delays; it does not prevent them.

Managing payment terms, concretely, means:

  • reliable due dates — a contractual term recorded per account, not recalculated in a spreadsheet;
  • an alert at the useful moment — at order time and as the due date approaches, not after;
  • a usable trail — being able to reconstruct, for a given period, what was paid on time and what was not, in a format that prepares the declaration.

That is the job of an operations layer sitting on the Sage database: it reads the same entries, but it looks at them every day.

Where to start

Three quick checks, in order: are contractual payment terms recorded anywhere other than in paper contracts; does your purchase invoice approval loop fit within the legal deadline, supporting documents included; and who, by name, sees a customer breach on the day it happens. If any of the three answers is “nobody” or “a spreadsheet”, that is where the subject lives.

The fine print — thresholds, declaration frequency, derogated sectors — belongs with your accountant or tax advisor. The data mechanics belong to your Sage installation, and that is ground we know well.


Considering a Sage integration?

An audit of your installation tells you what integrates as-is and what needs development.

Published by Abdelmoula Haddouri — InERP.