What running a one-person software business costs per month

By

What my one-person software business costs each month, line by line: hosting, email, analytics, payment fees, domains, software and AI tools.

~~~

Everything I run, this site with its 2,000 posts, a newsletter with about 150,000 subscribers, eleven small product sites, the paid courses, costs somewhere between $150 and $500 a month in bills, plus a share of every sale for the payment provider.

The infrastructure part is small and I know it to the dollar. What makes the range wide is the AI subscriptions, which price by tier, and for some of them I’m leaving my tier out of this post. You get the public price of every tier and can plug in your own.

Every price below was checked on the vendor’s own pricing page in September 2026. Where a line comes from something I already wrote about, I link the post.

1. Hosting: $16 a month, and none of it is for the website

This site is a static Astro build on Cloudflare Pages, on the free plan, so the hosting line for the website itself is $0. If you want to compare the other $0 options, I went through them in this post on hosting free tiers.

Pages does not meter static requests or bandwidth, so a post that gets shared widely costs the same as one nobody reads. The free plan has limits, and I stay inside them: 500 builds a month, one build at a time, 20,000 files per site. The site has about 2,000 posts and more than 3,000 image files, so the file count is the one I watch. I wrote about the whole setup in the Cloudflare products I actually use, and the free Cloudflare course covers Pages, KV and R2 from scratch.

Cloudflare has a Pro plan at $20 a month. I looked at it once because it includes Markdown for Agents, a feature that converts pages to Markdown at the edge, and stayed on Free after generating the Markdown files at build time instead.

The dynamic parts of the site are five Pages Functions: the purchase webhook, the course access form, the newsletter signup, the sponsor form and one AI-assisted tool. They run on Workers. Workers Free gives you 100,000 requests a day, Workers Paid is $5 a month with 10 million requests included and $0.30 per extra million. Five small endpoints fit in either, so this line is $0 or $5, and I once managed to make it much more than that: for a while a root middleware on Pages turned every image and CSS request into a metered Worker invocation. I removed it, and the site went back to serving files without running code on each request.

The AI tool calls Workers AI through a binding. Workers AI includes 10,000 Neurons a day for free, then $0.011 per 1,000 Neurons on the paid plan. The tool has a hard cap of 300 generations a day, checked before any model call, and it uses a small model, so the worst case is pennies.

The books and the course downloads live in R2, served from downloads.flaviocopes.com. The 87 course PDFs and EPUBs add up to about 80 MB. R2 gives you 10 GB of storage, 1 million writes and 10 million reads a month for free, and egress is free at any volume. Even with the 17 books in the same bucket this is nowhere near the free tier.

The $16 go to two DigitalOcean droplets.

The first runs Sendy, my newsletter software. It’s the $12 a month plan: 2 GB of RAM, 1 vCPU, 50 GB of disk. It used to be smaller. Earlier in 2026 I resized it the wrong way and locked it into a $48 a month plan, because a droplet’s disk can grow but never shrink. The way out was a new $12 droplet and a full migration, which Codex did over SSH. The story starts with a process being killed on that server.

The second droplet runs Plausible, my analytics, on the $6 a month plan with 1 GB of RAM.

If you want to try DigitalOcean, sign up with my referral link and you get $200 in credit for 60 days. It’s an affiliate link: if you spend $25 after signing up, I get $25 in DigitalOcean credit. That credit is why the Plausible droplet has been effectively free for me.

The price is the easy part of a VPS. Every problem on it is yours, from a process killed for lack of memory to a disk at 99%. The two servers have given me more work than everything on Cloudflare combined.

2. Email: a license paid once and a usage bill

Sending email is the most expensive infrastructure I have, and it’s still cheap for the size of the list.

I bought Sendy once. It’s a self-hosted PHP app, $69 one time, and it sends through Amazon SES. No monthly fee for the software.

SES is pay per use. On à la carte pricing, outbound email is $0.10 per 1,000 emails plus $0.12 per GB of attachment data. Since July 2026 new SES accounts start on an Essentials plan at $0.16 per 1,000 instead, and you can switch to à la carte from there.

The math for one newsletter issue:

150,000 emails ÷ 1,000 × $0.10 = $15

Four issues a month is $60 before confirmation emails and the small data charge. My SES bill runs at about $100 a month. For contrast, when I checked hosted newsletter tools in May 2026, Kit would have cost $1,179 a month for a list this size and Bento $1,500.

