AI Invoice Processing

Custom AI invoice processing system

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 distribution
Hours → seconds
Time to handle one invoice
~1 FTE
Data-entry time recovered
Own servers
Where invoice data lives
Per-call pricing
Replaces per-document fees
Background

A Czech wholesale distributor buried in supplier invoices

The 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.

The challenge

Paying for every invoice, then rekeying it anyway

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.

Per-document SaaS fees that grew with every invoice, with nothing owned at the end
Close to a full-time role spent rekeying invoice data by hand
OCR accuracy low enough that a large share of invoices needed manual correction
Invoice data processed on a vendor's servers, outside the company's control
No direct ABRA Flexi integration, so data moved by manual CSV import
Cost center and spending category assigned by hand on every invoice
The solution

What we built

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.

Vision-LLM extraction

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.

Automatic cost categorization

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.

Straight-through posting into ABRA Flexi

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.

Built for the Czech accounting stack

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.

Validation against ARES and VIES

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.

On-premise deployment

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.

Implementation

How we built it

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

Technology stack

Built with proven tools

Vision-capable LLMPythonFastAPINode.jsTypeScriptPostgreSQLRedisABRA Flexi APIARESVIESREST APIDocker
Why custom wins

SaaS invoice OCR vs. custom-built

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.

SaaS OCR

Pay per document, forever

Per-document fees that grow with your invoice volume
Invoice data processed on vendor cloud servers
Limited integration, often just CSV exports to your ERP
Vendor lock-in with annual contracts
Generic extraction models, ~85% accuracy on custom layouts
No control over data retention or AI training on your documents
Custom AI OCR

Built for your invoices

~$0.04 per invoice including full line item extraction
All data stays on your servers, full privacy control
Direct API integration with your ERP (SAP, QuickBooks, Xero, NetSuite)
You own the code, the pipeline, and every extracted record
95%+ accuracy tuned to your specific invoice formats
On-premise or your own cloud, you decide where data lives

Real cost for 800 invoices/month

Cumulative cost over 5 years: SaaS per-document fees vs. a custom GPT-5.3 vision pipeline

Rossum AI

from $18,000/yr (Starter)

Digitoo

5–10 CZK/invoice

Custom (GPT-5.3)

$2K build + ~$1K/yr

Year 1
$18,000
$2,400–$4,800
$3,000
Year 2
$36,000
$4,800–$9,600
$4,000
Year 3
$54,000
$7,200–$14,400
$5,000
Year 5
$90,000
$12,000–$24,000
$7,000

You still own nothing

You still own nothing

You own the code, the model, and every invoice stays on your servers

Break-even vs Rossum in ~2 months
Break-even vs Digitoo in ~8–25 months
Build cost: $2,000

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.

Beyond cost savings

Time savings for your accounting team

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.

5 minsaved per invoice

Manual data entry, verification, and classification per invoice, eliminated by AI extraction and auto-categorization.

~67 hrs/mofreed for your team

For 800 invoices per month, that's nearly one full-time employee redirected from data entry to analysis and advisory work.

Up to 8people per invoice

Without automation, each invoice passes through assistants, managers, junior accountants, and senior reviewers before it's booked.

What the custom solution automates beyond OCR

Automatic assignment of cost centers and spending categories based on historical patterns
GL account suggestion from previous bookings of the same supplier
Multi-level approval routing without manual handoffs
Automatic matching of invoices to purchase orders

Time savings data based on Digitoo automation study and industry analysis of manual invoice processing workflows.

System architecture
Document intake
AI extraction (vision LLM)
Validation (ARES / VIES)
Post to ABRA Flexi
Key takeaways

What made this work

01

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.

02

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.

03

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.

04

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.

05

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.

Related service
Service

AI Invoice Processing

Turn any invoice into structured data and post it straight to your accounting system.

Learn more

Have a similar challenge?

Tell us what's slowing your business down. We'll show you what's possible.