Timesheets That Don't Lie — Why Submission and Approval Need to Be Separate Steps
Ask a small agency owner what they actually trust about their own billable-hours data, and you'll often get a pause before the answer. Not because the hours are wrong, exactly, but because nothing stopped anyone from going back and quietly nudging a number after the fact. Someone remembers a call ran longer than they logged, so they add fifteen minutes three weeks later. Someone else realizes they double-billed a Tuesday and fixes it themselves without telling anyone. Individually, these are all reasonable, well-intentioned edits. Collectively, they mean the "final" timesheet you're invoicing a client from was never actually final — it was editable right up until someone happened to pull a report.
That's the problem a real submission-and-approval split solves, and it's worth understanding why the two steps can't collapse into one without losing the thing that makes a timesheet useful in the first place.
A timesheet you can edit forever isn't a record
Picture a four-person design studio billing three different clients out of the same pool of contractors. If "logging time" and "the number that goes on the invoice" are the same unlocked, always-editable table, then technically nothing is ever final until someone manually freezes a spreadsheet snapshot before sending an invoice — which is exactly the kind of manual step that gets skipped on a busy Friday. A week later, a well-meaning correction to last week's numbers can quietly shift what was already invoiced, and now the studio's internal records and the client's invoice disagree, with no clean way to see who changed what or when.
The fix isn't more discipline. It's a structural lock: once time is submitted, it stops being editable by default. Not because anyone's being punished for making mistakes, but because a record you can silently rewrite isn't a record.
What submission actually does
In SparkyProjects, Timesheets works from a weekly grid — your logged time for the selected week, broken out by project and by day. You look at it, confirm it's right, and submit it. That submission is the moment things change: it locks the underlying time entries from further editing until the timesheet is either approved or rejected. You can't quietly go back in and adjust a Tuesday after you've submitted the week it belongs to. If you need to fix something, there's a real path for that — but it isn't "edit it anyway."
You get one submission per week. If a manager rejects it, submitting again replaces that rejected version rather than stacking up duplicate records, so there's never ambiguity about which submission for a given week is the live one.
What approval actually does
The other half of the split belongs to whoever has approval permission on your team. Submitted timesheets from the people they manage show up for review, and from there it's a genuine decision, not a rubber stamp: approve it to finalize the week, or reject it — with an optional note explaining why — which unlocks the underlying time entries so the person can fix whatever needs fixing and resubmit.
This is the part that actually protects everyone, not just the business. The person who logged the time gets a clear, bounded way to correct a mistake instead of just quietly changing history. The manager gets a real point where they've looked at the week and said "yes, this is right" before it becomes a number a client sees. And once that approval happens, both sides are looking at the same frozen, agreed-upon record — not two slightly different versions of "what we billed for that week."
Why the two steps genuinely can't be one step
It's tempting to think you could get most of the benefit with just a single "lock this timesheet" button and skip the formal approval half. But that misses what approval is actually doing. Submission is the person saying "this is what I did." Approval is someone else — with visibility the submitter doesn't necessarily have, across the whole team's workload — saying "I've checked this and it's correct." Collapse those into one action and you've lost the second set of eyes, which is precisely the part that catches an honest mistake before it turns into an invoice line item a client questions.
There's also a real asymmetry worth noticing: rejection deliberately unlocks the entries again. That's not a loophole in the "locked" promise, it's the whole point — a lock that can never be reversed by the right person, for the right reason, would just push people back toward informal workarounds outside the system entirely. The lock only has to hold against silent, unreviewed edits. It was never meant to hold against a manager who's actually looked at the week and sent it back with a note.
Why this matters more as a team grows
A solo freelancer logging their own hours for their own invoices doesn't need much of this — there's no second person to approve anything, and the "lock" is really just a personal discipline aid. But the moment a business has even one contractor or one junior teammate logging billable time that someone else invoices from, that gap between "logged" and "verified" becomes real risk. Submission-and-approval isn't overhead added for its own sake. It's the mechanism that lets a manager trust a timesheet without personally re-verifying every entry on it — which is the only way this scales past one person.
How to do this in SparkyProjects
Open Timesheets from the sidebar to see your logged time for the current week as a grid by project and day, and submit it when you're ready — that locks the entries until they're approved or rejected. If you have approval permission, submitted timesheets from your team appear there for review, with approve/reject (plus an optional note on rejection) as the two real outcomes. Full feature rundown at projects.sparkyli.com/features.