The invoice is already most of the way written
The quote, the job and the invoice are one chain, so the invoice doesn't start from a blank page.
- From an accepted quote: every item, material and labour line copies across verbatim, the invoice number derives from the quote number, the due date defaults to 14 days, and the two records stay linked
- From a job: the client's name, email and phone, the site address, the description and the job's materials pre-fill, with sell prices looked up live from your catalogue
- Idempotent: advance the same quote twice and you get the existing invoice back, not a duplicate
One thing worth knowing: a job pre-fills from the materials planned on it. If the crew confirmed different quantities on site, check the lines against what actually went on before you send.
GST you don't have to think about
Materials cost, tax, GST and the total are recalculated on the server from the line items and your business GST rate on every save. The browser's totals are never trusted, so a stale tab or a fat finger can't put a wrong number in front of a client.
Getting paid by card
Connect your own Stripe account and switch Stripe on in Payment Methods, and eligible invoices carry a Pay Now button — in the invoice email and in the client portal. It's Stripe Connect Standard, which means the money is yours: your account is the merchant of record, charges land directly on it, and we take no platform fee on top of Stripe's. See payments.
Prefer bank transfer? List bank account, PayID, PayPal or your own instructions, along with your default payment terms, and they appear on the invoice.
Partial payments are handled properly rather than fudged: an invoice moves unpaid → partially paid → paid, and the paid amount is worked out from a conservative merge of Stripe and Xero that never double-counts the same money. Overdue is derived when you look at it, not stored, so it's never stale — and overdue invoices show up in your attention list.
Xero, in step, both directions
Push invoices to Xero one at a time or in bulk, as Draft or Authorised, with a Send all to Xero for everything not yet sent or gone stale. Paid and outstanding status comes back — by webhook, by a reconcile job, or on demand.
If Xero is already connected when you email an invoice, My Apprentice authorises it in Xero first, so the very first email your client gets already carries Xero's Pay Now link. If Xero hiccups, the email still goes — the sync is marked failed with Xero's own error text kept, rather than blocking your invoice.
Two guard rails worth knowing about. While Xero is connected you can't manually mark an invoice paid in My Apprentice — paid state can never be set behind Xero's back. And an invoice that's been pushed to Xero can't be deleted here; you void it in Xero, where your accountant expects it to happen.
Chase less
Outstanding invoices get up to three automatic reminders — three days after sending, seven days, then three days after the due date — each with the invoice PDF attached again. Drafts, paid, void and cancelled invoices are skipped, and it's on by default. For the end-of-week run you can email a batch of invoices in one go, not just push them to Xero in bulk.
A record of exactly what you sent
Every send is archived as a content-hashed, versioned PDF snapshot. Edit an invoice that's already been sent and the change is recorded as an edit-after-send event with the original preserved, so the paper trail survives the correction. Deletes are soft — the business owner can restore an invoice from Deleted Items, and restoring a job brings its schedules back with it.
Invoices work offline too: build and edit with no connection and they sync when you're back in range, with per-line merging so concurrent edits don't clobber each other.
What it doesn't do
There's a Billing Type label — standard, deposit or staged — and a free-text stage note you can put on an invoice, but they're a label for the client, not a payment-splitting engine. There's no recurring-invoice entity and no formal progress claims with retention. If you run construction contracts that need staged claims and retention calculated for you, a construction-specific platform will serve you better, and we'd rather say so.
Frequently asked questions
Can I invoice directly from a job?
Yes. Open a new invoice from the job and the client, site address, description and the job's materials pre-fill, with sell prices from your catalogue. Invoicing from the accepted quote instead carries every item, material and labour line across verbatim.
Do my hours from timesheets flow onto the invoice?
No. Timesheets are for payroll and for comparing quoted labour against actual — they don't write labour lines onto an invoice. Labour comes across from the quote, or you add it on the invoice.
Can customers pay by card?
Yes, once you've connected your own Stripe account and switched Stripe on in Payment Methods. Eligible invoices then carry a Pay Now button in the email and in the client portal. It's Stripe Connect Standard — the money lands in your account and we take no platform fee.
Does it work with Xero?
Yes. Push single or bulk, as draft or authorised, and paid/outstanding status syncs back by webhook, a reconcile job, or on demand. Sending an invoice while Xero is connected authorises it in Xero first, so the first email carries a Pay Now link. Xero is the only accounting integration — MYOB and QuickBooks aren't supported yet.
Can I set up recurring invoices?
Not yet. There's no recurring-invoice engine — recurring work is handled by recurring shifts on the schedule, and you raise the invoice from the job. Recurring invoices are on the roadmap.
Can I do deposits or progress claims?
Not as a calculated engine. You can label an invoice as a deposit or staged and add a stage note the client sees, but nothing splits amounts for you and there's no retention handling. For formal progress claims, a construction-specific platform is the better fit.
What happens if I edit an invoice after sending it?
The change is recorded as an edit-after-send event and the PDF you originally sent is preserved as a versioned snapshot, so you can always show what the client actually received.
→ Try it on sample data in the live demo — no sign-up. Or see the pricing.