A Czech wholesale distributor was drowning in supplier invoices and paying per-document fees to a SaaS OCR platform. We replaced it with a custom pipeline built around a vision-capable LLM that reads any invoice format, extracts line items, categorizes costs, and posts straight into ABRA Flexi. Manual data entry that used to eat most of an accountant's week now runs with light human oversight, and every invoice stays on the client's own servers.
Wholesale distributionThe client is a mid-sized Czech wholesale distributor supplying industrial materials to businesses across Central Europe. Every month they receive a high volume of supplier invoices in a mix of formats: PDF attachments, scanned paper, and photos taken on a phone. Their books run on ABRA Flexi, the hub for bookkeeping, accounts payable, and reporting. They had already tried a commercial SaaS OCR platform, but the per-document pricing kept climbing with volume, and the accuracy was too low to trust without checking every invoice by hand.
Invoices arrived in every format imaginable, and each one made a long journey before it was booked. Someone scanned and logged it, a manager approved it, a junior accountant keyed the data in, and a senior accountant checked the result. Across a high monthly volume, data entry alone consumed close to a full-time role, people copying numbers off paper into the system. On top of that, the SaaS OCR platform charged per document and still missed enough fields that a large share of invoices needed a manual second pass. With no direct link to ABRA Flexi, everything moved between systems as CSV exports and manual imports, adding yet another place for errors to creep in.
We built a custom invoice processing pipeline around a vision-capable LLM. Invoices arrive by email or upload, and the model extracts every field: supplier details, amounts, line items, VAT, due dates, and payment information. Validated data flows straight into ABRA Flexi over its API, with no manual step in between. The pipeline also categorizes costs and catches duplicates, so the accounting team only looks at flagged exceptions. Everything runs on the client's own infrastructure, and because we pay per API call rather than per document, the running cost per invoice is a small fraction of the old SaaS pricing.
The model reads invoices in any format, whether a clean PDF, a crooked scan, or a phone photo, and pulls out every field including individual line items. We tuned it on real invoices from the suppliers that make up most of the client's volume, so accuracy on their actual layouts is high. When a new supplier format shows up, the pipeline learns it after a handful of corrections rather than needing a rebuild.
The pipeline assigns each invoice to the right cost center, spending category, and GL account by learning from how the client booked similar invoices in the past. For recurring suppliers this removes manual classification entirely. For anything new or ambiguous, it proposes the most likely category and flags it for a quick human check rather than guessing silently.
Validated invoices post directly into ABRA Flexi over its API, with no CSV export or manual import. The integration matches suppliers, creates new supplier records when it needs to, and books each invoice with full line item detail. That closed the gap that used to force staff to shuttle data between two systems by hand.
Most Czech finance teams run one of a few systems, and each handles invoices differently. ABRA Flexi and Money S3 expose proper REST APIs, Pohoda integrates through its XML data interface, and Fakturoid suits lighter setups with a clean modern API. We built the posting step as a swappable adapter, so the extraction and validation core stays the same no matter which system sits at the end. Choosing the right integration path per accounting system is half the work of reliable accounts payable automation.
Before anything is booked, the pipeline checks supplier details against ARES, the Czech business register, and validates EU VAT numbers through VIES. It also detects duplicates, re-checks the VAT math, and cross-references each supplier against existing records. Anything that does not line up is flagged for a person rather than quietly posted.
The whole system runs on the client's servers in Docker containers, so no invoice data ever leaves their infrastructure. That was a firm requirement from management. Model and pipeline updates ship through a standard CI/CD pipeline without interrupting daily processing.
We ran the project in four phases. First, discovery: a short on-site workflow audit where we followed real invoices from the moment they arrived to the final posting in ABRA Flexi, noting every hand-off, approval, and manual retype. That map showed where the time actually went and which steps were safe to automate. Second, extraction tuning: we collected a representative sample of real invoices from the client's most frequent suppliers and tuned the vision-LLM prompts and post-processing against those actual layouts, not generic templates, iterating until extraction was reliable on the formats they see every day. Third, validation: we wired in the ARES and VIES checks, duplicate detection, and VAT verification, then defined clear rules for when the system posts automatically and when it flags for a human. Fourth, integration and cutover: we connected the ABRA Flexi API and ran the new pipeline in parallel with the existing manual process for a couple of weeks, comparing every result before switching over. That parallel run mattered as much as the code. It built the accounting team's trust and surfaced edge cases while the manual safety net was still in place.
Timeline: Several weeks from kickoff to production, delivered in four phases
Commercial platforms charge you per document and process your data on their servers. Here's how a custom AI pipeline compares to Rossum and Digitoo.
Cumulative cost over 5 years: SaaS per-document fees vs. a custom GPT-5.3 vision pipeline
Pricing as of March 2026. Rossum AI Starter from $18,000/yr · Digitoo 5–10 CZK/invoice · GPT-5.3 vision $1.75/$14 per 1M tokens
Custom solution from ~$2,000. Ongoing: ~$35/mo API costs (800 invoices at ~$0.04 each) + ~$50/mo hosting & maintenance.
Invoice processing is not just about OCR accuracy. The real value is in the hours your team gets back when they stop copying numbers from paper into the system.
Manual data entry, verification, and classification per invoice, eliminated by AI extraction and auto-categorization.
For 800 invoices per month, that's nearly one full-time employee redirected from data entry to analysis and advisory work.
Without automation, each invoice passes through assistants, managers, junior accountants, and senior reviewers before it's booked.
Time savings data based on Digitoo automation study and industry analysis of manual invoice processing workflows.
Tuning the model on the client's own invoices, not generic samples, was what made extraction reliable. Off-the-shelf OCR kept tripping over the variety of Czech invoice layouts.
Running the new pipeline in parallel with the manual process built trust with the accounting team and caught edge cases before they could reach production.
A direct API link to ABRA Flexi removed a whole class of errors that came from manual CSV imports. The time saved on fixing those alone paid for the integration.
The accounting system is the hard part, not the AI. ABRA Flexi, Pohoda, Money S3, and Fakturoid each integrate differently, so we built posting as a swappable adapter to keep the core pipeline reusable.
On-premise deployment added setup work, but it ended the data-privacy questions for good and gave the client full control over their invoice data.
Turn any invoice into structured data and post it straight to your accounting system.
Learn more