Employees and B2B contractors

Employees and B2B contractors in one place, each on their own terms

Employees request leave and their manager approves it. Contractors book time away that is granted at once, and their manager gets a notice instead of a decision. Both log hours against the same projects and issues, and contractor time away is unpaid, so it never reaches the R2Płatnik payroll file.

Product context, not legal advice. Whether a B2B contract holds up depends on how the work actually runs, so check your setup with your lawyer.

Time tracking · Reports

Where did our time go?
Export CSV
AllocationPeopleWork items1 – 30 Jun 2026
Logged388hSelected period
ProjectHoursPeopleShare
Northwind Portal186h6 people
Atlas Rewrite124h4 people
Internal · Platform78h8 people
What mixed teams ask

Six questions from teams that run both contracts

Many Polish and CEE software houses and agencies have people on umowa o pracę working next to B2B contractors. The HR system should keep the two apart on purpose, not by accident.

How does a contractor tell us they will be away, without asking for leave?

They book days on a contractor type - the Polish preset ships one called Dostępność B2B. It is granted at once, counts no balance, and their manager gets a notice, not a request to approve.

Can we keep contractors out of annual leave?

Yes. Mark them Not eligible on the employee types and they cannot book them. Who can book what is decided by policy membership, never by the contract field.

Could a new contractor land in annual leave by mistake?

Yes, unless you check. New hires join every policy set to add new hires, contractors included. When the person's contract is recorded as B2B, the members list warns you, and you move them to Not eligible there.

Can contractors log hours for their monthly invoice?

Yes. They log time per project and per Jira, Linear, GitHub or Asana issue. A manager or admin exports logged time as CSV by person or project, with a column per day, week or month. SquadBear stores hours, not rates, so the invoice is made elsewhere.

Does contractor time away end up in the payroll file?

No. The R2Płatnik file carries only paid leave types that you map to an R2Płatnik leave kind, and Dostępność B2B is unpaid. Sick leave stays out as well.

Can managers still plan around a contractor's time away?

Yes. The days show on the shared team calendar like any approved absence, and if the contractor has a work schedule, they come off their expected hours.

Side by side

What employees and contractors get

One workspace, one directory, one calendar. Where the two contracts should differ, SquadBear has a separate setting. "Built in" works once the Polish preset is applied. "Your setup" is a decision an admin makes once.

AreaEmployees on umowa o pracęB2B contractors
Time away
Leave typesWhat they bookBuilt inThe Polish preset's employee types - Urlop wypoczynkowy, Urlop na żądanie, Zwolnienie lekarskie, Opieka art. 188, Siła wyższa, Urlop opiekuńczy, Okolicznościowy and Urlop bezpłatny.Dostępność B2B, from the same preset. Rename it to whatever your contracts say, for example Planned unavailability.
ApprovalWho says yesBuilt inThe request goes to the manager, or through a workflow you choose.Granted at once. The manager gets a notice, not a decision, and you can switch the notice off.
BalanceWhat is countedBuilt inEach booking is charged to the allowance its type uses.Nothing is counted. There is no allowance to run down.
EligibilityWho is in which policyYour setupNew hires join the employee types automatically.Added by hand. Mark contractors Not eligible on the employee types so they cannot book them.
Contract formContract on the profileYour setupEmployment contract.B2B contract or civil-law contract. It only warns - for example when a contractor sits in a paid type - and never decides who can book.
Hours
TimeLogging hoursBuilt inA week grid per project and per Jira, Linear, GitHub or Asana issue.The same grid. A members-only project takes hours only from its members, leads and linked teams.
ReportsMonthly hoursBuilt inCSV by person, project, team or category, with a column per day, week or month.The same CSV, as the basis for the invoice. Rates and invoices stay in your invoicing tool.
Month endLocking the monthYour setupPeople submit a period and its entries lock. An admin can close the whole workspace through a date. Team and Enterprise plans.The same, so the hours behind an invoice stay as they were.
Payroll and plan
R2PłatnikLeave for payrollYour setupAn admin installs the Symfonia R2Płatnik app and maps each leave type to an R2Płatnik leave kind. The monthly XLSX for its leave-card import has one row per approved request, with dates and minutes.Not in the file. Unpaid types are never exported, and Dostępność B2B is unpaid.
PlanSeatsBuilt inEach active person counts towards the plan.Counted the same way.
How it works

