A cost invoice in a typical Polish SME today travels across five desks, three mailboxes and one PDF pasted into Teams. It reaches the accountant on the last day of the payment term — or three days past it, depending on whether the owner happened to find a minute between meetings to click "OK, pay it".
This isn't a case of people not wanting to work. It's a case of nobody ever actually deciding how invoices should flow. Everyone does what they've always done because it used to be easier that way. The problem is "used to" was back when the company had 8 people and 50 invoices a month. Today it has 35 people and 300 invoices, and the mechanism hasn't changed. The accountant posts the invoice from memory, guessing who should have approved it. Because of that, once a quarter the company pays the same invoice twice, once every six months it gets hit with late interest, and once a year someone on the board finds out that a copier maintenance contract nobody actually uses has been charging 1,200 PLN a month for 14 months.
A purchase invoice approval workflow inside your ERP is one of the few things that genuinely pays off within the first three months — and one of the few you don't need to buy. In most ERPs it's already in the license; nobody switched it on.
Why email and Teams aren't a workflow
An email-based cost-invoice flow has a few things you can never recover after the fact.
You don't know when the invoice reached the company. The receipt date is whenever the accountant managed to open it and move it into a folder — not necessarily the day it hit the mailbox. That matters, because the payment term runs from receipt, not from the issue date. In a supplier dispute (or at a JPK audit) that difference can be decisive.
You don't know where the invoice is right now. "At Kowalski the sales rep" means in practice "somewhere in his inbox, among 400 other unread messages". Reminders about an upcoming due date have to be sent by hand. Usually the accountant does them three days before, writing to each person individually.
You don't know who actually approved. "Said OK in Teams" isn't a signature. "Said in the corridor it was fine to pay" isn't even a message. At the first disputed expense it turns out nobody specifically approved it, because everyone assumed somebody else had.
You don't know whether the invoice has been in before. Duplicates sent by suppliers are standard today — one copy by email to the accountant, another by post to the sales rep, a third in a portal. Without an ERP mechanism that says "show me invoices from this vendor with the same net amount in the last 60 days", sooner or later you'll pay twice.
A workflow inside the ERP solves these four problems with one mechanism — not because it's magic, but because every invoice has one identifier, one status and one path it travels.
What the matrix actually consists of
A workable approval matrix in an SME is a single A4 page, not an expert system. It has four dimensions.
- Amount. Thresholds, not individual numbers. Typically in a 10–50-person company three bands are enough: under 2k PLN, 2–20k PLN, over 20k PLN. In smaller companies one threshold is plenty; in larger ones a fifth level just creates a bottleneck.
- Type of cost. An invoice for production materials shouldn't follow the same path as one for marketing or IT services. Usually 6–10 categories do the job (goods for resale, external services, utilities, leases, IT and software, travel, marketing, equipment maintenance, office supplies, other). Each has a default decision-maker.
- Cost center / department. An electricity invoice for the production hall goes to the production manager, not the CFO. The ERP sets this once on the vendor card or on the cost account analytics — from then on the system knows where to send it.
- Four eyes above a threshold. Above a specific amount (typically 20k PLN net in a 10–50-person company), no invoice goes to payment without two different approvals. Not because anyone distrusts the sales rep, but because the second pair of eyes catches typos in the bank account number and duplicates the first pair stopped seeing.
The matrix fits on one page in Excel. Rolling it out in the ERP — one day of configuration in a system you already own. This isn't an implementation project. It's buttons to switch on and rules to write down.
What the ERP has to handle
Not every out-of-the-box configuration will do. Five things to check.
- Invoice status visible from the purchase register — pending approval, waiting with X, approved, blocked, needs correction. In Comarch Optima, enova365, Microsoft Dynamics 365 Business Central, Subiekt GT (with the module) and Comarch XL these are standard features, often disabled in the default configuration.
- OCR pre-coding — the ERP or an add-on module reads the number, date, amount, vendor VAT ID and bank account from the PDF. It doesn't have to be perfect — what matters is that the accountant stops transcribing the invoice word by word and starts verifying it.
- Hard duplicate block — on vendor VAT ID, invoice number and amount. A hard block: the system refuses to save a second invoice with the same triple. Most ERPs have this in settings; just switch it on.
- Mobile approval — not because it's trendy, but because an owner approving invoices once a day from a phone, on the road back from a customer, is three days of difference in the payment cycle. Every reasonable ERP today has a mobile app or a web portal; two buttons are enough: "approve" and "return with a comment".
- Automatic reminders and escalations — if an invoice sits with a sales rep for 48 hours without a decision, the system sends a reminder. Another 48 hours and it escalates to their manager. You don't have to code this from scratch — it's a standard workflow mechanism in all the ERPs listed above.
What the ERP doesn't have to do: make the decision for a human. "AI for invoice approval" in an SME is almost always a slide-deck pitch — in reality every invoice has to be seen by a person, because responsibility for approving an expense is personal, not algorithmic. Automation should prepare the decision, not take it.
Real-life example — HVAC service company
We worked with an 18-person service company in the HVAC trade near Katowice. Four offices in the region, enova365 as ERP, ~2,200 cost invoices per year (materials, subcontractors, fuel, equipment service, subscriptions). Invoices arrived either in the accounts@ mailbox or by post at a specific office; one accountant (half-time) was keying them into enova by eye and emailing them around for approval.
Before the project the monthly cycle looked like this: the accountant spent about 10 hours a week entering and routing invoices. Average time from receipt to approval was 9.4 working days (median 7, but every third invoice sat for more than two weeks). In 2025 the company paid 3 invoices twice (11,400 PLN total — two were refunded after a complaint, one was written off), and the late-payment interest paid to suppliers added up to ~7,800 PLN. The owner knew about the duplicates. He didn't know the interest summed to that number — each one came separately, 200 PLN here, 400 PLN there.
The review surfaced three concrete findings:
- Fuel and consumables invoices (about 40% of volume) were being approved by the owner, even though in 99% of cases they were recurring invoices from the same 7 suppliers at typical amounts.
- Subcontractor invoices (about 25% of volume) had no proof that anyone compared them to a purchase order — because the company didn't issue purchase orders for subcontractors at all; the agreements were verbal, on WhatsApp.
- Three annual IT and SaaS subscription invoices nobody used anymore were being paid automatically by direct debit, so they weren't going through approval at all.
Project: 6 days of our work. What changed — enova workflow module turned on, matrix with three amount thresholds (under 2k, 2–20k, over 20k) and four categories (consumables, subcontractors, IT and subscriptions, other). For fuel and consumables from recurring vendors — auto-approval within an agreed monthly limit, with a report for the owner once a month, not once per invoice. A simple electronic PO introduced for subcontractors (one screen, two fields — scope and rate). Hard duplicate block on VAT ID + number + amount. Enova mobile app for the owner and office managers. Automatic reminders after 48 and 96 hours.
After 90 days: average time from receipt to approval 2.8 working days (median 1 day; the "long tails" over two weeks were gone). Accountant time on invoice processing — ~3.5 hours a week, recovering ~6.5 hours of administrative work per week. Zero duplicates. Two SaaS subscriptions caught at the first review and switched off — ~1,100 PLN a month of savings nobody had noticed, because they were going straight off the corporate card.
The project paid for itself in the second month. Not on "workflow savings" but on one SaaS subscription nobody remembered was still being paid.
Common roll-out mistakes
Across a dozen or so approval workflow deployments in Polish SMEs, the same four traps come back.
- Too many approval levels. If a 1,500 PLN invoice has to pass through the sales rep, the manager and the owner, the workflow changes nothing — you'll just have a three-times-longer email chain. In a 10–50-person company, two levels handle 95% of cases, and a third is only switched on above a large amount.
- Anyone can block anything. If every approver can bounce an invoice "for clarification" with a one-word comment, the workflow turns into hot potato. The comment has to be mandatory and specific — "exactly what needs to be fixed".
- "Mobile" approval on a desktop in the office. If the approver has to sit down at a desktop PC, nothing will improve. The mobile portal has to be designed for two minutes on a bus, not twenty on a laptop.
- Forgotten categories. "Other" should never be more than 10% of invoices. If it is, the matrix isn't working — people are dumping everything in the bin because it's easier. The fix: once a quarter audit the "other" category and extend the matrix.
When to tackle it
Three signals that it's time to stop being afraid of the project and just do it.
- You have 10+ people and more than 100 cost invoices a month. Above that, email-based routing stops being merely inefficient — it starts being risky. It's no longer about time; it's about duplicates, interest and audit trail.
- You've already had a duplicate payment or late interest. Once is an accident, twice is a pattern. The third time means it's costing you real money — you just don't know how much, because nobody is adding it up.
- The CFO or owner says "invoices eat an hour of my day". That's not the moment for "we'll be more disciplined on email". It's the moment to spend one week switching on what your ERP already has.
What next
If today you can't pull up an ERP report showing "invoices in approval over 7 days, with the person and the amount", it doesn't mean your flow is broken. It means you don't have one — you have a shared mailbox and the goodwill of a few people. In an 18-person company that lasts a few years. In a 35-person company it stops working.
Try something simple — for one week, log how many invoices came in, how many days each sat with whom, and how many times the accountant had to remind someone by hand. One sheet. If after a week the average is more than 5 days, or if someone is permanently sitting on 10+ invoices — the first call with us is free and takes half an hour. We won't send you a quote for a new ERP. We'll show you how to switch on the workflow in the system you already own, in one week, without replacing software.
Invoice approval workflow isn't an implementation project. It's buttons to switch on in the ERP you already own, and a one-page matrix nobody has written down yet.