If your paycheck lands on the 15th and the last day of the month, you've probably had this conversation with a budgeting app: it offers weekly, biweekly, monthly — and nothing that matches your life. Payroll departments love the semi-monthly schedule because it makes months tidy. Most recurrence engines ignore it because it makes math untidy: "the last day of the month" isn't a fixed interval, and pretending it is breaks quietly, a day or two at a time.
This post is about that gap — what semi-monthly actually is, why the common workarounds drift, what the end of February reveals about a recurrence engine, and how ClariFi models the schedule as a first-class citizen instead of an approximation.
24 ≠ 26: the two schedules people conflate
Semi-monthly means twice a month on fixed dates — most commonly the 15th and the last day. Twelve months, two events each: 24 a year.
Biweekly means every other week on a fixed weekday — every other Friday, say. Fifty-two weeks, half of them paydays: 26 a year.
Events a year24 vs 26semi-monthly vs biweekly — conflate them and every “monthly” total wobbles
Two extra paychecks sounds like trivia until you budget with it. A biweekly earner gets two months a year with three paychecks in them; a semi-monthly earner never does. The check sizes differ too: the same salary divides into 24 larger checks or 26 smaller ones. Conflate the schedules and every "monthly" total in your budget wobbles — some months look flush, others look broke, and neither is telling the truth.
Where "every 15 days" falls apart
Apps without a semi-monthly type push you toward a hack: set the bill or paycheck to repeat every 15 days. It looks right for exactly one hop. Start on July 15, 2026 and watch it go:
the real schedule "every 15 days" Jul 15, 2026 Jul 15, 2026 ✓ Jul 31 Jul 30 1 day early Aug 15 Aug 14 still drifting Aug 31 Aug 29 2 days off, 3 hops in
The drift never self-corrects, because two 15-day hops make 30 days and months keep refusing to be 30 days long. Keep the sequence running and by December the hack is paying on the 12th and the 27th — three and four days adrift and still wandering. "Every 14 days" is no rescue; that's just biweekly, the other schedule, with its own two-checks-versus-three rhythm. There is no fixed interval that produces "the 15th and the last day," because the target dates aren't a fixed interval apart. Semi-monthly is a rule about the calendar, and only a rule can follow it.
The end-of-month rule and February
"The last day of the month" is a rule, not a date. It's the 31st in January, the 30th in April, the 28th in February — and the 29th when a leap year comes around. A recurrence engine has to ask the calendar how long each month actually is, every time, or it will be wrong four-plus months a year.
ClariFi's semi-monthly rule reads like the payroll policy it models: if today is before the 15th, the next event is the 15th of this month; if today is before the month's last day, the next event is that last day; otherwise it's the 15th of next month. The last day is computed per-month from the calendar itself, so February needs no special case — the same rule that lands on January 31 lands on February 28, and on February 29 when the year asks for it.
The sibling rule matters too: in ClariFi, a monthly bill anchored to the 31st keeps its day-of-month and clamps to shorter months — January 31 → February 28 → March 31 → April 30 — instead of erroring out or silently sliding to March 3. Calendars are full of these edges, and the test of a recurrence engine is whether it handles them or hands them to you.
Budget on two paychecks, not one month
Once the schedule is modeled honestly, a genuinely useful habit opens up: assign bills to checks, not to months. The last-day check arrives right before the 1st — rent lives there, along with anything else due at the top of the month. The 15th check picks up the mid-month cluster: utilities, insurance, subscriptions. The month stops being one big pool you hope lasts and becomes two smaller pools with explicit jobs, and "can I afford this?" gets an answer that's checkable on the 16th, not just on the 1st.
This is where drift stops being a cosmetic bug. If the app thinks your paycheck arrives on August 14 when it actually arrives on the 15th, every balance forecast around that seam is wrong by a paycheck — the worst possible place to be wrong.
How ClariFi models it
ClariFi's recurrence engine has four first-class cadences: daily, weekly, monthly, and semi-monthly. The first three take a multiplier — every 2 weeks covers biweekly paychecks, every 3 months covers a quarterly bill. Semi-monthly is deliberately different: it ignores multipliers entirely and lands on exactly two days, the 15th and the last day of each month. Twenty-four events a year, no drift, no February special-casing — whether the month has 28, 29, 30, or 31 days.
Those events flow straight into the Flex budget, so a semi-monthly paycheck shows up in your plan on the day it actually arrives, and a semi-monthly bill is waiting in the right half of the month. If you're paid on the 15th and the last day, this app was built with your calendar in mind — early access is open.
There's no calculator for this one — the calendar is the calculator. But if you want to see where those two paychecks should go, the 50/30/20 Calculator and the Flex Budget Calculator split any income into buckets that survive real life. Tools, not advice.
Run the numbers
Keep reading