DataFirefly Dunning — Documentation
Install, configure and use B2B overdue reminders: three-level scenarios, late-payment interest and €40 indemnity calculation, PDF letters, cron and receivables dashboard.
Overview
DataFirefly Dunning automates the amicable recovery of B2B orders paid by bank wire that remain unpaid. As soon as an eligible order is validated, the module opens a receivable, tracks its due date, triggers graduated reminders on a schedule you define, and calculates the late-payment interest and the fixed €40 recovery indemnity provided for by the French Commercial Code.
Three reminder levels ship on install (courtesy reminder, firm reminder with penalties and PDF, formal notice) and remain fully configurable. A dedicated dashboard centralises the outstanding amount, the aged balance and the history of sends.
Installation
- Drop the
dfdunningfolder into your shop’s/modules/directory, or install the ZIP archive from Modules > Module Manager. - Click Install. The module creates its tables, its three default reminder levels, its initial configuration, a security token for the cron, and the admin tab under Orders > Overdue reminders (DF Dunning).
- Clear the PrestaShop cache if needed from Advanced Parameters > Performance.
Configuration
Configuration is available from Modules > Module Manager > dfdunning > Configure. The main settings are:
- Tracked payment modules: the modules whose orders open a receivable. Bank wire (
ps_wirepayment) by default. - Tracked order states: the states treated as “awaiting payment”. The Awaiting bank wire payment state by default.
- Payment term: number of days granted before the due date. 30 days by default.
- Late-payment rate: the annual rate applied. 12.15% by default (ECB key rate plus 10 points).
- Fixed indemnity: fixed amount per overdue invoice. €40 by default.
- Minimum interval between two reminders: anti-spam safeguard, 3 days by default.
- Automatic sending: enables reminder sending when the cron runs.
- Blind copy (BCC): address receiving a copy of every reminder, for the accounting record.
The default rate matches the ECB refinancing rate plus 10 points. This rate changes: remember to review it each half-year (January and July) in the configuration.
The three reminder levels
A reminder level defines when and how a customer is reminded. Each level is configured from the settings: position in the sequence, trigger delay (in days after the due date), e-mail template, whether penalties are added, PDF attachment, and activation.
Level 1 — Courtesy reminder (D+7)
A simple reminder, with no penalties or attachment, sent 7 days after the due date. Goal: flag the oversight without straining the business relationship.
Level 2 — Firm reminder (D+15)
A firmer reminder, with the breakdown of late-payment interest and the fixed indemnity, accompanied by a PDF letter. Sent 15 days after the due date.
Level 3 — Formal notice (D+30)
A formal notice restating the sums due, the penalties and the reference to article 1231-6 of the French Civil Code, with a PDF letter and an 8-day settlement deadline. Sent 30 days after the due date.
The delays and content of each level are indicative: adapt them to your recovery policy and your terms and conditions.
Penalty calculation
For each overdue receivable, the module calculates:
- Late-payment interest: amount due × (rate / 100) × (days overdue / 365).
- The fixed recovery indemnity: a fixed amount per invoice (€40 by default), due from the first day of delay.
The amount due is derived from the order’s total paid and total actually collected, which handles partial payments. The legal basis is articles L441-10 and D441-5 of the French Commercial Code for the indemnity and penalties, and article 1231-6 of the French Civil Code for the formal notice.
The letter templates reflect the French legal framework in force. Have them validated by your legal counsel and adapt them to your business before the formal-notice stage. DataFirefly does not provide legal advice.
Cron automation
Receivable synchronisation and automatic reminder sending rely on a front controller secured by a token. The full URL, with the token generated on install, is shown in the configuration screen, ready to copy. It has the following form:
https://yourshop.tld/index.php?fc=module&module=dfdunning&controller=cron&token=YOUR_TOKEN
Schedule a daily call, for example at 7 a.m., via your server’s scheduled task (crontab):
0 7 * * * curl -s "https://yourshop.tld/index.php?fc=module&module=dfdunning&controller=cron&token=YOUR_TOKEN"
On each run, the module updates the receivables (due dates, closings, exclusions) then, if automatic sending is enabled, dispatches the reminders that have come due, respecting the configured minimum interval.
The token protects access to the cron: without it, the URL returns an error. Regenerate it if you believe it has been exposed.
Receivables dashboard
The dashboard, under Orders > Overdue reminders (DF Dunning), shows:
- Six key indicators: total outstanding, amount due, overdue receivables, open cases, theoretical penalties and reminders this month.
- An aged balance splitting the outstanding by bucket: not due, 1-30, 31-60, 61-90 and over 90 days.
- A filterable list of receivables (open, overdue, paid, excluded), with per-row actions: send a chosen reminder level, mark as paid, exclude or re-include, download the PDF letter.
A case closes automatically when the order moves to a paid state, and is excluded if the order is cancelled, refunded or in payment error.
PDF letters and e-mails
Reminders are sent by e-mail (HTML and text versions) and, depending on the level, accompanied by a PDF letter. The letters are generated in French or English based on the order language. The templates use variables replaced at send time: first name, last name, order reference, amount due, due date, days overdue, penalties, fixed indemnity, total due, applied rate and shop name.
The e-mails are editable from Design > Translations > E-mail translations, language by language, like any PrestaShop e-mail.
FAQ
Which orders get reminders?
Only those matching the payment modules and states selected in the configuration. By default, orders paid by bank wire awaiting settlement.
Is a partially paid order handled?
Yes. The amount due accounts for sums already collected; only the remaining part is chased, and the case closes when the balance is settled.
Is the module compatible with PrestaShop 9 and multistore?
Yes. The admin controllers rely on ModuleAdminController for PrestaShop 8 and 9 compatibility, with no Composer, and the module handles the multistore context.
Can I trigger a reminder manually?
Yes. From the dashboard, you can immediately send the level of your choice for a given receivable, independently of the cron.