Sage X3 and Looker integration
Finance teams need ERP data in their BI platform to reconcile transactions, track spending, and prepare month-end reporting. Sage X3 holds the source of truth for GL entries, suppliers, and invoices, while Looker powers the analytics and dashboards. Connecting the two lets your team query ERP-sourced GL transactions, suppliers, and purchase orders directly in Looker's modeled datasets without a manual export step.
What moves between them
GL entries, suppliers, purchase orders, and supplier invoices flow from Sage X3 into Looker. ml-connector polls Sage X3 on your schedule, detects changes via updatedDate and modifiedDateTime fields, transforms the records into Looker's modeled schema, and loads them into the connected warehouse or Looker's native tables. Because Looker is read-only on financial data, ml-connector reads transactions but does not write them back into Sage X3.
How ml-connector handles it
ml-connector accepts either HTTP Basic credentials for Sage X3's REST api1 or OAuth2 credentials for GraphQL, along with the customer-specific server URL, port, and X3 folder name. It refreshes access tokens before they expire and handles the 5-minute token lifecycle. On the Looker side, it uses OAuth2 credentials and manages token expiry by re-authenticating when a session exceeds 1 hour. Because both systems are pull-only, ml-connector polls Sage X3 on a schedule tied to your accounting period cadence, detects changes via updatedDate fields, and delivers reconciled records to Looker for transformation into your BI schema. GL entries are mapped to GL account and cost center dimensions; suppliers and purchase orders are matched to their line-level invoice records for drill-down analytics. Looker's 5000-row limit per query is handled by paginated queries, and rate limiting is managed by respecting Looker's session timeout and Sage X3's on-premise server capacity constraints.
A real-world example
A mid-sized manufacturing company runs Sage X3 for procurement, manufacturing, and finance across multiple plants and cost centers. The finance team uses Looker for month-end close reporting and variance analysis, exporting GL entries and supplier invoices from Sage X3 each month and manually reconciling them in Looker. With Sage X3 and Looker connected, GL entries sync automatically after each accounting period, pre-mapped to cost center and GL account dimensions, so the team can build reconciliation dashboards in Looker without the manual export and re-entry step.
What you can do
- Poll GL entries from Sage X3 on your accounting period schedule and load them into Looker with GL account and cost center dimensions mapped.
- Deliver suppliers, customers, and purchase orders from Sage X3 to Looker for spend analysis and vendor reconciliation.
- Detect changes in Sage X3 records via updatedDate and modifiedDateTime fields to avoid re-syncing unchanged rows.
- Authenticate Sage X3 with OAuth2 for GraphQL or HTTP Basic for REST api1, and Looker with OAuth2, managing token expiry on both sides.
- Enable drill-down analytics in Looker from GL accounts and cost centers down to individual supplier invoices and line items.
Questions
- Which direction does data move between Sage X3 and Looker?
- Data flows from Sage X3 into Looker. GL entries, suppliers, customers, purchase orders, and supplier invoices are read from Sage X3 and delivered to Looker for analysis, reconciliation, and reporting. Looker is read-only on financial data, so ml-connector does not write GL entries or transactions back to Sage X3.
- Does the integration work with both REST api1 and GraphQL in Sage X3?
- Yes. ml-connector supports HTTP Basic Authentication for Sage X3's REST api1 legacy endpoint (available in V6 and later) and OAuth2 for the GraphQL endpoint (Xtrem, available in V12 and later). You can choose which transport your Sage X3 instance uses. Access tokens expire in 5 minutes for both paths, and ml-connector refreshes them before they time out.
- How does the integration handle Sage X3 polling and Looker's 5000-row query limit?
- ml-connector polls Sage X3 on your accounting period schedule, detecting changes via updatedDate and modifiedDateTime fields to sync only new or modified records. When delivering data to Looker, queries are paginated to respect Looker's 5000-row per-call limit, ensuring large GL entry sets are loaded reliably without timeouts.
Related integrations
More Sage X3 integrations
Other systems that connect to Looker
Connect Sage X3 and Looker
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started