“Did I get shorted?”
Photograph your stub. ShiftStub lines up what it counted against what you were paid, and explains every difference in plain words.
Paycheck check Compares line by line. Says what to ask about, not who to blame.
Shift calendar · hours tracker · paycheck estimator
ShiftStub tracks your shifts and your overtime — time and a half, double time, daily OT, the hospital 8/80 — your night and weekend diffs and your unpaid breaks, and shows the math line by line.
Coming to the App Store and Google Play. Not released yet, so there is nothing to download and these are not links.
What people actually ask
“Did I get shorted?”
Photograph your stub. ShiftStub lines up what it counted against what you were paid, and explains every difference in plain words.
Paycheck check Compares line by line. Says what to ask about, not who to blame.
“Can I cover rent on the 15th?”
Your next three pay dates, with amounts, from the shifts you have already painted. A number, not a chatbot.
Forecast strip Deterministic. Recomputes the moment you change a shift.
The math, line by line
These are the pay engine's own worked examples. Switch the rules you work under and the ledger recomputes to the cent.
S1 · Hospital nurse · $36.00/hr · bi-weekly
Overtime over 40 hours a week at time and a half, plus a night and a weekend differential.
78.0 paid hours · 71.5 at straight time · 6.5 at a premium
Seven shifts, 78.0 paid hours. Week 1 ran to 46.5 hours, so 6.5 of them are overtime; week 2 came in at 31.5 and adds none.
| Day 12 | 12.0 hrs |
|---|---|
| Day 12 | 12.0 hrs |
| Night 12 | 12.0 hrs |
| Night 10.5 | 10.5 hrs |
| Week 1 · Aug 1–7 | 46.5 hrs |
| Day 12 | 12.0 hrs |
| Night 12 | 12.0 hrs |
| Day 7.5 | 7.5 hrs |
| Week 2 · Aug 8–14 | 31.5 hrs |
The other method gives $3,057.27 — a difference of +$5.82 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.
S1 · Hospital nurse · $36.00/hr · bi-weekly
Overtime over 40 hours a week at time and a half, plus a night and a weekend differential.
78.0 paid hours · 71.5 at straight time · 6.5 at a premium
Seven shifts, 78.0 paid hours. Week 1 ran to 46.5 hours, so 6.5 of them are overtime; week 2 came in at 31.5 and adds none.
| Day 12 | 12.0 hrs |
|---|---|
| Day 12 | 12.0 hrs |
| Night 12 | 12.0 hrs |
| Night 10.5 | 10.5 hrs |
| Week 1 · Aug 1–7 | 46.5 hrs |
| Day 12 | 12.0 hrs |
| Night 12 | 12.0 hrs |
| Day 7.5 | 7.5 hrs |
| Week 2 · Aug 8–14 | 31.5 hrs |
The other method gives $3,051.45 — a difference of −$5.82 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.
S3 · Nurse in California · $55.00/hr
Over 8 hours in a day is time and a half. Over 12 in a day is double time.
46.0 paid hours · 32.0 at straight time · 14.0 at a premium
The week totals 46 hours, but the daily rule already paid those hours — so the weekly rule adds nothing. No hour is counted twice.
| Mon 12 | 12.0 hrs |
|---|---|
| Tue 12 | 12.0 hrs |
| Wed 14 | 14.0 hrs |
| Thu 8 | 8.0 hrs |
| One workweek · 46.0 hrs | 46.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S3 · Nurse in California · $55.00/hr
Over 8 hours in a day is time and a half. Over 12 in a day is double time.
46.0 paid hours · 32.0 at straight time · 14.0 at a premium
The week totals 46 hours, but the daily rule already paid those hours — so the weekly rule adds nothing. No hour is counted twice.
| Mon 12 | 12.0 hrs |
|---|---|
| Tue 12 | 12.0 hrs |
| Wed 14 | 14.0 hrs |
| Thu 8 | 8.0 hrs |
| One workweek · 46.0 hrs | 46.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S5 · Retail in California · $20.00/hr
Six 8-hour days, then 10 hours on day seven. The first 8 hours of day seven are time and a half; hours after that are double time.
58.0 paid hours · 40.0 at straight time · 18.0 at a premium
Day seven is priced by the seventh-day rule, and the 48 hours left over still run the weekly test — 8 of them are over 40.
| Day 1 · 8h | 8.0 hrs |
|---|---|
| Day 2 · 8h | 8.0 hrs |
| Day 3 · 8h | 8.0 hrs |
| Day 4 · 8h | 8.0 hrs |
| Day 5 · 8h | 8.0 hrs |
| Day 6 · 8h | 8.0 hrs |
| Day 7 · 10h | 10.0 hrs |
| One workweek · 58.0 hrs | 58.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S5 · Retail in California · $20.00/hr
Six 8-hour days, then 10 hours on day seven. The first 8 hours of day seven are time and a half; hours after that are double time.
58.0 paid hours · 40.0 at straight time · 18.0 at a premium
Day seven is priced by the seventh-day rule, and the 48 hours left over still run the weekly test — 8 of them are over 40.
| Day 1 · 8h | 8.0 hrs |
|---|---|
| Day 2 · 8h | 8.0 hrs |
| Day 3 · 8h | 8.0 hrs |
| Day 4 · 8h | 8.0 hrs |
| Day 5 · 8h | 8.0 hrs |
| Day 6 · 8h | 8.0 hrs |
| Day 7 · 10h | 10.0 hrs |
| One workweek · 58.0 hrs | 58.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S6b · Eight-hour nurse on 8/80 · $36.00/hr
Overtime over 8 in a day OR over 80 in the 14-day period — whichever gives more, and never both for the same hour.
82.0 paid hours · 80.0 at straight time · 2.0 at a premium
The daily test gives 2 hours. The period test gives 2 hours. They tie, and the hour that is both is still one hour — a naive calculator pays 4 here.
| Shift 1 · 8h | 8.0 hrs |
|---|---|
| Shift 2 · 8h | 8.0 hrs |
| Shift 3 · 8h | 8.0 hrs |
| Shift 4 · 8h | 8.0 hrs |
| Shift 5 · 8h | 8.0 hrs |
| Shift 6 · 8h | 8.0 hrs |
| Shift 7 · 8h | 8.0 hrs |
| Shift 8 · 8h | 8.0 hrs |
| …and 2 more the same | 18.0 hrs |
| 14-day period · 82.0 hrs | 82.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S6b · Eight-hour nurse on 8/80 · $36.00/hr
Overtime over 8 in a day OR over 80 in the 14-day period — whichever gives more, and never both for the same hour.
82.0 paid hours · 80.0 at straight time · 2.0 at a premium
The daily test gives 2 hours. The period test gives 2 hours. They tie, and the hour that is both is still one hour — a naive calculator pays 4 here.
| Shift 1 · 8h | 8.0 hrs |
|---|---|
| Shift 2 · 8h | 8.0 hrs |
| Shift 3 · 8h | 8.0 hrs |
| Shift 4 · 8h | 8.0 hrs |
| Shift 5 · 8h | 8.0 hrs |
| Shift 6 · 8h | 8.0 hrs |
| Shift 7 · 8h | 8.0 hrs |
| Shift 8 · 8h | 8.0 hrs |
| …and 2 more the same | 18.0 hrs |
| 14-day period · 82.0 hrs | 82.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S7 · Firefighter, 24 on / 48 off · $22.00/hr
A 21-day work period with a 159-hour overtime threshold, instead of a weekly one.
168.0 paid hours · 159.0 at straight time · 9.0 at a premium
Seven 24-hour shifts is 168 hours in the period. Nine of them are over the threshold. No other consumer app models this at all.
| 24 on · shift 1 | 24.0 hrs |
|---|---|
| 24 on · shift 2 | 24.0 hrs |
| 24 on · shift 3 | 24.0 hrs |
| 24 on · shift 4 | 24.0 hrs |
| 24 on · shift 5 | 24.0 hrs |
| 24 on · shift 6 | 24.0 hrs |
| 24 on · shift 7 | 24.0 hrs |
| 21-day period · 168.0 hrs | 168.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S7 · Firefighter, 24 on / 48 off · $22.00/hr
A 21-day work period with a 159-hour overtime threshold, instead of a weekly one.
168.0 paid hours · 159.0 at straight time · 9.0 at a premium
Seven 24-hour shifts is 168 hours in the period. Nine of them are over the threshold. No other consumer app models this at all.
| 24 on · shift 1 | 24.0 hrs |
|---|---|
| 24 on · shift 2 | 24.0 hrs |
| 24 on · shift 3 | 24.0 hrs |
| 24 on · shift 4 | 24.0 hrs |
| 24 on · shift 5 | 24.0 hrs |
| 24 on · shift 6 | 24.0 hrs |
| 24 on · shift 7 | 24.0 hrs |
| 21-day period · 168.0 hrs | 168.0 hrs |
Both ways give the same total here. With no differentials there is nothing for the regular rate to absorb — only the lines are arranged differently.
S12 · Any hourly job · $18.00 → $20.00 on Thursday
The rate changes on Thursday, and 4 of the week’s 44 hours are overtime.
44.0 paid hours · 40.0 at straight time · 4.0 at a premium
Here the common method comes out higher than the federal one. The comparison is signed, in both directions — it is information, not an accusation.
| Mon · $18.00 | 8.0 hrs |
|---|---|
| Tue · $18.00 | 8.0 hrs |
| Wed · $18.00 | 8.0 hrs |
| Thu · $20.00 | 8.0 hrs |
| Fri · $20.00 | 8.0 hrs |
| Sat · $20.00 | 4.0 hrs |
| One workweek · 44.0 hrs | 44.0 hrs |
The other method gives $869.82 — a difference of −$2.18 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.
S12 · Any hourly job · $18.00 → $20.00 on Thursday
The rate changes on Thursday, and 4 of the week’s 44 hours are overtime.
44.0 paid hours · 40.0 at straight time · 4.0 at a premium
Here the common method comes out higher than the federal one. The comparison is signed, in both directions — it is information, not an accusation.
| Mon · $18.00 | 8.0 hrs |
|---|---|
| Tue · $18.00 | 8.0 hrs |
| Wed · $18.00 | 8.0 hrs |
| Thu · $20.00 | 8.0 hrs |
| Fri · $20.00 | 8.0 hrs |
| Sat · $20.00 | 4.0 hrs |
| One workweek · 44.0 hrs | 44.0 hrs |
The other method gives $872.00 — a difference of +$2.18 on this period. Employers legitimately use either. This is information about which method a check was figured with, not a claim that anyone was underpaid.
Figures come from the worked examples in the pay engine's own specification and are checked against it on every build. Educational, not legal or tax advice.
Every one of these is worked through in full on how the math works — inputs, rules applied, line-by-line output.
Your whole rotation in minutes
Pick a template, then tap or drag across the days. A normal week takes under a minute; a whole year takes about ten.
2-on/2-off/3-on, 24/48, Kelly days — any on/off sequence you actually work. You see a preview before it applies, you choose the range, and the past is never rewritten.
“Looks like you're on 2-on/2-off/3-on. Fill the rest of the year?” Preview first, always. It never fills anything in on its own.
A photo, a screenshot, a PDF, pasted text or an .ics file. The shifts land on the calendar as ghosts for you to confirm. Nothing is ever imported silently.
Split shifts, doubles, call-backs, two job sites. Each is its own record and the day stacks them — the single largest thing missing from every rival.
Catch it when the check is short
Photograph a paper stub, share in a portal PDF, or type the numbers. The reading happens on your phone, and nothing is saved or compared until you confirm it.
| Line | ShiftStub | Your check | Difference |
|---|---|---|---|
| Regular | $2,574.00 | $2,574.00 | match |
| Overtime | $351.00 | $351.00 | match |
| Night diff | $72.45 | $47.25 | −$25.20 |
| Weekend diff | $54.00 | $54.00 | match |
| Gross | $3,051.45 | $3,026.25 | −$25.20 |
Night diff — about $25.20 short
Your night differential was paid on 22.5 hours; we counted 34.5. The 12.0 hours on Wed Aug 5 look like they were missed.
Show the shifts Keep an eye on this
A deduction we did not know about — $22.00
Your stub lists PARKING $22.00. That is not a mistake — we just did not know about it. Want us to expect it every check?
Yes, always Just this once
Difference vs expected −$47.20
Two differences, two different meanings. A parking deduction is not missing wages, so it is not in the shortfall and it is not coloured like one. ShiftStub is not giving legal advice — it is showing you the arithmetic so you can ask.
Is this stub even for that pay period? And which overtime method does it look like it used? Compare across a method mismatch and you get fake shortfalls and fake overpayments of the very same hours.
Each stub you confirm sharpens the next estimate — including your real deductions, which is the only way take-home ever gets to be more than a guess.
Every message is framed as what to check. Money figures carry the word estimate. That is a rule the app enforces on itself, and one working detector is held back because it could not meet it.
We already thought of your week
A small calculation library, specified and tested against roughly 1,300 cases before a single screen was designed.
Speed
A full year — 600 shifts — recomputes in under 16ms on a four-year-old phone. The number is never stale, because there is never anything to wait for.
Yours, offline, no account
There is no sign-up, so there is nothing to log into and nothing to leak.
Your shifts, your hours, your pay rates, your employers, your stub data. All of it is processed and stored on the device. It is not collected.
Two diagnostics switches, both off by default, both taking effect the instant you tap them. And purchases, which go through the app stores.
Social security numbers, bank account fragments and routing numbers are struck out before anything else touches the text. If the reading is poor the app says so and offers manual entry. There is no silent fallback to a server.
In Settings. Not a policy page — the actual list. Zero marketing notifications, ever; that is a contract, not a setting you have to find.
The full detail is on the privacy page, written to be read by a person and not a lawyer.
Never lose the record
The second-most common one-star review under every rival is “my data disappeared”. This is the answer to it.
iCloud on iPhone, Android Auto Backup on Android, with visible status so you can see it happened.
An encrypted local export you hold. Free. Switching phones is not a reason to lose a year.
Export a timesheet on the 14th, edit a shift on the 20th, and the record shows both states with timestamps. No rival has this.
It never moves behind the paywall. PDF and spreadsheet timesheets, with an as-of stamp, are the Pro version of the same thing.
What it will never do
Each of these maps to a pile of one-star reviews under somebody else's app.
The pay math is free. Forever.
There is no free trial, because we do not ship one. There is no weekly plan, and there never will be.
Free
$0
Free forever. Not a trial, not a teaser.
Pro, at launch
$29.99a year
Renews yearly until you cancel.
Every way to pay
Billed by the App Store or Google Play, not by us. Cancel in your store account at any time. Refunds are handled by the store, and the app never argues with you. If a payment fails there is a 16-day grace period, Pro stays on, and you get one quiet banner about it — nothing else.
If Pro lapses
Features stop. Data never locks.
Nothing is deleted, hidden, or held hostage.
ShiftStub's pay math, backup, and text export are free forever. Pro is optional.
Prices are in US dollars and are the prices we will list. Existing subscribers are grandfathered on any price change by default. No free feature has ever moved behind the paywall and none ever will — changing that would take a written decision, and the answer is no. Full terms are on the terms page.
Not out yet
ShiftStub has not shipped. There is nothing to download today and no store page to link to. Leave an address and you get one email on launch day.
Coming to the App Store and Google Play. Not released yet, so there is nothing to download and these are not links.
Version 1 is US English and the pay engine is US labour law. Translating the interface without translating the law would ship a calculator that lies, so we have not. Canada is the one we have researched next.