Progress payments: how each stage is requested
What fires each stage of a payment schedule, what the client receives, how the job page shows Waiting, Requested and Waived, and what happens when the job's dates move.
Once a payment schedule is on, accepting a quote creates the job, the one invoice for it, and a frozen copy of the schedule on that job: each stage with its share in dollars and, where a date is known, its due date. The deposit fires at once. The rest fire on a daily pass as the job's dates arrive.
This article follows one stage from “Waiting” to the client's inbox. Setting the schedule up is in Deposits and payment schedules.
Overview
A stage is requested exactly once. Requesting it emails the client an invoice email that headlines the stage's own amount — “Invoice INV-1042 — $1,200.00” — with the stage's name as the note and a Pay button that charges that amount, not the whole balance. The first stage requested is what sends the invoice: it stamps the invoice sent, to that address, and moves it from draft to Sent.
Whether a stage has been paid is not tracked on the stage. The invoice's balance already answers it across however many stage payments have landed, and a second paid flag would be two places that can disagree.
When each stage fires
| Trigger | Fires when | Needs |
|---|---|---|
| Deposit — when the invoice is created and sent | The moment the quote is accepted, before any date exists | A client email address |
| Job start | The day of the job's start date, on the daily pass | A start date on the job |
| Halfway through the job | The middle day between start and end, counted inclusively and rounded up | Both dates, end not before start |
| Job end (completion) | The day of the job's scheduled end date | An end date on the job |
The daily pass runs once a day, early in the morning, over every job with a stage still waiting. A stage whose date has arrived is requested; a stage the client cannot be emailed (no address on the client record) stays waiting and is tried again the next day.
What the client receives
Each request is the same invoice email the Send button uses, in the client's language, from your company's sender, with three differences:
- The subject and headline carry the stage's amount — its share — rather than the invoice's full balance.
- The stage's name (“Deposit”, “Job start”) appears as a line in the email.
- The Pay link opens the invoice in the client portal pointed at this stage, so the pay button asks for exactly this share. The amount is re-derived from the stage on the server; nothing in the link can change it.
If Stripe is not connected the email still goes out, with View invoice instead of Pay, and the client pays by whatever methods your invoice lists. A stage request never asks for more than the invoice's real remaining balance, even if the stages were computed before a change.
On the job page
The job's own Payment schedule card lists every stage with its share and one of three states:
- Waiting — not yet requested. Shows Due {date} once the date is known, or why it cannot be scheduled yet.
- Requested — the client has been emailed for it. Its date is now frozen.
- Waived (0%) — a 0% stage, recorded as fired with no email.
The three blocked messages are: “Can't schedule yet — set a start date for this job”, “Can't schedule yet — set an end date for this job”, and “The end date is before the start date — fix the job's dates”. A blocked stage is a visible state, never a silently skipped one.
When the job's dates move
Every waiting stage's due date is recomputed from the job's current dates on every daily pass — it is not trusted from the day the schedule was created. A job that slips a week drags its waiting stages with it. A stage already requested keeps the date it was requested on: a client who has been asked for money on a date must not see a different one because the job was rescheduled afterwards.
A job entered after the fact as a past job never gets stages, and never emails a deposit request for work already paid for.
Changes agreed after acceptance
Stage amounts are percentages of the accepted quote and are frozen for three reasons: the client approved those numbers, a requested stage has already been asked for, and recomputing would move real money. The job page says so when it applies: “These stages are percentages of the accepted quote and don't include $640.00 of agreed changes. That's collected on the invoice balance, not by a stage.”
Frequently asked questions
Can I request a stage early by hand?
Not from the schedule. You can chase the invoice itself at any time — see Invoice reminders and chasing — which asks for the full remaining balance.
The client paid the deposit by e-transfer. Does the stage know?
Record it on the invoice as a manual payment. The invoice's balance drops, and the next stage's pay link is capped to what is still owed.
Why did the halfway request go out on day 3 of a 5-day job?
Odd lengths round up so the request lands once more than half the work is done, never before the midpoint.
Was this helpful?
