
Email lands. Invoice posts.
An autonomous AP agent for Microsoft Dynamics 365 Business Central. Vendor invoices arrive in your mailbox; the agent extracts every field with Claude, runs a real three-way PO match, and posts the Purchase Invoice in BC — touchlessly when confidence is high, into an approver's queue when it isn't.
- Multi-channel intake: email, upload, ZIP, drag-drop
- Three-way PO match · variance tolerances
- Per-vendor AI model routing
- 142 automated AL tests shipped
Built for the Microsoft stack
Not a chat widget. A production AP agent inside Business Central.
Most AI invoice tools live outside your ERP — extract elsewhere, paste into BC, hope nothing changed in transit. Ours runs natively as an AL extension. Reads BC. Writes BC. Reconciles against your live PO and receipt data. Posts the invoice. All inside the four walls.
Native AL inside BC
No middleware. No external sync. The agent runs as an AL extension on BC SaaS or On-Premises. Reads vendor cards, POs and receipts directly. Posts the invoice using BC's own posting routines. Source PDFs land in BC Media + Incoming Document — they survive posting.
Multi-model, per vendor
Different vendors deserve different models. Route strategic suppliers to Opus for complex multi-page invoices; routine vendors to Haiku for cost. Every routing decision is logged. Token consumption tracked per model per company with budget thresholds.
Audit-grade by construction
API key in Isolated Storage, [NonDebuggable] getter, 3 permission sets, immutable Activity Log, source-survives-posting via Incoming Document. Three-way matching with canonical hash for duplicate detection. 142 AL tests in CI.
From PDF to Posted Purchase Invoice in six stages.
Every stage is observable in the Invoice Inbox. Failures route to a Needs-Review queue with a clear reason, not a silent retry loop.
Invoices arrive however your vendors send them.
Email, manual upload, ZIP batch, drag-drop — and roadmap channels for SharePoint, OneDrive and mobile capture. All routes lead to the same pipeline.
Email intake
Forward invoices to a monitored mailbox. Microsoft Graph and IMAP providers via companion app.
Manual upload
AP clerk picks a PDF or DOCX from the Invoice Inbox. Simplest path; works day-one.
ZIP batch upload
Drop a ZIP of up to 50 invoices; they ingest with a shared Batch Reference for tracking.
Drag-and-drop
Drop files onto the Invoice Inbox FactBox; chunked upload for large bundles.
Cloud storage (roadmap)
SharePoint, OneDrive and Google Drive folder watchers via companion apps.
Mobile capture (roadmap)
Field staff photograph paper invoices; companion mobile app pushes to BC.
Multi-language by default
Vendors don't send invoices in your locale. We auto-detect the source language and guarantee extraction quality across 10 — including English, Hindi, Bengali, Tamil, Marathi, Gujarati, Spanish, French, German, Arabic. The remaining 100+ languages Claude understands work via on-demand translation, with the source language label preserved per field for audit.
- Auto-detect from PDF text + layout
- 10-language guarantee — fully tested
- 100+ languages via translation
- Locale-aware dates and numbers
- Per-field source-language audit label
Per-vendor model routing
Different vendors deserve different models. Set a model override on each vendor card — strategic suppliers route to Opus for complex multi-page invoices, routine vendors stay on Haiku for cost. Email-domain matching pre-resolves the route before the first extraction. Every model selection is logged in the Activity Log.
- Vendor-card override (Setup → tab)
- Email-domain pre-resolution
- Per-model timeout / retry / max-output
- Token consumption per model per company
- Budget threshold notifications
- Audit trail on every selection
Built for AP teams clearing 50+ invoices in a coffee break.
Auto-post the clean ones. Review the rest — efficiently. Side-by-side PDF, bulk actions, audited reject reasons, auto-learn from corrections so the same vendor extracts cleanly next time.
Side-by-side PDF review
Original PDF and extracted fields side-by-side. Click a line item, the PDF highlights it. Click a vendor, you see the source.
Bulk actions
Bulk-Post, Bulk-Reject and Bulk-Reprocess from the Inbox. AP clerks clear 50+ invoices in a few clicks on high-volume days.
Reject with audited reason
Reject (single or bulk) with a structured reason. The Activity Log captures who, when, why — survives forever.
Auto-learn from corrections
When a reviewer fixes a vendor or item mapping, the agent remembers — so the next invoice from that vendor extracts cleanly first time.
Built the BC way — auditable, isolated, no surprises.
A production AL extension that respects BC's security model, Job Queue framework, Isolated Storage and Incoming Document. Nothing exotic; nothing brittle; nothing that breaks on the next BC SaaS update.
142 automated AL tests in CI. Schema versioned via Upgrade codeunits. Smoke-tested across W1, US, DE and IN localizations.
- BC Online (SaaS) + On-Premises
- W1 v27+ — no country dependencies
- AL extension language
- Production AL objects with audit
- Job Queue Entries for orchestration
- Incoming Document framework
- Anthropic Claude (Sonnet, Opus, Haiku)
- Per-vendor model routing
- Per-model call overrides
- Token consumption tracking
- Confidence scoring per field
- Multi-language (10-language guarantee)
- 7 mapping tables (Vendor, Item, UOM, Tax, Currency, Payment Terms, G/L)
- Vendor aliases with email-domain matching
- Three-way PO + Receipt matching
- FR-9.1 to FR-9.10 reconciliation rules
- Tax variance + rounding tolerance
- Auto-learn from reviewer corrections
- API key in Isolated Storage (AES at rest)
- [NonDebuggable] getter — debugger-safe
- 3 permission sets (User / Manager / Admin)
- Immutable Activity Log
- Source PDF survives posting
- Canonical hash for duplicate detection
If you have a vendor inbox, we have a use case.
Manufacturing-heavy with hundreds of small vendors? Retail with predictable monthly invoices? Either way, the pipeline adapts via your mapping tables and per-vendor model routing.
Six steps. Most customers live in two weeks.
Install on sandbox first. Set up. Seed mappings. Train the AP team. Cut over with a parallel run. Production typically in 10–14 working days.

