Lumadro

Customer Statements for Perfex CRM

Statements that stay correct when a customer is invoiced in more than one currency, with ageing beside them.

$49 one payment, no subscription, updates included

Buy Open the demo

Demo: crmdemo.lumadro.com/admin · demo@lumadro.com / demo

The problem

Perfex has a statement of account on the customer profile. Open it for a customer you have invoiced in two currencies and read the closing balance: it sums the totals and prints the result in one currency, which is wrong in both. There is no ageing anywhere in Perfex, no way to send statements to everyone who owes you, and no way to get any of it out as a file.

This module fixes those four things and leaves the rest of Perfex alone.

A statement of account showing a dollar section closing at 1,900 and a separate euro section closing at 4,000, each with its own ageing table
One customer, two currencies, two balances. They are never added together.

What you get

Receivables ageing report with separate USD and EUR tables, totals by sale agent, and a chase list flagging a customer over their credit limit
Ageing per currency, totals by whoever sold the invoice, and a chase list that flags anyone over their credit limit.

Four things this refuses to get wrong

RuleWhy
Currencies never mixA balance in two currencies is two balances. One number would be wrong in both, and a collections call made from it is worse than no call.
Drafts and cancelled invoices never appearNeither is a debt. Nor are payments recorded against them, which Perfex's own statement still subtracts.
Outstanding is computed, not readAn invoice's total, less payments against it, less credits applied. A status field cannot tell you what a part-paid invoice still owes.
One engine, both directionsSupplier statements run through the same tested ledger rather than a second copy that drifts.

Tested, not just written

190 assertions across three suites: the arithmetic and exports, the real model against a real database, and the access rules that decide who may read whose statement.

One matters more than the others. The closing balance and the ageing total come from completely different queries, and they are asserted equal on every build. If they ever disagree, one of them is showing your customer a wrong number.

A statement PDF with company details, both currency sections and a tear-off remittance advice panel at the foot
The PDF a customer receives, with the remittance slip they send back.

A schema check, because guessing is not a plan

Perfex publishes no schema reference. Rather than assume, the module ships a page that reads your database, confirms every table and column it needs, and tells you exactly what to correct if your install differs. Run it once after installing, before you trust a balance.

Who should not buy this

If you invoice in one currency, never need ageing, never send in bulk and never need a file, the statement built into Perfex is enough and you should keep your money.

If you want full bookkeeping, the Accounting and Bookkeeping module does that, including ageing, once you map invoices and payments into a chart of accounts. If you want collections workflow with cases, promises and disputes, two dunning modules do that properly. This is the document and the ageing, not the ledger and not the workflow.

Requirements

Perfex CRM 3.2 or newer, PHP 8.1 or newer, tested on 3.4.1. No third-party service, no subscription, no external API. Nothing phones home and nothing expires.

Buy for $49 Open the demo first

Full refund within 14 days if it does not do what this page says. Tell me what went wrong first, because most problems are a five-minute fix.