Sage 100 and Looker integration
Sage 100 holds your company's financial records. Looker surfaces those records to stakeholders through dashboards and analytics. Connecting the two lets finance teams analyze invoice aging, cash flow, and GL balances in Looker without manual exports. AP invoices, GL journal entries, and customer balances sync from Sage 100 on a schedule, loaded into Looker's modeled data layer where dashboards and scheduled reports can consume them. ml-connector handles the on-premises SOAP or agent bridge on the Sage 100 side and manages OAuth2 credential refresh on Looker, keeping both sides in sync.
What moves between them
AP invoices, GL accounts, GL journal entries, and AR customer data flow from Sage 100 into Looker. The integration polls Sage 100 at a cadence tied to your accounting close calendar, extracts the records, and inserts or updates them into Looker's modeled data layer so dashboards and scheduled reports can query them. The flow is one-way: Looker is a read-only analytics platform and does not write financial data back to Sage 100.
How ml-connector handles it
ml-connector stores Sage 100 credentials encrypted and uses them to authenticate SOAP calls or establish a connection to the local BOI agent. For Looker, it exchanges client_id and client_secret for an OAuth2 bearer token, caching it until expiry and re-authenticating when needed. Since Sage 100 is on-premises and pull-only (no webhooks), ml-connector polls at a frequency you define: AP invoices every 15 minutes, GL accounts daily. Sage 100 SOAP requires company code (3-char identifier) on every call and does not support pagination at scale; the BOI agent adds more flexibility but is tied to the customer's server. Looker queries can return up to 5000 rows per call; larger result sets are streamed or split into batches. Every record carries a timestamp (Sage 100's DateLastUpdated or DateCreated) and a full audit trail, so failed syncs can be retried or replayed.
A real-world example
A mid-sized food distributor runs Sage 100 for AP, AR, GL, and inventory. The finance team needs weekly visibility into invoice aging, cash flow by vendor, and GL account balances. Before the integration, they exported a CSV from Sage 100 by hand each Friday and uploaded it to Looker for analysis. With Sage 100 and Looker connected, GL accounts, AP invoices, and AR customer balances are extracted from Sage 100 every 15 minutes and modeled in Looker. The finance team's dashboards update automatically, they can slice invoice aging by vendor or cost center in real time, and the Friday manual export step is gone.
What you can do
- Extract GL accounts, journal entries, AP invoices, and AR customer data from Sage 100 on a polling schedule you control.
- Authenticate to Sage 100 via SOAP or local Windows BOI agent, and to Looker via OAuth2 client credentials with automatic token refresh.
- Load financial records into Looker's modeled data layer for analysis, dashboard queries, and scheduled report generation.
- Handle Sage 100's company code requirement, multi-segment GL account formats, and SOAP pagination limits transparently.
- Maintain a full audit trail of every record extracted, with timestamp tracking and error replay for failed syncs.
Questions
- What financial records flow from Sage 100 into Looker?
- The integration extracts GL accounts, GL journal entries, AP invoices and vendors, AR customers and invoices, and inventory items. Polling frequency is configurable: AP invoices every 15 minutes, GL accounts daily, and vendors hourly. Only Sage 100 data is synced; Looker is a read-only analytics platform.
- Does the integration support Sage 100 on-premises and the local BOI agent?
- Yes. ml-connector can authenticate via SOAP web services or via a Windows agent wrapping the BOI COM layer. SOAP is limited to sales orders and customers; full AP, GL, and PO access requires the BOI agent running on the customer's server. The integration manages either credential set encrypted.
- How does ml-connector handle Looker's 1-hour token expiry?
- Looker's OAuth2 bearer tokens expire after 1 hour with no refresh endpoint. ml-connector caches the token and monitors its age, re-authenticating with client_id and client_secret when the token is about to expire. This is transparent to the pipeline.
Related integrations
More Sage 100 integrations
Other systems that connect to Looker
Connect Sage 100 and Looker
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started