Booked vs collected cash flow desk for HoneyBook studios

By General Input

See every HoneyBook project's booked revenue next to what actually landed in your bank, chase what is late, and bill the next payment in one click.

Integrations

  • HoneyBook
  • Xero
  • Gmail

Type

App

Categories

  • Finance
  • Operations

Build me a cash flow desk for my creative studio that answers one question without a spreadsheet: what have I actually been paid, and who still owes me. I run client work in HoneyBook and my books in Xero, and today I rebuild the same reconciliation by hand every month.

The main tab is a booked versus collected view. Load every project from HoneyBook with List Projects, following the cursor until there are no pages left, and show one row per project with the client name, project type, event date, budget, and stage. Roll the budgets into booked revenue by month using the event date, with a month selector or a compact month strip across the top. Next to that, show what really landed in the bank: pull sales invoices from Xero with List Invoices (accounts receivable only, so ACCREC, including authorised, paid, and voided so I can see the full picture) and actual cash received with List Payments, and roll the payment dates into collected revenue by month. Every month should show booked, collected, and the difference, and the project table should show, per client, total booked, total collected, and a running outstanding balance.

Matching between the two systems has to be fuzzy, because HoneyBook and Xero do not share IDs. Match Xero invoices and payments back to HoneyBook projects on client name (normalise case, punctuation, and things like "and" versus "&", handle partner names such as "Sarah and Tom Whitfield") and on amount as a supporting signal. Use Xero List Contacts to get the canonical client record and email address behind each invoice. Show a confidence indicator on matched rows. Anything you cannot match confidently must appear in a visible Unmatched panel rather than being silently dropped, with a control to link an unmatched Xero contact or invoice to a HoneyBook project by hand. Store those manual links so the desk remembers them on every later load, and prefer a stored link over a fuzzy guess.

The second tab is an aging board of overdue Xero invoices, grouped by client. For each client show the total overdue, and under it each invoice with its number, amount due, due date, days late, and the HoneyBook project the money belongs to. Bucket the invoices into 1 to 14 days late, 15 to 30, 31 to 60, and 60 plus, and sort clients by money at risk. Show the client's event date on the row too, and visually mark anyone whose event has not happened yet, since those are deposits I do not chase. Keep the unmatched overdue invoices visible in their own group at the bottom of this tab as well.

Give every project row on the main tab a "Bill this project" action. It opens a small form prefilled with the remaining balance on that project (budget minus everything collected against it), a suggested due date, and a description, lets me edit the amount, due date, and description, then raises the next payment request through HoneyBook Create Invoice against that project. After it succeeds, show the new invoice on the row and refresh the project's numbers. Handle the failure case with a clear message rather than a silent no-op.

Add a "Draft chase emails" button on the aging tab that kicks off a background agent. The agent should read the overdue Xero invoices with List Invoices, resolve each one to a client and email address with Xero List Contacts, match it back to the right HoneyBook project using List Projects and the same name and amount logic plus any manual links I have saved, then write one reminder email per client covering all of that client's overdue invoices together (never one email per invoice). It creates each reminder with Gmail Create a Draft in my own drafts folder and never sends anything.

The chase rules matter. Wording should be gentle and apologetic for anything under 14 days late, noticeably firmer and more direct past 30 days, and it should reference the specific project and event by name so it reads like a person wrote it. Never chase a client whose event date is still in the future, no matter what the invoice says. Skip clients I have already chased in the last seven days, and record the chase date so that rule works on the next run.

When the agent finishes, it must post a summary back into the app so I can review before I send anything from Gmail. The summary should list each client it drafted for, the amount and days late, the matched project, a link or reference to the Gmail draft, and a separate section for anyone it deliberately skipped (future event, recently chased) and anyone it could not match. Store these runs so the aging tab shows the last chase run and I can open previous ones.

Important API constraints to design around: HoneyBook has no list-invoices and no list-contacts operation. Its only bulk read is List Projects with cursor pagination, plus Get Company and Get Current User, and its only writes are Create Project, Create Invoice, and Create Contact. That is exactly why payment status comes from Xero rather than HoneyBook, and why the matching is done on client name and amount. Do not build any view that assumes you can list HoneyBook invoices or contacts. Xero needs the tenant ID on every call, returns dates in .NET JSON date format that must be parsed, and rate limits at 60 calls per minute per organisation, so page through invoices and payments carefully and cache the loaded data in the app rather than refetching on every interaction.

This is for me, the studio owner, opening it a few times a month around invoicing and month end, so favour density and one glance clarity over a wizard. Format money with currency symbols and thousands separators, show days late as a plain number, and make the outstanding balance the most prominent number on the screen.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChase the paperwork every new client and vendor still owesFile Gmail attachments into storage with names you can findCandidate rediscovery desk for your archived Lever applicantsLaytime and demurrage claim workspace for chartering opsKajabi customer support console for member access fixesRun your application review round on Jotform submissionsPartner payout approval queue with Xero bill handoffRun your nutrition clients' weekly meal plans from one console