Sage 100 and Slack integration
Sage 100 handles your accounts payable, purchase orders, and general ledger, but your finance and operations teams work in Slack. Connecting the two keeps your team informed as records flow through the system. New invoices, open purchase orders, and GL posts surface automatically in the right Slack channels, so your team knows what is pending approval or has posted to the ledger without logging into Sage 100.
What moves between them
Records flow from Sage 100 into Slack. ml-connector polls Sage 100 every 15 minutes for newly created or updated AP invoices and purchase orders, and every hour for new GL journal entries and GL account master changes. On each poll, records are formatted and posted as Slack messages to designated channels (one channel for AP, one for PO, one for GL). The polling schedule is configurable based on your business needs. Slack is write-only; ml-connector does not read back from Slack or post anything into Sage 100.
How ml-connector handles it
ml-connector stores the Sage 100 Windows agent endpoint URL and mTLS credentials encrypted, and verifies the agent certificate on each call. Because Sage 100 has no event stream, polling is controlled by tracking DateCreated and DateLastUpdated in the local Sage 100 database, which requires the agent to expose query filters. ml-connector caches the last poll time and timestamps to avoid re-posting the same records on each cycle. For Slack, ml-connector obtains an OAuth bot token at setup and stores it encrypted, then uses the token in the Authorization: Bearer header on each chat.postMessage call. Slack rate-limits at one message per second per channel, so ml-connector queues messages and throttles based on channel. Each Slack message includes the vendor name, invoice number, amount, status, and a link back to the Sage 100 record key for the finance team to look up the full detail. Retries are automatic on transient failures, and every post is logged with a full audit trail.
A real-world example
A mid-sized distributor runs Sage 100 for accounts payable and purchasing across three warehouses, and uses Slack for daily team communication. Before the integration, the accounts payable and purchasing staff checked Sage 100 multiple times each day for new invoices, open orders, and approvals needed. With the integration, new invoices appear in the AP Slack channel within minutes of entry, open purchase orders post to the procurement channel when created, and the team is notified immediately when a GL batch closes. The finance manager can see pending approvals without opening Sage 100, and the warehouse managers get alerts on orders affecting their locations.
What you can do
- Post newly created AP invoices to a designated Slack channel, including vendor, amount, invoice number, and due date.
- Notify the team when new purchase orders are issued, with PO number, vendor name, line count, and total amount.
- Alert designated channels when GL journal entries post to the ledger, with account number, debit and credit totals, and posting date.
- Authenticate to the Sage 100 Windows agent using mTLS or API key credentials stored encrypted.
- Poll Sage 100 on a configurable schedule (AP and PO every 15 minutes, GL daily) and throttle Slack messages to respect rate limits.
Questions
- How does ml-connector access Sage 100 if it has no cloud API?
- ml-connector connects to the Sage 100 local Windows agent, which wraps the BOI COM layer and exposes BOI queries and inserts over mTLS or API key authentication. The agent runs on a customer server and is installed and configured by the customer. ml-connector does not call Sage 100 directly; it calls the agent, which bridges to the on-premises system.
- Does ml-connector post messages back into Sage 100?
- No. The integration is read-only from Sage 100. ml-connector polls AP invoices, purchase orders, and GL entries from Sage 100 and posts them to Slack, but does not create, update, or delete records in Sage 100. Slack is a notification layer only.
- How are Sage 100 records mapped to Slack channels and formatted for readability?
- Configuration maps record types (AP Invoice, PO, GL Entry) to Slack channels at setup time. When a record arrives, ml-connector extracts key fields (vendor, amount, number, date, status) and formats them as a Slack message block with text and metadata fields, making it scannable and including a record key link so the team can look up full detail in Sage 100 if needed.
Related integrations
More Sage 100 integrations
Other systems that connect to Slack
Connect Sage 100 and Slack
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started