Wholesale order management and payment tracking

You're Tracking 40 Wholesale Customers on Net-30 Terms With a Spreadsheet That Breaks Every Month — Here's the Free AR Aging System That Actually Works

Ryne Bandolik · July 1, 2026 · 10 min read

You know the moment. It's Friday afternoon, you scroll through your bank transactions, and something doesn't add up. A retailer who ordered 24 units of your starter kit six weeks ago still hasn't paid. You check your spreadsheet — the one with columns for Retailer Name, Invoice #, Amount, and Paid? (Y/N). It says "N." No follow-up was sent. No reminder. Just silence. The invoice is now 60 days old and you're starting to wonder if that $1,200 is ever coming back.

This isn't a hypothetical. It's the exact position hundreds of small CPG brands find themselves in when wholesale crosses the 20-retailer threshold. The spreadsheet that worked when you had 8 accounts becomes a liability at 40 — not because you're bad at tracking payments, but because the tool was never designed for this job.

The real cost of the spreadsheet-that-breaks. A small organic skincare brand doing $470K/year in wholesale across 40 independent retailers discovered three unpaid invoices totaling $2,800 — all 90+ days old. They wrote it off. Two retailers consistently pay 10-15 days late and nobody tracks it. The founder has no idea what her Days Sales Outstanding (DSO) is. At 40 retailers, the "scroll through and check the Y/N column" approach consumes 2-3 hours every Friday — and still misses payments. The fix costs $0 and takes an afternoon.

You've probably looked at wholesale management platforms. JOOR, RepSpark, OrderWerks — the demos are slick. But they start at $200-500/month, and when you're only adding 5 more retailers this year, that math doesn't pencil out. Here's what nobody in the platform ecosystem will tell you: you don't need their software yet. You need a better spreadsheet — one purpose-built for AR aging, not a generic "Invoice Tracker" template from Etsy.

Why every generic payment tracker fails at 20+ retailers

The problem isn't the spreadsheet format — it's what most templates leave out. Here's what breaks:

1. The "Paid? Y/N" column is a trap

A binary paid/unpaid flag tells you nothing about urgency. A retailer who's 5 days late is different from one who's 55 days late, but a "Y/N" column treats them identically. By the time you scroll through 40 rows and notice the three "N"s buried among the "Y"s, the oldest one is already approaching 90 days — the point at which collection probability drops below 50%.

2. No aging means no prioritization

AR aging — bucketing receivables into 0-30, 31-60, 61-90, and 90+ day groups — is the single most important feature of any payment tracking system. It tells you who to call first, who gets the firm email, and who needs a "final notice" letter. A generic spreadsheet has no aging logic. You're sorting manually, which means you're acting on the invoices you happen to notice, not the ones that are most urgent.

3. Payment history disappears into the void

When a retailer pays, you mark the invoice as "Y" and... that's it. Three months later, when the same retailer is late again, you can't see that they've been late 4 of the last 6 cycles. A retailer who's habitually 10-15 days late is fundamentally different from one who's late once because their AP person was on vacation — but without a payment log, you can't tell the difference.

4. The follow-up process is manual and inconsistent

You send "just checking in!" emails when you happen to notice a late payment. Sometimes it's day 32, sometimes it's day 67. The language is different each time. Some retailers get friendly reminders. Others get nothing because their N is buried on row 34 of a spreadsheet you only look at when you're wondering why cash is tight this month.

The 4-Tab AR Aging Spreadsheet System (Free, Built in 2 Hours)

Here's the system. It's four Google Sheets tabs, takes about 2 hours to build, and handles 40-75 retailers reliably. When you cross 75 active wholesale accounts, you'll know it's time to evaluate platform options — but until then, this is all you need.

TAB 1 Active Orders

One row per open invoice. Columns:

Conditional formatting: rows turn yellow at 1-30 days overdue, orange at 31-60, red at 61+. This makes your Friday review visual — you can scan the color, not the numbers.

TAB 2 Payments Received

Every payment gets logged here. Columns:

When a payment comes in, log it here first. Then go to Tab 1 and mark the invoice as Paid or Partial Payment. This two-step process is intentional — it forces you to verify that the payment amount matches the invoice amount before closing it out.

