The first working day of the month
Finance opens the PSA's billing screen. Recurring agreements are ready to invoice, time entries have been approved (mostly), and a few hardware orders are waiting. They run the batch and sync it to the accounts package. Most invoices go through. Six fail the sync because of a tax code or a missing customer mapping. Two clients get invoices with no managed fee because their agreement's end date passed without renewal. One gets two copies of the same licence line.
The mistakes are caught by clients, not by finance. The accounting practice with forty users emails to ask why their invoice doubled. Credit notes follow, and the credit notes also need to sync.
Why MSP invoice runs are fragile
An MSP invoice draws on more sources than most service businesses, and the PSA's billing screen shows what it is about to invoice, not whether that is sensible compared with last month.
- Agreements with end dates silently stop billing.
- Per-seat quantities change mid-month and are updated by hand.
- Time entries not approved by cut-off are left out without anyone noticing.
- Customer and item mappings between PSA and accounts package break when records change.
- Tax codes differ by item and by client location.
What billing errors cost
| Error | Effect |
|---|---|
| Managed fee missing | Revenue lost until someone spots it |
| Duplicate line | A client credit and an awkward email |
| Sync failure | Invoice never issued, cash arrives late |
| Unapproved time left out | Billable work never charged |
| Wrong tax code | Corrections in the accounts at VAT time |
Invoices are one of the few things every client reads closely. Errors there cost more trust than their size suggests.
Pre-run checks between PSA and accounts
- A draft of the coming invoice run pulled from your PSA's API before anything is posted.
- A month-on-month comparison per client, flagging any client whose total moves more than an amount or percentage you set, with the lines that changed.
- Checks for agreements that ended or are about to, clients with no managed fee line, and duplicate lines.
- A list of time entries still awaiting approval that would be billable if approved before cut-off.
- Mapping checks for every customer, item and tax code against Xero or QuickBooks, so sync failures are found before the run, not after.
- A post-run check that every PSA invoice exists in the accounts package with the same total.
We do not replace your PSA's billing. The checks sit alongside it and stop the most common errors reaching clients.
Invoice day, with the checks in place
Two days before month end, finance receives the exceptions list: an agreement ending tomorrow for a client who is renewing (so the account manager updates it), five time entries awaiting approval, one client up sharply because of a hardware order (expected), and a new client with no tax code mapped. Each is fixed before the run.
On the day, the batch syncs without failures, and the post-run check confirms every invoice arrived in the accounts package. Credit notes become rare, and when they happen, the reason is recorded so the same thing is prevented next month.
The finance person gets most of that first day of the month back, and the directors stop hearing about invoice mistakes from clients.
Mid-month changes are where the checks earn their place. A client adds six users on the tenth and removes two on the twentieth. Your PSA may prorate, or bill the full month, depending on how the agreement is set up. The comparison shows the change in quantity next to the change in value, so finance can see at a glance whether the invoice follows your policy for that client, rather than discovering after the event that prorating was switched off on one agreement.
Is your invoice run like this?
- Clients find errors on their invoices before you do.
- Invoices fail to sync to the accounts package most months.
- Agreements have stopped billing without anyone noticing.
- Time entries awaiting approval are left out of billing.
- Checking the run takes a full day of finance time.