Skip to the contact form

Build log · Shipped Oct 26, 2026

Billing a client at cost from receipts, with a preview first

The back office now invoices a client for costs paid on their behalf, one line per receipt, and shows the exact invoice before it goes out.

Published Oct 26, 2026 by Forecheck AI

Plenty of owners pay for things on a client's behalf: materials, a permit, a service that only exists for that one account. For Forecheck it's the monthly bills behind a client's app. When a client asks for those passed through at cost, the honest answer is an invoice that shows every receipt, with nothing added on top.

Forecheck's own back office now does that, and every invoice it sends can be previewed first.

Billing actual costs

On a client's Billing tab, Bill actual costs lists every receipt that hasn't been billed to them yet, oldest first. Each one shows the vendor, what kind of bill it is, the period it covers and the client's share. I tick the ones to bill, pick a due date, and send.

The invoice gets one line per receipt, at cost. A bill that only one client's work uses is billed in full. A shared bill, one that several clients' work runs on, is split between them, and the line says "(your share)" so nobody wonders why the number is smaller than the receipt. The note at the top of the invoice names only the kinds of shared bills that invoice actually carries, and says plainly that nothing was added.

A few rules keep it honest:

  • A receipt is billed once. After it's on an invoice it drops off the list, and if I cancel that invoice, its receipts come back with nothing to undo by hand.
  • If a receipt's amount changes after I opened the form, Send stops and asks me to reopen it. What goes out is always what I looked at.
  • A receipt with no date can't be billed until it has one, and receipts I haven't finished reviewing start unticked.
  • A credit from a vendor shows up as its own negative line, so the total matches what was actually paid.
  • A shared bill can never be billed past its total, even across several clients.

If the client has a card saved, the invoice charges it on the due date and they get a receipt. Otherwise the invoice arrives by email with a pay link.

A preview before anything goes out

Sending an invoice is one of those buttons you can't take back. So the actual-costs form and the regular invoice form both have a Preview button next to Send.

Preview opens the exact invoice Send would make, as the PDF the client would get: same lines, same total, same due date, even the invoice number it would take. It's stamped PREVIEW, NOT SENT across the top. Nothing is saved, nothing is emailed, and there's no draft sitting in an inbox that someone has to remember not to send. Close it, fix what's off, preview again.

When a saved card is due today, the preview says so, because in that case Send charges the card right away.

Why it matters

Passing costs through at cost is about trust. A client who sees every receipt, their share of each shared bill, and a note that says nothing was marked up has nothing to wonder about. And a preview that looks exactly like the real thing means I catch a mistake before the client ever sees it.

If your billing has rules of its own like these, talk to us.

Forecheck AI builds fully integrated custom software: one business operating system at a time, around the rules only that business has. Talk to us at forecheckai.com.

More build logs · Privacy