TAB 3 AR Aging Summary

This tab auto-calculates from Tab 1 using SUMIFS. It's your Friday dashboard:

A separate section shows AR Aging by Retailer, so you can see which accounts are dragging your DSO up. One retailer with $4,200 sitting at 75 days is a bigger problem than five retailers at 35 days.

TAB 4 Retailer Directory

Static reference data that feeds the other tabs:

The 20-Minute Friday AR Review Protocol

The spreadsheet is the tool. The protocol is what makes it work. Here's the Friday routine — it takes 20 minutes once you've done it a few times:

  1. Open Tab 3 (AR Aging Summary). Look at the aging buckets. If 90+ is above zero, that's your first priority. If 61-90 is growing week-over-week, your follow-up process isn't working.
  2. Open Tab 1 (Active Orders). Sort by Days Overdue, descending. Work top to bottom — the oldest overdue invoices first.
  3. For each overdue invoice, cross-reference Tab 2 (Payments Received). Did the money come in and you forgot to mark it? It happens. Check your bank before sending a reminder.
  4. Send templated emails to the 3-5 retailers who are actually late. Use the templates below. Don't customize — the consistency is the point. Retailers learn that you follow up reliably.
  5. Update the Last Follow-Up Date column in Tab 1. This prevents double-emailing and lets you see at a glance who hasn't been contacted.
  6. Log any payments received this week in Tab 2. Update Tab 1 statuses. Move paid invoices to a "Paid Invoices" archive tab if you want to keep Tab 1 clean (optional — keep them if you want to track payment velocity).
  7. Check DSO. Is it trending up? Down? Flat? This single number tells you whether your collection process is improving or degrading.

Email Templates: The Right Words at the Right Time

These are designed to be copied, pasted, and filled in. No rewriting, no overthinking. The power is in the consistency — retailers learn that day 31 means an email, day 61 means a call, and day 91 means collections.

