Blog— Anton Ignashev

December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February

December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February

One Payroll, Two Tax Years

Most of an office's clients with staff pay December wages in January. Nobody thinks about it until the annual return, when someone asks why the payroll cost in the books doesn't match the PIT-11s, or why December's cost ended up in January because a transfer went out a day late.

The rule is short. The same December payroll is a 2026 cost for the employer and 2027 income for the employee. Whether it stays in 2026 depends on two dates the office doesn't control: the day the pay leaves the client's bank account and the day the contributions reach ZUS.

The 2027 calendar makes both dates awkward this year. Here's what I'd check now, in December, and again in February.

The Two Rules That Decide

There are two separate rules: one for the pay, one for the employer's contributions on it. And they don't share a deadline.

Pay (gross wages, contracts of mandate) Employer's ZUS contributions on that pay
Provision art. 15(4g) CIT, art. 22(6ba) PIT art. 15(4h) CIT, art. 22(6bb) PIT
Cost month if on time the month the pay is due for (December 2026) the month the pay is due for (December 2026)
Deadline that matters payday in the pay rules or contract, at the latest the 10th of the next month (art. 85 Labour Code) the ZUS deadline for the month the pay was paid (January 2027 declaration)
Latest date for December 2026 pay Friday 8 January 2027 15 February 2027 (companies with legal personality) or 22 February 2027 (sole traders, partnerships)
If late cost of the month actually paid (art. 16(1)(57) CIT, art. 23(1)(55) PIT) cost of the month actually paid (art. 16(1)(57a) CIT, art. 23(1)(55a) PIT)
Employee's tax year 2027, whatever happens n/a

The contributions rule changed from 2023. Before that, contributions on pay made in the following month had to be paid by the 15th of the payment month, which in practice meant by 15 January. Now the deadline follows the ZUS declaration for the month the pay went out. For January pay that's February. Plenty of offices still work to the old 15 January habit. That's safe, but it isn't the rule.

Why 8 January, Not 10 January

The Labour Code says pay is due no later than the first 10 days of the next month. In 2027 the 10th of January is a Sunday. Art. 85 § 3 says pay due on a day off is paid on the day before, so the statutory maximum ends on Friday 8 January. Wednesday 6 January is a public holiday too, so a client who "always pays on the 10th" has four working days in the new year to get payroll out, not ten.

A transfer ordered on Monday 11 January is one working day late. For a company with 12 employees and a 96 000 zł gross December payroll, that moves 96 000 zł of cost from 2026 into 2027. At the 9% small-taxpayer CIT rate that's 8 640 zł of tax paid a year early. At 19% it's 18 240 zł. The money isn't lost — it's shifted. But so is the client's 2026 result, the December advance and anything else that hangs off the 2026 profit.

There's a quieter trap. The deadline in art. 15(4g) is the one that applies to the pay, and the client's own pay rules can set an earlier one. If the regulamin wynagradzania says pay goes out "on the last working day of the month", then December pay paid on 8 January is late for tax purposes, even though it's inside the Labour Code's ten days. I see this most often where pay rules were copied from a template years ago and payroll drifted to "around the 10th" without anyone updating the document. Read the pay rules once a year, in December. Don't assume the 10th.

For contracts of mandate and contracts for specific work, the deadline is the payment date in the contract. If the contract says "within 7 days of the invoice or bill", that's the date to test. If it says nothing, it's a judgement call, and I'd rather fix the contract template than argue about it in March.

The ZUS Leg

Pay made in January 2027 goes into the January 2027 ZUS declaration, whatever month it's for. That declaration is due:

  • by 15 February 2027 for payers with legal personality: sp. z o.o., S.A., foundations, associations;
  • by the 20th for everyone else, which includes sole traders with employees and partnerships (jawna, komandytowa). 20 February 2027 is a Saturday, so it moves to Monday 22 February 2027.

The employer's share of contributions on December pay is a December 2026 cost if it's paid by that date. Social insurance alone is about 20% of gross for a typical employer (9.76% pension, 6.5% disability, the accident rate, 2.45% Labour Fund and 0.10% FGŚP). On the 96 000 zł payroll that's roughly 19 600 zł.

The awkward part is timing. The December CIT or PIT advance is due on 20 January. That's before anyone knows whether the contributions will be paid by mid-February. The usual practice is to book them in December and check the payment before the annual return. If they turn out to be late, the cost moves to the month they were actually paid, and the advance and the annual figures follow. That check is cheap if it's on a list. It's expensive if an inspector finds it first.

The PIT-11 Mismatch

The employee is taxed on cash. Pay received on 8 January 2027 is 2027 income: tax is withheld under the 2027 rules, and the pay goes into the 2027 PIT-4R and the PIT-11 for 2027. The employer deducts on accrual, so the same amount is a 2026 cost.

