What makes an on-prem ERP build different?
A cloud accounting system hands you an API and a login. An on-premises ERP hands you a server, a driver and a firewall. Everything downstream — credentials, query performance, refresh reliability — follows from that difference, which is why this work is scoped as engineering rather than configuration.
In practice the build has three layers. First, access: a read-only route into the Sage 100 database, published so Microsoft's cloud service can reach a server that is not on the public internet. Second, shape: the raw tables are normalized for transaction processing, not analysis, so we build a proper star schema with conformed customer, item, vendor, warehouse and date dimensions instead of pointing a report at a wide query. Third, endurance: an on-prem source has more that can break than a cloud one, so the refresh has to be designed to survive credential rotations, server restarts and month-end load rather than merely work once on a laptop.
Sage 100 vs. Sage Intacct — two different data paths
They share a brand and almost nothing else technically. Sage Intacct is cloud financials reached over a REST and Web Services API. Sage 100 is on-premises and SQL-backed, reached by ODBC or SQL through a gateway. Confusing the two is the most common reason a quoted integration goes sideways.
The consequences are practical. With Intacct, credentials are API keys and the refresh runs cloud-to-cloud with no gateway in the picture. With Sage 100, someone must own a Windows service on your network, and refresh windows have to respect the same server your order entry team is typing into. Report design also diverges: Intacct work leans toward multi-entity consolidation and dimension-tagged financials, while Sage 100 work leans toward operational depth — item-level margin, warehouse stock, order backlog. If you run Sage Intacct in the cloud instead, our Sage Intacct Power BI dashboard page covers that path. Larger manufacturers and distributors who moved up to Sage X3 have a third path again — folder-based schemas on SQL Server or Oracle, with several ledgers in one journal — covered on our Sage X3 Power BI dashboard page.
Which Sage 100 modules can you report on?
We report on the modules you actually license and use. The table below maps the common ones to the report they feed and the refresh pattern we normally design for each — full reload where the table is small or restated, incremental where the history is long and only recent rows change.
Sage 100 modules, the dashboards they feed, and how we refresh each one
| Module |
What the dashboard surfaces |
Refresh pattern |
| General Ledger |
Trial balance, P&L and balance-sheet trend by period, budget versus actual by account group |
Full reload nightly; re-run on demand once a period close is posted |
| Accounts Receivable |
Aging buckets by customer, DSO trend, invoices past terms, cash applied by day |
Incremental on invoice and cash-receipt date; more frequent during collections week |
| Accounts Payable |
Open payables by vendor and due date, discount capture, near-term cash requirement |
Incremental nightly; full reload after a vendor or payment-terms change |
| Sales Orders |
Booked versus shipped versus backlog, margin by customer, item and salesperson, fill rate |
Incremental several times a day on order and ship date |
| Inventory |
On-hand and available by warehouse, turns, days of supply, slow-moving and dead stock |
Nightly reload at item and warehouse grain, with a snapshot row appended per night |
| Purchasing / Receiving |
Open purchase orders, late receipts by vendor, cost variance, receipt-to-stock lag |
Incremental nightly on PO date and receipt date |
| Job Costing / Work Orders |
Cost to date versus estimate by job, work-in-progress, labor and material burn, open work orders |
Incremental nightly where the module is enabled; full reload when jobs are re-estimated |
| Bank |
Cleared versus book balance, cash position by account, unreconciled gaps |
Full reload nightly, scheduled after the bank import completes |
How do you connect Sage 100 to Power BI?
Through ODBC, published to the Power BI service by an on-premises data gateway. The gateway is the piece that lets a cloud report refresh against a server sitting inside your network, and getting it right is most of the difference between a dashboard that lives and one that goes stale in a fortnight.
The sequence is straightforward once someone owns it. Your IT contact provisions read-only access to the Sage 100 database and confirms which ODBC driver the installed edition uses. We register a gateway to your tenant — or reuse the one you already run — map the data source onto it, store the credentials at the gateway rather than in the report, and then prove a scheduled refresh completes from the service, not just from a desktop file. Microsoft's documentation on the on-premises data gateway(opens in new tab) describes the architecture, and if your team wants to understand the moving parts before we start, our walkthrough of how to set up a Power BI gateway covers the same ground in plain language.
Where a direct ODBC path is blocked — an old driver, a locked-down server, or query load that would compete with order entry — we land a scheduled extract into a database Power BI can read and report from that instead. Either way the method is decided during scoping and written down, not discovered halfway through the build.
How much does a Sage 100 dashboard build cost?
You buy prepaid Flex hours that never expire: Starter 20 hours at $125/hour ($2,500), Growth 40 hours at $115/hour ($4,600), or Power 80 hours at $100/hour ($8,000). A first Sage 100 dashboard, including the gateway work, typically fits inside one block.
There is no project minimum and no retainer — you refill only when you want more work done. You buy a block, send your request, and we reply with a scope and hours estimate before anything starts; hours deduct only for builds you have approved. If the gateway turns out to be more involved than expected, you hear that in the estimate rather than in an invoice. Read how prepaid Flex hours work for the full mechanics; this page stays focused on the ERP build itself.
How fast can you build it, and how does refresh work?
Most builds ship in 3–5 business days after you approve the scope estimate, senior-led from start to finish. The variable is access: if a gateway already exists and credentials are ready, work starts immediately; if not, provisioning is usually the longest single step.
Once live, the dataset refreshes on a schedule through the gateway so nobody re-exports anything by hand. We tune the cadence to how the data actually moves — sales and inventory more often through the working day, general ledger and bank overnight after the batch work completes. We monitor those refreshes and repair them from your banked hours, which matters more with an on-premises source than a cloud one, because a rebooted server or a rotated service password will stop a refresh without warning.
Who is this build for?
Manufacturers and distributors running Sage 100 who have no in-house BI team, and whose reporting currently depends on one person exporting from the ERP each Monday. If that person is on vacation, the numbers stop — that is the pattern this build removes.
On the distribution side the questions are stock and service: turns, fill rate, dead inventory and customer-level margin, the same metric set we cover on our Power BI for wholesale distributors page. On the manufacturing side it is production and cost flow, with work-order and job-costing depth, which we go into further on Power BI for manufacturing and logistics. It also fits an accounting firm serving Sage 100 clients that needs a repeatable, presentable pack rather than another spreadsheet template. Contact is form-only — send your request and we'll reply with a scope estimate.