Sage Intacct and Looker integration
Sage Intacct runs your general ledger, vendors, and accounts payable. Looker surfaces that financial data to your business intelligence platform for analysis, reporting, and dashboards. Connecting the two lets finance teams query GL balances, vendor performance, and AP aging without exporting spreadsheets. ml-connector handles Intacct's session-based XML API and delivers the data on a schedule you define, so your financial dashboards stay fresh and your reporting is automated.
What moves between them
Sage Intacct financial records (GL accounts, vendors, AP bills, and dimensions) flow into Looker through scheduled extracts. ml-connector reads from Intacct on a schedule you define (typically daily or weekly), transforms the XML payload into structured records, and loads them into a Looker-connected warehouse or dataset. Finance teams then model and query this data in Looker to build dashboards, run aging reports, and analyze vendor performance. The flow is one-directional; Looker is read-only for analytics and does not write back to Sage Intacct.
How ml-connector handles it
ml-connector manages Sage Intacct's session-based XML authentication by caching the 50-minute sessionid and automatically refreshing it on expiry. Each API call sends XML-formatted requests to Intacct's single gateway endpoint and parses XML responses for both HTTP 200 success and application-level errors embedded in errormessage tags. Before escaping entity references, ml-connector strips forbidden XML control characters (C0 controls except tab, newline, carriage return) to prevent encoding failures. For idempotency, it uses Intacct's uniqueid flag in the control block on retried operations, since Intacct has no native request deduplication. On the Looker side, ml-connector authenticates with OAuth2 and refreshes the 1-hour bearer token before each session, loading extracted records into Looker's data warehouse connector. Because Looker enforces a 5000-row limit per query without streaming, large GL or vendor datasets are paginated, and the integration tracks the batch ID to enable replay if a downstream load fails. Sage Intacct's lack of webhooks means polling is the only option, but ml-connector abstracts the schedule, retry logic, and error tracking so finance teams receive clean, consistent data in Looker on a predictable cadence.
A real-world example
A mid-sized professional services firm runs Sage Intacct for its general ledger, vendor management, and accounts payable. Finance and project accounting teams need real-time visibility into GL balances by cost code, vendor aging, and AP spending trends to support month-end close and contract profitability analysis. Before the integration, the controller exported GL and vendor data from Intacct every few days and manually loaded it into a data warehouse, then built Looker dashboards on top. With Sage Intacct and Looker connected, GL balances and vendor records sync automatically on a daily schedule. Finance teams open Looker dashboards that pull live data from Intacct, run aging reports without spreadsheets, and spot variance trends the same day, reducing close time and enabling better cost visibility.
What you can do
- Extract GL accounts, vendors, and AP bills from Sage Intacct and load them into Looker-connected warehouses on a daily or weekly schedule.
- Build financial dashboards and aging reports in Looker that reflect current Sage Intacct balances without manual export or re-keying.
- Manage Sage Intacct session authentication, XML parsing, and error detection, including automatic refresh of expired session tokens.
- Handle Looker's 1-hour OAuth2 token expiry and 5000-row query limits with automatic re-authentication and pagination for large GL or vendor datasets.
- Track batch IDs and provide error replay so failed data loads can be recovered without losing audit trails or re-running the full extract.
Questions
- Which direction does data move between Sage Intacct and Looker?
- Data flows from Sage Intacct into Looker only. GL accounts, vendors, AP bills, and dimensions are extracted and loaded into Looker's warehouse models for analysis and dashboarding. Looker is read-only for analytics and does not write back to Sage Intacct.
- How does ml-connector handle Sage Intacct's session-based XML API and 50-minute session expiry?
- ml-connector caches the sessionid returned by the initial getAPISession call and automatically refreshes it when approaching the 50-minute expiry. All XML requests are validated for application-level errors embedded in errormessage tags, and forbidden control characters are stripped before escaping entity references to prevent encoding failures.
- What are the constraints when querying large GL or vendor datasets in Looker?
- Looker enforces a 5000-row limit per query call without streaming. ml-connector handles this by paginating large GL and vendor extracts, tracking batch IDs to enable replay if a load fails, so finance teams get consistent, auditable data loads even for large account hierarchies.
Related integrations
More Sage Intacct integrations
Other systems that connect to Looker
Connect Sage Intacct and Looker
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started