Blog— Anton Ignashev

The 31 December stock count: one number from the client that moves the whole year's income

The 31 December stock count: one number from the client that moves the whole year's income

One Number in January

In the first week of January a client who runs a hardware shop on the revenue and expense ledger (KPiR) sends the office an email: "Remanent 310 000." No list, no prices, sometimes not even a date. The accountant enters it in the ledger, the annual return gets calculated in March, and nobody looks at that number again.

Yet that one figure moves the year's taxable income zloty for zloty. Under art. 24(2) of the PIT Act, income from a KPiR business is adjusted by the difference between closing and opening stock. Count 50 000 zł less than is really on the shelves and the client's income for the year drops by 50 000 zł. On the 19% flat rate that's 9 500 zł of tax that isn't paid.

It isn't saved either. Next year's opening stock starts from the same wrong number and the difference comes back, unless the stock keeps "shrinking" every year. Tax inspectors know that pattern well.

I'm not saying clients cheat. Most understated counts I've seen came from a stock list priced at old purchase prices, or a rushed count that skipped the back room. But the office is still the last place where anyone could have caught it.

Who Counts, What, at Which Price

This applies to clients on KPiR, whether they pay on the tax scale or the flat rate. Lump-sum (ryczałt) clients don't do a year-end count. Full-books clients run an inventory under the Accounting Act, which is a different process with different rules, so I'll leave them out here.

The basics, from the KPiR regulation as I understand it:

  • What's counted: trade goods, raw and auxiliary materials, semi-finished and finished products, work in progress, shortages and waste. Own goods held somewhere else (at a customer's site, at a warehouse) belong in the count. Goods that belong to someone else, such as consignment stock, are listed by quantity with the owner's name, but not valued.
  • When: at the end of the tax year, and also when the business starts mid-year, a partner changes, the partners' shares change, or the business is wound up. The 31 December count doubles as the 1 January opening stock for the next year, so there's no second count.
  • Valuation: trade goods and materials at purchase or acquisition price, or at the market price on the count date if that's lower. Own products at production cost. For a VAT payer the purchase price is net; for a VAT-exempt client it includes VAT. That last point is a common mistake with small clients who changed VAT status during the year.
  • Paperwork: a list with item, unit, quantity, unit price, value and the total, closed with the line on which the count ended, and signed. The rules were rewritten in the regulation that applies from 1 January 2026. One source I checked says that from 2026 only the owner or partners sign; the older rules also required the people who did the count. There's also a short deadline for pricing the list after the count, traditionally 14 days. Check the current text of the regulation before you send clients instructions, rather than reusing last year's letter.

Notifying the tax office of a count on another date was abolished back in 2018. Some offices still send the reminder anyway.

Clients with no stock at all, which covers most service businesses, usually get a zero entry. Agree it with each client and write it down, so nobody wonders in April why the line is empty.

The Margin Test

The quickest way to tell whether a stock figure makes sense doesn't need the count list at all. Just the ledger.

Take the hardware shop. The figures are illustrative but realistic for a small shop:

  • revenue for the year: 2 400 000 zł,
  • opening stock (31 December last year): 380 000 zł,
  • purchases of goods during the year: 1 900 000 zł,
  • closing stock reported by the client: 310 000 zł.

Cost of goods sold = 380 000 + 1 900 000 − 310 000 = 1 970 000 zł. Gross margin = 430 000 zł, or 17.9%.

In the three previous years this shop earned 23–25% on goods. Same suppliers, same prices on the shelf. If the margin were 24%, cost of goods sold would be 1 824 000 zł and the closing stock would have to be about 456 000 zł. The gap is 146 000 zł. At 19% that's 27 740 zł of tax, on a client who probably has no idea the number is off.

A margin drop can be real: a price war, written-off stock, a supplier that raised prices mid-year. That's exactly why the test produces a question for the client, not a correction. "Your margin fell from 24% to 18%. Did something happen, or should we look at the count again?" That question takes ten seconds to ask in January. In a tax audit two years later it takes a lot longer to answer.

What Else Goes Wrong

Margin is the headline check. After it, these are the problems I see most often:

  1. Old prices. The count is priced from a supplier price list from two years ago, or from the system's "last purchase price" field that nobody updated. The latest purchase invoices are in KSeF now, so the real prices are available. (I covered pulling them in automatic invoice download from KSeF.)
  2. Selling prices instead of cost. A count list priced at shelf prices overstates stock and the client overpays tax. It happens less often, but it happens.
  3. Count vs stock module. A client running a stock module in their ERP has a quantity per item as of 31 December. The count rarely matches it exactly, and it shouldn't, since the physical count is the point. But a total that's 40% below the system's value needs an explanation. (Where that data sits in Subiekt nexo: the Sfera integration guide.)
  4. Negative stock and orphan items. Items with negative quantities in the system, or items on the count that the client never bought, usually point to bookings in the wrong place.
  5. VAT status. Net prices for a client who became VAT-exempt, or gross for one who registered for VAT during the year.
  6. Nobody kept the list. The office has a number and no document. If the tax office asks for the count, the client has to produce something that was signed in January, not reconstructed in a hurry.

What the Agent Prepares

For every KPiR client with stock, this is the list I'd want ready in the first days of January:

  • the client's figure next to the stock module value as of 31 December, if the client has one;
  • a sample of 30–50 items with the highest value, repriced at the latest purchase invoice price from KSeF, net or gross according to the client's VAT status;
  • the year's gross margin computed from the ledger, next to the margins for the previous three years, and the closing stock that the usual margin would imply;
  • flags: items priced above their last purchase price, negative stock, items with no purchase invoice in the last 12 months, and a change in stock over 25% against last year;
  • the status of the documentation: whether the signed count list arrived, or only an amount.

For a trade client this takes about an hour and a half by hand, most of it spent hunting for prices. With the list ready, the review takes about 15 minutes. In a portfolio of 40 clients, maybe 12–15 are on KPiR with real stock, so that's roughly two working days saved in the busiest part of January.

The agent doesn't count goods, doesn't change the client's figure and doesn't enter anything in the ledger. It doesn't decide whether a margin drop is plausible. That's a conversation between the accountant and the client, and I explained why I keep that line in AI agents and liability. The stock value ends up in the ledger, and for clients filing monthly VAT the ledger for 2026 goes out as JPK_PKPiR with the annual return, so whatever number goes in has to hold up.

Send the Letter in November

The worst time to explain how to count stock is 2 January. Send KPiR clients a short letter in the second half of November: who counts, how to price (cost, net or gross depending on VAT status, lower market price for damaged goods), who signs, and the date you need the signed list by. Attach a template. Then run the margin test on the January–November ledger, so you already know which clients' margins look odd before anyone opens a box. It fits into the month-end close you're already doing for November.

If you'd like to see the margin test and the stock check run on one of your clients' ledgers, write to me. I'll run it on a real client and tell you honestly whether it's worth automating at your volume.

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→
December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February
Blog

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

December payroll paid in January is a 2026 cost, but only if the pay leaves on the date in the client's pay rules and the ZUS contributions reach ZUS on time. 10 January 2027 is a Sunday, so the statutory deadline ends on Friday 8 January. The same pay lands in the employee's 2027 PIT-11. Here's what an office checks in December and in February.

Read more→