Invoice OCR API for EU-Ready Data Extraction

Send PDFs or images to our API and get structured JSON back in seconds. Built for developers and finance teams that need accurate invoice data without the manual work.

REST API OCR + AI extraction EU VAT schema JSON responses Multi-page support

Pay-as-you-go. No subscription required.

invoicesengine / extract response ready
{
"status": "success",
"data": {
"InvoiceNumber": "INV-PLACEHOLDER-2026-0001",
"InvoiceType": "invoice",
"InvoiceDate": "2026-04-01",
"TaxPointDate": "2026-04-01",
"DueDate": "2026-05-01",
"Currency": "EUR",
"SupplierTaxId": "TAX-PLACEHOLDER-556677",
"SupplierVatNumber": "BE0123456789",
"CustomerVatNumber": "NL123456789B01",
"SupplierName": "Example Supplier NV",
"CustomerName": "Placeholder Customer BV",
"SupplierCountryCode": "BE",
"CustomerCountryCode": "NL",
"TotalAmountExclTax": 1000.0,
"TotalVATAmount": 210.0,
"TotalAmountInclTax": 1210.0,
"RoundingAmount": 0.0,
"AmountDue": 1210.0,
"IsPaid": false,
"PaymentStatusText": "Open - payment pending",
"IsReverseCharged": false,
"IsSelfBilling": false,
"PurchaseOrderNumber": "PO-2026-PLACEHOLDER-88",
"CustomerReference": "REF-DEPT-ALPHA",
"OriginalInvoiceNumber": null,
"PaymentMethod": "SEPA transfer",
"LineItems": [
{
"LineNumber": 1,
"Description": "Consulting services - placeholder monthly support",
"Quantity": 10.0,
"UnitOfMeasure": "h",
"UnitPrice": 75.0,
"LineDiscountAmount": 0.0,
"LineDiscountPercent": 0.0,
"TaxCategory": "S",
"VatPercentage": 21.0,
"LineTotalExclTax": 750.0,
"LineVATAmount": 157.5,
"LineTotalInclTax": 907.5,
"SKU": "SERV-PLACE-001",
"HSCode": null,
"CountryOfOrigin": "BE",
"ServicePeriodStart": "2026-03-01",
"ServicePeriodEnd": "2026-03-31",
"ProjectCode": "PRJ-ALPHA",
"CostCenter": "CC-1000"
},
{
"LineNumber": 2,
"Description": "Software license - placeholder annual fee",
"Quantity": 1.0,
"UnitOfMeasure": "pcs",
"UnitPrice": 250.0,
"LineDiscountAmount": 0.0,
"LineDiscountPercent": 0.0,
"TaxCategory": "S",
"VatPercentage": 21.0,
"LineTotalExclTax": 250.0,
"LineVATAmount": 52.5,
"LineTotalInclTax": 302.5,
"SKU": "LIC-PLACE-2026",
"HSCode": null,
"CountryOfOrigin": "NL",
"ServicePeriodStart": "2026-04-01",
"ServicePeriodEnd": "2027-03-31",
"ProjectCode": "PRJ-ALPHA",
"CostCenter": "CC-1000"
}
],
"Supplier": {
"RegistrationNumber": "REG-BE-PLACE-123456",
"EORI": "BE0123456789PLACE",
"Address": {
"StreetName": "Example Street",
"StreetNumber": "12A",
"Postbox": null,
"PostalCode": "2000",
"City": "Antwerp",
"CountryName": "Belgium",
"CountryCode": "BE"
},
"Contact": {
"ContactName": "John Placeholder",
"Email": "billing@example-supplier.test",
"Phone": "+32 3 123 45 67",
"Website": "www.example-supplier.test"
}
},
"Customer": {
"CustomerId": "CUST-PLACE-9001",
"BillingAddress": {
"StreetName": "Client Avenue",
"StreetNumber": "45",
"Postbox": "PO Box 10",
"PostalCode": "1012AB",
"City": "Amsterdam",
"CountryName": "Netherlands",
"CountryCode": "NL"
},
"ShippingAddress": {
"StreetName": "Client Warehouse Road",
"StreetNumber": "8",
"Postbox": null,
"PostalCode": "1043NX",
"City": "Amsterdam",
"CountryName": "Netherlands",
"CountryCode": "NL"
},
"Contact": {
"ContactName": "Jane Placeholder",
"Email": "ap@placeholder-customer.test",
"Phone": "+31 20 123 45 67",
"Website": "www.placeholder-customer.test"
}
},
"Banking": {
"PaymentIBAN": "BE68539007547034",
"PaymentBIC": "KREDBEBB",
"BankName": "Example Bank NV",
"StructuredPaymentReferenceRF": "RF18539007547034",
"StructuredPaymentReferenceBE": "+++123/4567/89012+++",
"UnstructuredPaymentReference": "Invoice INV-PLACEHOLDER-2026-0001",
"SEPAMandateReference": null,
"PaymentTerms": "Net 30",
"LatePaymentFeeTerms": "Late fee 0.0% for placeholder example only",
"PaymentInstructionsText": "Please transfer the amount due to the stated IBAN using the structured reference."
},
"VAT": {
"VatBreakdown": [
{
"RatePercent": 21.0,
"TaxableBase": 1000.0,
"VatAmount": 210.0,
"TaxCategory": "S",
"ExemptionReason": null
},
{
"RatePercent": 0.0,
"TaxableBase": 0.0,
"VatAmount": 0.0,
"TaxCategory": "Z",
"ExemptionReason": "Zero-rated placeholder row"
}
],
"OtherTaxes": [
{
"Type": "eco tax",
"Base": 0.0,
"Amount": 0.0
}
],
"ReverseChargeNote": null,
"IntraCommunitySupplyNote": null
},
"Logistics": {
"DeliveryNoteNumber": "DN-PLACE-2026-77",
"DeliveryDate": "2026-04-01",
"ServicePeriodStart": "2026-03-01",
"ServicePeriodEnd": "2026-03-31",
"Incoterms": "DDP",
"CarrierName": "Placeholder Logistics",
"TrackingNumber": "TRACK-PLACE-000123",
"FreightCostAsLine": false
},
"Compliance": {
"LegalStatements": [
"This is placeholder legal text for testing.",
"VAT subject to applicable national legislation."
],
"EInvoicingProfile": "PEPPOL BIS",
"EInvoiceMessageId": "MSG-PLACE-20260401-0001",
"ElectronicSignatureHash": "ABCDEF1234567890PLACEHOLDERHASH",
"QRCodeData": "BCD\\n001\\n1\\nSCT\\nKREDBEBB\\nExample Supplier NV\\nBE68539007547034\\nEUR1210.00\\nInvoice INV-PLACEHOLDER-2026-0001",
"ArchiveId": "ARCH-2026-PLACE-7788"
},
"Adjustments": {
"GlobalDiscountAmount": 0.0,
"GlobalDiscountPercent": 0.0,
"GlobalSurchargeAmount": 0.0,
"GlobalSurchargePercent": 0.0,
"PrepaymentAmount": 0.0,
"OutstandingBalance": 1210.0,
"CorrectionReason": null,
"CreditedInvoiceDate": null
},
"References": {
"ContractNumber": "CTR-PLACE-2026-01",
"FrameworkAgreement": "FA-PLACEHOLDER-A",
"DeliveryOrderNumber": "DO-PLACE-7788",
"ProjectCode": "PRJ-ALPHA",
"CostCenter": "CC-1000",
"Salesperson": "Alex Placeholder",
"CustomerAccountNumber": "ACC-445566",
"ExternalDocumentURL": "https://example.test/documents/INV-PLACEHOLDER-2026-0001"
},
"Categorization": {
"Category": "software",
"ShortSummary": "Placeholder software and consulting invoice for April 2026"
},
"LocalizationFX": {
"DocumentLanguage": "en",
"ExchangeRate": 1.0,
"ExchangeRateDate": "2026-04-01",
"SourceCurrency": "EUR",
"FunctionalCurrency": "EUR"
}
},
"warnings": [],
"errors": []
}

