All posts

Your Contractor Might Be an Employee — and a Tax Problem

Michael Cutajar|22 June 2026|4 min read
deelcontractorseorpermanent-establishmentintegrations

You find a brilliant developer in Berlin. You don't want the overhead of a German entity, so you bring them on as a contractor. They invoice you monthly, you pay it through Deel, everyone's happy. Clean, fast, modern.

Here's the catch: that developer works full-time, exclusively for you, on your roadmap, with your tools, taking direction from your lead. Strip away the word "contractor" on the invoice and look at the substance, and a German tax authority sees an employee. That single reclassification does two expensive things at once. It exposes you to back payroll taxes and social contributions you never withheld. And — the one founders never see coming — it can create a permanent establishment: a taxable presence for your company in Germany, on the theory that you've effectively been operating there through this person all along.

A PE means German corporate tax filings, profit attribution, the works. From one invoice that looked like a rounding error.

Substance beats the label every time

This is the trap, and it's an honest one: nobody set out to break the rules. "Contractor vs employee" isn't decided by what the contract says or what box you ticked. It's decided by the working relationship — exclusivity, who controls the work, who provides the tools, whether the person bears any real business risk, how long it's run, whether they can send a substitute. Tax authorities weigh the reality, not the paperwork.

And the test is different in every country. Germany leans on these substance factors. The US has its own multi-factor common-law analysis (plus state rules like California's ABC test). The UK has IR35. Same developer, same arrangement, three different answers about whether they're really self-employed — and three different bills if you call it wrong.

This is exactly the operational problem Deel is built to solve. When the relationship looks like employment, Deel's Employer of Record product employs the person properly in-country, runs local payroll, handles withholding and contributions, and — crucially — removes the misclassification and PE exposure by being the in-country employer of record. The risk doesn't land on you. That's the whole point of EOR.

So Deel already navigates this brilliantly on the rails side. Where OpenAccountants comes in is the lens on top: surfacing which relationships carry the exposure in the first place, with the tax reasoning spelled out and signed by an accountant — so the decision to move someone onto EOR is one you can defend, not just a hunch.

It's not just the cross-border headcount

The classification trap shows up closer to home, too, in the paperwork most teams treat as an afterthought.

Pay a US-based contractor more than $600 in a year and you need a W-9 on file from them, and you owe them (and the IRS) a 1099-NEC. Miss it and the penalties stack per form.

Now pay a contractor outside the US, and the form flips entirely. They're not a US person, so the 1099 doesn't apply — instead you collect a W-8BEN to document their foreign status. And if any of their work counts as US-source income, you can land in withholding-tax territory, sometimes 30% unless a treaty reduces it. Same payment screen, completely different obligations, decided by where the person sits and where the work happens.

A payments tool knows it sent the money. It doesn't, on its own, tell you which form had to exist before you sent it.

Deel moves the money. OA reads the risk.

That's the seam we build for. Deel is the global payment and compliance rail — contractor payments, EOR, local payroll, the forms collected. OpenAccountants is the independent tax-risk lens sitting on each relationship: is this person really a contractor, does this engagement risk a PE, is it W-9/1099 or W-8BEN, is there US-source withholding — across 190+ jurisdictions, every rule signed off by a named, licensed accountant.

You call it over MCP, alongside your Deel flow. Hand it the shape of the relationship and ask what it actually is:

const oa = await mcp.call("classify_engagement", {
  worker_country: "DE", payer_country: "US",
  exclusive: true, full_time: true, controls_work: "payer",
});
// → { likely: "employee", risks: ["reclassification", "permanent_establishment"],
//     verified_by: "Amir Pelinkovic (US lead)" }

That verified_by line is the point. The classification logic isn't a model's confident guess — it traces to a real accountant who put their name on it. Here that's Amir Pelinkovic, who leads our US coverage. When OA flags a contractor as a likely employee with PE exposure, "an accountant signed this rule" is the difference between a warning your team acts on and one they wave away.

We built a small open-source reference integration that wires this on top of a normal Deel-style contractor flow, so you can watch the risk surface in real time: github.com/openaccountants/deel-contractor-demo. Run the German full-time "contractor" through it and watch OA flag the employee/PE risk; run a US payment over $600 and a foreign one and watch the 1099-vs-W-8BEN fork.

Keep Deel doing what Deel does brilliantly. Add an accountant-signed risk lens so you find out before the reclassification, not after.

Try the demo repo, then connect the OpenAccountants MCP at openaccountants.com and run your own contractor roster against the rules.