That means the PIT-11s for 2026 never add up to the 2026 payroll cost. They contain December 2025 pay (paid in January 2026) and not December 2026 pay. The reconciliation is one line:

2026 payroll cost = 2026 PIT-11 gross − December 2025 payroll + December 2026 payroll (for pay that went out on time).

If the difference isn't exactly that, something else is wrong: a late payment that should have moved, a bonus booked in the wrong year, or a contract of mandate that was never on the payroll. Annual bonuses are their own question, covered in the accruals and provisions post, and they fit into the same reconciliation once you know which year they belong to.

Deadlines for the 2026 forms, after the weekend shifts: PIT-4R and PIT-11 to the tax office by 1 February 2027 (31 January is a Sunday), and PIT-11 to employees by 1 March 2027 (28 February is a Sunday).

What the Office Checks, and When

In December:

  1. Pay rules per client. The payday written in the regulamin or contracts, not the payday everyone remembers. Flag anyone whose rule is earlier than the date they actually pay.
  2. The 8 January date. Tell every client paying "on the 10th" that this year it's Friday the 8th at the latest, and earlier if their own rules say so.
  3. Payer type for ZUS. 15th or 20th depends on legal personality, not on whether the client has employees. A spółka komandytowa with 30 staff pays by the 20th. A one-person sp. z o.o. pays by the 15th.

In February:

  1. Pay dates against the bank statement. For every client, the actual debit date of each December payroll transfer, not the date on the payroll list.
  2. ZUS payment date against the deadline. Same thing, for the January declaration.
  3. The PIT-11 reconciliation above, before the forms go out.

Steps 4 and 5 are dull and mechanical. On a 40-client portfolio with staff that's a few hundred transfers matched against two dates each. They're also where the mistakes hide, because nobody looks at the debit date when the amount is right.

Where an Agent Helps

This is the sort of check I'd hand to an AI agent for an accounting office without much debate. It reads the statements the office already imports, finds the payroll and ZUS transfers, compares their dates with each client's payday and payer type, and produces a short list: these three clients paid December pay late, move it; this one paid ZUS on 16 February as an sp. z o.o., move the contributions. A person decides what to do with each line. The agent doesn't book anything.

It's the same pattern as the month-end close and the year-end purchase invoices check: the rule is simple, the data is in the system already, and the failure comes from nobody comparing two dates across a few hundred lines.

Want the February payroll check to run itself across your client list? Get in touch. We'll start with your statement import and one client's pay rules, and you'll see the first list within a week.

Check a Polish VAT counterparty in seconds, free

KsięgoAI checks a NIP against the VAT white list and VIES, scores the risk and saves proof of due diligence. Works in Telegram and Claude.

Try KsięgoAI→

Let’s talk about your project

Free 30-minute consultation. We’ll figure out if and how I can help.

Book a Free 30-Minute Call

Select a date

November 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
← Back to Blog

Related Posts

What Subiekt nexo and Subiekt GT cost in 2026: licence prices, the Abonament, and the 30 days that raise the renewal by half
Blog

What Subiekt nexo and Subiekt GT cost in 2026: licence prices, the Abonament, and the 30 days that raise the renewal by half

Subiekt nexo for 3 workstations is 1 275 zł net, Subiekt GT 1 045 zł, nexo PRO 2 575 zł. Those are perpetual licences, and then there's the yearly Abonament: 349 zł for nexo if you renew within 30 days of expiry, 539 zł if later. Plus Sfera (the API), the accounting-office client licences, and a comparison with Optima and enova365.

Read more→
What Comarch ERP Optima costs in 2026: the subscription list, Basic vs Pro, and three costs it leaves out
Blog

What Comarch ERP Optima costs in 2026: the subscription list, Basic vs Pro, and three costs it leaves out

Optima's price list is public: Podstawowy 59 zł a month, Logistyka Basic 75 zł, Księga Handlowa 175 zł. The catch is the word Pro: it's a top-up on Basic, not a separate tier, so full accounting in Finanse costs 250 zł, not 200. Plus the Podstawowy limits, how HR counts employees for accounting offices, and two worked examples.

Read more→
Symfonia WebAPI: a developer's guide — sessions, licences, the buffer and the errors you'll hit on day one
Blog

Symfonia WebAPI: a developer's guide — sessions, licences, the buffer and the errors you'll hit on day one

Symfonia's WebAPI is a Windows service that runs Handel or FK in the background and exposes it over REST. One instance is one company and one user, the default licence allows 10 sessions, and a 401 can mean three different things. Then there's incremental sync, which returns nothing but stock levels until someone ticks a box in the configurator.

Read more→