TL;DR
- An HRIS models an employment relationship. A contract has a shape it does not fit: a rate instead of a salary, an end date, and sometimes a company rather than a person.
- Almost every platform in this category is licensed per employee, so a record that generates no HR administration costs the same as one that generates all of it. Ask for that price before you look at a feature.
- The field that changes everything is a contract end date with a named renewal owner. Employee records have no natural end, and that single absence is why access outlives engagements.
- Your headcount, your people-with-access count and your capacity count are three different numbers at this shape of company, and only one of them is in the HRIS.
- How a working relationship is characterised differs by jurisdiction and by circumstance, so take local advice on that. What this article covers is the systems question, which is separate and frequently confused with it.
- The cheapest useful action is an access reconciliation against contract end dates. It takes an afternoon and it finds things.
Two Hundred and Twelve People With Access, One Hundred and Forty-Eight on Payroll
A product company ran a careful quarterly access review and had done for two years. Every system, every account, signed off by a named owner.
The review ran against the employee directory. In the quarter somebody finally compared the directory against the single sign-on provider, the counts were 148 and 212. The difference was not a security breach. It was sixty-four contracted individuals, agency developers, two design studios and a handful of specialists, every one of them legitimately granted access by somebody who had the authority to grant it.
Nineteen of the sixty-four had finished their engagements. Four had finished more than a year earlier. Nobody had failed at anything: there was simply no process that ended when a contract ended, because the process that ends things was built around leaving a job. The access review had been reviewing the smaller population for two years and reporting completion, which is worse than not running it, since it produced confidence.
Best tools for HRIS Software
That is the defining problem at this shape of company, and it is not a feature gap in any HR platform. It is that the system of record records employment, the workforce is not all employment, and the gap is invisible from inside the system that is supposed to show you the workforce.
Why an HRIS Resists This
The resistance is structural rather than a shortcoming, and understanding it is what stops you buying the wrong fix.
An employee record is built around a relationship with no defined end. It has a salary, which is periodic and open-ended. It sits under a manager in a hierarchy. It accrues leave. It has a performance cycle, a compensation review, a benefits enrolment and a payroll calculation attached. Every one of those is a reasonable assumption about an employee and wrong about a contracted specialist.
A contract has a different shape. A rate rather than a salary, which may be hourly, daily or fixed for a deliverable. A start and an end, both of which are facts rather than events. A relationship with a budget holder rather than a line manager, and frequently no hierarchy position at all. No leave accrual, no performance cycle, no benefits.
So a platform asked to hold both either builds a second record type, which the better ones do, or it stores contractors as employees with fields left blank, which most do. The second approach is where the trouble starts, because blank fields do not stay blank: a reporting query that counts employee records now counts contractors, a leave accrual engine starts accruing for somebody with no entitlement, and a performance cycle invites somebody to a review they should not be in.
| Field | What it means for an employee | What it means for a contract | Common platform behaviour |
|---|---|---|---|
| Compensation | Salary, periodic, open-ended | A rate, possibly per deliverable | Stores a salary, so cost reporting is wrong |
| End date | Absent until somebody resigns | Known on day one | No field for it, or an optional note |
| Manager | Reporting line, approvals, reviews | A budget holder, no reporting line | Forces a manager, distorting the org chart |
| Leave | Accrues, with a balance | Not applicable | Accrues anyway unless suppressed per record |
| Performance | A cycle they belong to | Not applicable | Includes them unless excluded by hand |
| Identity | A person | Sometimes a company with several people | One record per person, so the supplier is invisible |
That last row is the one nobody plans for. When a design studio provides three people across eight months, the thing you have a relationship with is the studio, and the thing that needs access is three individuals. Platforms that model only individuals cannot tell you what the studio costs, and platforms that model only suppliers cannot tell you who has a login.
The Three Populations
Employees
The population every platform is built for. They are also, at this shape of company, the population that generates nearly all the HR administration while being a minority of the workforce, which is worth saying because it explains why HR teams at contractor-heavy companies feel busier than their headcount suggests.
Individual contracted people
One person, engaged directly, with a rate and an end date. These are the ones most likely to be stored as employees with blank fields, because they look like employees in the directory and in the daily work. They are also the population where the systems question is most often confused with a legal one.
A note on that, carefully. How a working relationship is characterised, and what follows from that characterisation, differs by jurisdiction and by circumstance. We are not going to say what any of it requires or implies, and nobody should treat how a record is stored in a piece of software as evidence about anything. Take local advice on the relationship itself. The questions in this article are about where data lives and who has access, which are separate questions that happen to be asked at the same time.
Supplier-sourced people
An agency, a studio or a consultancy provides people. The commercial relationship is with the firm, the access requirement is with the individuals, and the two have different lifecycles because people rotate within an engagement.
This population is where companies most often have no record at all. The contract sits with procurement or legal, the invoices sit with finance, the accounts sit with IT, and nothing holds the fact that four named individuals from one supplier currently have access to your production systems.
When You Should Keep Them Out of the HRIS
When the manual way is genuinely fine
Under about ten contracted people, a maintained list with five columns beats any configuration. Name, supplier, start, end, renewal owner. The accuracy comes from one person maintaining it deliberately, and that beats a platform where the data is a by-product of somebody else's process. Buy nothing yet.
When the pricing makes it absurd
If a platform charges a full per-employee fee for a record that triggers no payroll, no leave, no performance cycle and no benefits, and you have ninety such records, the arithmetic can easily make the HRIS the most expensive place to keep them. That is a legitimate reason to keep them out, and it is worth asking for a non-employee rate before accepting it as the answer.
When another system already owns it
If your procurement or finance system already holds every supplier contract with dates and owners, the HRIS is a second copy. Two copies of a date is worse than one, because one of them will be stale and nobody will know which. The better move is to connect to it rather than duplicate it.
The edge case that forces it in
A customer security questionnaire, or an audit, asking for a list of everybody with access to a system and what ended their access. That question cannot be answered from an employee directory plus four other places, and the companies that get asked it tend to get asked it repeatedly.
Five Questions People Ask First
"Should contractors be in the HRIS at all?" Sometimes, and the decision should be explicit rather than inherited. Put them in if you need one directory, one access review and one capacity view, and the per-record cost is reasonable. Keep them out if another system genuinely owns the contract data and can be connected. What causes problems is neither choice but the absence of one, which is how a company ends up with four partial lists.
"What does a contractor record cost?" The question most worth asking first and the one least often asked. Some platforms have a distinct, cheaper record type for non-employees. Some charge the full per-employee rate. Some will negotiate it if asked and not if not. At a company where contracted people outnumber employees, this single answer can reorder a shortlist more than any feature.
"Can one system handle payments to both?" Increasingly yes for individuals, and rarely for suppliers. Paying an individual in another country and paying an invoice from a studio are different processes with different approvals, and platforms that handle the first well often do not touch the second. Check which of your two populations the payment capability actually covers.
"How do we report headcount?" By publishing three numbers rather than arguing about one. Employees, which is the payroll and finance figure. People with access, which is the security figure. And available capacity, which is the planning figure. They will differ substantially at this shape of company, and the companies that try to reconcile them into one number produce something that answers none of the three questions.
"Does this affect how the relationship is treated?" How a working relationship is characterised differs by jurisdiction and by circumstance, so that is a question for local advice rather than for a software comparison. The practical point for this article is only that your systems decisions should not be made on an assumption about it either way, and that a record's location in a database is not the thing that settles it.
The Contract End Date Is the Whole Problem
If you change one thing after reading this, change this.
An employee record has no end date until somebody resigns, at which point a leaver process starts and does a dozen things. A contract has an end date on the day it is signed, and in most companies nothing happens on that date at all, because no process is watching it.
That single asymmetry produces almost every failure in this article. Access outlives engagements because nothing triggers removal. Costs continue because a renewal happens by default when an invoice arrives. Capacity planning is wrong because the plan assumes somebody who finished in March. And the access review reports completion because it reviews the population that has a leaver process.
Four fields fix most of it, and all four can live in a spreadsheet today.
The contract end date. Not approximate. The date, as signed. If it is open-ended, that is a different thing and should be recorded as open-ended rather than guessed at, because a guessed date that passes creates noise and a field full of noise gets ignored.
A named renewal owner. One person, not a team and not the requester's manager by default. The person who will be asked whether this continues. Teams do not renew contracts; people do, and when the field says a team name nobody is asked.
The supplier, where there is one. So that four individuals from one studio roll up to one commercial relationship, which is the only way to answer what a supplier costs and the only way to end an engagement cleanly rather than person by person.
A review date ahead of the end date. Thirty days is usually right. It converts an end date from an event that surprises people into a decision somebody makes, which is the entire point.
Because nothing breaks on the day a contract ends, this is a process that will never create its own urgency, which is why it needs a date and an owner rather than good intentions. The same reasoning applies to asset returns and account removal, both of which hang off this one field.
Access, and the Offboarding That Never Happens
The access problem deserves its own treatment because it is the one with consequences outside the company.
The structure of the failure is consistent. Access is granted by a reasonable person with authority, usually quickly, because somebody needs to start work. Access is removed by a process attached to leaving employment. A contracted person never leaves employment, so the second half never runs.
Three mechanisms close it, in increasing order of reliability and cost.
A recurring reconciliation. Compare your identity provider against the list of current engagements, monthly or quarterly, and act on the difference. Cheap, manual, and effective in proportion to how diligently it is done. The weakness is that it is detection rather than prevention, so there is always a window.
Access with an expiry date set at grant time. Where your identity provider supports time-bound access, set it to the contract end date at the moment access is granted. This is the single highest-value change available, because it inverts the default: access ends unless somebody extends it. The weakness is that it needs the end date to be known and recorded, which returns to the previous section.
A trigger from the record. The contract end date in the HRIS or the procurement system fires account removal automatically. The most reliable and the most work to build, and worth it where the access in question is sensitive.
And one thing that is not a mechanism, though it is often treated as one: asking the budget holder to tell IT when an engagement ends. That is the arrangement that is already in place at every company with this problem, and it fails for the same reason every time, which is that the engagement ending is not an event anybody experiences. Work simply stops arriving.
How to Choose: Five Questions Before You Talk to Any Vendor
What is your actual ratio, counted properly? Employees, individual contracted people, and named individuals provided by suppliers. Count the third category by asking IT for a list of accounts rather than asking procurement for a list of contracts, because the two disagree and the account list is the one that matters for access. Most companies find the ratio is further from parity than they thought, in the contractor direction.
What does a non-employee record cost on each platform? Ask before the first demo, in writing, and treat it as a scoring column. At this shape of company it has more effect on total cost than the tier you pick, and vendors will quote it differently depending on whether they have a distinct record type or a discount.
Which system should own contract dates? Decide between the HRIS, the procurement system and a maintained list, and pick one. Then ask every vendor how they read from or write to the other two. A platform that cannot be the single owner may still be the right choice if it integrates cleanly with whatever is.
Can your identity provider do time-bound access? This question is not about the HRIS at all and it may be the most valuable one here, because it determines whether the access problem can be prevented or only detected. Ask it early, because a yes changes the design of everything downstream.
Who is asked whether an engagement continues? If the honest answer is nobody, and renewal happens because an invoice arrives, that is the process gap. No platform creates an owner, so this has to be settled by a person before any tool will help.
The Options
A note on pricing. One platform here publishes list figures; the rest quote on request, and for this buyer the quote includes something more important than the tier, which is the per-record price for people who are not employees. Ask for it explicitly. Dates are given against every figure and every confirmation.
Rippling
Best for companies where contracted individuals are a large share of the workforce and payments to them are part of the problem rather than a separate finance process.
The relevant strengths for this buyer are the breadth across HR, payroll, device management and application access. The access piece matters more here than anywhere else in this article, because the population most likely to retain access is the one with no leaver process, and a platform that provisions and de-provisions accounts alongside the record can close that gap by construction rather than by reconciliation.
Where it struggles: it no longer publishes a price. Checked on 6 October 2026, its pricing page is a quote request form asking which services you need, with no currency figures on it anywhere. Comparisons still quoting a per-user figure are repeating a number that is no longer on the vendor's site. Supplier-level relationships, as opposed to individuals, remain thinner than individual engagement handling.
HiBob
Best for companies between roughly 100 and 1,000 people wanting a strong employee experience, where contracted people need to be in the directory but generate little administration.
Good organisational modelling, which matters at this shape of company because contracted people frequently do not sit in the reporting hierarchy at all and platforms that insist on a manager produce an org chart nobody recognises.
Where it struggles: it publishes no price, confirmed on its own site on 10 October 2026, so the non-employee record question has to be asked in a sales conversation. Its centre of gravity is the employee experience, which is the right priority for most buyers and not the thing that is broken for this one.
BambooHR
Best for companies with a clear employee core and a modest contracted population handled deliberately outside the platform.
It is the only platform here that publishes list pricing. Read on 6 October 2026, Core is $10 per employee per month, Pro is $17 and Elite is $25, above 25 employees, with flat rates of $250, $425 and $650 per month at 25 and under.
Where it struggles for this buyer: it is built around the employment relationship and does not have a strong distinct concept of a non-employee engagement with an end date and a supplier. At a company where contracted people outnumber employees, that is the central requirement rather than an edge case, so the honest framing is that it suits the inverse ratio.
Personio
Best for companies whose headcount is concentrated in Europe, with a mixed workforce across several European markets.
The breadth of local handling across European markets is the reason it reaches shortlists, and for a company with contracted people in six countries the per-market depth is worth more than a broad coverage claim.
Where it struggles: its pricing page did not return a readable figure when we checked on 10 October 2026, so treat it as quote-based and ask directly, including the non-employee record price.
Workday
Best for larger companies, or those where finance already runs the same vendor, and specifically where the contracted population needs to be visible in the same reporting as employees.
The structural strengths are relevant here. Effective dating means an engagement that started and ended can be reported correctly for the period it covered, which is exactly what a contracted population needs and exactly what a platform storing contractors as employees with blank fields cannot do.
Where it struggles: cost and elapsed time, neither published. A company of 200 with a large contracted population is unlikely to justify the configuration effort. It prices on request.
SAP SuccessFactors
Best for companies already inside a wider SAP estate, where the contracted workforce also appears in procurement and finance systems from the same vendor.
That last point is a genuine advantage for this specific buyer, because the supplier relationship and the individual engagement are more likely to be connectable when both sit inside one estate.
Where it struggles: unlikely to be chosen on HR merit alone at the sizes most contractor-heavy companies are, with a configuration programme expected. It prices on request.
Paycor
Best for companies whose administrative load is United States payroll across mixed hourly and salaried populations.
Worth naming because a share of companies describing a contractor-heavy workforce actually have a large hourly employee population, which is a different problem with a payroll-shaped answer.
Where it struggles: limited fit for supplier-sourced people and for multi-country engagements. It prices on request.
The Comparison
| Platform | Publishes a price | Distinct non-employee record | Contract end date native | Provisions access | Supplier-level view |
|---|---|---|---|---|---|
| Rippling | No, quote form only | Yes | Yes | Yes, this is the differentiator | Limited |
| HiBob | No | Yes | Moderate | No | Limited |
| BambooHR | Yes, list pricing | Limited | No | No | No |
| Personio | Not readable when checked | Yes | Moderate | No | Limited |
| Workday | No | Yes | Yes | Partly | Yes, with procurement |
| SAP SuccessFactors | No | Yes | Yes | Partly | Yes, with procurement |
| Paycor | No | Limited | No | No | No |
Two columns decide this for most buyers. The fourth, because provisioning access from the record is the only mechanism that prevents the access problem rather than detecting it. And the first, because the price you need is not on any page and has to be asked for.
The Decision Table
| Situation | Scale | Setup | Primary Pain | Recommended Starting Point |
|---|---|---|---|---|
| Fewer than ten contracted people | Any | Five-column maintained list | Nothing structural yet | Keep the list. Add a renewal owner column |
| Access count exceeds headcount by a third | Any | Reconciliation against engagements | Reviews run against the wrong population | Run the reconciliation this month, before buying |
| Contracted people outnumber employees | 100 to 1,000 | Platform that provisions and de-provisions | Access outliving engagements | Rippling, scoped around access as much as HR |
| Suppliers provide rotating individuals | Any | Supplier record above individual records | Nobody knows what a studio costs or who it staffs | Connect procurement data, do not retype it |
| Per-employee pricing for admin-free records | 50 plus | Negotiated non-employee rate | Paying a full rate for a blank record | Ask every vendor the non-employee price first |
| Engagements renew because invoices arrive | Any | Review date 30 days before contract end | No named renewal owner | Name an owner per engagement, today |
| Customer security questionnaires arriving | Any | One directory, evidenced access removal | Four partial lists, none authoritative | Decide where the record lives, then evidence it |
| Large hourly employee population, few contracts | Any | Payroll-led platform | Mixed-rate payroll admin | Paycor, scoped as a payroll project |
Running the Access Reconciliation
This is the afternoon that finds things, and it is the one action worth taking before any purchase.
Export three lists. From your identity provider, every account that has signed in during the last ninety days, with the owner and the date of last sign-in. From the HRIS, every current employee. From wherever contracts live, every engagement with an end date, including the ones that have passed.
Put them in one sheet, matched on email address rather than on name, because name matching produces false pairs and a reconciliation with false pairs gets abandoned.
Then sort the identity list into four buckets and count each one.
Matches an employee. The population your existing review covers. No action.
Matches a current engagement. Legitimate, and the thing to check is whether the engagement's end date is recorded. An account that matches an engagement with no end date is tomorrow's problem rather than today's.
Matches an ended engagement. The finding. Count these and note how long each one has been over, because the distribution is the argument for whichever fix you choose. A handful at thirty days is a process lag; several at a year is a missing process.
Matches nothing. The uncomfortable bucket, and it is never empty. Service accounts, people from a supplier nobody recorded, somebody set up for a trial two years ago. Resolve each one by asking the account's owner, and where there is no owner, that itself is the answer.
Write the four counts down with the date. Then do the single highest-value thing available, which is not to fix all of them: pick the accounts in bucket three, remove them, and set an expiry date on every account in bucket two that has a known end date. Fixing the instances in bucket four feels more urgent and teaches you less.
So re-run it a quarter later with the same method. One measurement is a fact about one day. Two is a trend, and the trend is what tells you whether the fix you chose works, which is the only thing that will keep this resourced after the initial alarm fades.
What the Connection to Procurement Has to Carry
The decision table above says to connect procurement data rather than retype it, which is easy to write and worth specifying, because a connection built without a specification carries the contract and none of the things that make it useful.
Four fields, and the first is the only one that is always built.
The engagement dates, start and end. The contract record almost always has these and the HR directory almost never does. Carrying the end date across is the whole point, and it needs to carry a revised end date too, since extensions are more common than new contracts and a connection that only reads the original date is wrong within a quarter.
The named individuals under a supplier agreement, not just the supplier. This is where connections usually stop short. Procurement holds a contract with a studio; the access review needs four email addresses. If the supplier does not tell you who is working and you do not ask, the connection carries a commercial fact and no operational one.
The budget holder, as a person. Procurement systems frequently record a cost centre, which is not somebody you can ask a question. Carry the individual, and refresh it, because budget holders change more often than engagements do and an inherited name is worse than a blank field.
The engagement status, as distinct from the contract status. A contract can be live while nobody is working against it, which happens with retainers and framework agreements. Access should follow the second, not the first, so a connection that reads only contract status will keep accounts open against agreements that are dormant by design.
And specify the direction deliberately. Reading from procurement into the directory is the common and safer arrangement, since procurement owns the dates. Writing back is occasionally wanted so that an access removal is visible to the contract owner, and it is worth resisting at first, because a two-way connection between systems with different definitions of an end date produces disagreements that take longer to resolve than the manual step it replaced.
What Getting This Wrong Costs
The visible cost is the access finding, and in most companies it is handled quietly and quickly once it is seen.
The second cost is money, and it is larger than people expect. An engagement that renews because an invoice arrives, rather than because somebody decided, continues at whatever rate was agreed originally for as long as nobody looks. At a company with sixty engagements, a handful running on past their usefulness is not a rounding error, and the reason it persists is that each individual one is too small to prompt a conversation while the total is never assembled.
The third is that capacity planning becomes guesswork. If a meaningful share of your delivery capacity is contracted, and the system of record covers only employees, then every plan is built on a list somebody maintains by hand. That list will be wrong in the optimistic direction, because ending is invisible and starting is not, so the plan systematically overstates what you can do. Which is the worst direction for a planning error to run.
And the reframing question: if a customer asked you today for a list of everybody with access to their data and the date each person's access ended, how many systems would you open, and would you be confident the answer was complete? At this shape of company that is usually a four-system answer, and the gap between it and a one-system answer is what this decision is actually about.
When You're Ready to Move Beyond the Second Spreadsheet
The honest position is that the second spreadsheet is not the problem, and a platform will not retire it on its own. Companies that buy an HRIS to solve a contractor problem generally end up with an HRIS and the same spreadsheet, because the spreadsheet was never short of columns. It was short of a process attached to its end-date field.
The transition point is when the number of engagements exceeds what one person can hold in their head, which is usually somewhere between fifteen and twenty-five, or when the first customer security questionnaire arrives. Either of those is a reason to look. Headcount ratio alone is not, which is why a company with forty contracted people and one diligent coordinator can be in better shape than one with twelve and nobody watching.
The sequence that works costs nothing. Run the access reconciliation and write down the four counts. Add an end date, a renewal owner, a supplier and a review date to whatever list you have now, and leave the rest of it alone. Ask your identity provider whether time-bound access is available, because a yes is worth more than a platform. Then decide, explicitly, which system owns contract dates.
Do that and the vendor conversation becomes short and specific. You will know your real ratio, your actual access gap, which system owns dates, and the one question that matters most on price, which is what a record costs for somebody who generates no HR administration at all. That is a better position than any feature matrix, and in a market where almost nobody publishes a figure, knowing exactly which figure to ask for is most of the advantage available.
Frequently Asked Questions
Should contractors be stored in the HRIS?
It depends on what you need from one place, and the decision should be explicit rather than inherited. Put them in if you want one directory, one access review and one capacity view, and the per-record cost is acceptable. Keep them out if your procurement or finance system genuinely owns the contract data and can be connected to, because two copies of a date is worse than one. What causes the failures described here is the absence of a decision, which produces four partial lists and no authoritative one.
What does a contractor record cost in an HRIS?
It varies more than any other line in a quote, and it is the question to ask before the first demo. Some platforms have a distinct and cheaper record type for non-employees, some charge the full per-employee rate for a record that triggers no payroll, leave, performance or benefits, and some will negotiate it only if asked. At a company where contracted people outnumber employees this single answer moves total cost more than the tier you choose, so treat it as a scoring column rather than a detail.
Why do contractors keep access after their contract ends?
Because access is removed by a process attached to leaving employment, and a contracted person never leaves employment. Work simply stops arriving, which is not an event anybody experiences or reports, so nothing triggers removal. The usual arrangement, in which the budget holder is expected to tell IT, fails for that reason at essentially every company. The fix that works is time-bound access set to the contract end date at the moment access is granted, which makes ending the default rather than an action.
How should a contractor-heavy company report headcount?
Publish three numbers rather than reconciling them into one. Employees, which is the payroll and finance figure. People with access, which is the security figure and is usually much larger. And available capacity, which is the planning figure and includes people the first number excludes. At this shape of company they differ substantially, and a single blended number answers none of the three questions while inviting an argument about which definition is correct.
Does storing someone in an HRIS affect their status?
How a working relationship is characterised, and what follows from that, differs by jurisdiction and by circumstance, so that is a question for local advice rather than for a software comparison. The practical point here is narrower: nobody should make a systems decision on an assumption about it in either direction, and the location of a record in a database is not the thing that settles the question. Get advice on the relationship, then decide separately where the data should live.
What is the single most useful field to add?
The contract end date, with a named renewal owner beside it. An employee record has no end date until somebody resigns, at which point a leaver process does a dozen things; a contract has an end date on the day it is signed and in most companies nothing watches it. That asymmetry produces nearly every failure in this area, from access outliving engagements to renewals that happen because an invoice arrived. Add a review date thirty days ahead and the end date becomes a decision rather than a surprise.
How do you handle people provided by an agency or a studio?
Model the supplier above the individuals, because the commercial relationship is with the firm and the access requirement is with named people who rotate. Without the supplier level you cannot answer what a studio costs or who it currently staffs, and ending an engagement becomes a person-by-person exercise that misses somebody. Most HR platforms model individuals only, so this is frequently the one part of the picture that belongs in a procurement system, connected rather than copied.
HROpsLab takes no vendor money and publishes no paid placements, which is why the vendors that decline to publish a price are named as declining rather than quietly left out of the comparison.