Same workspace, separate rules

The contract sits on the profile, time away follows the policy a person is in, and everyone logs hours against the same projects.

Contract

The contract on each profile

Record each person's contract - employment, B2B or civil-law. It never decides who can book what. On the Polish preset's types it warns when someone sits in a type meant for another contract, and says that paid leave for a contractor can read as an employment relationship.

People · Profile

Emily Saputra

Backend Engineer · Employee · PL

Active

Employment

ManagerJulia Mazur
Start date16 Sep 2026
Work scheduleMon–Fri · 40h
Leave policyDefault annual · 26d

Custom fields

Cost centerENG-PLAT
Probation ends16 Dec 2026
Notice period1 month
Emergency contactOn file
Admin-only fields stay strictly private
Issues

Hours against the issue

Pick the Jira, Linear, GitHub or Asana issue and log hours against it in the week grid. SquadBear only reads the tracker and writes nothing back. A members-only project accepts hours only from its members, leads and linked teams.

Time tracking

My time
+ Add work item
7 – 13 Sept 2026This week
Work itemMon 7Tue 8TodayWed 9Thu 10Fri 11Total
Northwind Portal2 work items +8h8h4h4h8h32h
NWP-214 Checkout bug8h4h++4h16h
NWP-231 Payment retry+4h4h4h4h16h
General time1 work item +1h––––1h
General time1h++++1h
Daily total9h8h4h4h8h33h

Jira · Linear · GitHub · Asana

Expected hours

No chasing for hours nobody planned

If a contractor has a work schedule, days booked as unavailable come off their expected hours, just like an employee's approved leave. A public holiday counts as zero.

Time tracking

My time
+ Add work item
7 – 13 Sept 2026This week
MonthWeekDay
Logged24hof 24h expected
Remaining0hUp to date
Leave16h2 days off
September 2026Not submittedSubmit
Work itemMon 7Tue 8TodayWed 9LeaveThu 10HolidayFri 11Total
Northwind Portal 2 items8h8h––8h24h
NWP-214 Checkout bug8h4h––4h16h
NWP-231 Payment retry–4h––4h8h
Daily total8h8h0h0h8h24h
Month end

Lock the month before the invoice

On Team and Enterprise, people submit a complete period and its entries lock. Managers see what has been submitted, and an admin can close the whole workspace through a date. The hours behind an invoice stay as they were.

Pending submissions
4
  • MN
    Mila Nowak1 – 30 Sep 2026
    16hSubmittedReview
  • LN
    Leo Novak1 – 31 Aug 2026
    37h 1mSubmittedReview
  • LM
    Lucia Mendes1 – 31 Jul 2026
    32hSubmittedReview
  • ES
    Emily Saputra1 – 30 Jun 2026
    40hSubmittedReview
With your AI assistant

Ask who is around and where the hours went

Connect SquadBear over MCP and your assistant works under your own login and role. It can check who is away before a release, pull a month of hours by project, and put a new contractor in the right policies.

Product Manager · ClaudeExample workflow
Prompt

I want to commit the Q3 launch to Aug 12. Is the core team actually staffed and healthy enough to hit it?

Sample recordget_team_availability
7/8 available · only Hana out Aug 3 to 7 (within sprint slack)
Inspect query parameters{ "teamId": "team_core", "startDate": "2026-07-27", "endDate": "2026-08-12" }
Sample recordget_team_time_summary
team logged 104% of expected · Leo +22% two weeks running
Inspect query parameters{ "teamId": "team_core", "startDate": "2026-06-15", "endDate": "2026-06-28" }
Sample recordget_team_health_trends
Delivery confidence 4.1→4.3 · Workload 3.5→2.9 (falling)
Inspect query parameters{ "teamId": "team_core", "modelId": "hmod_pulse5" }
Sample recordsearchJiraIssuesUsingJql
62 pts remaining · 3-sprint avg 24 pts ≈ 2.6 sprints
Inspect query parameters{ "jql": "fixVersion = 'Q3 Launch' AND statusCategory != Done" }
Aug 12 is tight but staffed - only Hana is out that window. Risk is load: the team’s at ~104% capacity and Workload is falling. With 62 pts left at ~24/sprint you land on the 12th with no buffer. Options: cut ~10 pts, add a reviewer, or quote Aug 19.
Every tool shown ships in the product

