{% comment %} CONTENT / prose block: long-form text with no classes on it. THIS IS THE SECTION THAT MATTERS FOR BLOG AND DOCS PAGES, and the one to copy if you render Markdown, a rich-text field, or anything a CMS produced. HOW IT WORKS. One class, .bw-prose, on the wrapper. Everything inside is bare HTML: h2, p, ul, blockquote, code, pre, table. You do not put a class on any of it, because content out of a CMS or a Markdown renderer does not have any. If you are rendering a body field, that is exactly this shape:
{{ post.body|safe }}
(|safe only if you trust the source. If you do not, sanitise it first: brickwork styles markup, it does not clean it.) WHAT .bw-prose DOES NOT DO. It does not constrain where it sits or add a band. It sets the reading measure (65ch), the vertical rhythm, and the type and colour of every element above, from the same tokens the rest of the page uses. Wrap it in a section if you want a band. Every rule is written at zero specificity, so putting your own class on any child beats the floor without needing !important. {% endcomment %}

What actually happens when an invoice goes late

Most late payments are not disputes. They are invoices that reached the wrong inbox, sat in an approval queue, or were simply forgotten by someone who fully intended to pay.

That distinction matters, because the three causes need different responses and only one of them is a conversation about money. Chasing all three the same way is why chasing feels adversarial when it rarely needs to be.

The three causes, in the order they cost you

  1. Wrong recipient. The invoice went to a person, and the person left.
  2. Stuck in approval. It arrived, it is queued, nobody has signed it.
  3. Genuinely disputed. Something about the work or the amount is contested. This is the rarest and the only one worth a call.
We assumed we had a collections problem. We had an addressing problem. Two thirds of what we were chasing had never reached a person who could pay it.

What to change first

Send to a role, not a person: accounts@ rather than a named individual who may have moved on. Then make the reminder schedule automatic, so the first nudge does not depend on anyone remembering.

A minimal schedule that works for most businesses:

due_date - 7d   first reminder, friendly
due_date        due today
due_date + 3d   overdue, cc the account owner
due_date + 14d  final notice before escalation

What each stage recovers

Median recovery across 400 Northwind accounts, 2025 to 2026.
Stage Paid within 7 days Needed a call
Before due date 61% 2%
Due today 19% 4%
Overdue, cc owner 14% 21%
Final notice 6% 73%

The pattern is consistent: nearly two thirds of what you are owed can be collected before it is ever late, by an email nobody had to write. The rest is where a human should spend their afternoon.


Further reading: configuring reminder schedules and how late-payment prediction works.