Exception memo · Atelier Ledger s.r.o. · Bratislava · 23 Sep 2026
The payables book paid €78,246 it did not owe.
Four checks on a synthetic invoice population. No model. A join, a date window, a lag, and a rate that changed on 1 January 2025.
Money that should not have left the account€78,246
01 · Twelve invoices were paid twice
€60,426 left the account a second time. The match is strict: same supplier, same invoice number, same gross. The second copy arrived three days later and was entered by import.batch, not by the clerk who booked the original. That is an interface failure, not twelve independent mistakes.
| Supplier | Number | First | Second | Gross |
|---|---|---|---|---|
| Nitra Energy s.r.o. | NE-40 | 2026-03-02 | 2026-03-05 | €6,642 |
| Ipel Security s.r.o. | IS-71 | 2026-02-09 | 2026-02-12 | €6,568 |
| Ipel Security s.r.o. | IS-55 | 2025-08-19 | 2025-08-22 | €6,297 |
| Topla Studio s.r.o. | TS-14 | 2025-10-21 | 2025-10-24 | €5,904 |
| Hron Print s.r.o. | HP-220 | 2025-04-02 | 2025-04-05 | €5,781 |
| Hron Print s.r.o. | HP-261 | 2025-09-16 | 2025-09-19 | €5,461 |
| North Paper s.r.o. | NP-1044 | 2025-03-04 | 2025-03-07 | €5,116 |
| North Paper s.r.o. | NP-1102 | 2025-06-11 | 2025-06-14 | €4,723 |
| Vah Courier s.r.o. | VC-29 | 2026-01-13 | 2026-01-16 | €3,788 |
| Karpat Clean s.r.o. | KC-103 | 2025-11-03 | 2025-11-06 | €3,542 |
| Vah Courier s.r.o. | VC-17 | 2025-07-08 | 2025-07-11 | €3,505 |
| Karpat Clean s.r.o. | KC-88 | 2025-05-20 | 2025-05-23 | €3,099 |
Query: sql/01_duplicates.sql. The self-join keeps the later row as the duplicate by ordering on id.
02 · Eight purchases walked around a €5,000 signature
Lumen Facilities has a single-signature limit of €5,000 net. These eight pairs use different invoice numbers, each under the line, three or four days apart. Together they clear it by €2,950. This memo does not call that fraud. It calls it a control that can be stepped over. A reviewer who only sorts by amount, one invoice at a time, will not see it. The same-number duplicates from finding 01 are excluded here on purpose.
Query: sql/02_split_purchases.sql. The window is six days. Both legs have to be material, above 40% of the limit, so two tiny invoices cannot fake a pair.
03 · The hosting contract stayed at €42. The invoices did not.
Danube Hosting bills 90 seats a month. The contract price is €42. From the fourth month the unit price steps up, to €74 at the end. The lag against the prior month is in the query. The sum of the gap is €13,500.
| Month | Billed | Contract | Overcharge |
|---|---|---|---|
| 2025-07 | €42 | €42 | €0 |
| 2025-08 | €42 | €42 | €0 |
| 2025-09 | €42 | €42 | €0 |
| 2025-10 | €45 | €42 | €270 |
| 2025-11 | €48 | €42 | €540 |
| 2025-12 | €51 | €42 | €810 |
| 2026-01 | €54 | €42 | €1,080 |
| 2026-02 | €58 | €42 | €1,440 |
| 2026-03 | €62 | €42 | €1,800 |
| 2026-04 | €66 | €42 | €2,160 |
| 2026-05 | €70 | €42 | €2,520 |
| 2026-06 | €74 | €42 | €2,880 |
Query: sql/03_price_drift.sql. LAG(unit_eur) is the month-to-month change. The contract column does not move.
04 · Eighteen invoices still use the old 20% VAT
From 1 January 2025 the standard Slovak VAT rate is 23%. The vendor master on these suppliers is 23%. Eighteen service invoices were booked at 20%, the previous standard rate. The tax gap is €4,320. The cash already paid is not the whole point. The return is wrong, and a later correction is more expensive than the booking.
Query: sql/04_vat_rate.sql. Gap = net × (master rate − booked rate). Rates are stored in basis points so 23% is 2300 and the arithmetic stays in integers.
What was not counted
Late-payment interest, foreign currency, and credit notes. A duplicate that was credited back would fall out of the join only if the credit carried the same invoice number and the same gross with the opposite sign. This book has no such credits. Adding them without a test would make the €78,246 look cleaner than the ledger is.
The companies are fictional. The rate change is not: standard Slovak VAT moved from 20% to 23% on 1 January 2025.