The €300 Subscription Tax
A CEO opens her laptop, scrolls through last month’s bank statement, and starts ticking off line items. Forty-six of them.
She has a knack for round numbers. By the time she reaches the bottom (the tail of €9 and €12 charges nobody can quite remember signing up for), the running total is €4,180. Per month.
This is for a fifteen-person company.
I’m there to audit something else entirely. We were supposed to talk about a CRM migration. Instead she turns the screen toward me, pushes the laptop two inches closer, and asks the question I have been hearing more often: how did we get here?
Death by subscription
The story is always the same. A team needs a thing. The thing exists as a SaaS. Someone signs up for the trial. The trial converts to a paid plan because the alternative is to redo the work. Eighteen months later, the SaaS has become “the way we do it”, and nobody on the team remembers there was a before.
Repeat for every team. Repeat for every quarter. Repeat for every founder who once said yes to a fourteen-day free trial in a hurry.
The list, when you finally print it on one page, reads like an inventory of polite extortion. Email marketing: €89/month. Form builder: €49. Document signing: €72. Time tracking: €36. Calendar scheduling: €19 per seat. CRM: €310 for the team, before the AI add-on. A chatbot with a friendly first name: €300/month, because somebody, in 2024, believed it would replace the customer service person the company later hired anyway.
Each line, on its own, feels reasonable. The aggregate is the part nobody sees.
The aggregate is the tax.
What the tools actually do
Pull any one of those subscriptions out of the bundle and look at it cold.
The form builder takes a request from a browser, validates a few fields, drops a row into a database, and emails someone. The signing tool puts a PDF in front of a person, captures a click, generates a hash, sends a confirmation. The scheduling tool reads two calendars, computes the intersection, exposes a URL. The chatbot, the €300 one, matches incoming text against a list of canned answers and escalates the rest to a human inbox.
These are not difficult problems. They are not even unsolved problems. They were solved twenty years ago, in shell scripts, by people who did not call themselves engineers. What changed is not the difficulty.
What changed is the packaging.
The SaaS sells the wrapping. Branded UI. Onboarding email. Status page. Quarterly webinar. The actual work (the few lines that move the data from A to B) is incidental.
I am not arguing every SaaS is a fraud. Some of them earn their keep. Stripe earns it. A real ERP, in a regulated industry, earns it. A complex CRM with a sales team of forty earns it. The argument is narrower. It is about the long tail of small subscriptions, each solving a problem an 80-line Python script solves better, that nobody writes because writing is not what the team thinks it does.
The 80-line script
I keep, on a USB stick, a folder of these scripts. I started collecting them around 2019, the year I noticed I was writing the same thing in three different client engagements.
A typical entry: 80 lines of Python, standard library only, occasionally a single dependency from PyPI. Cron job at the top of the file. SQLite database in the same directory. SMTP for outbound mail. A .env file for secrets. Total infrastructure: a €9 VPS, a domain name, an afternoon of attention.
What does an 80-line script replace?
A surprising amount. The form-to-database-to-email pipeline. The “send a weekly digest of these rows” pipeline. The “alert me when this metric crosses a threshold” pipeline. The “generate a monthly invoice from this spreadsheet” pipeline. Half of what an SMB actually does, day to day, with its software is shaped like one of those.
The hard part is not writing the script. The hard part is owning it. Knowing where it lives. Knowing what to do when it stops running. Knowing that the file on the VPS is the system, and that nobody is going to fix it for you.
This is exactly the friction the SaaS removes. And exactly the friction that, removed, costs €4,180 a month and growing.
Why nobody does the math
You would think a fifteen-person company spending €50,000 a year on small SaaS would notice.
They do notice. They just do not act.
Three reasons, in my notes from the field.
The lines are charged to different cards. The form builder is on marketing’s stack. The signing tool is on legal’s stack. The chatbot is on customer service. Nobody owns the aggregate, because the aggregate is invisible from any one seat. The CFO sees a long list of tiny line items and processes them as noise.
The replacement looks like work. Switching from a SaaS to a script takes a developer-day. The SaaS takes nothing. Today’s calendar wins against tomorrow’s calendar, every time. The fact that the developer-day is amortised over years is not visible in the moment of decision.
The vendor speaks fluent procurement. Their pricing page is calibrated to be just under whatever amount triggers an internal approval workflow. Twenty-nine euros per seat per month is below the radar at most companies. Twenty-nine times eight seats times twelve months is €2,784. The math is doable. It is just not done.
The tax compounds because no single transaction looks like a tax.
Digital jugaad, applied to budgets
I wrote, in the manifesto that opened this site, that jugaad is the discipline of solving problems with exactly what is at hand: neither less than what is needed, nor more.
Applied to an SMB IT budget, jugaad sounds like this: write the script. Run it on the cheap VPS. Back up the SQLite file weekly. Document the cron job in a one-page README. Keep the SaaS that earns its keep; cut the rest.
This is not a fashionable position. It does not generate a roadmap. It does not need a transformation programme. It does not require an AI strategy. It requires someone, on a Sunday afternoon, sitting down with the bank statement and asking the cold question: what is this line doing for us, and what would it cost us to do it ourselves?
The honest answer, for most lines, is: not much, and not much.
What the audit actually looks like
I run a tighter version of this exercise with clients, twice a year. It takes a morning.
The bank statement comes out. We list every recurring charge above €15. Each line gets one of four tags: essential (cutting it would cause real damage), replaceable (a script or a free alternative would do), redundant (we already have a tool that does this), vestigial (signed up for it once, never used since).
A typical first pass tags roughly forty percent of the lines as replaceable, redundant, or vestigial. We cut the vestigial that morning. We replace the redundant within a fortnight. The replaceable becomes a small backlog of scripts written over a quarter, usually by a junior dev who is delighted to have an excuse to write Python instead of shepherding tickets.
The savings, in the engagements I can talk about, run between thirty and sixty percent of the SaaS line. The first year of the savings pays for the work many times over. Every year after that is net.
Nobody calls this a transformation. It is just accounting, plus a willingness to write a script.
The discipline of cold accounting
The €300 subscription tax is not really about €300.
It is about a default that crept into every small company I audit over the last decade. The default that says: when you have a problem, the answer is to pay someone else, monthly, in perpetuity, for the right not to think about it again.
That default is recent. It is not free. And it is, I think, reversible: at the level of the individual line item, by the individual founder who decides to look.
The bank statement is still on her screen. Forty-six lines. We start at the top.
Beware of little expenses; a small leak will sink a great ship. — Benjamin Franklin, Poor Richard’s Almanack, 1733