How the API Works

1. Upload

Send your PDF or image invoice via the API and get a request ID instantly.

2. Poll

Check the processing status using your request ID until it is complete.

3. Get JSON

Receive EU-focused structured data with validation and warning details.

Speed and Accuracy

Typical processing time

Optimized for real-world invoices, scans, and photos.

~30s per document

High field accuracy

Fields extracted reliably, with warnings when something looks off.

>99%

Key Features

Core + Add-on Fields

Essential fields always included. Enable optional add-ons per invoice: line items, full party addresses, banking details (IBAN, BIC), payment terms, shipping info, metadata, and expense categorization.

Privacy by Default

European-hosted processing. Extracted data is stored for 1 day by default so you can retrieve results via the API, after which it is purged automatically.

Warnings and Validation

Built-in validation with warning messages when something looks unusual or might be incorrect, such as an invalid IBAN or mismatched totals.

Worldwide Inputs

Accepts invoices from any country as PDFs, JPG/PNG images, or scans. Multi-page and multilingual documents are supported.

Standards and Interoperability

InvoicesEngine supports industry standards to help you exchange invoice data seamlessly across borders and systems.

Gateway-Agnostic E-Invoicing

Structured JSON aligns with common e-invoicing payloads used by public sector and enterprise gateways.

UBL / EN16931

Extracted JSON can be mapped to UBL and the EU's EN16931 e-invoice model, which also helps when preparing payloads for Peppol BIS via your Access Point or middleware.

Cross-border Ready

Ensures your invoice data works for international trade, public sector procurement, and multi-ERP workflows.

Quick Answers

Do I need a subscription?

No. You pay only for successful extractions. We issue a monthly invoice.

Is it only for EU invoices?

Inputs can be from anywhere. Output is always mapped to our EU-focused schema. Fields missing on the document return as null.

What formats are supported?

PDFs and images (PNG, JPG), including multi-page documents and scans or photos.

Ready to Start Extracting?

Get your API key and start in minutes.