How to invoice a job automatically when your crew uploads a photo
Staff upload a photo of the finished job from their phone and the invoice is generated and emailed. How it works, and the checks that stop a wrong one going out.
7 min read
Most service businesses invoice in batches. The work is done on Tuesday, the invoice goes out the following week, and in between it depends on someone remembering. Every day between finishing a job and invoicing it is a day later you get paid.
Your crew already takes photos of finished work. This guide covers turning that photo into the trigger: the photo is uploaded, and the invoice for that job is generated and emailed.
What you need first
- Invoicing from your calendar working by hand. Automatic invoicing uses the same invoice generation as Bulk Create Invoices, against the same log. If the manual flow is not producing correct invoices yet, automating it will not fix that.
- The week imported into your log. A photo is matched to a row that Pull Services has already created. A job that is not in the log cannot be invoiced from a photo.
- Jobs on your staff's own calendars. The portal shows each person the jobs in their own Google Calendar — which is what rostering by colour puts there.
Step 1: Give your staff the photo portal
In the web app's calendar, the Photo Portal section holds your business's portal link. Copy it and share it with your staff, or add it to your events so it is one tap away from each job.
Staff open it on their phone and sign in with their Google account once. They stay signed in while they keep using it; a sign-in left unused for 90 days expires.
Each person sees only their own jobs. The portal reads the week from that staff member's own Google Calendar, under their own sign-in, so nobody is shown anyone else's work and photos can only be attached to a job that person was rostered to. They pick the job from their list, take or choose the photos, and upload — which is what keeps photos off the wrong job.
Step 2: Turn on automatic invoicing
Automatic invoicing is off until you switch on Auto-Invoicing, under Invoicing on the web app's Services tab. It is either off or on — there is no draft-for-review mode, because putting drafts in your mailbox needs broader access to your Gmail than sending does. Leave it off until the manual flow has been right for a few weeks.
With it off, uploads still work: the photos are saved to your Drive, ready to attach when you invoice by hand.
What happens when a photo is uploaded
The photos are saved to your own Google Drive. Then, with automatic invoicing on, Calendar Force works through a set of checks before anything is sent:
- Find the job. The upload is matched to one row in your logs by the group code in the event title, the day of the service, and the client's name. If nothing matches, no invoice is created and you are emailed the reason.
- Skip anything already invoiced. A second batch of photos for the same job does not produce a second invoice.
- Respect the client's settings. A client who is not set up to receive invoices — one who pays on an RCTI (recipient created tax invoice) instead, for example — is not invoiced.
- Pick up job costs. Costs entered on the calendar event are written to the row first, so they reach the invoice even if they were added after the week was imported.
- Hold what is not ready. A client set to hold invoices until costs are in, with no costs entered yet, is flagged for review instead. So is a job that comes to $0 — usually a missing rate — rather than an invoice for nothing going out.
- Charge one invoice token. If you are out of tokens, the job is flagged for review and you are emailed.
- Generate and send. The invoice is built on the invoice template chosen for that client, with your logo and the uploaded photos in it, and emailed from your own Gmail to the address recorded for that client — for an NDIS participant, their plan manager. The row is marked invoiced and sent.
If generating the invoice fails, the token is refunded, the row is flagged for review and you are emailed. Whatever the outcome, the photos stay in your Drive.
Cancelled and shortened jobs
Not every visit goes ahead as booked. In the portal, staff can mark a job as cancelled, with a reason and a note, or as shortened when it went ahead for less time than booked. Either way no invoice is generated: the reason is written into the job's notes in the log and the row is flagged for review, so you decide what, if anything, to charge.
What “flagged for review” means
The row is highlighted in the log as needing a person to look at it, and nothing more happens to it automatically. When you are ready, invoice it by hand or include it in your next Bulk Create Invoices run.
The moved-job gotcha
Matching uses the day of the service. If a job is imported into the log and then moved to a different day in Google Calendar, the upload's day no longer matches the row, and you get a “no log row” email instead of an invoice. Correct the date on the row and invoice that job by hand — the invoicing guide covers moved jobs in more detail.
What it costs
One invoice token for each invoice generated automatically. Uploading photos, and jobs that are skipped or flagged, cost nothing. Every account starts with 20 free invoice tokens, and packs start at AUD 2.00 plus GST. Full pricing.
What this does not do
It does not look at the photo to judge the work, take payment, or invoice a job that is not already in your log. The photo is the signal that the job is finished; the invoice comes from what your calendar and log already say about it.
Summary
- Get invoicing from your calendar right by hand first.
- Share the photo portal link; staff sign in once with Google.
- Switch automatic invoicing on.
- Each upload is matched to its job, checked, invoiced with the photos attached, and emailed.
- Cancelled, shortened, $0 and held jobs are flagged for review instead.
Calendar Force is a Google Workspace Marketplace add-on plus a web app, built for service businesses that already run their work out of Google Calendar. When the payments come back, match the remittance to your invoices. See pricing or start with 20 free invoice tokens.