Turn finished CompanyCam jobsites into QuickBooks invoices

By General Input

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

Integrations

  • CompanyCam
  • QuickBooks Online

Type

App

Categories

  • Finance
  • Operations

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.

Related prompts

Explore more prompts
Replace the dispatch whiteboard with a live production boardSee which HoneyBook packages and seasons make you moneyRun your monthly Freshdesk support billing in one sittingJobsite photo coverage board for your CompanyCam crewsBuild customer photo reports from CompanyCam jobsite shotsTurn ClickUp tracked time into QuickBooks invoices each FridayReview unbilled Clockify time and bill it in QuickBooksBraintree settlement reconciliation workbench for month endReconcile Authorize.Net settlements against QuickBooksBuild quotes on your Bigin deals and invoice them in QuickBooks