Microsoft Dynamics 365 Business Central and Stampli integration
Microsoft Dynamics 365 Business Central holds your vendors, chart of accounts, dimensions, and purchase invoices. Stampli runs the AP workflow where bills get captured, coded, and approved. This connection keeps Stampli's coding lists current from Business Central and brings approved invoices back into the ledger as purchase invoices, so the same bill is never keyed twice. Because Stampli has no public API, the bridge moves data through CSV or XML files over SFTP on a schedule you control.
What moves between them
Master data moves from Microsoft Dynamics 365 Business Central into Stampli: vendors, GL accounts, dimensions such as departments and projects, and open purchase orders are written as files to Stampli's inbound SFTP folder so invoice coders only see valid accounts and cost centers. Approved invoices move the other way: ml-connector polls Stampli's outbound folder, parses each approved-invoice file, and creates a purchase invoice in Business Central, then posts it. Master-data refresh runs on a schedule, while the approved-invoice pull runs on a tighter interval. Payment status, where exported by Stampli, can be read back to mark the invoice in Business Central.
How ml-connector handles it
ml-connector stores both credential sets encrypted: the Business Central tenant ID, client ID, client secret, and environment name for the OAuth2 token, and the Stampli SFTP host, user, password, and inbound and outbound paths. On the Business Central side it reads vendors, accounts, dimensions, and purchase orders, writes them to the Stampli inbound folder in the agreed CSV or XML template, and renews the three-day webhook subscriptions that flag vendor and account edits so master-data files stay current without constant full polling. Purchase orders are polled with an OData lastModifiedDateTime filter because they have no webhook. On the return trip it lists the Stampli outbound folder, and for each new approved-invoice file it maps the vendor, GL coding, dimensions, and PO reference onto a Business Central purchase invoice, creates the draft, and runs the Microsoft.NAV.post bound action. Bills are deduped by invoice number against the BC business key, so a re-delivered file does not create a second invoice. Business Central throttling returns HTTP 429 and SFTP errors are transient, so failed steps back off and retry, and every file and record carries a full audit trail that can be replayed.
A real-world example
A regional restaurant group of about 350 staff runs Microsoft Dynamics 365 Business Central for finance across twelve locations and uses Stampli to capture and approve supplier bills. Before the integration, an AP clerk exported approved invoices from Stampli and hand-keyed each one into Business Central, picking the location dimension and GL account by memory, which produced miscoded bills and a slow month-end close. With the two systems connected, the current vendor list, chart of accounts, and location dimensions flow into Stampli so coders pick from valid values, and each approved invoice posts straight into Business Central against the right account and location. The clerk stops re-keying, and coding errors drop.
What you can do
- Push vendors, GL accounts, and dimensions from Microsoft Dynamics 365 Business Central into Stampli so invoice coders use valid values.
- Bring approved invoices from Stampli into Business Central as purchase invoices and post them with the Microsoft.NAV.post bound action.
- Sync open purchase orders into Stampli for matching by polling, since Business Central does not webhook them.
- Bridge Business Central OAuth2 tokens and the Stampli SFTP login, with both credential sets stored encrypted.
- Dedupe bills by invoice number and replay any failed file or posting from a full audit trail.
Questions
- Why does this integration use files instead of a direct API into Stampli?
- Stampli does not publish a public REST API, and its built-in connectors are proprietary and maintained in-house. Without a partner agreement, the only available path is file-based exchange over SFTP. ml-connector therefore writes and reads customer-defined CSV or XML files in Stampli's inbound and outbound folders.
- How are approved invoices turned into posted bills in Business Central?
- ml-connector polls Stampli's outbound SFTP folder, parses each approved-invoice file, and maps the vendor, GL coding, dimensions, and PO reference onto a purchase invoice. It creates the draft, then runs the Microsoft.NAV.post bound action to post it. Invoices are deduped by invoice number so a re-delivered file never posts twice.
- How does the connection keep Stampli's coding lists current?
- ml-connector reads vendors, GL accounts, and dimensions from Business Central and writes them to Stampli's inbound folder on a schedule. It also renews the Business Central webhook subscriptions that flag vendor and account changes, since those subscriptions expire every three days. Open purchase orders are polled with an OData filter because they are not webhook-enabled.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to Stampli
Connect Microsoft Dynamics 365 Business Central and Stampli
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started