Budgeting with irregular income: a system that doesn't assume a steady paycheck
Most budgeting advice assumes the same amount lands every month. Here's a system built for freelance, commission, or seasonal income that actually holds up.
Almost every budgeting method starts from the same assumption: a fixed amount arrives on a fixed day, and the job is deciding where it goes. That assumption breaks the moment your income doesn’t look like that — freelance invoices, commission, seasonal work, a mix of a part-time job and gig income. The categories aren’t the hard part. The hard part is not knowing, in the first week of the month, whether this is going to be a good month or a bad one.
This is the system I’d actually recommend if your income varies by more than about 20% month to month. It doesn’t try to predict the future. It’s built to keep working when the prediction is wrong.
Stop budgeting the month you’re in
The core mistake with variable income is budgeting against this month’s expected total. If you guess high and the income doesn’t show up, every category is now overspent before the month ends. If you guess low, you’re leaving money uncategorized and it quietly disappears into “miscellaneous.”
The fix is to stop budgeting the income you expect and start budgeting the income you already have. Concretely: you only assign money to a spending category once it’s actually landed in your account. Income from three weeks ago funds this week’s groceries. Income you’re hoping to invoice next week funds nothing yet, because it doesn’t exist yet.
This single change removes almost all the anxiety of variable income budgeting. You’re never wrong about the future, because you’re not budgeting the future — you’re budgeting a balance that’s already real.
Build a one-month buffer before anything else
If there’s one goal to chase before optimizing categories, it’s this: keep one month of typical expenses sitting in a separate buffer, untouched by day-to-day spending. Once that buffer exists, you’re always spending last month’s income this month — which converts irregular income into something that behaves like a regular paycheck for budgeting purposes, even though it isn’t one.
Getting to that buffer is the hard part, and it’s fine if it takes a few months. Until it exists, treat every dollar above your bare minimum expenses as buffer-building, not spending money. Once it exists, maintaining it becomes close to automatic: a good month tops it back up, a bad month draws it down, and you stop feeling either one in your daily spending.
Three categories, not fifteen — with one addition
The general advice to keep categories few and coarse (needs, flexible spending, one buffer for the unexpected) still applies with variable income. But add a fourth: taxes and dues, held separately from day one if any of your income is self-employed or contract work. Pulling this out at the point of income — not at tax time — is the difference between an expected quarterly payment and an emergency.
A workable split for variable income:
- Fixed needs — rent, insurance, subscriptions, anything that doesn’t change month to month
- Flexible spending — groceries, transport, everything that can flex up or down
- Taxes and dues — set aside as a percentage of every deposit, before it’s available to spend
- Buffer — the one-month cushion described above, plus anything above it
The percentage for taxes and dues depends on your situation and isn’t something a blog post should guess for you, but the mechanism matters more than the number: pull it at deposit time, not spend time.
Track income by source, not just amount
With a single steady paycheck, the source barely matters — it’s always the same. With mixed or variable income, knowing which stream funded which month tells you things a total never will: which client pays late, which season is thin, whether the “bad month” three months ago was really bad or just delayed.
In Granyn, this is why entries support a note and a source alongside the amount — a habit worth keeping even outside the app. When you log income, tag where it came from. After two or three months you’ll have a real picture of your income’s actual shape, instead of a vague sense that “it varies.”
What a bad month should actually change
The whole point of the buffer and the source tracking is that a bad month should change very little about how you live. It draws down the buffer instead of the grocery budget. It’s visible in the numbers — you’ll see the buffer shrink — but it shouldn’t be a crisis that forces a renegotiation of every category mid-month.
If a bad month does force that renegotiation, that’s useful information, not a personal failure: it usually means the buffer isn’t big enough yet, or the fixed-needs category has crept up faster than the income floor can reliably cover. Both are fixable by adjusting the system, not by trying harder to predict an unpredictable income.
The takeaway
Variable income doesn’t need a more complicated budget — it needs a budget that’s decoupled from prediction. Spend only what’s already landed, build a one-month buffer before anything else, pull taxes and dues at deposit time, and track income by source so patterns become visible instead of guessed at. None of this requires a bank connection or a forecasting model — just a habit of logging money as it actually moves, which is the whole idea behind how Granyn is built in the first place.
// Related reading
More from the journal
No Accounts, No Passwords: Why My Apps Don't Have a Login Screen
Six apps, zero sign-up forms. Here's the actual reasoning behind skipping accounts entirely — what it costs, what it removes, and where the line is.
Setting Up Medication Reminders for a Family Member: A Caregiver's Guide
A practical guide to helping a parent or partner stay on top of their medications — what to set up, what to avoid, and how to check in without hovering.
How Long Should a Focus Session Be? A Framework Beyond the 25-Minute Default
The 25-minute Pomodoro is a starting point, not a rule. A practical framework for finding your real focus session length, by task type and energy.