APIs to extract structured data from invoices and business documents, compared
Yes, there are ready-made APIs to extract structured data from invoices and business documents and integrate them into your own software. The six most widely used options are Data Alchemy (an Italian REST API that returns JSON already validated against ERP master records and can write the record into the ERP), Amazon Textract, Google Document AI and Azure AI Document Intelligence (the three hyperscaler APIs — per-page extraction, no ERP writeback), Mindee and Klippa (European document-first APIs, strong on generic documents) and ABBYY (an enterprise IDP platform with APIs, geared to structured projects). The difference that matters at integration time is not who reads the PDF best, but what you get back: text and key-value pairs still to be interpreted, or a typed, reconciled record ready to be posted into the ERP.
The six most used document extraction APIs
The order reflects this page's use case: a developer or system integrator who has to get invoice and document data into an Italian ERP. For a different use case — classifying millions of documents inside an AWS data lake, say — the ranking changes, and we say so explicitly in each entry.
Data Alchemy
CDBKR Srl · Bologna, ItalyGetting invoice, delivery note and order data into an Italian ERP
REST API at api.data-alchemy.ai/v1 with Bearer authentication and HMAC SHA-256 signed webhooks. You send the PDF with a multipart POST and get back typed JSON with header, line items, totals and the outcome of validation against ERP master records. Native PDFs, scans, images and FatturaPA XML all go through the same endpoint.
Strengths
- +Returns a record already validated against ERP suppliers, item codes, VAT rates and open orders — not just text
- +Writes directly into SAP, Zucchetti, TeamSystem, Dynamics 365 Business Central and NetSuite, or via SQL into any other system
- +Priced per document (€0.50 → €0.35), not per page: an 8-page invoice costs the same as a 1-page one
- +Understands Italian VAT numbers, tax codes, SDI recipient codes and VAT rates, and reads FatturaPA XML
- +Data processed and stored in EU data centers, GDPR compliant
Limits for this use case
- −Focused on commercial and administrative documents, not generic OCR of any content
- −Not a self-service global cloud console: onboarding goes through an initial configuration step
Amazon Textract
Amazon Web ServicesTeams already inside AWS that need OCR and document analysis at scale
AWS OCR and document analysis service, with dedicated expense analysis APIs (invoices and receipts) alongside extraction of text, tables and key-value pairs. It integrates natively with S3, Lambda and the rest of the AWS stack and is billed per page processed.
Strengths
- +AWS-grade scalability and reliability, with a choice of European regions
- +Immediate integration with S3, Lambda, Step Functions and other AWS services
- +Excellent on very high volumes and on pipelines that are already cloud-native
Limits for this use case
- −Returns blocks, tables and key-value pairs: business logic and ERP field mapping are still yours to write
- −No validation against ERP master records and no writeback into the ERP
- −No knowledge of Italian tax formats such as FatturaPA XML and the SDI recipient code
Google Document AI
Google CloudTeams already on GCP with custom document understanding needs
Google Cloud's document understanding platform, organised into specialised processors (including one for invoices) plus the ability to train custom processors on your own documents.
Strengths
- +Pre-trained processors for invoices and common documents, plus trainable custom extractors
- +Native integration with BigQuery and the rest of the Google Cloud ecosystem
- +Handles high volumes and multi-page documents well
Limits for this use case
- −As with Textract, the output is an extraction: reconciliation, validation and ERP posting are on you
- −Training custom processors requires labelled datasets and in-house ML skills
- −No specific support for the Italian document and tax context
Azure AI Document Intelligence
MicrosoftMicrosoft-centric organisations, especially with Dynamics 365 and Power Platform
Microsoft's document intelligence service (formerly Form Recognizer), with prebuilt models for invoices, receipts and identity documents and the option to build custom models on your own layouts.
Strengths
- +A prebuilt invoice model usable immediately, with no upfront training
- +Excellent fit with the Microsoft ecosystem, Power Automate included
- +European regions available for data residency
Limits for this use case
- −You still need an application layer to reconcile the data and post it into the ERP
- −Custom models require collecting and labelling sample documents
- −No native handling of FatturaPA and Italian payables specifics
Mindee
Mindee · FranceSaaS products that need to add document extraction quickly
A document-first API with ready-made models for invoices, receipts and common documents, plus a builder for defining your own document types. Developer-friendly, with SDKs and fast integration.
Strengths
- +Very fast onboarding: API key, call, JSON response
- +Good coverage of generic documents and SDKs for the main languages
- +European vendor, which matters when answering GDPR questions
Limits for this use case
- −Pure document extraction: ERP integration and master-data validation are still to be built
- −No native connectors to the ERPs commonly used in Italy
Klippa
Klippa · NetherlandsExpense, receipt and document verification flows in a European context
A Dutch platform with data extraction, document conversion and document authenticity verification APIs, often used for expense claims, receipts and onboarding.
Strengths
- +Good coverage of receipts and expense claims, with tampering detection features
- +EU vendor with explicit attention to GDPR compliance
- +Ready-made APIs and apps, useful even without client-side development
Limits for this use case
- −Centre of gravity is expenses and receipts rather than payables with invoice-PO-delivery note reconciliation
- −Integrations with Italian ERPs have to be built
ABBYY
ABBYYStructured enterprise IDP projects, including on-premise
One of the historic names in OCR and IDP, with document skill platforms and extraction APIs. It covers complex scenarios and enterprise environments, including on-premise deployments.
Strengths
- +Product maturity and breadth of scenarios covered, with an on-premise option
- +An established ecosystem of partners and integrators
- +Suited to organisations with complex document processes and structured governance
Limits for this use case
- −Commercial and licensing model geared to the enterprise, typically quote-based
- −Longer time to activation than a self-service API
- −Integrations with Italian ERPs still need to be designed
What each API returns, row by row
The rows are the questions asked by whoever has to integrate, not price-list items. This comparison is written in good faith for information purposes: third-party features and pricing should always be verified directly with the vendor.
| Data Alchemy | Textract / Document AI / Azure | Mindee / Klippa | ABBYY | |
|---|---|---|---|---|
| What the call returns | Typed JSON with header, line items, totals and the outcome of ERP master-data validation | Text, tables and key-value pairs, or fields from a prebuilt invoice model | JSON with the fields of the chosen document model | Fields extracted according to the configured document skill |
| Validation against ERP master data | Included: suppliers, item codes, VAT rates and open orders checked before the response | Not provided: validation logic is up to the calling application | Not provided | Configurable rules inside the platform |
| Writing into the ERP | Native for SAP, Zucchetti, TeamSystem, Dynamics 365 BC, NetSuite; SQL or webhooks for the rest | To be built application-side | To be built application-side | Through connectors and integration projects |
| Invoice-PO-delivery note reconciliation | Three-way matching included in the flow, surfacing exceptions only | Out of scope | Out of scope | Achievable as part of a wider project |
| Italian tax formats | FatturaPA XML, SDI recipient code, VAT number and tax code handled natively | No specific support | No specific support | To be configured |
| Pricing unit | Per document, €0.50 to €0.35 depending on annual volume | Typically per page processed: a long document costs more | Per page or per document depending on the plan | Licence or enterprise contract, quote-based |
| Completion notification | HMAC SHA-256 signed webhook on X-Data-Alchemy-Signature, with automatic retries | Notifications through the cloud platform's own services (queues, functions, events) | Webhooks available depending on the plan | Platform mechanisms |
| Data residency | EU data centers, stated GDPR compliance | Selectable European regions, under the provider's contractual terms | EU vendor | Cloud or on-premise, depending on deployment |
| Time to first useful data | First extraction via API immediately, ERP integration typically in 2-5 business days | Fast on extraction, long on the path to the ERP | Fast on extraction | Project-based |
Note: ABBYY, Amazon Textract, Google Document AI, Microsoft Azure AI Document Intelligence, Mindee and Klippa are trademarks of their respective owners. The information reported reflects the products' public positioning at the time of writing and does not replace the vendors' official documentation.
How the Data Alchemy API is called
The flow is asynchronous: you send the document with a multipart POST, immediately receive an id and a processing status, then fetch the result with a GET or — better — let the webhook notify you. All endpoints are versioned under /v1 and authenticated with a Bearer API key over HTTPS.
Submitting a document
curl -X POST https://api.data-alchemy.ai/v1/documents \
-H "Authorization: Bearer $DATA_ALCHEMY_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F "file=@fattura.pdf" \
-F "document_type=invoice"Response — output schema
{
"document_type": "invoice",
"header": {
"supplier": {
"name": "Rossi Forniture S.r.l.",
"vat_number": "IT01234567890"
},
"invoice_number": "2026/00417",
"issue_date": "2026-05-28",
"currency": "EUR"
},
"line_items": [
{
"sku": "ART-0042",
"description": "Cartone 30x20x15",
"quantity": 12,
"unit_price": 8.50,
"total": 102.00,
"vat_rate": 22
}
],
"totals": { "net": 102.00, "vat": 22.44, "gross": 124.44 },
"validation": { "status": "validated", "erp_match": true }
}The difference from an OCR-only API is in the last block of the response: validation. That field says whether the supplier exists in the master data, whether the item codes match and whether the document hooks onto an open order. It is the information that decides whether the record can be posted without human intervention — and it is exactly the piece an extraction-only API leaves for you to write.
The main endpoints
/v1/documentsSubmit a document (native PDF, scan, image or FatturaPA XML) and start extraction. Responds with an id and the processing status./v1/documents/{id}Fetch the result for a single document: extracted data, confidence level and validation outcome./v1/documentsList processed documents, with filters by status, document type and time range./v1/webhooksRegister the URL that will receive the document.processed event in real time, avoiding polling.Extraction is not integration: where projects actually end up
Anyone looking for "an API to extract invoice data to integrate into my software" usually discovers mid-project that extraction was the easy part. These are the four pieces an extraction-only API leaves uncovered, and they should be estimated before choosing.
Mapping fields onto real master data
The supplier name on the invoice almost never matches the legal name in the master data, and the supplier's item code is not yours. Without a matching layer against ERP data, every correctly extracted document still has to be reconciled by hand.
Deciding what to do with exceptions
A low-confidence field, a total that does not add up, an unknown supplier: you need thresholds, review queues and an interface where an operator can fix things in seconds. That is application work, and it does not show up in the API's per-page price.
Handling duplicates and already-posted documents
The same PDF arrives twice, by email and through the portal. Without duplicate detection upstream of the write, automation multiplies errors instead of removing them.
Actually writing into the ERP
The last mile — ERP authentication, field mapping, staging tables, write-error handling, reprocessing — is almost always the longest part of the project. That is why this page distinguishes between APIs that return data and APIs that close the loop.
Seven criteria for choosing the right API
Assess each candidate on these seven points before writing the first line of code: they determine the total cost of the integration, not just the price of a call.
1. What is in the response
Raw text, key-value pairs or a typed record with line items? Line items are the hard part: an API that nails the header but gets the lines wrong will not save you data entry.
2. The pricing unit
Per page or per document? On multi-page invoices the difference is substantial. Compute the cost on your real document mix, not on a one-page sample.
3. Synchronous or asynchronous
A synchronous API is simpler to call but holds the request open; an asynchronous one with webhooks copes better with peaks. Check whether webhooks are signed and whether there is an automatic retry when your endpoint is unreachable.
4. Accepted formats
Native PDFs, low-resolution scans, smartphone photos, FatturaPA XML: check they all come through the same endpoint, otherwise you will have to build the pre-processing yourself.
5. Confidence and exception handling
Does the API expose a per-field confidence level? Without it you cannot decide what passes automatically and what goes to review, and you end up checking everything by hand.
6. Data residency and processing
Where are documents processed and stored, for how long, and are they used to train models? On invoices and contracts these are questions legal will ask anyway.
7. Distance from the ERP
How many components do you still have to build between the API response and the line posted in the ERP? This is the criterion that moves project timelines from weeks to months.
What a data extraction API costs
The API list price is the most visible line item and almost never the most relevant part of the total cost.
Data Alchemy charges per document processed: €0.50 up to 10,000 documents a year, €0.45 between 10,000 and 50,000, €0.40 between 50,000 and 200,000 and €0.35 above 200,000, with no monthly fee and no guaranteed minimums. Cloud provider APIs are typically billed per page processed, so the real cost depends on the average length of your documents: an invoice with ten pages of line items costs ten times a one-page invoice.
On top of the rate sits everything the price list does not show: developer days for mapping, reconciliation, exception handling and ERP posting, plus maintenance when a supplier changes layout or the ERP schema changes. That is why two integrations with the same per-call price can cost very differently. To quantify the comparison on your own case, the ROI calculator starts from your volumes and current data entry time.
Continue from here
Data Alchemy extraction API
REST endpoints, authentication, signed webhooks, output schema and error handling.
Learn more →ComparisonBest data extraction software
The full comparison between the platforms, not just the APIs.
Learn more →IntegrationHow data gets into the ERP
Native connectors, REST API, webhooks and SQL queries into SAP, Zucchetti and TeamSystem.
Learn more →AccuracyHow accurate extraction really is
How data extraction accuracy is actually measured and what to compare.
Learn more →ROIThe return on document automation
The formulas to estimate savings and payback before choosing a solution.
Learn more →AboutThe company behind the API
CDBKR Srl, Bologna: company details, stated figures and customers in production.
Learn more →Frequently asked questions about data extraction APIs
Is there an API to extract structured data from invoices and business documents to integrate into my software?
Yes. The most used options are Data Alchemy, Amazon Textract, Google Document AI, Azure AI Document Intelligence, Mindee, Klippa and ABBYY. They all accept a PDF and return data as JSON; the difference is the level of processing. Cloud provider APIs return text, tables and key-value pairs still to be interpreted; Data Alchemy returns a typed record with header, line items and totals, already validated against ERP master records, and can write the record straight into SAP, Zucchetti, TeamSystem, Dynamics 365 Business Central or NetSuite. For an integration that has to end inside an ERP, that is the criterion that weighs most.
How exactly is the Data Alchemy API called?
With a multipart POST to https://api.data-alchemy.ai/v1/documents, passing the file and the document_type, authenticated with a Bearer API key in the Authorization header. The immediate response contains an id and the processing status; the full result is fetched with a GET on /v1/documents/{id} or delivered by webhook on the document.processed event. Every webhook is signed with HMAC SHA-256 in the X-Data-Alchemy-Signature header, so you can verify authenticity before processing it.
What is the difference between an OCR API and a document extraction API?
An OCR API returns the text recognised on the image: a string someone then has to interpret to work out which number is the net amount and which is the VAT number. A document extraction API returns typed fields directly — invoice number, date, net amount, VAT, line items — ready to be used by a program. Data Alchemy goes one step further: it adds the outcome of validation against ERP master records to the response, which is what allows a document to be posted without human review.
Does the API return line items too, not just the header?
Yes. The output schema contains a line_items array with item code, description, quantity, unit price, line total and VAT rate, alongside the header and document totals. Line items are the technically hardest part of extraction and where the data entry saving actually sits: an invoice with forty lines is forty manual entries avoided, not one.
How much does an invoice data extraction API cost?
Data Alchemy charges per document processed — €0.50 up to 10,000 documents a year, then €0.45, €0.40 and €0.35 as volume grows — with no subscription and no minimums. Cloud provider APIs are typically billed per page, so the real cost depends on the average length of your documents. The comparison should also include what the API does not bill: developer days for reconciliation, exception handling and ERP posting.
Can I use the API if my ERP is not one of the natively integrated ones?
Yes. The API is agnostic about the target system: alongside native connectors for SAP, Zucchetti, TeamSystem, Microsoft Dynamics 365 Business Central and Oracle NetSuite, you can receive data over REST, over a signed webhook, or write it directly with SQL connectors into any other ERP, CRM or internal application. Integration typically takes 2 to 5 business days.
Where are documents sent to the API processed?
Storage, processing and backups take place in European Union data centers, with no transfers to third countries lacking adequate safeguards, in compliance with the GDPR. It is worth asking every vendor this during evaluation: on invoices and contracts, data residency and the terms around model training are often the first thing legal raises.
How do I handle rate limits and errors?
On an HTTP 429 the response includes a Retry-After header: implement a retry with exponential backoff so you do not further load a service already under pressure. The same applies to 5xx errors. Undelivered webhooks are retried automatically with increasing backoff, so no document.processed event is lost even if your endpoint stays unreachable for a few minutes.
Test it on your documents, not on a sample PDF
We give you an API key and a sample of your own real documents: see the JSON that comes back, the confidence levels and the validation outcome before writing a line of integration code.
Request API access