Automating invoice processing for a Swiss SME: from 8 hours a week to 45 minutes
The finance manager had a ritual she hated. Every Friday afternoon, she'd close everything else and spend three or four hours processing supplier invoices. Sometimes it spilled into Monday. Sometimes a colleague helped. Neither of them looked forward to it.
The company was a 40-person professional services firm in the canton of Vaud. Around 200 supplier invoices a month, from about 80 different vendors, all PDF attachments, all different formats. Some were clean, structured PDFs. Some were scans of paper invoices. Some in French, some in German, the occasional one in English. Every single one had to be read and manually typed into Abacus.
Between 3 and 6 minutes per invoice. Multiply it out: 8 to 10 hours a week.
What the process actually looked like
During the discovery call we walked through each step properly. She opens the email, finds an invoice, opens the PDF, reads it, types the vendor name into Abacus (looks up the supplier account if it's not already saved), enters the date, the amount excluding VAT, the VAT amount, the VAT rate, the payment terms, the IBAN. Then picks an account code from memory or from a reference sheet, which account this cost goes to, IT, office supplies, professional fees, travel.
Save. Next PDF. Repeat.
The errors were rare but painful when they happened. A transposed digit. A wrong account code that only surfaced in the quarterly review. A duplicate payment nobody noticed until the vendor flagged it. Not carelessness, just what happens when you do the same thing at volume for long enough.
The setup
The workflow runs in n8n, self-hosted on a Swiss VPS. That was a non-negotiable requirement: these invoices contain supplier contract details, payment amounts, and IBANs. Under revDSG, that data needed to stay in Switzerland.
Here's the flow:
n8n monitors a dedicated inbox where invoices get forwarded. When a PDF arrives, it downloads the attachment and sends it to the Claude API with a structured extraction prompt asking for: vendor name, invoice number, invoice date, due date, total excluding VAT, VAT amount, VAT rate, currency, IBAN, and a suggested account code matched against the company's Abacus chart of accounts.
Claude returns a JSON object. The workflow validates it: do the amounts add up, does the IBAN format match what we've seen from this vendor before, is the date plausible.
Then, and this took the most discussion to get right, it doesn't automatically push to Abacus. It sends a Slack message to the finance manager with all the extracted data laid out cleanly, plus a link to the original PDF. She reviews it. Looks right? Click Approve. Something's off? Click Edit, correct it in a simple form, then approve.
Only after her approval does the workflow call the Abacus API and create the supplier invoice.
Why we kept the approval step
The obvious question was: if the extraction is accurate enough, why not skip the review and push straight to Abacus?
Two reasons.
Claude's accuracy on well-formatted PDFs is consistently above 97% in our testing. But on scanned paper invoices or weird layouts, it drops. 97% on 200 invoices a month still means roughly 6 invoices with errors. In accounting that compounds.
And Swiss audit requirements mean the finance manager needs to have reviewed and approved each invoice before it enters the books. Removing that step would have changed the compliance posture of the whole process, not just sped it up.
The Slack approval takes about 15 seconds per invoice when everything's correct. For the 5% or so that need a correction, maybe 2–3 minutes. Still a fraction of what the old process took.
The tricky cases
Three types of invoices caused the most trouble during testing.
Credit notes were the first one. Some vendors send them in the same format as a regular invoice but with negative amounts. The extraction got the numbers right but the workflow was initially treating them as invoices. We added a classification step that spots credit notes and routes them into a separate flow with a clear visual flag.
Multi-currency was the second. A handful of European vendors invoice in EUR, one US software vendor in USD. Abacus handles it, but the extraction needed to reliably pick up the currency and map it to the right account. Worked fine when the currency was clearly labelled; needed an explicit prompt instruction for invoices showing both the foreign amount and the CHF equivalent.
Unknown vendors were the third. Occasionally a new supplier appears whose account doesn't yet exist in Abacus. The workflow detects this, the extracted vendor name matches nothing in the known list, and routes it to a separate Slack message flagging that a new supplier account needs to be created manually first. Happens about twice a month.
Three months later
The finance manager now processes invoices on Tuesday mornings in about 45 minutes. Slack approvals, edge cases handled, done.
Her words: "Before, I dreaded Friday afternoons. Now I do invoices with my coffee on Tuesday and it's fine."
Error rate in Abacus is near zero. No duplicate payments since go-live. The quarterly account code review, which used to surface 10–15 miscoded entries, found two in the most recent quarter, both from before the automation.
Total time saved across both people who used to share the work: about 28 hours a month.
Invoice processing is one of the clearest automation wins available to Swiss SMEs. High volume, low variance, expensive when done manually. The AI extraction is good enough to handle real-world invoice variety, and keeping a human approval step means the finance team stays in control without it becoming their whole Friday.
