Skip to main content

How to Set Up Revenue Tracking for a Contract Job

Written by Umme Saira

Track Revenue for a Contract Job

Contract jobs calculate revenue based on time — pay rate, bill rate, and contract duration. Configure billing details on the job once, and Recruiterflow auto-fills placement records each time you hire a contractor.

Set Up Contract Billing Details

Step 1: Open the Billing Tab and Select Contract

Go to the job, click the Billing tab, and select Contract from the Engagement Type dropdown. Click +ADD DETAILS.

Step 2: Set Contract Dates and Payroll Unit

Enter the Expected Contract Start Date and Expected Contract End Date — the end date must be after the start date. Then set your payroll currency and time unit.

Currency defaults to whatever is set in your Workspace Settings. The time unit defaults to hour, but you can switch to day, week, or month depending on how the contract is structured.

Step 3: Enter Pay Rate and Bill Rate

Add both rates per time unit:

  • Pay Rate — what you pay the contractor

  • Bill Rate — what the client pays you (contractor pay + agency fee). Always higher than the pay rate.

Default values for hours per day, days per week, and days per month are pre-filled — update them to match your contract. If you choose a weekly payroll unit, a Weeks per month field also appears. Add working days and any holidays before moving on.

Step 4: Set Revenue Attribution

Contract jobs default to 100% attribution to the Job Recruiter. Change the role or split across multiple users by clicking the attribution dropdown. Supported roles:

  1. Job Recruiter

  2. Job Account Manager

  3. Lead Owner

  4. User Moving the Stage to Hired

  5. Custom User

Click Save in the top-right corner when done.

Placing Candidates

When a candidate moves to the Hired stage, a placement record opens with billing details auto-filled from the job setup. Each hired contractor gets their own record — useful when contractors have different rates or contract lengths on the same job.

From each placement record, you can:

  • Adjust contract dates, rates, and units for that specific candidate

  • Add a bonus (defaults to the placement date)

  • Turn off the Track Revenue toggle to exclude this placement from revenue totals

  • Update working days and holidays per contractor

  • Adjust attribution percentages for this individual placement

  • Add billing contacts from the associated company

  • Close the job once all roles are filled

Viewing Revenue

Head to the job's Billing tab to see all placed candidates, revenue to date, attribution breakdown, and placement details. Two figures matter:

  • Total Revenue — revenue realized so far from this contract

  • Total Forecasted Revenue — expected total over the full contract duration

Practical Example

You're staffing a 3-month data engineering contract at a $120/hr bill rate and $90/hr pay rate. You set up the billing tab with those rates, an hourly time unit, and 8 hours/day defaults. When you place two contractors, each gets a pre-filled placement record. One contractor negotiates different hours — you update only their record without touching the other's. Both placements feed into the job's Total Revenue automatically.

Things to Know

  • Each placed candidate has a separate placement record; rates and hours can differ between contractors on the same job.

  • Turning off Track Revenue on a placement excludes that contractor from all revenue totals — useful for internal or non-billable hires.

  • Bill Rate must exceed Pay Rate; the difference is your agency margin.

  • Workspace default currency applies automatically but can be changed per contract in the billing setup.

  • Changes to the job's billing setup don't retroactively update existing placement records.

Related Articles

  • How to Set Up Revenue Tracking for a Contingent Job

  • How to Set Up Revenue Tracking for a Retained Job

  • How to Analyze Revenue by Job Type and View Future Revenue

Did this answer your question?