Refunds & Notifications · Article 6.6
Email: "Payment received — proposal complete"
The closing email of the standard happy path. Fires when the final payment lands; both parties get a confirmation and the final receipt.
Where this fits in the lifecycle
Draft
Only you can see this. Edit anything.

Sent
Email landed in the client's inbox.

Viewed
Client opened the link — awaiting decision.

Signed
Legally binding. Audit trail captured.

Deposit paid
Money in escrow. You can start work.

In work
Project running. Final invoice ready when you're done.

Paid
Final invoice settled. Just one click left.

Completed
Closed. Archived. You did the thing.

The final-payment email is the formal close of the engagement. From here the proposal sits at status Paid, and (when you confirm completion) moves to the terminal Completed state.
Step by step
Final payment confirmed.
Either the Stripe webhook arrives or you click
Mark final payment as paid manually.Receipt PDF renders.
REC-2026-NNNN-final is generated and uploaded to R2.
Email dispatches.
You and the client both receive the email with the receipt attached.
Status flips to Paid. Timeline shows "Final payment confirmed via [method]" and "Receipt sent". A new button Mark as completed appears in the Actions menu — clicking it moves the proposal to the terminal Completed state.
Why this works this way
Receipts are split per VAT stage — if the deposit was paid at one VAT rate and the final payment at another (rare, only happens if your tax regime changed mid-project), each stage gets its own receipt PDF. Most projects produce two receipts total: one for the deposit, one for the final payment. The PDFs are immutable in R2 — if you ever need to re-issue, click Regenerate receipt and a new revision is created with a versioned suffix.
Troubleshooting
Keep reading
Lifecycle
Status: Awaiting final payment, then Paid
You've issued the final invoice. The client now owes the remaining balance (full amount minus the deposit they already paid). When the money lands, status flips to `Paid` and the final receipt is generated.
Lifecycle
Status: Completed — the proposal lifecycle is done
You've delivered the work, the client has paid, you're marking the project officially closed. `Completed` is a terminal state: no more emails, no more status changes (except Amendments which create branches). The proposal now lives in your archive.
Refunds & Notifications
Refresh status — pull-based sync when the Stripe webhook didn't land
Webhooks aren't perfect. When a credit note appears stuck in `requested` despite Stripe having processed the refund, click `Refresh status` to pull the current state from Stripe directly. Same transition logic as the webhook; no risk of double-firing side-effects.