The catch with running your own sending is that you also run your own debugging. After the server migration my send rate silently dropped to 20 emails a second and a newsletter took eight hours to go out. Then a Cloudflare proxy setting blocked the bounce webhooks. Both stories are in solving an issue with sending emails on my server. And the signup form needed its own protection after a bot added around 5,000 addresses.

Transactional email is separate. When someone buys a course, a Pages Function verifies the Paddle webhook and sends the access email through Resend. The course access retrieval form and the sponsor form use Resend too. Resend’s free plan covers 3,000 emails a month with a cap of 100 a day. Pro is $20 a month for 50,000. A purchase email and an access email per buyer is a very different volume from a newsletter, so this line is $0 to $20.

Then there’s the email I read. I’ve used HEY since it launched. HEY for You is $99 a year, billed annually only, which is $8.25 a month. HEY for Domains, the version with your own domain name, is $12 per user per month.

3. Analytics: a $6 server instead of a subscription

Plausible Analytics is what tells me which posts people read. I run the Community Edition on that $6 DigitalOcean droplet with Docker Compose. The setup is in how to self-host Plausible analytics.

Hosted Plausible starts at $9 a month for 10,000 pageviews, and the tiers climb with volume. This site does around 240,000 pageviews a month. I decided years ago that traffic charts are not worth a hosted plan at that size, and the self-hosted version is the same software.

What you pay instead is attention. Plausible needs PostgreSQL and ClickHouse, both in containers on a 1 GB machine. It works, and it’s one more box to keep an eye on. When the box finally got upgraded, Codex did the Docker, Postgres, ClickHouse, and Plausible jump: Updating self-hosted Plausible Analytics using AI.

4. Payments: a share of every sale, not a bill

I sell through two Merchants of Record. There’s no monthly fee for either. They take a percentage of each transaction and handle VAT, sales tax, invoices and chargebacks in return.

My courses and the bootcamp sell through Paddle. The fee is 5% plus 50 cents per transaction. StackPlan’s monthly plan runs on Polar, where the Starter plan is free and also charges 5% plus 50 cents. Polar has paid plans, Pro at $20 a month for 3.8% plus 40 cents and up from there, and its docs say Pro pays off above roughly $1,379 a month in sales through it.

On a $100 course sale the fee is $5.50. On a $10 subscription it’s $1, which is why percentage-plus-fixed pricing hurts small tickets more than big ones.

I wrote the full comparison, including Stripe and the other MoRs, in Merchant of Record or payment processor. I never had to register for VAT outside Italy, and I consider that 5% the cheapest employee I have.

5. Domains: at cost, and there are a lot of them

I buy domains through Cloudflare Registrar. Cloudflare does not mark up domain prices. You pay what the registry charges plus the ICANN fee, for registration and renewal.

A .dev costs $12.20 a year there. I know because an AI agent bought hostingpicker.dev for me at that price in the summer of 2026, and I wrote about making that purchase safe.

The product sites listed on my products page alone are eleven domains, nine of them .dev. Add flaviocopes.com, bootcamp.dev, thevalleyofcode.com and ahastack.dev and you’re at fifteen. Eleven .dev domains at $12.20 is $134.20 a year, or about $11 a month. The three .com and the .sh cost more per year, and the exact renewal for each TLD is in the Cloudflare dashboard.

Domains are the line people forget because they bill yearly. I count them monthly anyway. A $12 domain is $1 a month forever, and every small product I launch adds one.

6. Software: one subscription and two one-time purchases

I keep my passwords, TOTP codes and API keys in 1Password. The Individual plan is $2.99 a month billed annually or $3.99 billed monthly. Families is $4.49 or $5.99 for up to five people.

The part that pays for itself is the op CLI. An API key goes from the vault into a command without touching my shell history:

op read "op://Private/Resend/api-key"

I wrote about 1Password Developer Environments if you want the full setup for project secrets.

Things 3 is where my projects and tasks live. It’s a one-time purchase on the App Store: $49.99 for the Mac app, $9.99 for the iPhone app. No subscription. I built a small CLI for it so a plan I make in the terminal can become tasks without retyping.

7. AI tools: the biggest and least predictable line

This is where the range in the opening paragraph comes from. Four tools, three of them priced by tier.

Cursor is my editor and where most of my agent work happens. The Individual plans are Pro at $20 a month, Pro+ at $60 and Ultra at $200. Teams is $40 per user.

ChatGPT is what gives me Codex, which I use for terminal work and for anything on a server. Codex is included in every ChatGPT plan, including Free. The individual plans are Go at $8 a month, Plus at $20 and Pro at $100. The plan sets a usage allowance that Codex shares with your chats, and a long agent session drains it faster than you’d think.

