Key Features
- Global or per-company late-fee policies, with company always winning over Global
- Configurable grace period and late-fee percentage per 30 days
- Time-weighted daily accrual on the outstanding balance
- Retroactive recompute the moment a policy is confirmed, reset, or cancelled
- Transparent "Applied Policy" field shows exactly which policy priced this invoice
- Every due-date change opens its own tracked delinquency window
- A settled window's already-covered days are never re-billed to the next one
- Consecutive windows chain back-to-back with zero gaps and zero overlap
- Older, closed windows stay untouched as permanent historical audit trail
- Invoice payment is blocked until its late fee is paid or waived
- Full or partial waiver, always with a mandatory, logged reason
- Draft late-fee invoices can only be increased, never silently shrunk
- One centralized ledger lists every invoice's late-fee history with totals
- Deleting a late-fee invoice logs a chatter note on the original invoice naming the history slab it removed
- Manual correction actions are restricted to the Accounting Manager group, even via direct/RPC calls
Delinquency windows
Settlement & audit
Description
Late Payment Policy model (Global / per-company)
Automatic late-fee calculation on customer invoices
One-click late-fee invoice creation, fully posted
Waive Late Fee wizard (full or partial, reason required)
Late Fee Payment History ledger, per invoice and company-wide
Ribbons for Paid / Waived / Partially Waived states
Daily scheduled recompute cron for newly-overdue invoices
Manager-only access rules and multi-company record rules
Dependencies
Screenshots
Open the Invoices Tab

Starting point: navigate to the customer invoices list.
Open Late Payment Policies

Go to Accounting Configuration and open the Late Payment Policies menu.
Create a New Policy

Click New to start configuring a policy for a company.
Set the Company-Specific Policy

Assign the policy to a company and set its grace period and late fee percentage.
Create a New Invoice

Create and post a customer invoice under the company with the policy.
Confirm the Invoice

Fill in invoice details and confirm it to post it.
Create a Late Fee Invoice or Waive It — from the Original Invoice

Both actions live on the original invoice: create a dedicated late fee invoice for the outstanding amount, or waive it directly — there's no separate waive action on a late fee invoice itself.
Window 1, Fully Waived With a Logged Reason

A $920.00 late fee (20 days overdue on a $11,500 invoice under a 12%/30-day policy) is waived in full. The Late Fee Payment History tab shows the SUMMARY panel — Total Calculated, Total Paid, Total Waived — plus a single "Waived" line covering 2026-08-02 through 2026-08-21 (today).
Edge Case: Extending the Due Date Opens a Fresh Window — Never a Double Charge

Same invoice, due date pushed from 08/01 to 08/10 right after the window-1 waiver above. A due-date change always opens its own delinquency window — but this one's late fee shows $0.00 immediately, not a fresh $920+. Why: window 1's coverage already reached today (2026-08-21) when it was waived, so the new window correctly chains its own coverage from the day AFTER that — the overlapping span is never billed twice. It will resume accruing, at the normal daily rate, starting tomorrow. This exact chaining rule is what produces the multi-window ledger shown below.
Edge Case: Consecutive Windows Chain With Zero Gaps and Zero Overlap

A real invoice with six delinquency-window lines: 06/13→06/15 (Waived), 06/16→06/20 (Paid), 06/21→06/25 (Paid), 06/26→06/30 (Paid), 07/01→07/05 (Paid), 07/06→07/08 (Unpaid). Each line's "From" date picks up the very next day after the previous line's "To" date — no day is ever counted in two lines, and no day is ever skipped, across five separate settlement cycles on the same invoice.
Edge Case: Shrinking a Draft Late Fee Invoice Is Blocked

Resetting a posted late fee invoice to draft and editing its line to a lower amount is refused: "Reducing this way would silently write off $436.00 of late fee with no reason recorded. Please use 'Waive Late Fee' ... instead." Increasing a draft amount (to catch up with more accrued days) is still allowed — only unaccountable reductions are blocked.
Partially Waive: Enter an Amount and a Reason

Enter less than the full outstanding amount to waive only part of it — a reason is required, and the amount can never exceed what's outstanding.
The Remainder Is Auto-Invoiced

After a partial waiver, the Late Fee Payment History tab shows exactly what was waived, and a draft late fee invoice is auto-generated for whatever remains.
Review and Confirm the Late Fee Invoice

The draft invoice shows the full calculation breakdown — grace period, days overdue, rate — before you confirm and post it.
Pay the Remaining Late Fee

Register a payment against the late fee invoice for the remainder left after the partial waiver.
Late Fee Invoice Marked Paid

Once settled, the late fee invoice carries the standard "Paid" ribbon.
Late Fee Fully Settled — Paid + Waived

The original invoice's Late Fee Payment History tab shows the full breakdown — part waived, part paid — now that the fee is fully settled.
Pay the Original Invoice

With the late fee settled, the original invoice can now be paid normally.
Full Late Fee Payment History, Per Invoice

Every calculation, payment, and waiver is available as an auditable history line under this tab.
One Ledger, Every Invoice's Late Fee History

Configuration → Late Fee Payment History rolls up every invoice's late-fee activity into one grouped list — days overdue, calculated fee, paid fee, and waived amount — with a running total row for the whole company, ready for an accounting-manager review.
Specifications
| Versions | 18.0, 19.0 |