Turn finished CompanyCam jobsites into QuickBooks invoices

A billing desk where your office manager reviews the jobsite photos and crew notes, then raises the QuickBooks invoice on the same screen.

App
CompanyCamQuickBooks OnlineFinanceOperationsData Sync
PromptCreate

Build me a billing desk app for our office manager. Our crews document every jobsite in CompanyCam, but CompanyCam does no billing, so finished work sits there until someone manually rebuilds it as an invoice in QuickBooks Online. I want one screen that turns finished jobsites into invoices and then writes that fact back to the field.

The main surface is a billing queue. Load projects with List Projects in CompanyCam (active projects only, and skip archived ones, since archived is a separate flag from the active or deleted status). For each project call List Project Labels and keep only the jobs whose labels say the work is done, for example a label like complete or ready to bill. Exclude any project that already carries an Invoiced label. CompanyCam has no built in job complete field, so labels are the only signal for completion, and that label round trip is what keeps the queue idempotent. Let me configure which label names mean ready to bill and which one means already invoiced, with sensible defaults.

Each row in the queue shows the job address from the project, the crew or users assigned to it, the photo count from List Project Photos, and the last few notes from List Project Comments so the manager gets context without opening the job. Sort the queue so the oldest unbilled work surfaces first, and float any job that has been sitting complete and unbilled for more than 14 days to the top with a stale badge. Make the 14 day threshold a setting.

Opening a row splits the screen. On the left is the billing evidence: the jobsite photos from List Project Photos in a scrollable grid (use the web or thumbnail rendition from the photo uris array for the grid and the original when someone clicks to enlarge), plus the full comment thread from List Project Comments. On the right is the invoice builder.

In the builder the manager first picks the QuickBooks Online customer. QuickBooks has no plain list customers operation, so search with Query Entities against the Customer entity using its SQL like syntax, matching on display name (remember LIKE only supports a trailing percent wildcard, and only AND conjunctions are allowed). Confirm the chosen customer with Read Customer, which is ID only, and show their billing address and terms so the manager can sanity check it against the job address. When the homeowner is new, let them create the record inline with Create Customer without leaving the screen. Prefill the search box from the project address or name so the common case is one click.

Then they add line items with description, quantity, rate and amount, set a due date, add an optional message, and submit with Create Invoice. Create Invoice supports line items, a due date and optional auto email, so give me a send to customer toggle in the builder that is off by default, so we can either email the invoice on submit or leave it in QuickBooks for the bookkeeper to review. Show a running total as line items are added.

Before submit, use Query Entities against the Invoice entity to check whether that customer already has an invoice this month, and if so show an inline warning with the existing invoice number, date and amount so the manager can decide whether this is a genuine second job or a duplicate. Warn, do not block.

On a successful invoice, write the state back to the field in two steps: call Add Labels to Project to put the Invoiced label on the CompanyCam project, and call Add Project Comment with the invoice number, the amount and the date, so the crew sees it in the app and nobody bills the same job twice. Then drop the row out of the queue and confirm what happened. If the invoice is created but a write back call fails, say so clearly and offer a retry for just the write back, because the invoice already exists and must not be created a second time.

Treat this as a review surface rather than blind automation. Nothing is billed without the manager confirming the scope against the photos, and no invoice leaves the office unless the send toggle is on. Handle empty states cleanly, for example a project with no photos or no comments, and show a friendly message when the queue is empty because everything is billed.

What does this prompt do?

  • Shows a queue of jobsites your crews have marked complete or ready to bill, with the job address, the crew, how many photos are on file, and the latest notes from the field
  • Opens each job as a split screen: the photos and comments on the left as proof of the work, and an invoice builder on the right
  • Lets the manager pick an existing customer or add a new homeowner, build line items, set a due date, and raise the invoice without retyping anything
  • Marks the job as invoiced back in CompanyCam and posts the invoice number as a comment, so the same job never gets billed twice
  • Floats any job sitting unbilled for more than 14 days to the top of the queue with a stale badge, and warns you if that customer already has an invoice this month

What do I need to use this?

  • A CompanyCam account with admin access (photo and project access needs a Pro, Premium, or Elite plan)
  • A QuickBooks Online company you can sign in to
  • A habit of labeling jobs in CompanyCam when the work is finished, for example a complete or ready to bill label
  • Your usual service line items and payment terms handy for the first invoice

How can I customize it?

  • Change which labels count as ready to bill and what the app writes back after invoicing, if your crews use different wording
  • Move the stale threshold off 14 days to match how fast you normally turn jobs around
  • Turn the send to customer toggle on by default, or keep every invoice as a draft your bookkeeper reviews first
  • Preset your standard line items and payment terms so most jobs are a two click invoice

FAQs

How does the app know a job is actually finished?
CompanyCam has no built in finished field, so the app reads the labels your crews already put on projects. Anything labeled complete or ready to bill lands in the queue, and anything already labeled invoiced is filtered out. You can point it at whatever label names your team uses.
Can it bill the same job twice by accident?
No. As soon as an invoice is created the app adds an invoiced label to the CompanyCam project and drops a comment with the invoice number, so the job leaves the queue for everyone. It also checks QuickBooks for an existing invoice for that customer this month and warns you before you submit.
What happens when the homeowner is not in QuickBooks yet?
You can create the customer right inside the invoice builder without leaving the app. It searches your existing customers first so you do not end up with duplicate records for the same person.
Does it email the invoice to the customer automatically?
Only if you want it to. The builder has a send to customer toggle, so you can either email it on submit or leave it sitting in QuickBooks for your bookkeeper to review and send.
Does this change anything in CompanyCam?
It adds a label and a comment to the project once you have billed it. Your photos, existing labels, and project details are left exactly as they are.
Does it work if we only bill some jobs from photos?
Yes. The queue only pulls jobs your crews have labeled, so anything you bill another way simply never shows up. Nothing is sent to a customer without you building the invoice first.

Related templates

Replace the dispatch whiteboard with a live production board

See every install this week day by day, with the crew, the homeowner, whether materials were ordered, and the latest jobsite photos.

JobNimbus
CompanyCam
Gmail
App
See which HoneyBook packages and seasons make you money

Compare weddings against portraits against corporate work, with real costs from your books, so you know what to raise, hold, or retire.

HoneyBook
QuickBooks Online
App
Run your monthly Freshdesk support billing in one sitting

Review every client's billable support hours for the month, trim what should not go out, then raise the invoices in QuickBooks without leaving the screen.

Freshdesk
QuickBooks Online
Slack Bot
App
Jobsite photo coverage board for your CompanyCam crews

Open one board each morning to see every active jobsite, how long since the last photo, who posted it, and nudge the crew that went quiet.

CompanyCam
Slack
App
Build customer photo reports from CompanyCam jobsite shots

Search every jobsite photo in one place, pair your before and after shots, then send the homeowner a branded recap without leaving the app.

CompanyCam
Google Drive
Gmail
App
Turn ClickUp tracked time into QuickBooks invoices each Friday

Open one screen every Friday to review the week's tracked hours client by client, fix what is wrong, then raise draft invoices in QuickBooks.

ClickUp
QuickBooks Online
Google Sheets
App

Stop rebuilding invoices from jobsite photos.

Your crews already documented the work. Give the office one screen that turns that proof into a QuickBooks invoice and closes the loop back to the field.