Invoice OCR for Business Central that respects every dimension.
Core Invoice reads supplier bills and posts them into Microsoft Dynamics 365 Business Central as Purchase Invoices — with vendor, line items, dimensions, taxes, and PO linkage — via the standard OData v4 API. Works with BC Online and on-prem.
Why BC's built-in OCR isn't enough
Business Central includes an OCR option via the legacy OCR Service (Lexmark / Continia) integration. It's a paid add-on, configured per legal entity, and the line-item extraction is weak on multi-line bills. The market response has been third-party extensions like Continia Document Capture and ExFlow — both powerful, both expensive, both locked into BC.
Core Invoice is ERP-agnostic at its core but ships a first-class BC connector that uses the same OData API your other integrations already use. Output is exposed under the standard Web Services layer — no AL extension required, no per-tenant install.
What we extract from each bill:
- Supplier identity → matched against your Vendor list
- Bill metadata (number, date, due date, currency)
- Every line: G/L account or item, quantity, unit cost, line total
- VAT per line (rate, base, amount) — mapped to your BC VAT Posting Setup
- PO reference for 3-way matching
OAuth setup via Azure AD
- Register a new Azure AD app in your tenant. Note the Tenant ID and Application (client) ID.
- Add API permissions: Dynamics 365 Business
Central → Application permissions →
app_access. Grant admin consent. - Create a client secret with a long expiry (we recommend 24 months) and copy the secret value once shown.
- In BC: add the Azure AD app as a user (Search → Microsoft Entra Applications → New) with a permission set covering Purchase Invoice, Vendor, and Purchase Order tables.
- Add the connection in Core Invoice: BC base
URL (e.g.
https://api.businesscentral.dynamics.com/v2.0/<tenant>/<env>/api/v2.0), company ID (GUID), tenant ID, client ID, client secret. - Click Test — Core Invoice acquires a token and confirms the company is reachable.
What lands in BC
Each extracted bill becomes a Purchase Invoice document, posted as open / not yet posted. That means it flows through your existing BC approval workflow, your posting routines, and your document-attachment logic exactly as if an AP clerk had created it in the UI.
- Vendor matching: by VAT registration number first, then by name. Unmatched vendors are flagged for human review — we don't auto-create vendor cards.
- VAT Posting Setup: extracted tax rates map to your BC VAT codes via a connection-level mapping table.
- Dimensions: Department, Project, Cost Centre, and any custom dimensions are mappable — pull from vendor default, PO, or hardcode per connection.
- Document attachment: the original PDF is attached to the Purchase Invoice automatically, so reviewers can see the source bill alongside the data.
3-way matching through BC's standard logic
For PO-referenced bills, Core Invoice uses BC's Get Receipt Lines action to create the Purchase Invoice from open receipts. That means BC's own quantity and unit-cost tolerance checks fire as if the AP clerk built the invoice manually — no duplicate validation logic in Core Invoice, no risk of drift between your tolerance setup and the integration.
For shops that want pre-flight checking before the bill even hits BC, Core Invoice can run an optional reconciliation against the open Purchase Order via OData and flag mismatches in review.
Multi-company (cross-environment)
Each BC company maps to its own Core Invoice ERP connection — distinct credentials, dimension mappings, VAT mappings, default G/L accounts, and approval routings. The company ID is part of the connection URL, so postings from the EMEA workspace cannot accidentally land in the APAC company.
Security
Client secrets are encrypted with Fernet server-side and never logged or returned. We recommend rotating the secret every 12 months (Azure AD's default upper limit is 24) — Core Invoice's connection update wizard takes about 60 seconds and doesn't require redeploying anything in BC.
Try it on a BC sandbox
Point Core Invoice at your BC sandbox environment, drop in a supplier bill, and watch a Purchase Invoice appear — usually in under 15 seconds, attached PDF included.