Claude Pro is $20 a month, or $17 a month on an annual subscription. It includes Claude Code. Max starts at $100 a month, with a 5x and a 20x usage option. When I hit the five-hour window on Pro I switch to another tool.

Grok Bot has no bill of its own. It’s included with SuperGrok subscriptions and with Cursor plans from Pro+ up, and it comes with its own weekly usage allowance. Which plans qualify has changed more than once since the August 2026 launch, so check the current access page rather than this post.

I’m not stating my Cursor and ChatGPT tiers here. What I can tell you is that the gap between the cheapest and the most expensive combination of the two is $272 a month ($28 against $300), more than everything else in this post put together.

The price tag matters less than the usage limit. A $20 plan and a $200 plan run the same models; what you buy is how long the agent keeps working before it stops and asks you to wait. If you’re wondering whether a GPU at home would be cheaper, I did that math in running LLMs locally vs paying for an API.

8. What costs nothing

A surprising amount of the stack is free, and not “free tier” free.

Ghostty is my terminal. Homebrew installs everything else on the Mac: node, gh, pandoc, ffmpeg, tmux. Astro, Tailwind and Pagefind (the site search, generated as static files at build time) are free, and so is Git.

GitHub’s Free plan gives unlimited private repositories, so the private repo this site builds from is $0, and the public repos where I publish my software are $0 too.

On Cloudflare, DNS, Turnstile on the public forms, KV for the course access data, and the AI Gateway in front of Workers AI are all inside the free allowances.

Docker Compose on the Plausible server is free software. Sendy runs on Apache, PHP and MySQL, also free. The expensive part of self-hosting is never the software.

9. The total

Here is every line, sorted by how sure I am of the number.

LineMonthlyHow sure
Cloudflare Pages, DNS, Turnstile, KV$0Confirmed, free plan
R2 for downloads$0Confirmed, inside the free tier
DigitalOcean droplet for Sendy$12Confirmed
DigitalOcean droplet for Plausible$6Confirmed, covered by referral credit
Sendy license$0Confirmed, $69 paid once
Things 3$0Confirmed, $49.99 paid once
Claude Pro$20Confirmed
Workers (five Pages Functions)$0 to $5Public price, Free or Paid
Workers AI for one toolpenniesDepends on usage, hard-capped
Resend$0 to $20Public price, Free or Pro
HEY$8.25 to $12Public price, For You or Domains
1Password$2.99 to $5.99Public price, Individual or Families
Cursor$20 to $200Public price, Pro to Ultra
ChatGPT for Codex$8 to $100Public price, Go to Pro
Grok Bot$0Included with Cursor or SuperGrok
Amazon SESabout $100Depends on usage, $0.10 per 1,000 emails
Domainsabout $11 for the .dev onesDepends on how many I register
Paddle and Polar5% + 50¢ per saleShare of sales, not a bill

Adding the columns: the confirmed lines are $38 a month. The tier-dependent lines run from $39 to $343. Usage adds $70 to $110, depending on how many emails go out. That’s how you get to roughly $150 on the low end and $500 on the high end, and the payment fees sit on top as a percentage.

Put differently, both servers plus the delivery of a 150,000-person newsletter cost less than one Cursor Ultra seat. The infrastructure is not where the money goes anymore.

10. What I deliberately don’t pay for

The repo of this site shows the absences as clearly as the bills.

There is no CMS. The posts are Markdown files in a Git repository, I push, Cloudflare builds. I described the workflow in the stack I use to run this blog, a post that started in 2018 and has been updated since — the full current picture is in the 2026 edition. Back then it was Hugo on Netlify, and the shape hasn’t changed: files in, static site out.

The blog has no database either. Posts are files and I want them to stay files. Where I do run a database, in StackPlan, the data is relational, and it’s Cloudflare D1, not a managed database server with its own monthly bill.

The courses don’t run on a course platform. Free courses are pages on this site, built from Markdown like the posts. Paid ones live on subdomains I control, and access is a signed webhook that writes an Airtable record and sends an email. No Teachable, no Podia, no per-student fee.

The newsletter is not on a hosted tool, which at this list size is the single biggest saving, over $1,000 a month against the May 2026 quotes.

And no hosted analytics, no Cloudflare Pro, no server for the website itself.

Each of those is a decision I made once and then stopped paying for every month. The ones I do pay for, the AI subscriptions, are the ones I’d have the hardest time giving up.

Tagged: Business · All topics

Want me to talk about your product? You can sponsor this site.

~~~

Related posts about business: