Leave and absenceEU compliance

B2B Contractors and Leave: The Approve Button Is Evidence

B2B Contractors and Leave: The Approve Button Is Evidence

Half of CEE tech runs on mixed teams. Some people on employment contracts, some on B2B, everyone in the same Slack, the same standup, the same HR tool. And in that HR tool everybody has the same leave flow: request days, manager clicks Approve, days come off a balance.

That last sentence is the problem, and because the summer headlines died down, almost nobody has fixed their software.

Orientation, not legal advice - and this one genuinely needs a lawyer, because the facts of your particular arrangements decide the answer. What follows is why the software configuration is worth a conversation with them. (Szukasz opisu po polsku? Praktyczne zestawienie konfiguracji UoP + B2B oraz typu „Dostępność B2B” znajdziesz na squadbear.pl/b2b-contractors/.)

Why the panic faded - and why your HR log still matters

Poland's labour inspectorate reform was published as Dz.U. 2026 poz. 473 and took effect on 8 July 2026, with a 12-month transition window running until 8 July 2027. A labour inspector (PIP) can establish the existence of an employment relationship by administrative decision, rather than having to go to court first.

Once the final text landed, the initial panic faded for a good reason: it is not an overnight trapdoor. The procedure is two-stage. The inspector first issues a written order (polecenie) giving the company a deadline to fix the cooperation model, and only then an administrative decision, which is declaratory and takes effect from the day it is issued. Because the realistic first step is "you get told to fix it" rather than "you wake up owing five years of back contributions", the topic stopped trending on LinkedIn.

And because it stopped trending, most software houses went back to business as usual without touching their HR tool.

Yet the legal test underneath has not moved an inch. Article 22 §1 of the Polish Labour Code (and equivalent subordination tests from German Scheinselbstständigkeit to Dutch Wet DBA) says a relationship is employment when work is performed personally, under direction, at a place and time designated by the employer, for remuneration. The title on the PDF contract is irrelevant. What counts is how the arrangement runs day to day.

And the way it runs day to day is recorded, row by row, in your HR database during the exact 2026-2027 window meant for cleaning it up.

Why the approval flow is the sharp bit

Subordination is the heart of article 22. Practitioners writing about how inspectors and courts read these cases keep landing on the same short list of tells, and one of them is this: the contractor has to obtain a superior's consent before taking time off.

Read that again with your HR tool open. A request that goes to a manager, sits in a pending state, and is granted or refused by that manager is a consent mechanism. You built one. It has a database table and an audit log, and the audit log is very good, which in this specific context is not a compliment.

The related tell is money. Paid holiday is a Labour Code entitlement - 20 or 26 non-waivable days under articles 152 to 154. A B2B contractor has no statutory leave at all; whatever they have is whatever the commercial contract says. So paid days off, granted on the employer's approval, drawn from an annual allowance, described in the system as urlop wypoczynkowy, is a stack of employment characteristics with a contractor's name on it.

None of these is decisive alone. Subordination and control over time and place are the primary questions, and an inspector or court weighs the whole picture. But you do not want to be arguing the whole picture while the other side reads out your own workflow export.

The 60-second HR tool self-audit

Open one B2B contractor's profile in your current HR system and check four fields:

What to check in your HR toolRed flag (looks like umowa o pracę)Clean B2B setup (Dostępność B2B)
1. Label on the absenceUrlop wypoczynkowy, Urlop na żądanie, or Annual LeaveDostępność B2B / Planowana niedyspozycja / Planned unavailability
2. Workflow state & verbPending approval -> Approved by [Manager]Granted at once -> Manager notified (notice, not permission)
3. Balance & carryover20 or 26-day annual pool, accrued or carried overNo pool, no balance counted, 0 PTO liability
4. Payroll exportIncluded alongside employee paid leave in the monthly payroll sheetUnpaid / excluded from the Symfonia R2Płatnik leave-card export

