Brand Deal Tracker Spreadsheet (Free Template) — and When You Outgrow It
Most streamers track brand deals in their head until one goes unpaid and nobody can say when it was due. A spreadsheet fixes that for free. This page gives you one you can copy in a minute — the columns, the three formulas that do the arithmetic for you, and a straight answer on when it stops being enough.
If you want the bigger picture of what a deal-tracking tool is supposed to cover, that's what a sponsorship CRM actually is. This page is the free version.
The template
Copy this header row, paste it into cell A1 of a new sheet, then split it into columns (Google Sheets: Data → Split text to columns; Excel: Data → Text to Columns, comma-delimited).
Brand,Who pays (AP contact),Stage,Deliverables,Go-live date,Amount,Currency,Invoice #,Invoice date,Net days,Due date,Paid date,Days late,Status,Written confirmation (link)
One row per deal. Not per brand — a brand that books you twice is two rows, because each booking has its own invoice and its own due date.
What each column is for:
| Column | What goes in it | Why it's there |
|---|---|---|
| Brand | The brand or agency name | So you can sort and filter |
| Who pays (AP contact) | The email that pays invoices — not only the person who DMed you | The person who booked you is often not the person who pays. Invoices sent to the wrong entity sit in the wrong queue. |
| Stage | Talking · Agreed · Delivered · Invoiced · Paid | One glance tells you where each deal is stuck |
| Deliverables | "60s mid-stream read + 2h overlay" | Scope you can point to if it creeps |
| Go-live date | The stream date | Your proof window starts here — capture proof of delivery the same day |
| Amount / Currency | The agreed number, and in what | Two columns so a USD deal and a EUR deal don't get added together |
| Invoice # | Your number, e.g. INV-2026-014 | What every follow-up email refers to |
| Invoice date | The day you sent it | Net terms usually count from here, not from the stream |
| Net days | 15, 30, 60 — whatever the contract says | What net 30 actually commits them to |
| Due date | Formula (below) | Computed, so you never do date math in your head |
| Paid date | The day money landed — in your account, not "they said it's sent" | The only column that closes a deal |
| Days late | Formula (below) | The number that tells you to act |
| Status | Formula (below) | Not invoiced · Awaiting payment · Overdue · Paid |
| Written confirmation | Link to the email or DM where they agreed terms | When a deal goes sideways, this is your evidence |
The three formulas
Put these in row 2 and fill them down. The letters assume the column order above (Invoice date = I, Net days = J, Due date = K, Paid date = L, Days late = M, Status = N).
Due date (column K):
=IF(I2="","",I2+J2)
Invoice date plus net days. Blank until you've actually invoiced — an uninvoiced deal has no due date, and that's a to-do on your side, not a late payment on theirs. Format the column as a date.
Days late (column M):
=IF(K2="","",IF(L2<>"",MAX(0,L2-K2),MAX(0,TODAY()-K2)))
If it's paid, how late it was paid. If it isn't, how late it is today. Zero means on time.
Status (column N):
=IF(I2="","Not invoiced",IF(L2<>"","Paid",IF(TODAY()>K2,"Overdue","Awaiting payment")))
Then add one conditional-formatting rule over the whole data range — custom formula =$N2="Overdue", red fill — and every late deal turns red when you open the file.
One summary cell for what you're owed and can't spend yet:
=SUMIF(N2:N500,"Overdue",F2:F500)
Swap "Overdue" for "Awaiting payment" for a second cell with what's invoiced but not yet due. If you take deals in more than one currency, keep a summary cell per currency; don't add them together.
How to use it so it actually works
Log the deal when it's agreed, not when it's paid. A tracker that only holds paid deals is a ledger of things that already went fine. The value is in the rows that haven't closed yet.
Write the invoice date the day you send it. If that cell is blank, the due date is blank and the status says "Not invoiced" — which is exactly what's true. Most "they're paying late" problems start as "I never sent the invoice."
Open it on a fixed day every week. Sort by Status. Anything red gets a follow-up that day — the three-email chase is written to slot straight into this: it refers to the invoice number and due date this sheet already holds. If it's really gone quiet, here's what to do when a sponsor is paying late.
Keep the link column honest. "Agreed in DMs" isn't a link. Paste the actual message URL or the email subject line. The contract checklist covers what that written confirmation should contain.
Where a spreadsheet stops being enough
A spreadsheet is the right tool for a few deals a year. It's honest to say where it breaks, because those are exactly the places money goes missing.
- It never tells you anything. The red row only exists when you open the file. If you skip your weekly check during a busy month, an overdue invoice sits there silently — which is how a 30-day-late payment becomes a 90-day one.
- It doesn't send the follow-up. It can tell you a deal is overdue. You still have to write the email, remember you sent it, and remember to send the next one a week later. That's the step that falls off first.
- Every cell is typed by hand. The amount is in the email thread, the invoice number is in your invoice, the go-live date is in your calendar. Copying each one across is where typos get in, and a wrong due date is worse than none.
- The history lives elsewhere. The sheet says "Overdue." The reason — they asked for a W-9, their AP contact changed, they disputed the overlay hours — is in an inbox somewhere. When you chase, you have to reconstruct it.
- It doesn't know what the deal was worth. A row holds the number you agreed. It can't tell you whether that number was fair for your audience before you said yes.
None of that matters at two or three deals a year. It starts to matter when you've got several brands in flight at once, different net terms on each, and a stream schedule competing for the same attention. A useful test: if you've ever found out a payment was late because you happened to check your bank, not because your tracker told you, you've outgrown the spreadsheet.
What the next step looks like
The next step up is a tool that does the parts above for you: it holds the deal from first message to paid, computes the due date from the terms you logged, and sends the follow-up itself when the date passes. That's the category a sponsorship CRM describes — and it's what Sponsee is for, built around live deliverables (reads, overlays, dedicated streams) instead of posts.
Until you're there, the sheet above is a real system, not a stopgap. Copy it, fill in the deals you already have, and open it next week.
FAQ
Is there a free brand deal tracker template?
Yes — the header row above pastes into Google Sheets or Excel, and the three formulas compute the due date, days late, and status automatically. No sign-up, no download.
What columns should a brand deal tracker have?
At minimum: brand, who pays, deliverables, amount and currency, invoice number, invoice date, net days, due date, paid date, and status. The paid date is the column that actually closes a deal.
Should I track brand deals in Google Sheets or Excel?
Either works. The formulas above use IF, MAX, TODAY, and SUMIF, which both support. Pick whichever one you'll actually open every week.
When should I switch from a spreadsheet to a sponsorship CRM?
When the spreadsheet stops being the thing that tells you a payment is late — for example, you notice from your bank balance first. That usually happens once you're running several deals at once with different payment terms.
Does Sponsee replace the spreadsheet?
Yes, for creators who've outgrown it. Sponsee tracks each deal from agreement to paid and chases overdue invoices automatically. It never takes a cut of a deal and never touches the money — the brand pays you directly.
Sponsee™ is not affiliated with Google, Microsoft, Twitch, YouTube, or Kick. Formulas use functions common to Google Sheets and Excel; menu names can vary by version.