ml-connector
Sage 100Google Sheets

Sage 100 and Google Sheets integration

Sage 100 runs finance and operations on premises, and Google Sheets is where teams collaborate on financial data and reporting. Connecting the two lets you pull AP invoices, purchase orders, GL accounts, and vendor records from Sage 100 and land them in Google Sheets tabs without manual export. Your team works in a familiar spreadsheet while staying current with on-premises transactions. ml-connector handles the on-premises security model, the local agent, and the polling schedule so your data stays in sync.

How Sage 100 works

Sage 100 is an on-premises ERP system that exposes customers, sales orders, AP vendors, AP invoices, GL accounts, GL journal entries, purchase orders, and items through SOAP (eBusiness Web Services at a customer-hosted URL) or through a local Windows agent that wraps the BOI COM layer. SOAP access is limited to AR and sales orders. Full AP, GL, and PO access requires the local agent wrapping BOI, since Sage 100 has no native cloud API. Authentication uses username and password per call with no tokens or OAuth, and a company code is required for every operation. Because Sage 100 is on-premises with no webhooks, ml-connector polls on a schedule, using DateLastUpdated and DateCreated fields to capture changes. AP Invoices and POs are typically polled every 15 minutes, vendors hourly, and GL Accounts daily.

How Google Sheets works

Google Sheets is a cloud spreadsheet application accessible via REST API (v4) at https://sheets.googleapis.com/v4/. It authenticates with OAuth 2.0 (user-delegated or Service Account). Google Sheets has no native ERP entities; instead, your team defines the schema by creating sheet tabs and column headers for whatever data you want to track (AP invoices, vendors, GL accounts, etc.). ml-connector reads and writes cell ranges using A1 notation or Named Ranges. Google Drive offers push notifications via watch channels, but channels expire after one hour and require manual re-registration, so polling is more reliable. Google Sheets is a general-purpose spreadsheet, not purpose-built for accounting, so any financial logic lives in formulas on your sheets.

What moves between them

AP invoices, purchase orders, GL journal entries, and vendor records flow from Sage 100 into Google Sheets. ml-connector polls Sage 100 on a schedule you define (typically every 15 minutes for AP and PO, hourly for vendors, daily for GL accounts), detects new and changed records by comparing DateLastUpdated, and writes them to the corresponding Google Sheets tabs. The write direction is mostly one-way: Sage 100 to Sheets. If you need to write changes back into Sage 100 from Sheets (e.g., approval flags or notes), ml-connector can set up a separate flow to read those columns and post updates to Sage 100, but the primary sync is downstream to Sheets for visibility and collaboration.

How ml-connector handles it

ml-connector stores your Sage 100 credentials (username and password for SOAP, or local agent URL and credentials for BOI access) encrypted, and your Google OAuth token or Service Account key encrypted as well. For Sage 100, it connects to your customer-specific SOAP endpoint or the Windows agent on your network, sends the required company code with each call, and polls the DateLastUpdated field to find changed records since the last run. For Google Sheets, it uses the OAuth token to append or update rows in your designated sheet tabs. The local agent introduces a potential single point of failure, so ml-connector retries failed requests with exponential backoff; if the agent is down, an alert surfaces to your team. Because Sage 100 enforces record locking on COM operations, concurrent writes may fail, so ml-connector backs off and retries. Every row written to Google Sheets includes a source record ID and timestamp so you can trace it back to Sage 100 and replay if a downstream formula or manual step fails. Once your data lands in Google Sheets, you can sort, filter, and pivot it; ml-connector does not manage the spreadsheet structure or formulas, leaving that to your team.

A real-world example

A mid-sized B2B services company uses Sage 100 for procurement and AP on-premises. The accounting team exports AP invoices and vendor records manually from Sage 100 several times a day, pastes them into a Google Sheet for real-time visibility during the approval and matching workflow, and then re-enters matched invoices back into Sage 100. With Sage 100 and Google Sheets connected, new invoices flow automatically to the shared sheet as they arrive in Sage 100. The team approves them in the sheet, and ml-connector can optionally read the approval flag back into Sage 100, cutting out the manual copy-paste steps and keeping the two systems in sync.

What you can do

  • Poll AP invoices, vendors, purchase orders, and GL accounts from Sage 100 on a schedule you control (15 min, 1 hour, or custom intervals).
  • Write those records to Google Sheets tabs with source record IDs and timestamps for traceability.
  • Authenticate Sage 100 via SOAP username/password or a local Windows agent, and Google Sheets via OAuth or Service Account.
  • Retry failed requests with exponential backoff to handle network timeouts and Sage 100 COM record-locking constraints.
  • Optionally read approval flags or notes from Google Sheets and post them back into Sage 100 fields.

Questions

How does ml-connector reach Sage 100 if it is on-premises?
ml-connector can connect to Sage 100 via SOAP at your customer-specific on-premises URL (username and password per call), or via a local Windows agent on your network that wraps the BOI COM layer. The local agent acts as a bridge, so ml-connector talks to the agent endpoint and the agent handles COM access to Sage 100. You supply the agent URL and credentials, and ml-connector polls it just like any cloud API.
What if the local Windows agent goes down?
If the agent is unreachable, ml-connector will retry with exponential backoff and eventually surface an alert so your team knows the link is broken. The polling does not resume until the agent is back online. For critical workflows, you may want to run the agent in a redundant pair or ensure it is monitored separately.
Can ml-connector write changes from Google Sheets back into Sage 100?
Yes, optionally. ml-connector can read approval flags, notes, or custom columns from Google Sheets and post them back into Sage 100 fields via SOAP or the local agent. You define which columns feed back; the primary sync is Sage 100 to Sheets, but the reverse is available if your workflow requires it.

Related integrations

Connect Sage 100 and Google Sheets

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started