How stage invoicing works
Raising, sending, and marking each stage invoice paid — plus the automatic review request on the final payment.
What's already happened
By the time you're raising invoices, the customer has:
- Sent an enquiry
- Booked a quote-visit slot
- Received a branded quote and tapped Accept
- Received a confirmation email once you set the work date
You've then:
- Done the work
- Opened the accepted quote and tapped Convert to invoice — TradesOps minted a draft invoice for you to adjust and send
Raise a stage invoice
Two places to raise from:
From Telegram: after the job is booked, the bot posts a "Payment stages" panel with one Raise button per draft stage. Tap Raise Deposit — customer receives the invoice email, panel refreshes, that stage now shows a Mark paid button instead.
From the dashboard: open /dashboard/jobs/<id>. Same panel, same buttons. Same code path — the two routes are fully in sync.
When you raise:
- TradesOps mints a Stripe Checkout Session (if you've connected Stripe) so the email can carry a Pay by card button. If you haven't, the email has no card button — just the amount and reply address.
- TradesOps sends the invoice email from your per-trader address (
your-slug@tradesops.uk). - The invoice status flips from
drafttosent.
Customer pays
With Stripe Connect enabled: customer taps Pay by card, pays through Stripe's hosted checkout, Stripe sends a webhook, TradesOps automatically flips the invoice to paid. You don't need to touch it.
Without Stripe Connect: customer replies asking for bank details, you send them, they transfer, then you tap Mark paid in Telegram or the dashboard once the money's in your account.
Mark paid manually
If the customer paid you outside of Stripe (bank transfer, cash, cheque), tap Mark paid on the invoice panel. TradesOps records the paid time and updates the job's remaining stages.
The Mark paid button is safe to press even if you're using Stripe — if the webhook has already run, the button won't appear.
What happens on the final stage
The moment every stage is paid (regardless of order — the last stage doesn't have to be the last paid), TradesOps fires a review request email to the customer. Just once. It thanks them by name for choosing you and suggests they leave a review.
This email is the biggest source of positive Google / Trustpilot / Facebook reviews you'll get — the customer just finished paying you and their satisfaction is fresh. That's why the timing matters.
Overdue invoices
If you've raised a stage invoice and 14 days pass without it being marked paid (or Stripe hasn't confirmed), the invoice's status flips to overdue. Nothing automatic happens — TradesOps doesn't chase your customers. But the dashboard shows overdue stages in red so you can decide whether to nudge.
What if I raised the wrong stage or the wrong amount?
- If it's just been raised and you notice immediately: the invoice email has already gone. You'll need to reach out directly (reply to the email chain) and apologise for the mix-up. Then Mark paid or Cancel the wrong one manually.
- If the customer hasn't paid yet: you can Mark paid the wrong invoice as
cancelled(from the dashboard) and raise the correct stage manually.