Prompts that work today

  • “How many hours did Marta log in September, by project?”

    get_time_report

  • “Who on the Platform team is away in the next two weeks, contractors included?”

    get_team_availability · list_team_absences

  • “Add Adam to Dostępność B2B and mark him not eligible for Urlop wypoczynkowy.”

    list_leave_policies · set_policy_assignment

  • “Book me as unavailable from 3 to 7 November.”

    request_time_off

  • “Who still has hours missing for October?”

    get_team_time_summary

Why it stays under control

Your login, your role
The assistant connects with your own OAuth sign-in, not a shared service account, and can do only what you could do in the app.
Policy changes need a click in SquadBear
Changing a leave type, a leave policy or workspace settings waits for approval of the exact plan in the app. The assistant's token cannot approve it.
Managers see their own people
Time reports through the assistant cover the people a manager manages, the projects they lead, or their own time.
Nothing is written to your tracker
Issue tracker connections only read. Time logged against a Jira issue stays in SquadBear.
Before you start

Practical answers

The questions a software house usually asks before it moves its people in.

Data region

EU or US, chosen at sign-up and fixed. Each region has its own database and file store.

Polish and English

The app runs in Polish and in English, and each person can pick their own language.

Tenant isolation

Every query is scoped to the signed-in workspace, and the database refuses a row that points at another one.

Subprocessors

Cloudflare hosts the app, data, files and email. Stripe and Google or Microsoft sign-in take part only if you turn them on.

Questions, answered

Is this legal advice on B2B contracts?

No. Some context, though. Under Polish law a B2B contractor has no statutory right to annual leave - time off is whatever the contract says. In reclassification cases, a contractor who has to ask for time off and wait for approval, like an employee, is often cited as a sign of subordination. A common, safer pattern is to let contractors notify rather than ask, under a neutral name. SquadBear lets you run it that way. Whether your contracts hold up is for your lawyer to judge.

Why not give contractors annual leave with zero days?

Because they would still sit in an employee leave type, with its approval step and its balance. A separate type that is granted at once and counts nothing keeps the two apart, and the members list warns you when a contractor whose contract is recorded lands in a paid employee type.

Can we rename Dostępność B2B?

Yes. Leave type names are free text, so use Planned unavailability, Planowana niedyspozycja or whatever your contracts say. Avoid employee terms such as urlop wypoczynkowy for contractors.

Does the manager still know when a contractor is away?

Yes. When the type is set to "Granted at once, manager notified", the manager gets a notice as soon as the days are booked, and the days show on the shared calendar. You can switch the notice off for the type.

Does SquadBear invoice contractors or keep their rates?

No. It stores hours in minutes per project and issue, with no rates and no billable flag. Export the CSV and invoice from your own tool.

Which payroll systems do you export to?

One. A monthly leave file for the leave-card import in Symfonia R2Płatnik, as an app an admin installs. Other payroll systems have no ready file yet; for now the REST API is the way out.

Do we need the Polish preset?

No, but it is the fastest start. One step gives you the eight employee types and Dostępność B2B. You can also create a contractor type by hand, but then the contract warnings do not apply, because they come from the preset.

Do contractors count towards our plan?

Yes. Every active person in the workspace counts, whatever their contract. The free plan covers five people.

Keep employees and contractors apart, in one workspace

Apply the Polish leave preset, add contractors to Dostępność B2B and mark them not eligible for employee leave. Their hours go into the same projects from day one.

Your agent is connectedLeave · Time · People