ExpenseBot

How to Track a Client Cash Advance (for Photographers, Agencies, and Freelancers)

A client hands you cash before the shoot. You spend some of it. Now what? The tag + Credit toggle pattern that keeps client money separate from your income — and tells you exactly what to refund or bill back.

A client hands you $500 cash before a shoot. You spend $299 on parking, craft services, and supplies. The project wraps. You owe them $201 back — but do you know exactly what you spent, when, and on what? Most freelancers track this in their head until something goes wrong.

This is the client cash advance problem: money that's not yours sits in your pocket, you spend some of it on the client's behalf, and at the end you need a clean number for the refund or the invoice. ExpenseBot handles it with two things: a client tag and a Credit toggle. No second app, no spreadsheet, no shoebox of receipts.

The Problem — You Have Their Money, But Where Does It Go?

When a client gives you money up front for project expenses — a cash float for a shoot, a Google Ads budget they've fronted, a travel deposit — that money is theirs. You're holding it against expenses you'll pay on their behalf. This is different from a project payment (money you earned for your work). It's also different from a retainer (money you'll bill against over time). It's a float: client money in your pocket, earmarked for spending.

The tracking problem has two sides. First, you need to remember the amount you received. Second, you need to know what you spent from it. The gap between those two numbers is what you either owe back or what the client still owes you.

There are two ways this ends:

  • You spent less than the advance. You have client money left over. Refund the difference — Venmo, bank transfer, cash, whatever works — and log it.
  • You spent more than the advance. The client owes you the overage. Bill them back for the difference on an invoice.

The mistake most freelancers make is logging the advance as income. It's not. If a client gives you $500 and you spend $299 and refund $201, your net from that transaction is zero — you didn't earn any of it. Logging it as income inflates your gross on Schedule C and creates a mess at tax time.

The Tag + Credit Toggle Pattern

Two things make this work in ExpenseBot: the client tag and the Credit toggle.

The Credit toggle appears at the top of the Add Expense screen. Flip it on when money comes IN — a cash advance, a refund, a reimbursement. The row lands on your expense ledger as a negative number, the same way an Amazon return shows up. It doesn't go to the Income tab. This keeps the advance connected to your expenses so the math nets correctly.

The client tag is how ExpenseBot knows which expenses belong to which client. Tags that start with "Client –" are recognized by the Open Balances widget and the Per-Client P&L report. Create one via the tag picker — tap [+ Add client] and type the name.

The pattern in three moves:

  1. Log the advance. Open Add Expense. Turn Credit toggle ON. Enter the amount. Tag it to the client.
  2. Log each expense from the float normally. Photo, voice, PDF, email — any entry method. Tag each one to the same client. Credit toggle stays OFF for spending rows.
  3. At the end, run the report. Filter by the client tag. The net tells you exactly where you stand.

Voice shortcut: if you say something like "Acme Productions gave me 500 cash for the shoot," ExpenseBot picks up the credit phrasing and pre-checks the Credit toggle for you. You still confirm the tag before saving — it doesn't auto-apply the client.

Checking the Balance — What You Still Owe Them

There are two ways to see where you stand with a client mid-project or at wrap.

The Open Balances widget on your Dashboard shows the per-client balance at a glance. If you received $500 from Acme and spent $299 from it, the widget shows -$201 next to "Client – Acme Productions." That's the money you still hold. The widget is read-only — it shows you the balance, but bill-back and refund actions happen from the full report, not from the widget.

An Expense Report filtered by client tag shows the full picture — every advance, every receipt, the net, and the Bill Client button if you need it. Go to My Reports → New Expense Report → filter by the client's tag.

Reading the net:

  • Net negative (e.g., -$201): you still hold the client's money. Refund the leftover — pay externally, then log the payment in ExpenseBot to close the balance.
  • Net positive (e.g., +$120): you spent more than the advance. The client owes you. Click Bill Client on the report card to invoice them.
  • Zero: perfectly settled. Nothing owed either way.

Settling Up — Refunding or Billing Back

If you're refunding the leftover: pay the client back however works for you — Venmo, e-transfer, check, cash. Then log that payment in ExpenseBot as a normal expense entry (Credit toggle OFF) with the same client tag. This brings the balance to zero. ExpenseBot doesn't send the refund or notify the client — you handle the transfer externally and log it afterward.

If the client owes you more: open the filtered Expense Report and click Bill Client on the report card. ExpenseBot generates a Google Doc invoice with every expense as a line item. The advance you received appears as a credit line on the invoice automatically — so if you received $500 and spent $620, the invoice shows $620 in expenses, -$500 credit for the advance, and a $120 balance due. The math is transparent for the client. Send the invoice via Gmail, get paid, log the income.

A few things the bill-back flow does NOT do automatically — so you know what to expect:

  • It doesn't send an email to the client directly — you send the Google Doc invoice yourself
  • It doesn't trigger a Stripe payment link or any payment processing
  • It doesn't generate a PDF settle-up statement for the client's records (that's on the roadmap)

For the full bill-back workflow, see bill client invoice.

Real Example — Sarah the Photographer

Sarah is a commercial photographer. Acme Productions is hiring her for a three-day product shoot and hands her $500 cash to cover on-set expenses.

DayWhat happenedWhat Sarah logged
MondayAcme producer hands Sarah $500 cashVoice: "Acme gave me 500 cash advance for the shoot" — Credit toggle ON, tagged Client – Acme Productions. Ledger: -$500
Tuesday$42 parking at the venuePhoto receipt → Travel, tagged Client – Acme Productions. Credit toggle OFF.
Wednesday$187 craft services at Whole FoodsVoice: "187 craft services at Whole Foods" → tagged Client – Acme Productions.
Thursday$70 props and suppliesPhoto receipt → Supplies, tagged Client – Acme Productions.
FridayShoot wraps. Sarah checks the report.Report filtered by Client – Acme Productions. Net: -$201 (she still holds $201 of their money). She Venmos Acme $201. Logs it as a normal expense (Credit OFF, same tag). Balance: $0.

Variation — if Sarah overspent: say she spent $620 total (parking + craft services + props + extra equipment rental). The report shows +$120. She clicks Bill Client on the report card. The invoice shows all expenses as line items and the $500 advance as a -$500 credit. Acme owes $120. Sarah sends the invoice via Gmail and logs the $120 payment as income when it arrives.

Total time tracking this project: about 30 seconds per receipt on set. No spreadsheet, no trying to remember what that $42 parking receipt was for.

Works for More Than Just Photography

The tag + Credit toggle pattern fits any situation where you're holding a client's money against future expenses:

  • Agency with an ad spend float. A client sends $5,000 for a Google Ads campaign you'll manage. Log it as a Credit + client tag. As you spend the budget (or bill the ad platform directly on their behalf), tag each receipt. At month-end, the report shows what's left. Refund the remainder or roll it to the next month.
  • Journalist with a travel float. An editorial team fronts $800 for a reporting trip. Log the advance via Credit toggle. Track flights, hotels, meals on assignment. Expense report at the end shows the net — submit that to editorial and refund or collect the difference.
  • Consultant with a project deposit. A client pays a $3,000 deposit upfront. Log it via Credit + client tag. Track project-related expenses as you work. When the engagement ends, bill any overage or refund any unused portion. (For ongoing retainer billing where you're drawing down on a retainer with monthly invoices, the pattern is the same but you think of it as "billing from the retainer" — run the filtered report to see how much retainer you've burned.)
  • Production coordinator managing petty cash. Same as the photography example. The coordinator holds the cash, logs every expense from it against the production client tag, and hands the producer a clean account at wrap. Receipt images are attached in Google Drive — no paper chase.

All four surfaces that support client tracking use the same Client – tag convention: the Open Balances widget, the per-client P&L report, the Bill Client invoice flow, and the agency per-client P&L view. Tag once, it flows everywhere.

How the Client Tag Works (and What It's Not)

Client tags in ExpenseBot are created the same way as any other tag — through the tag picker on any expense entry. Tap [+ Add client] in the CLIENTS section of the picker and type the client name. That's it. The "Client –" prefix is added automatically and is what connects the tag to the Open Balances widget and the per-client reports.

A few things that might look like features but aren't (yet):

  • There's no "Set up a client" wizard. Clients are tags. You create them in the tag picker when you need them. There's no separate onboarding for a client — just pick a name and start tagging.
  • ExpenseBot doesn't auto-detect clients from email patterns. The Credit toggle and client tag are things you set manually (or via voice trigger phrases). The system doesn't infer that a payment from a particular sender should be tagged to a client automatically.
  • The Open Balances widget shows balance only. It's a read-only dashboard card. Bill-back and refund actions live on the full expense report card, not on the widget.
  • There's no standalone "Manage Clients" screen. Client management is the CLIENTS filter in your tag management view. If you need to rename or merge a client tag, that's where it lives.

The Calendar tagging wizard can auto-create client tags from recurring external meeting attendees — if you have the same client showing up in Google Calendar events week after week, the wizard creates the tag for you. See the freelancer feature overview for how to enable it.

For agencies tracking multiple clients across projects and billing for services plus pass-through costs, the full workflow — client tags + agency per-client P&L + Bill Client — is covered in the agencies solution and the agency passthrough billing guide.

For solo freelancers who track reimbursable expenses for one or two clients, the reimbursable expense invoice tool walks through pulling tagged expenses directly into an invoice line.

Share:

Track Mileage Automatically with ExpenseBot

Google Maps calculates your distances. Current IRS & CRA rates applied automatically. Tax-ready mileage log in seconds.

No credit card required · Deploys in 30 seconds