Sage 100 and Tipalti integration
Sage 100 manages your accounts payable ledger and purchasing on-premises. Tipalti automates supplier payments and invoice processing in the cloud. Connecting them keeps invoice records, purchase orders, and payment status aligned between on-premises and cloud, eliminating the need to enter payments twice or chase discrepancies between AP records and actual payment execution. Sage 100 stays the source of truth for your chart of accounts and cost centers, while Tipalti handles the complex global payment logistics and compliance.
What moves between them
The primary flow moves invoices and purchase orders from Sage 100 into Tipalti. As Sage 100 AP invoices are created or updated, ml-connector polls them every 15 minutes and upserts them into Tipalti, mapping Sage 100 vendors to Tipalti payees and GL account segments to Tipalti GL accounts. When Tipalti processes and completes a payment, the IPN webhook fires a completed event; ml-connector receives it, matches the Tipalti payment back to the original Sage 100 invoice, and records a payment in Sage 100's AP ledger. Purchase orders flow similarly: Sage 100 POs poll every 15 minutes into Tipalti, and Tipalti's PO operations update back to Sage 100 status fields. GL accounts and cost centers are synced daily from Sage 100 to ensure Tipalti payments land on valid GL segments.
How ml-connector handles it
ml-connector deploys a local listener or periodic task to poll Sage 100's SOAP eBusiness interface and BOI COM layer every 15 minutes for new or updated AP invoices and purchase orders. On each poll, it extracts invoice lines, vendor codes, and GL account mappings from Sage 100, then pushes them to Tipalti via REST/JSON with OAuth2 authentication, creating or updating invoice records in Tipalti's invoice table. Sage 100's vendor records map to Tipalti payees during the upsert; GL account segments (multi-segment format) are flattened and matched against Tipalti's GL account ledger, with unmapped segments flagged for manual review. Tipalti's IPN webhook endpoint is configured once in Tipalti Hub and points to ml-connector's webhook receiver. When a Tipalti payment completes, the webhook fires with HMAC-SHA256 verification; ml-connector parses the payload, matches the Tipalti payment to the original Sage 100 invoice using cross-reference IDs stored at upsert time, and calls Sage 100's BOI layer to post a payment record in AP. Because Sage 100's COM layer has record-locking contention under high frequency, ml-connector backs off and retries write operations with exponential jitter. The local agent or listener runs as a Windows service under the customer's service account, requiring individual Web Services enablement in Sage 100 admin and SSL/TLS for the SOAP endpoint.
A real-world example
A mid-sized manufacturing company runs Sage 100 on-premises for accounting and purchasing, and uses Tipalti to manage payments to 200+ global suppliers across multiple countries with varying payment methods and tax regimes. Before the integration, the accounts payable team created invoices in Sage 100, exported them weekly, manually uploaded them to Tipalti, and then imported Tipalti payment confirmations back into Sage 100 to mark invoices paid, a process taking 2 days and introducing data-entry errors. With Sage 100 and Tipalti connected, invoices flow automatically from Sage 100 into Tipalti every 15 minutes, Tipalti executes payments and handles tax compliance, and webhook notifications trigger immediate payment records back in Sage 100, shrinking the AP close process by 80% and eliminating manual uploads.
What you can do
- Poll Sage 100 AP invoices and purchase orders every 15 minutes and sync them to Tipalti, mapping vendors to payees and GL account segments to Tipalti GL ledger.
- Receive Tipalti payment-completed webhooks and post payment records back to Sage 100 AP, closing invoices without manual data entry.
- Map Sage 100's multi-segment GL account format to Tipalti's GL accounts, ensuring all AP allocations land on valid chart-of-accounts segments.
- Authenticate Sage 100 via the local BOI COM agent with Windows service account credentials, and Tipalti via OAuth2 REST API with configurable polling intervals.
- Retry failed writes to Sage 100 with exponential backoff due to COM record-locking, and track all invoice, PO, and payment records in a full audit trail for month-end reconciliation.
Questions
- How does ml-connector handle Sage 100's on-premises architecture and lack of cloud API?
- ml-connector deploys a local Windows service on the customer's Sage 100 server that polls the on-premises SOAP interface and COM BOI layer directly, using Windows service account credentials. This local agent acts as the bridge between on-premises Sage 100 and cloud Tipalti, so no firewall changes or IP whitelisting are needed beyond the local network.
- What happens when Sage 100 and Tipalti disagree on GL accounts or vendor codes?
- Sage 100 uses multi-segment GL account formats that vary by customer configuration. ml-connector flattens Sage 100 segments and matches them against Tipalti's GL ledger during the upsert. If a segment is unmapped, the record is flagged for manual review and can be retried after the configuration is corrected in Tipalti.
- How are payments recorded back in Sage 100 after Tipalti completes them?
- Tipalti's IPN webhook endpoint fires a completed event with HMAC-SHA256 signature when a payment finishes. ml-connector verifies the signature, matches the Tipalti payment to the original Sage 100 invoice using stored cross-reference IDs, and calls Sage 100's BOI COM layer to post a payment record in AP, closing the invoice automatically.
Related integrations
More Sage 100 integrations
Other systems that connect to Tipalti
Connect Sage 100 and Tipalti
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started