How Wave Accounting Repeated Recurring Invoices and the Duplicate Detection Script I Used to Clean Up My Client List
Running my freelance business keeps me on my toes. I use Wave Accounting to send invoices and track my income. It’s mostly great—until it wasn’t. One day, I found out that Wave had *repeated a bunch of recurring invoices*. Yes, it sent duplicates. Worse? I didn’t realize until a few clients got double-billed. Yikes!
TL;DR
Wave Accounting accidentally created duplicate recurring invoices. Some clients were charged twice. To fix this, I wrote a simple script that found and cleaned up the duplicate contacts in my client list. It saved my billing sanity and made things tidy again.
How It All Started
I had set up recurring invoices in Wave. You know, the kind that hit the client’s inbox every month like clockwork. Super handy, right? Except one day I noticed something weird. A client emailed me and said, “Hey, I paid this invoice already. Why am I getting another one?”
I panicked. Logged into Wave. That’s when I saw it—two nearly identical invoices sent to the same person. Same amount. Same due date. Same everything. Uh-oh.
The Culprit: Duplicate Clients
After digging into it, I found out that Wave had somehow created duplicate entries in my client list. Each duplicate had a recurring invoice schedule. Boom—two invoices for the same service. Not ideal.
Let me put it into perspective:
- Client A got billed twice.
- The invoices differed only by reference number.
- I looked like a scammer.
Was it my fault? Not entirely. Wave doesn’t detect duplicate clients very well when creating recurring entries. That’s when I knew I needed a fix.
Seeing the Damage
I started scrolling through my client list. It was a mess. There were doubles, even triples, of the same name. Sometimes with slight differences—an extra period, a capital letter change, or an added space.
Here’s what a few of mine looked like:
- Jane Smith
- Jane Smith.
- JANE SMITH
Wave treated each one like a different person. Total chaos.
I Needed a Script, So I Wrote One
I’m no coding wizard, but I do enough Python to get by. So, I whipped up a simple script to look for clients with:
- Similar names (case-insensitive)
- Matching email addresses
- Duplicate postal codes and phone numbers
Here’s the basic idea of how it worked:
- Export your Wave clients to a CSV.
- Read the data into Python pandas.
- Strip spaces, and convert everything to lowercase.
- Flag names and emails that were extremely similar.
- Export a cleaned table with merged info.
The Beautiful Result
What took Wave months to mess up, my script fixed in 30 minutes. I identified over 40 duplicates. Clients like “Acme Corp” were listed 4 times. I merged them manually after identifying matches. Then I deleted the extras.
Fixing Recurring Invoices
Now came the hard part: uninstalling the duplicates in Wave. Unfortunately, you can’t edit a recurring invoice to switch it to another client. So, I had to:
- Cancel all recurring invoices tied to duplicate clients.
- Create new recurring invoices under the single, clean client profile.
- Verify scheduled send dates and amounts.
Annoying? A bit. But satisfying? Absolutely.
What to Watch For in the Future
If you use Wave, or any invoicing tool really, be careful about:
- Creating new client entries – double-check before hitting save.
- Using autofill – it sometimes adds invisible characters that mess things up.
- Setting up recurring invoices – always double-check the client selected.
And please, do yourself a favor and *export your data monthly*. Just in case you need a snapshot backup.
Other Tips That Helped
While dealing with this chaos, here are a few things that helped me stay sane:
- Use consistent naming conventions – Decide on “Inc.” or “Incorporated” and stick with one.
- Trim whitespace in entries – Seems small, but spaces at the end can cause separate records.
- Use bulk delete/edit tools – I used a free CSV editor to speed things up.
And hey, this whole issue taught me one important thing: no software is perfect. Always review your client data at least once every quarter.
Should You Write Your Own Script?
If you know a bit of Python – yes. It’s easy and very effective. If not, pull in a friend who does. Or pay someone on Fiverr. Honestly, it’ll save hours in the long run and avoid embarrassing moments with double-billed clients.
Wrapping It Up
Wave is still my go-to for free accounting as a freelancer. But it’s not flawless. The recurring invoice duplication issue was 100% preventable. It just needed a bit more intelligence in duplicate detection on Wave’s part.
Luckily, a good old spreadsheet and a tiny Python script worked miracles. My client list is now clean, lean, and squeaky accurate. No more double billing. No more confusion. And my clients are happy again.
Most important of all? I learned to always double-check my tools. And I built a script that can run as often as I want, just in case.
Want My Script?
Drop me a message, and I’ll send it over. Or check GitHub—I plan to post it soon. Happy invoicing!
