How to Create a Contract Job
A Contract Job is the placement record — it ties one contractor to one client with a start date, bill rate, and pay rate. You can’t bill or run payroll until a contractor has at least one Contract Job.
Before you start
You need:
- The contractor already created in Bilflo (see “Adding a Contractor”)
- The client already created with an active agreement
- Start date and first week-ending date
- Bill rate and pay rate for at least Regular hours
- The workers comp class code to use
- The work-site address (drives WC and tax setup)
- At least one approver to receive timecard notifications
You’ll need permission to access Billing → Contract in the sidebar.
Step 1 — Open the new contract job form
- From the left sidebar, click Billing → Contract.
- Click the New button at the top of the contract list.
You’ll land on the Contract Job Detail screen (URL: /billing/contract/new).
Step 2 — Fill in the standard job info
| Field | Required | Notes |
|---|---|---|
| Client | Yes | Start typing to search; pick from the dropdown. Must already exist. |
| Contractor | Yes | Start typing the contractor’s name to search and select. |
| Job Title | Yes | Free text — e.g., “Anesthesia On-call”. |
| Job Type | Yes | Dropdown — pick the placement category. Cannot be changed after the job is created, so pick carefully. |
The Status field is read-only and shows after approval. New jobs start as Draft.
If the client has no active agreement, you’ll see a warning at the top — get the agreement set up first or the job won’t bill correctly.
Step 3 — Set start and end dates
In the Schedule section:
| Field | Required | What it does |
|---|---|---|
| Start Date | Yes | The contractor’s first day on assignment. Can be any day of the week. |
| First Week Ending Date | Yes | The end day of the contractor’s first weekly timecard cycle (e.g., Sunday for a Mon–Sun cycle). This sets the weekly cadence for the whole assignment. |
| End Date | No | Leave blank for open-ended assignments. Optional now; you can set it later. |
Difference between Start Date and First Week Ending Date:
- Start Date = hire/assignment date (can be mid-week)
- First Week Ending Date = the end of the first timecard week (must align with your payroll calendar)
- Example: contractor starts Tuesday 6/2, your payroll week ends on Sundays → set First Week Ending Date to Sunday 6/7. Their first timecard covers Tue–Sun.
Important date lock: once the contractor submits their first timecard against this job, Client, Contractor, Start Date, and First Week Ending Date all become locked and can’t be changed without admin intervention. Verify these before letting the contractor enter time.
Step 4 — Set the work-site address and Workers Comp code
In the Burden section:
- Select the Address (the work-site state drives WC rate and tax setup).
- Select the Workers Comp Code from the filtered dropdown — only codes valid for that state appear.
Until you select an Address, Total Burden shows 0% and burden won’t calculate.
Step 5 — Add pay rates and bill rates
Expand the Time and Pay section.
- Click + Add Items to open the pay-item picker.
- Select the pay items the contractor will be paid/billed for. Common items:
- Regular
- Overtime (OT)
- Double Time (DT)
- Holiday
- Sick Time (only if enabled on the contractor profile)
- Vacation Time (only if enabled on the contractor profile)
- For each row, enter:
- Pay / Cost = what the contractor earns per hour
- Bill Rate = what the client is invoiced per hour
- Repeat for every pay item the assignment needs.
Tips:
- Always add Regular first; OT/DT are typically a multiple of Regular.
- Bilflo doesn’t auto-calculate margin or GP in this view — keep a calculator handy if you want to verify markup.
- Use the trash icon to remove a row.
- If you don’t see Sick or Vacation in the picker, check that they’re enabled on the contractor’s profile first.
Rate history: there’s no effective-dated rate-change UI on the job. If a rate changes mid-assignment, you’ll edit it in place — past timecards aren’t recalculated. Note this for retro situations.
Step 6 — Configure burden
After the Address and WC Code are set, the Burden section’s table populates with your company’s default burden items (FICA, FUTA, SUTA, WC, benefits, etc.).
You have three options via the Actions dropdown:
| Action | When to use |
|---|---|
| Add item | Add a custom burden item on top of defaults |
| Reset burdens | Wipe overrides and revert to company defaults |
| Override | Replace the itemized table with a single flat % for this job |
For most jobs, leave the defaults alone — they come from your company-level burden configuration. Use Override only when a specific assignment has a known different burden (MSP flat, atypical WC).
The Total Burden at the bottom of the table is what gets loaded into true cost / GP calc.
Step 7 — Add approvers
Approvers are who reviews and approves the contractor’s timecards each week.
Expand the Approvers section (it’s hidden if your time-collection method is one of the automated types — TimecardMethodId 3, 4, or 10).
- Click + Add Approver.
- Search by name or email in the modal and select the approver.
- For each approver, toggle which actions they can perform:
- Can Approve Time — the core timecard approval
- Can Approve Per Diem — per-diem reimbursements
- Can Approve Expenses — expense reports
- View Invoices — visibility into client invoices for the job
Approver chain:
- Use the Up/Down arrows to set the order of approvers.
- Choose one of two modes:
- Any sequence — any approver can approve in any order
- Sequential — set a minimum number of approvals required from N of M approvers (e.g., 2 of 3)
Notes:
- Approvers must already exist as users in Bilflo — you can’t type a free-form email here.
- If an approver shows “(no email)”, they were imported as a system placeholder. Update their profile with a real email or they won’t get notifications.
- Approvers are tied to the Contract Job, not the client. If you have 10 jobs at the same client, each job’s approver list is independent.
Step 8 — Save
There are three save options at the bottom of the form:
| Button | Effect | Who can use it |
|---|---|---|
| Save Draft | Saves as Draft (Status 1). No timecards can be entered yet. | Anyone with edit access |
| Submit for Approval | Routes to a supervisor for approval. | Non-admin users |
| Save and Approve | Saves and instantly approves (Status 2). Timecards can be entered immediately. | Admins only |
Until the job is Approved, no timecards can be entered or billed. Draft is fine for staging; remember to push it through approval before the contractor’s first day.
Setting an End Date later
Once a job is Approved, the End Date field switches to a modal-based control.
- Open the contract job.
- In the Schedule section, click the End Date control.
- In the modal, choose:
- Set End Date — set a new end date
- Change — modify an existing end date
- Clear — remove the end date (assignment becomes open-ended again)
Important:
- Setting an End Date does not automatically change the job status to Ended/Terminated. You still control status manually.
- Setting an End Date does not automatically grey out the timecard for periods after the end date in older builds — confirm with QA that your release handles this correctly.
- End Date can be any day of the week (no period-end validation).
- For mid-week ends, the contractor can still enter time through the rest of the week unless you also close the job’s status — keep an eye on the first week-ending date after the end date.
Common pitfalls
| Issue | What to do |
|---|---|
| “Total Burden = 0%” | Make sure the Address is selected — burden won’t calculate without it |
| Sick / Vacation not in pay item picker | Enable them on the contractor’s profile first, then come back |
| Client picker shows no results | Client doesn’t exist yet — create the client first, or click “Add new Client” in the modal |
| Can’t change Client / Contractor / Start Date | Timecards have already been submitted — those fields are now locked |
| End Date set but contractor can still submit time after it | Status may still be Approved — check that the End Date is past the latest week-ending date and consider closing the job after the final timecard |
| Job is “Draft” and won’t bill | Submit for Approval (or Save and Approve as admin) — Draft jobs don’t generate invoices |
| Bullhorn doesn’t show the new job | Bilflo → Bullhorn sync isn’t automatic; the integration uses outbound sync IDs only when explicitly mapped |
| Approver isn’t getting timecard emails | Confirm their user record has a real email (not a BF.SYSTEM.* placeholder) and that they have Can Approve Time checked |
What happens after save
- The job appears in Billing → Contract with its status.
- Once Approved, the contractor sees the assignment in their timecard portal starting from the First Week Ending Date.
- Approvers begin receiving weekly timecard notification emails once timecards are submitted.
- Burden + bill/pay rates flow into invoice generation and payroll export.
Next steps after creating the job
- Verify the contractor can log into their portal and sees the job.
- Run a test timecard for the first week and walk through the approval flow.
- Generate a sample invoice to confirm bill rate, burden, and any per-diem flow correctly.
- If syncing to Bullhorn, manually confirm the placement mapping.