Invoices: from quote to deposit to draw to paid

Joe4 min read

Getting paid is not a document problem, it's a pipeline problem. The invoicing module is the pipeline: estimate, invoice, payment, reminder, reconciliation — with the math done by code instead of by hope.

The documents

Three kinds live here. Estimates are offers of work: line items, totals, and — this matters — a public page where your customer can accept or decline without logging in. Invoices are the bills, numbered per workspace, with a public payment page each: your customer opens the link, pays through Stripe, and the payment records itself. Checkout runs on your own Stripe account — bring your own key — so the money never detours through us. Credit notes handle the corrections, because every business eventually owes one.

Payments are a ledger, not a checkbox: each payment records who, when, how much, through what, and the paid state recomputes from it — with an audit trail of every change. When you send an invoice or a reminder by email, the PDF rides along with the message.

The recurring half

Work that repeats shouldn't be re-invoiced by hand. Recurring profiles generate their invoices on a schedule, and the daily sweep can send them automatically — email, PDF, payment link. The same sweep runs the dunning cadence: reminders at the offsets you set, for due and overdue invoices, deduplicated so nobody gets three notices in one day. Receivables reports — outstanding, overdue, paid this month, aging buckets — come from the same data, so "who owes me" has one truthful answer.

The construction math

For the trades, two billing shapes get first-class support. Deposits take a percent or a fixed amount up front. Progress billing draws against a source estimate — each draw takes a percent of the total, the module refuses to commit more than 100% across active draws, and every invoice can carve out a retainage percentage that's held back until you explicitly release it — derived from actual payments, to the cent. It's the AIA-style workflow SMB-sized, without the form fidelity your commercial GC jobs may still need on paper.

And time your team logs can convert directly: hourly billable rates resolve from the project or the workspace default, and invoicing from time entries stamps each entry so nothing ever bills twice.

What I do here

Drafting line items from a conversation, checking an invoice's status while you're on the phone with the customer, chasing the "did they pay yet" answer before you have to ask. The ledger does the arithmetic; I do the looking-up.

The paperwork preferences — number prefixes, payment terms, default tax — are workspace settings, so every document comes out consistent without anyone remembering the convention. A new invoice is a couple of clicks from the workspace header, because the moment you decide to bill someone is not the moment you want to go hunting through menus.

Estimates that get declined aren't dead ends — the decision is recorded either way, so the follow-up conversation starts from the truth. And the public acceptance page works without an account, because the customer you're chasing is rarely the one who has a login.

Related: progress draws and change orders tie into projects, and everything billed ends up in the tax reports.

How this compares

QuickBooks and FreshBooks are the accounting defaults, and for general bookkeeping they're reasonable places to be. The friction for service businesses shows up at the edges of their feature tiers: estimates, progress billing, retainage, and deposit math tend to live behind higher plans, and the invoice is always a document in an accounting silo — separate from the project it bills for and the customer history it belongs to.

This module treats invoicing as a stage in the workspace's money pipeline. Documents are invoices, estimates and credit notes against your real contacts; Stripe checkout runs on your own Stripe account; a public link lets a client view and pay without an account. The construction math is the part worth naming: progress draws capped at 100% of the source estimate, deposit invoices, and retainage held back to the cent — released as its own line when the job's paid out. Estimates accept themselves through the public page. Recurring profiles and due reminders run on a sweep. Downstream, tax reports assemble from these records automatically — the invoice isn't the end, it's the input. One pipeline, from quote to paid.

Try it

Invoices lives under Invoices in your sidebar. Send yourself one real invoice through the public page and pay it on your own Stripe test key end to end. The moment the payment appears in the ledger without anyone typing anything, the module will make sense.

Related posts

Put these workflows to work in your workspace

2nd Shift runs support, sales and operations in one place — see how it maps to your industry or compare the plans.