Runs as a native AL extension on your BC tenant. No third-party middleware to license, monitor or audit.
Install on sandbox
Deploy the extension to a BC sandbox tenant. Smoke-test on a few real invoices.
Configure Setup
API endpoint + API key (Isolated Storage), thresholds, intake channels, active model.
Seed mappings
Currency aliases, tax mappings, optional UOM + Item cross-references + G/L patterns.
Train AP team
Permission set assignment, reviewer workflow training, bulk actions walk-through.
Parallel run
Run side-by-side with manual entry for 2 weeks. Validate confidence calibration.
Cut over
Deploy to production tenant. Configure intake channels live. Monitor for first week.
Numbers we'll commit to — and audit against.
API key in Isolated Storage
`DataScope::Module`, tenant-scoped, AES at rest. `[NonDebuggable]` getter — can't be inspected from the AL debugger.
Immutable Activity Log
Every state transition, every model selection, every reject reason — captured forever in an append-only log.
Source PDF survives posting
Stored as a Media blob and linked via Incoming Document. Drill from a posted invoice back to the original PDF, always.
Two AP stories — placeholders till the real ones land.
Real customer names and metrics available on a discovery call.
AP team of 5 spending 80% of the month typing invoices from email + paper. Three-way PO matching done manually in Excel. Posting cycle running 6 days behind real-time.
Deployed the OCR AI Payable Agent with email intake + per-vendor model routing (Opus for 30 strategic suppliers, Haiku for the long tail). Three-way matching configured against open POs and posted receipts.
- Touchless posting: 0% → 68% in first quarter
- AP cycle time: 47 min → 6 min per invoice
- Posting lag: 6 days → 1 day
Vendors invoicing in English, Hindi and German depending on the geography. AP team manually translated and re-keyed. Errors per invoice: 1 in 8.
Enabled the 10-language extraction with auto-detect. Per-field source-language labels preserved for audit. Mapping tables seeded for each vendor's UOM aliases.
- Manual translation eliminated
- Extraction accuracy across languages: 97%+
- Audit prep time cut by 60%
Common questions
Business Central Online (SaaS) and On-Premises, W1 v27 and above. No country-pack dependencies — works across every BC localization including W1, US, DE, IN. Tax mapping uses standard `VAT Bus. Posting Group` + `VAT Prod. Posting Group` so localization tax extensions compose on top without modification.
30-minute demo with 5 of your real vendor PDFs.
Send us 5 representative vendor invoices (in any language, any format). We'll run them through a sandbox tenant and demo the full pipeline — extraction, mapping, three-way match, posting — with your actual data.
- 30-minute live demo on a sandbox tenant
- We extract 5 of your real invoices
- Side-by-side reviewer workflow walkthrough
- Written quote within 48 hours
