Skip to content
Opinion

The Due Date Is the Wrong Alarm

Expensicat now flags a bill when it misses the time you usually take to pay that supplier, because a due date is the supplier's deadline and says nothing about when you pay. Bills were the gap in the routine work Expensicat does for you in the background.

Expensicat now tells you when a bill from a supplier you pay on a schedule hasn't been paid in the time you usually take. The trigger is your own history with that supplier, and the due date printed on the bill only turns a reminder that already exists into an overdue one.

The bill that prompted it

GoCardless invoices us once a month and collects by direct debit a few days later. Over the four months before October, the money left our account 1, 1, 3 and 7 days after the invoice date. The October invoice is dated 14 October and due 13 November, and by 21 October nothing had left the account.

Until this release, Expensicat would have waited for the due date. The existing check asks how a bill was paid three days after the due date if no payment has matched it, which for this bill means 16 November, a month after the collection usually happens. Measured against our own history, the bill was late on 20 October.

The due date comes too late

A due date is the last day a supplier will accept payment before a late fee or a reminder of their own, and it says nothing about when you normally pay. A direct debit is collected on the supplier's schedule within days of the invoice, so a collection that failed has been sitting unnoticed for weeks by the time the due date comes round. A transfer you'd normally send the day the bill arrives is just as quiet when you forget it.

We know GoCardless gets paid within a week. A bookkeeper who had watched our account for a few months would know it too, and would say something on day six. Software that only reads the due date says nothing until day thirty.

How Expensicat decides a bill is late

Expensicat looks at the last bills you paid the same supplier from a company account, at least three of them from the past 18 months, and counts the days from each bill's date to its payment. It takes the median of those, so the one bill you paid two months late doesn't move the line. A bill still unpaid two working days past that point is late, because a transfer sent on a Friday books on Monday. Once it's also two working days past its due date, the reminder becomes an overdue one.

A quiet bank feed is different from a missed payment, so a reminder waits until every account that has paid the supplier is synced up to the day the bill counts as late. Only those accounts count. Our Wise connection expired the same week, and a rule that waited for every account would have held back every reminder in our workspace, even though GoCardless has only ever been paid from our LHV account.

Owners and admins get one notification when a bill is late and one more if it becomes overdue, in the app and by email. You can turn off either channel under Account → Notifications.

When the payment arrives and matches the bill, the reminder clears itself. If matching finds a likely payment you haven't confirmed yet, the reminder gives way to that.

Where it fits

Since July, Expensicat has taken on a growing share of the routine work in the background, and every finding lands in the To do list on your dashboard with the reasoning attached. Today that covers:

  • Money coming in: it flags invoices that go overdue, warns you ahead of time when a recurring invoice can't be issued, and turns payments you take through Stripe into invoices that wait for you to issue them, unless you've set them to go out on their own.
  • Money going out: it categorizes transactions, matches receipts and bills to the payments that settled them, flags duplicate charges and subscription price increases, and chases the receipt when a payment has none.

It also warns you before a bank connection expires, and for Italian flat-rate businesses it keeps a running figure of how much to set aside for tax.

Bills were the gap. Since the suppliers release, a supplier's sheet has marked each of their bills Paid or Unpaid, but nothing raised an unpaid bill with you before its due date had come and gone.

Everything on that list works the same way. The numbers come from code rather than a model, the reasoning is written on the item, you can dismiss it, and it clears itself when the record behind it changes. None of it moves money.

What it won't do

It won't pay the bill. Expensicat tells you a payment is missing, and you decide what to do about it.

It won't guess for suppliers it doesn't know yet. Bills from a supplier you've paid fewer than three times still get the question three days after the due date.

It leaves bills dated more than 60 days ago alone, so connecting a mailbox with years of history doesn't flag every old invoice in it. And when it counts working days, it skips weekends but not bank holidays.

The release notes have the rest.