Timecards: Admin Side
For back-office staff (timecard managers, billers, payroll) managing timecards in Bilflo.
Before you start
You need:
- Admin or back-office role in Bilflo
- Access to Billing and People sections of the sidebar
Where to find timecards
| What you want to see | Where to go |
|---|---|
| Timecards pending approval across all contractors | Billing → Contract → Approve Time (/billing/contract/approve-time) |
| A single contractor’s full history | People → Contractors → [contractor] → Timecards |
| Timecards for a single job/placement | People → Clients → [client] → Contract → [job] → Timecards |
Step 1 — Open a timecard
From any list view, click into a week to see the timecard detail. You’ll see:
- Per-day breakdown (Clock In/Out template or Daily template, matching the job’s collection method)
- Pay breakdown: Straight Time, Overtime, Double Time, Sick, Vacation
- Per Diem and Expenses on the same screen
- Comments thread with the contractor/approver
- Status in the header
Step 2 — Comment or message
- Add a message via the Comments section, but only while the timecard is before Submitted status (StatusId < 7).
- After submission, the comments thread is read-only — denial is the only “comment-able” path.
Step 3 — Approve, deny, or reopen
| Action | UI | Effect |
|---|---|---|
| Approve a single timecard | Approve button on detail | Status → Approved |
| Deny a single timecard | Deny button on detail | Status → Denied, returns to contractor |
| Bulk approve | Checkboxes on list → Approve Selected | All marked Approved |
| Bulk deny | Checkboxes on list → Deny Selected | All marked Denied |
| Reopen a Processed/Exported timecard | Admin-only — Reopen action | Status reset to allow edits |
Step 4 — Force a timecard through (admin override)
If an approver is unresponsive and a deadline is looming:
- Use Move to Processed to push the timecard past approval into billing/payroll-ready status.
- This bypasses the approver workflow entirely — use only when authorized.
- Status goes to Processed (6) — locks the timecard from edits.
Step 5 — Recalculate
Use Recalculate on a timecard after you’ve changed rates, hours, or burden mid-cycle.
Important caveats:
- Recalculate does not work on Processed (Status 6) timecards. Reopen the timecard first.
- Recalculate runs two stored procs behind the scenes:
CalculateTransactionDataandCalculateBurdenGP. If a timecard was created via the old workflow and is in Did Not Work status, recalculate may not write to the table current reports read from — verify on Did Not Work records by spot-checking the transaction records.
Step 6 — Move to invoicing / payroll
| Action | What it does |
|---|---|
| Move to Processed | Marks the timecard as ready for invoice/payroll generation |
| Mark as Exported | Pushes the timecard out to payroll/accounting; locks it fully |
The lifecycle for a healthy timecard: Submitted → Approved → Processed → Exported
Filtering and finding timecards
On any list view:
- Search by contractor, client, job title, or week-ending date
- Date range filter
- Click column headers to sort
- Filter by Status
Status lifecycle (full reference)
| Status | ID | Meaning |
|---|---|---|
| Not Submitted | 1 | Period is open but no contractor activity yet |
| Missing | 2 | Period has passed with no submission |
| Denied | 3 | Approver rejected; back to contractor |
| Review to Approve | 4 | In approver’s queue |
| Approved | 5 | Approver signed off |
| Processed | 6 | Moved to billing/payroll-ready (locked from edits) |
| Submitted | 7 | Contractor has sent it |
| Resubmitted | 8 | Contractor resent after denial |
| Did Not Work | 9 | Closed as zero hours |
| Draft | 10 | Saved by contractor, not submitted |
| Exported | 11 | Pushed to payroll/accounting (fully locked) |
Common admin pitfalls
| Issue | What to do |
|---|---|
| Contractor says they submitted but you can’t find it | Check the Missing filter — they may have status Missing if the job has the wrong period-end day |
| “Did Not Work” timecards show blank in Contract Overview | Known issue (BF-7286) — when a timecard passed through Did Not Work before submission, transaction records may not generate. Spot-check by running Recalculate and verifying the transaction table. Reports use LEFT JOIN to surface these going forward. |
| Recalculate button doesn’t fix the numbers | The timecard is in Processed (6) — reopen it before recalculating |
| Approver isn’t getting notifications | Check the Approver list on the Contract Job — confirm real email (not a BF.SYSTEM.* placeholder) and Can Approve Time is checked |
| Contractor entered time on a job that ended last week | Check the Contract Job’s End Date — if it’s past, close the job’s status to prevent future entries |
| Need to edit an Approved timecard | Use the admin reopen action to drop status back to Draft; remember to re-route through the approver after |
| Bulk approving a long list | Use Approve Selected — but check contractor and hours columns first; bulk-approval errors are hard to unwind once Processed |
Appendix — Approver Portal (Client-Side)
Your client-side approvers — supervisors and managers at your client facilities — use a different URL and a simpler UI. As an admin, you set up the approver list on the Contract Job; this appendix is so you can answer their questions.
Approver entry points
| URL | Purpose |
|---|---|
/client/approvals/outstanding | Timecards waiting on their approval |
/client/approvals/history | Already-approved timecards (historical) |
What the approver sees
- List of pending timecards across all contractors and jobs they’re assigned to approve
- Click into any one to see the per-day breakdown and totals
Approver actions
| Action | What it does |
|---|---|
| Approve | Signs off the timecard; goes to back-office for processing |
| Deny | Opens a comments modal; on send, status → Denied and contractor sees it back in Outstanding |
Approver permissions are set on the Contract Job
You set what each approver can do when you added them to the Contract Job:
- Can Approve Time — required for timecard approval
- Can Approve Per Diem — if enabled, they approve per-diem reimbursements
- Can Approve Expenses — if enabled, they approve expense reports
- View Invoices — read-only invoice visibility
If you set up an approver chain (sequential approval), the second/third approvers won’t see the timecard until prior approvers have signed off.
Common approver pitfalls
| Issue | What to do |
|---|---|
| Approver clicks the email link and lands on an empty list | Timecard was likely auto-approved by an admin override, or another approver in the chain hasn’t acted yet. Confirm by checking History. Can also indicate the Did Not Work bug — spot-check transaction records. |
| Approver wants to bulk-approve multiple weeks | Bulk select on Outstanding list, then Approve Selected |
| Approver replaced (left the company) | Update the Contract Job’s approver list; historical approvals are not affected |
| Approver shows “(no email)” in the list | User was imported as a system placeholder — give them a real email in their user profile or notifications won’t reach them |