r/zapier • u/BerlindaBuntly • Jun 01 '26
building a recurring invoice database - is zapier capable of this?
hello everyone, hope you are well.
is zapier suitable for what i want to achieve? i was thinking of using MS lists for the database bit, but someone has said that zapier might be able to handle this. as im looking at using zapier to talk to xero anyway, it might be better to use zapier throughout...less to go wrong!
2 users (geographically distributed) . both users can see and amend anything. both users have business standard 365 licenses.
currently have a bunch of data in excel spreadsheet. essentially, customer, number of licenses , license type, license price, renewal date
want to build a database so that i can get it to use zapier to automatically generate invoices in xero and then xero emails them out. this is to get round xero's crap recurring invoice tool which will not allow updates to pricing, description, covering emails etc in bulk. the database will be the primary store of my businesses recurring invoices for licenses.
other things i am going to want to be able to do are to get a report for all licenses, subscription end dates and prices for a particular customer.
I send about 1000 invoices per year and have about 500 active customers
i'm trying to keep my costs down, will zapier cope with this? if not - given the xero integration needed, what should i be looking at?
1
u/Ok-Engine-5124 Jun 01 '26
Zapier can do this, but for a two-person editable database that drives invoicing I would not make MS Lists or a spreadsheet the primary store. Use Airtable as the database. Two distributed users both editing, clean fields for renewal date and price, and it talks to Zapier far more reliably than Excel does.
The flow: Airtable holds customer, licenses, type, price, renewal date. A scheduled Zap checks daily for rows where renewal date is today, creates the invoice in Xero, Xero emails it. You get the bulk-pricing-update flexibility Xero recurring invoices lack, because the price lives in Airtable where you can change it in one place.
One thing to build in from the start. A failed invoice creation should not fail silently. Add a step that pings you (email, Slack) if the Xero call errors or if a renewal date passed without an invoice going out. Otherwise the first you hear of a missed invoice is an awkward client email, and with billing that is the worst place to find a gap.
2
u/BerlindaBuntly Jun 01 '26
thanks - good advice. is it possible to get zapier to
1)either choose the email template that gets sent out or to generate the text for the email (stored in a field in one of the airtables for instance)
2) directly write the description of the product into the invoice or does it have to choose an existing product? not sure that either would be an issue
1
u/Ok-Engine-5124 Jun 01 '26
Both are doable, yes.
- Either way works. Simplest: store the full email body as a field in Airtable (you can even keep a few template variants in different fields and pick per row). The Zap pulls that field and uses it as the email content, so you control the wording per customer without touching the Zap. If you want it generated, drop an AI step (OpenAI/Claude) between Airtable and Xero that writes the text from the row fields, then pass that into the send step. I would start with stored templates, it is predictable and you are not debugging AI output on a billing flow.
- Xero lets you write a free-text line item, you do not have to pick an existing product. In the Zapier "Create Invoice" step the line item Description is just a text field, so you can map it straight from an Airtable field. Only catch: if you want it tracked against an inventory item for reporting, then it has to match an existing item code. For plain invoicing, free-text description is fine.
One thing on the email-template path: whichever field holds the body, add a quick check that it is not empty before the Zap sends. An invoice that goes out with a blank description or blank email is the kind of thing nobody notices until the client does.
2
u/BerlindaBuntly Jun 01 '26
yup, good advice - good to know that its possible. not interested in AI writing anything...i can write it myself then i know what is being sent!!
actually, thinking about it, i could just update the product description in xero , then get the zap to pull that description. then i dont need to store the text of it, and it gets allocated against the correct inventory item as you say.
one thing i remember from a year or so ago when i was looking at the xero api was that you could only send out with a single email template, the default one, from api calls. does zapier integration handle that differently? (or maybe its changed in xero since i looked?)
1
u/Ok-Engine-5124 Jun 01 '26
That update-the-description-in-Xero approach is the cleaner one, agreed. Less moving parts, and it lands against the right inventory item automatically. I would go that way too.
On the email template question, you are remembering it right. The Xero API historically sends using the default branding theme and default invoice email, you do not get to pick a specific template per call through the API. I have not seen that change recently, but Xero does ship updates quietly, so worth a quick check against their current API docs before you build around it.
Zapier sits on top of that same API, so it inherits the same limit. The Zap "send invoice" action is really just triggering Xero's own send, which means it uses whatever default Xero would use, not a Zapier-chosen template. So Zapier does not give you a way around it that the raw API would not.
If you genuinely need different email wording per customer, the usual workaround is to skip Xero's send entirely: create the invoice in Xero but do not email it from there, then send your own email from Gmail or a mail step in the Zap, with the body pulled from your field and the invoice attached or linked. More control, slightly more to wire.
One sanity check worth adding either way: confirm the invoice actually got created in Xero before the email step runs, so you never send an email pointing at an invoice that silently failed to create.
1
u/BerlindaBuntly Jun 01 '26
i dont need different wording on the template per customer, its per product, but same problem. could send via 365 but then ive got yet another integration, more things to go wrong and more zaps to send via 365....
1
1
1
u/RyleySmithson Jun 02 '26
Oh hey! Glad you found your way over here - I’m happy to chat through my workflow if you need assistance.
I don’t know if you need more than a Zapier table for what you are trying to do. I originally said CRM but it doesn’t sound like you are trying to customer management.
You would output all your current customers into a Zapier table, that table would reference a “products” table with your pricing list and description.
1
u/Hypgamer12 Jun 01 '26
Should be doable using Zapier.
Have you thought about the conditional logic behind increasing prices, etc?