The line worth being clear about

If the relationship really is employment - the person works your hours, at your direction, on your equipment, exclusively, with a manager who assigns their tasks - then no software configuration saves you. Renaming the leave type does not change what the arrangement is, and an inspector is not going to be confused by a label. Fix the contract.

This post is about the other case, which is the common one in software houses and product teams: people who are genuinely running their own business, invoicing several clients or free to, and who nonetheless got dropped into the employee leave workflow because that was the only workflow the tool had. Those people are having subordination evidence generated about them for no reason at all.

Notify, don't approve

The pattern that comes up repeatedly in Polish practitioner writing is straightforward, and it costs nothing to implement.

Change the verb. A contractor tells you when they will be unavailable. They do not ask. Nothing is pending, nobody approves, and the record says notified, not granted. Coordination is still fine - a commercial contract can require advance notice, and a notice obligation is a normal term between businesses.

Change the noun. Do not call it urlop wypoczynkowy in the system, in the contract, or in the Slack message. A civil-law or B2B contract has a paid or unpaid break in the provision of services (przerwa w świadczeniu usług / dostępność B2B). The words in your dropdown will be read out loud one day.

Do not attach an entitlement. No annual allowance, no balance, no accrual, no carryover. Those are Labour Code mechanics and they do not belong on a B2B record.

Keep the team informed anyway. This is the part engineering managers fear losing, and there is no reason to lose it. Your project lead still needs to know that the contractor is away from the 12th to the 19th, and those days should still come off their expected project hours. Awareness is not approval. Separating the two is the whole trick.

How SquadBear separates UoP and B2B in one workspace

We built the employees and B2B contractors setup so mixed teams do not have to run two separate tools or maintain a shadow spreadsheet.

  1. One-click Polish preset with Dostępność B2B. Applying the Polish preset creates the eight statutory employee leave types (Urlop wypoczynkowy, Urlop na żądanie, Zwolnienie lekarskie, Opieka art. 188, Siła wyższa, Urlop opiekuńczy, Okolicznościowy, Urlop bezpłatny) alongside a dedicated contractor type called Dostępność B2B (which you can rename to match your contracts).
  2. Granted at once, manager notified. When a contractor books days under Dostępność B2B, the absence is granted immediately. No manager clicks Approve, nothing sits pending, and no balance is counted. The manager receives an informational notice and the days appear on the shared team calendar.
  3. Contract-mismatch warnings on the profile. Each person's profile records their contract form (Employment, B2B, or Civil-law). If a contractor with a B2B contract accidentally lands in a paid employee leave policy, the policy members list flags a warning that paid leave for a contractor can read as an employment relationship, so an admin can mark them Not eligible on employee types.
  4. Automatic exclusion from R2Płatnik payroll exports. Because Dostępność B2B is unpaid, it never enters the monthly XLSX file generated by the Symfonia R2Płatnik integration. Meanwhile, contractors can still log project and Jira/GitHub hours in the same weekly grid for their monthly invoice CSV.

And if you connect Claude or ChatGPT to SquadBear over MCP, you can audit your workspace in one sentence:

"Check whether anyone on a B2B contract is enrolled in Urlop wypoczynkowy, add Adam to Dostępność B2B, and mark him not eligible for employee leave."

Because changing policy eligibility is a sensitive operation, your assistant prepares a 30-minute review proposal in SquadBear that you confirm with one click while signed in.

The leave concepts guide covers untracked types and how days are counted; approvals covers chains and how immediate grant mode works.

Start free (up to 5 people free, then $4/person/month) and set up your mixed team in five minutes - or read the full breakdown in English at /b2b-contractors/ and in Polish at squadbear.pl/b2b-contractors/.

Related reading: five places your HR tool blurs the UoP and B2B line, designing a leave approval workflow for the employee side of the same machinery, and public holidays across distributed teams if your contractors are in three countries.