Sage 100 and Stampli integration
Sage 100 runs your financial operations on-premises; Stampli automates AP workflows in the cloud. Connecting the two means approved invoices from Stampli flow directly into Sage 100 as payable records without re-keying, vendor lists stay in sync, and GL accounts are properly allocated across the two systems. The integration handles Sage 100's SOAP and BOI layers, Stampli's SFTP-only interface, and the polling cadence that bridges the gap between an on-premises ledger and a cloud AP platform.
What moves between them
The primary flow is Stampli into Sage 100. ml-connector polls Stampli's outbound SFTP directory every 15 minutes for approved invoices and payment status files. It reads vendor names and GL account codes from these files, looks up matching Sage 100 vendors and GL accounts via BOI or SOAP, and writes invoices as AP Manual Checks or Journal Entries into Sage 100, allocated to the correct GL segments. Vendor and GL account lists are synced in both directions on an hourly and daily basis respectively to keep dimensions aligned. Payments are read-only in Stampli, so ml-connector never attempts to write payment records back.
How ml-connector handles it
ml-connector runs a local polling agent that connects to Sage 100's BOI COM layer on the customer's Windows server, using either the Windows service account or agent-layer API credentials for authentication. It simultaneously maintains SFTP credentials to Stampli's file exchange and polls the outbound directory on a 15-minute cycle. When an approved invoice appears in Stampli's export, ml-connector reads the vendor name and GL account codes, queries Sage 100 for matching vendor records and GL accounts using the customer's three-character company code, and constructs an AP Manual Check or Journal Entry with the correct multi-segment GL allocation. Because Sage 100 has no idempotency keys, ml-connector checks for invoice existence before creating, using Sage-supplied next-number helpers where available. Sage 100's COM layer has record-locking limits, so writes include exponential backoff and retry logic. Stampli files are polled, not pushed, so ml-connector does not rely on webhooks and handles the internal 5-minute to 2-hour refresh lag for different entity types. Every imported invoice carries a full audit trail and is marked with its source file timestamp so manual replay or reconciliation is always possible.
A real-world example
A mid-sized B2B services firm runs Sage 100 on-premises for accounting and purchasing, and deployed Stampli in the cloud to streamline invoice approvals and vendor management. Before the integration, the AP team captured invoices in Stampli, approved them through workflows, then manually exported the approved list, looked up vendors in Sage 100, mapped GL accounts by hand, and entered the invoices into Sage 100 as checks or journal entries. Month-end close required days of re-entry and reconciliation. With Sage 100 and Stampli connected, each approved invoice is automatically written into Sage 100's AP subledger, mapped to the correct vendor and GL segment, and auditable from Stampli's approval chain through Sage 100's posting. The manual re-entry step is eliminated, vendors stay synchronized, and the GL accounts are allocated correctly without a data-entry review cycle.
What you can do
- Import approved invoices from Stampli and write them as AP Manual Checks or Journal Entries into Sage 100 with the correct GL account allocation.
- Keep vendor lists in sync between Stampli and Sage 100, so approvals reference valid payees in the ledger.
- Map Stampli GL account codes to Sage 100's multi-segment GL account format and sync GL account lists on a daily basis.
- Handle Sage 100's local BOI COM layer and Stampli's SFTP-only interface, polling both systems on independent cadences and managing the Windows service authentication.
- Poll Stampli's export directory every 15 minutes, implement dedup logic, and retry writes to Sage 100 with backoff when COM record locks occur.
Questions
- Does the integration require installing software on the Sage 100 server?
- Yes. ml-connector runs as a local Windows service on the customer's Sage 100 server so it can access the BOI COM layer, which cannot be called remotely over HTTP. The service uses either the Windows service account or agent-layer credentials (API key or mTLS) to authenticate with BOI. SOAP-only access is insufficient for AP, GL, and vendor operations.
- How does the integration handle Sage 100's GL account format and company code requirements?
- Sage 100 GL accounts are stored in multi-segment format, such as 4000-01-00, and the segments vary by customer configuration. ml-connector accepts the customer's GL account segment map as a configuration input, queries Sage 100 for GL account existence per company code, and constructs the correct multi-segment key before writing invoices. Every Sage 100 call includes the three-character company code, which is also supplied per customer.
- What happens if an invoice appears in Stampli before its vendor record is available in Sage 100?
- ml-connector defers writing the invoice until the vendor appears in Sage 100, either through a prior sync or a manual add by the user. Invoices are marked with their source timestamp so they can be replayed once the vendor exists. Vendor lists are synced hourly, and GL accounts daily, so dimension mismatches are caught and resolved automatically within a short time window.
Related integrations
More Sage 100 integrations
Other systems that connect to Stampli
Connect Sage 100 and Stampli
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started