DAY 25 Friendly Heads-Up (Before It's Due)

Subject: Quick heads-up — invoice INV-2026-07-001 due next week

Hi [Buyer Name],

Just a quick note that invoice INV-2026-07-001 for $[Amount] is due on [Due Date]. No rush — just flagging it in case your AP team needs anything from our side (W-9, updated COI, banking details, etc.).

Happy to help with anything that makes the payment process smoother on your end.

Best,
[Your Name]

DAY 31 The "Friendly Reminder" (1 Day Late)

Subject: Following up — invoice INV-2026-07-001

Hi [Buyer Name],

Following up on invoice INV-2026-07-001 for $[Amount], which was due on [Due Date]. I know things slip through — if this is already in process, no worries at all. Just let me know when we should expect it.

If there's an issue or you need anything from us, I'm happy to sort it out.

Thanks,
[Your Name]

DAY 45 The "We Need to Resolve This" Email

Subject: Outstanding balance — invoice INV-2026-07-001 now 15 days past due

Hi [Buyer Name],

I've sent a couple of notes about invoice INV-2026-07-001 ($[Amount]), which is now 15 days past due. I want to make sure this hasn't fallen through the cracks — and if there's a dispute or issue with the order that's holding up payment, I'd rather know now so we can resolve it directly.

Can you let me know the status by [3 business days from now]? If I don't hear back, I'll give you a call to make sure we're aligned.

Appreciate it,
[Your Name]

DAY 60 Final Notice Before Collections

Subject: Final notice — invoice INV-2026-07-001 30 days past due

Hi [Buyer Name],

Invoice INV-2026-07-001 for $[Amount] is now 30 days past due. We've reached out several times and haven't received payment or a response.

We value your business and want to resolve this directly, but if we don't receive payment or a payment plan commitment by [7 days from now], we'll need to place your account on hold for future orders and escalate to collections.

If circumstances have changed and you need to discuss a payment arrangement, please call me directly at [your phone number]. I'd much rather work something out than go the collections route.

Regards,
[Your Name]

When to Cut Off a Retailer: The 3-Strike Rule

Not every wholesale relationship is worth saving. Use this framework:

The hardest part of this rule isn't enforcing it — it's accepting that some retailers will leave. But a retailer who doesn't pay you on net-30 isn't a customer. They're an interest-free lender you didn't agree to be.

Integrating With QuickBooks or Xero

The AR spreadsheet and your accounting software don't need to be disconnected. Here's the bridge:

  1. Create invoices in QuickBooks/Xero as normal. This is your official record. The spreadsheet is your operational dashboard — faster and more visual than any accounting software's AR module.
  2. Export open invoices from QuickBooks to CSV once a week (Reports → Customers & Receivables → Open Invoices → Export). Paste new invoices into Tab 1 of the spreadsheet.
  3. When payments come in, record them in QuickBooks first (this is your books of record), then log them in Tab 2 of the spreadsheet.
  4. Once a month, reconcile Tab 3's total outstanding against QuickBooks' open AR report. They should match within 1-2 days' timing difference. If they don't, you missed logging a payment or closing an invoice.

This dual-system approach exists because QuickBooks' built-in AR reporting is slow, hard to scan, and doesn't have aging-by-retailer at a glance. The spreadsheet is your Friday operations tool. QuickBooks is your month-end accounting record.

How to Know When You've Outgrown the Spreadsheet

The system works until it doesn't. Here are the triggers that mean it's time to evaluate a wholesale management platform:

When you hit these triggers, the platform math becomes rational: $300/month for JOOR vs. 4 hours/week of spreadsheet wrangling at $50/hour effective rate = the platform is cheaper. But until you hit these triggers? The spreadsheet is free, it works, and it's already better than what you're doing now.

The difference between this system and what you're doing now isn't complexity — it's reliability. A "Paid? Y/N" column that you check sporadically is hope-based AR management. An aging summary that auto-calculates and a 20-minute Friday protocol is process-based AR management. One works. The other costs you $2,800 in write-offs you never saw coming.

Stop Guessing Who Owes You Money

You didn't build a wholesale brand to become an accounts receivable clerk. The 4-tab system takes 2 hours to set up and 20 minutes a week to run. If you want someone to build the automated version — payment reminders that send themselves, aging alerts that hit your phone, and a dashboard that shows you DSO without opening a spreadsheet — that's what we do.

Book a free audit →

Frequently Asked Questions

Can I really track wholesale net-30 payments without buying expensive software?

Yes. A Google Sheets AR aging tracker plus a 20-minute Friday review routine handles 40-75 wholesale retailers reliably. The key is building the right spreadsheet structure — tabs for Active Orders, Payments Received, AR Aging (0-30/31-60/61-90/90+), and a Retailer Directory — plus a disciplined weekly review cadence. Platforms like JOOR and RepSpark start at $200-500/month and are designed for 100+ retailer operations. Most small CPG brands don't need them yet. The spreadsheet system described in this guide costs $0 and takes about 2 hours to set up. When you cross 75 active wholesale accounts, the platform math may start to make sense — but below that threshold, you're paying for features you don't need.

How much money do small brands lose to uncollected wholesale payments?

The average small CPG brand doing $400K-850K in wholesale revenue loses $8,000-$15,000 per year to write-offs from accounts that went 90+ days without follow-up. This doesn't count the cash flow drag from retailers who routinely pay 10-15 days late — money that could be funding new production runs or marketing. The worst part: most of these write-offs are preventable. A 20-minute weekly AR aging review catches late payments at day 31 instead of day 91. Improving DSO by just 8 days on $470K in wholesale receivables frees up roughly $10,300 in working capital at any given time.

How long does it take to set up a wholesale payment tracking system?

You can build the core AR aging spreadsheet in about 2 hours — creating the tabs, setting up the aging formulas, and adding conditional formatting for overdue alerts. Populating it with your existing receivables takes another hour if you have clean records. After that, the ongoing time commitment is 20 minutes per week: sort by aging column, identify accounts past 30 days, send templated reminder emails to the 3-5 retailers who are late, and update payment statuses. Most operators who switch from ad-hoc tracking to this system recover the setup time within the first month just from payments they would have otherwise missed.