VAT bad-debt relief in an accounting office: the debtor side nobody watches
Half a Rule Gets All the Attention
Ask an accounting office about ulga na złe długi, Polish VAT bad-debt relief, and you'll hear about the creditor. A client sold goods, the buyer never paid, and after 90 days the client can take the VAT back out of its return. It's real money, it's optional, and it's an easy sell.
That's art. 89a of the VAT Act. Art. 89b is the other half, and it's the one that causes trouble. If a client hasn't paid a purchase invoice within 90 days of its due date, it has to give back the input VAT it deducted. Not "may". Has to, in the VAT period in which the 90th day passes.
On the creditor's side, someone wants the money back, so they ask for it. On the debtor's side, nobody has any reason to speak up. The client isn't going to call the office to say "we've been ignoring a supplier for three months, please raise our VAT". And the office doesn't see it either, because in most offices nothing sets the due date of a purchase invoice against the bank statement.
How the 90 Days Are Counted
The clock starts on the day after the payment due date in the contract or on the invoice. A worked example:
- Invoice for 10 000 zł net + 2 300 zł VAT, due 15 June.
- 15 days left in June, 31 in July, 31 in August: that's day 77 on 31 August.
- Day 90 is 13 September. The correction belongs to the September period, filed by 25 October.
Both sides use the same date. The creditor may reduce output VAT by 2 300 zł in the September file, provided the invoice still isn't paid or sold on the day the file goes in. The debtor must reduce its input VAT by 2 300 zł in the same September file, unless it pays by 30 September, the last day of that period.
If the debtor pays in December, it increases input VAT again in December. The creditor, if it took the relief, increases output VAT in December too. Partial payment works proportionally on both sides.
So the debtor-side mistake isn't permanent, but it isn't free either. A client that missed the September correction and paid in December has three months of understated VAT, which means a correction of the September file and interest.
The Creditor's Conditions, Briefly
The creditor's relief has conditions. Keep them on a checklist, because that's where the client questions come from:
- the creditor is a registered active VAT payer on the day before it files the return with the correction;
- no more than three years have passed, counted from the end of the year in which the invoice was issued;
- the receivable hasn't been paid or sold in any form by the day the return is filed;
- if the buyer isn't an active VAT payer (a consumer, for instance), the relief is only available in narrower cases: a final judgment sent for enforcement, an entry in a debt register, or consumer bankruptcy (art. 89a ust. 2a).
None of that is hard to check by hand, and creditors ask for it, so it gets done. This post is about the other side.
Why the Debtor Side Gets Missed
Three pieces of data have to meet for the art. 89b check to work, and in a typical office they sit in three places:
- The due date of the purchase invoice. Since February 2026 most of these arrive through KSeF, and the structured invoice has a payment section where the seller can give the due date. When the seller fills it in, the date is in the data. When they don't, it's in the contract, which the office never sees.
- The payment. It's on the bank statement, and it only means something once the statement is matched to the invoice. Most offices import statements, but matching a payment to a specific purchase invoice is far from complete in practice. I wrote about where that ceiling comes from in automating bank statement booking.
- The period. The check needs to ask "which unpaid invoices cross day 90 in this period", every period, for every VAT client.
Nobody in the office looks at all three at once. The bookkeeper booking purchases sees the due date and moves on. The person importing the statement sees payments but not the 90-day line. The person preparing JPK_V7 sees neither.
The result is predictable: the debtor correction gets done when a client happens to mention a dispute with a supplier, or when a tax audit asks for it. Neither is a process.
What It Looks Like in JPK_V7
The separate VAT-ZD notice is gone. Since JPK_V7, everything goes through the file itself.
- Creditor: the correction is a separate sales record with full contractor data, a negative base and negative tax, marked with KorektaPodstawyOpodt. The payment date fields that came with that marker in JPK_V7(2) matter here. The later increase after payment is a positive sales record.
- Debtor: the reduction of input VAT is a separate purchase record in the correction fields for art. 89b, with a negative amount. The later increase after payment is a separate record with a positive amount.
The new JPK_V7(3) structure that came with KSeF changed the KSeF number and the OFF/BFK/DI markers; I covered those in JPK_V7 markers BFK, DI and OFF. I'd still check the exact correction field names against the version your program generates before trusting a template from 2024.
The Hard Cases Stay With a Person
A list is mechanical. Some of what lands on it isn't:
- No due date anywhere. No date on the invoice, no contract in the file. The 90 days need a starting point, and choosing one is a judgment call.
- Changed payment terms. The client and the supplier signed an annex extending the term. Whether, and when, that moves the 90-day line has been argued in rulings for years. That's a question for the accountant or a tax advisor, not for a script.
- Disputes and set-offs. An invoice "unpaid" because it was offset against a counter-claim (kompensata) is paid. One withheld because the goods were faulty may not be.
- Restructuring, bankruptcy or liquidation. Under art. 89b the debtor doesn't correct if, on the 90th day, it's in one of those proceedings. That status has to be checked, not assumed.
The same split runs through every JPK_V7 correction: part of it is the data disagreeing with itself, part of it is a decision the data can't make. I wrote about that line in JPK_V7 corrections and what an agent won't do.
What an Agent Prepares Each Month
It's a read-only check, and it slots into the work an office already does before the 25th:
- Read the due date from each KSeF invoice, falling back to the due date booked in the ERP.
- Match payments from the bank statements to invoices, including partial payments.
- List every invoice, purchase and sales, whose 90th day falls in the period being closed, with the VAT amount and the days remaining until the end of the period.
- Flag invoices with no due date, with a changed due date, and invoices paid after an earlier correction (those need the increase).
- Send the debtor-side list to the client a week before the end of the period: "pay these by the 30th or the VAT goes back".
That last step changes the conversation. The client sees which supplier invoices are about to cost them VAT, and some of those simply get paid. That's the cheapest correction there is.
For the receivables side in enova365, the same 90-day line is one of the reports I described in enova365 receivables reporting. Here it simply runs on both sides of the ledger.
The accountant keeps the decision on every flagged case, the correction itself and the file. Who signs what is the same question as always; see AI agents and liability.
One Question for This Month's Close
For your three largest VAT clients: how many purchase invoices crossed day 90 in September while still unpaid? If nobody in the office can answer in under an hour, that's the gap.
If you want to see how an agent builds that list from KSeF, your ERP and the bank statements, write to me. I'll go through it with one of your clients and tell you honestly whether it's worth automating at your scale.
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.



