Acumatica and Stampli integration
Acumatica runs your financials and accounts payable ledger. Stampli captures vendor invoices, routes them for approval, and codes them with AI before they post. Connecting the two keeps vendors, GL accounts, and dimensions in agreement so invoices code against valid records, and moves each approved invoice from Stampli into Acumatica as an AP bill without re-keying. Because Stampli has no public API, ml-connector exchanges this data as CSV or XML files over SFTP, the one path Stampli supports for any ERP without a partner agreement. ml-connector handles the very different transports on each side and runs the sync on a schedule you control.
What moves between them
Master data moves from Acumatica into Stampli, and approved invoices move from Stampli into Acumatica. ml-connector reads Acumatica vendors, GL accounts, accounting dimensions, and open purchase orders over REST and writes them as files into Stampli's inbound folder so each invoice can be coded and PO-matched against records that already exist. As invoices clear approval in Stampli, it exports them as CSV or XML files, which ml-connector parses and posts into Acumatica as AP Bills with line-level GL coding and a vendor reference. Payment status is read back from Stampli's exported files and reconciled against the Acumatica AP payment. Master-data refresh runs on a recurring cadence and the approved-invoice pickup runs on the configured poll interval, typically every 15 minutes.
How ml-connector handles it
ml-connector stores both credential sets encrypted: Acumatica OAuth tokens on one side, and the SSH private key or password for Stampli's file exchange on the other, presenting the key during the SSH handshake and verifying the server host key to block interception. On the Acumatica side it accepts the full instance URL and pins the exact endpoint version per customer, since a mismatched version fails immediately with a 404, and it wraps every field value in the value object Acumatica requires so writes do not return a 400. Vendors, GL accounts, and dimensions are mapped and synced into Stampli first, so each exported invoice resolves to a vendor and account that already exist in Acumatica, and the PO reference on a matched invoice lines up with the open Acumatica purchase order. Because Stampli is pull-only with no webhook, ml-connector polls the outbound folder on a schedule, lists new approved-invoice files, and skips ones already handled using a processed-files log keyed on filename and content hash, since file timestamps drift across timezones. Partial uploads are caught with a two-read size check before parsing. Acumatica has no native idempotency key, so before posting a Bill ml-connector checks for an existing record by the vendor reference number, which guards against double-booking a re-read file; Stampli's own duplicate detection is a second safeguard. Acumatica returns HTTP 429 when the per-minute license limit is reached, so requests back off and retry, and every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized construction firm with around 200 staff runs Acumatica Cloud ERP for job costing and accounts payable, and adopts Stampli so project managers can review and approve subcontractor invoices from the field. Before the integration, the AP team exported the vendor list and cost-code dimensions from Acumatica into spreadsheets to load into Stampli, then rekeyed every approved invoice back into Acumatica as a bill, which slowed month-end close and left vendor records drifting apart between the two systems. With Acumatica and Stampli connected, vendors, GL accounts, and job dimensions stay aligned through scheduled file syncs, and each invoice approved in Stampli posts into Acumatica as an AP bill matched to its purchase order and cost codes. The AP team stops rekeying, and the subcontractor ledger reconciles against both systems.
What you can do
- Sync Acumatica vendors, GL accounts, and accounting dimensions into Stampli as files so invoices code against valid records.
- Push open Acumatica purchase orders into Stampli so approved invoices can be PO-matched before they post.
- Parse Stampli's exported approved-invoice files and post them into Acumatica as AP Bills with line-level GL coding.
- Read Stampli payment status back and reconcile it against the matching Acumatica AP payment.
- Bridge Acumatica OAuth with the SSH key Stampli's file exchange expects, pinning the endpoint version and the server host key.
Questions
- Which direction does data move between Acumatica and Stampli?
- Vendors, GL accounts, dimensions, and open purchase orders move from Acumatica into Stampli so invoices can be coded and PO-matched. As invoices clear approval in Stampli, they move the other way into Acumatica as AP bills, and payment status is read back. Master data is synced first so every exported invoice resolves to a vendor and account that already exist in Acumatica.
- Why does this integration use files instead of a direct Stampli API?
- Stampli publishes no public REST API, developer portal, or self-serve credentials for external connectors. The one path open without a formal Stampli partner agreement is file-based exchange using customer-defined CSV or XML templates over SFTP. ml-connector writes master-data files into Stampli's inbound folder and picks up approved-invoice files from its outbound folder on a schedule.
- How does the integration handle Stampli having no webhooks and Acumatica being version-locked?
- Stampli is pull-only, so ml-connector polls its outbound folder on a schedule, typically every 15 minutes, and skips files it has already processed using a log keyed on filename and content hash. On the Acumatica side it accepts the full instance URL and pins the exact endpoint version per customer, since a version mismatch returns a 404, and it wraps every field value in the required value object so bills post without a 400 error.
Related integrations
More Acumatica integrations
Other systems that connect to Stampli
Connect Acumatica and Stampli
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started