Export QuickBooks to Power BI: Excel and CSV
21 Oct 2026 · 14 min read
Export a QuickBooks report to Excel, or CSV where offered, then import it through Power BI Desktop's Get data menu. Start with the export steps and a downloadable fictional P&L example, then compare file snapshots with third-party connectors and API extraction for recurring reporting.
To export QuickBooks to Power BI, save the report as Excel or CSV where offered, then use Get data in Power BI Desktop to import the file. Check the company, dates, accounting basis and totals before you build visuals. The steps below cover QuickBooks Online and QuickBooks Desktop for Windows.
For a first monthly P&L, a report export lets you agree the figures and account mapping. For recurring reporting across companies or systems, use a connector or an extraction layer with a supported refresh process. Microsoft lists the former QuickBooks Online beta connector among its connectors that are no longer supported.
Export a report from QuickBooks Online
- Open Reports, then Standard reports, and select Profit and Loss or the report you need.
- Set the reporting period and the report's Cash or Accrual basis. Record the company, currency and filters with the export. Use the report-level basis setting for this run; changing the company's accounting default affects other reports.
- For a single-period P&L, select that period's amount column. Keep the original report and its totals as your reference. Comparison amounts and percentage columns need their own mapping.
- Use Export/Print, then Export to Excel or Export as CSV where the report offers it. Save a dated copy alongside the report settings.
Intuit's current report instructions document Excel and CSV exports. Menus and available reports vary by plan, country edition and classic or enhanced view. Its separate Excel export guide covers the workbook route, and its cash-or-accrual guidance explains report-level settings. These export references were checked on 21 October 2026.
Export a report from QuickBooks Desktop for Windows
Open Reports, then Reports Center, and choose your report. Set the dates, basis and filters. Use the report's Excel dropdown, select Create New Worksheet or Update Existing Worksheet, and follow the export dialogue. Intuit also documents CSV export. See its Desktop report export instructions, checked on 21 October 2026.
Keep the original file as a control and transform a working copy. Desktop's integration options differ from QuickBooks Online; the API routes later in this guide distinguish them.
Import the Excel or CSV export into Power BI
- In Power BI Desktop on Windows, select Get data, then Excel Workbook for a workbook or Text/CSV for a CSV file. Choose the relevant worksheet or table for Excel. Use Transform Data to inspect the selected data before loading.
- Identify the account heading and the amount column for the agreed period. Remove report title rows and blank lines as appropriate, then promote the correct header row. Preserve the source file and a record of these transformations.
- Keep leaf account summaries for the chosen P&L groups. Exclude headings, parent totals, subtotals and grand totals from this table. Adding detail rows and their totals together counts the same amounts twice. A report summary supplies account-level amounts; invoice drill-through needs separately obtained transaction detail.
- Map each leaf account to its reporting group. Preserve returns and credits with the correct sign. Inspect blank values before deciding their treatment. The downloadable example below uses positive revenue and expense display amounts, with negative returns and credits; adapt that convention deliberately to your source.
- Set account identifiers to Text, dates to Date and money to Fixed decimal number. Check decimal separators and date interpretation with Using locale where needed. Inspect automatically inferred types, especially for CSV files.
- Choose Close & Apply, add explicit measures and compare their results with the saved report for the same company, dates, basis, currency and account coverage. Retain any differences and their explanation before using the report.
Microsoft documents the Excel connector, Text/CSV connector and Power Query data types. Report layouts vary, so a transformation written for one export needs checking against the next report and edition.
Download a fictional P&L import example
Download the QuickBooks-to-Power-BI export teaching pack. It contains a normalised CSV, expected results, eight illustrative DAX measures and import instructions. You can also inspect the seven source rows, control figures, DAX definitions and README separately.
Illustrative example: one fictional company, 1 to 30 September 2026 inclusive, accrual basis, USD. The CSV represents seven normalised leaf account summaries. It is a teaching schema, rather than a raw QuickBooks export or a client result. Use it to practise the import before mapping your own export.
| Check | Calculation from the fictional accounts | Expected result |
|---|---|---|
| Revenue | Product sales $52,000 less sales returns $2,000 | $50,000 |
| Cost of sales | Purchases $20,500 less supplier credits $500 | $20,000 |
| Gross profit | Revenue $50,000 less cost of sales $20,000 | $30,000 |
| Gross margin | Gross profit $30,000 divided by revenue $50,000 | 60.0% |
| Operating expenses | Rent $2,000 + staff costs $9,500 + software $500 | $12,000 |
| Operating profit | Gross profit $30,000 less operating expenses $12,000 | $18,000 |
| Operating margin | Operating profit $18,000 divided by revenue $50,000 | 36.0% |
| Imported rows | Seven distinct leaf accounts | 7 |
Import normalised-pnl.csv as a table named QBOExport, following the README's types and steps. Create each supplied DAX measure separately with New measure. Clear filters when comparing the eight results with the controls. Profit subtracts the expense groups from revenue; summing every amount in the CSV would produce a different, meaningless total.
The sample omits tax, finance costs, other income and balance-sheet accounts. Its operating profit is therefore a defined subset, rather than complete net income. The CSV calculations and download contents have been checked independently with Python. The supplied DAX has not been executed in Power BI, and this example has not used a QuickBooks account or tested connection.
What refresh does with a QuickBooks export
A file-based model reads the saved file. Refreshing Power BI does not create a new QuickBooks export. Obtain the next export separately, check its settings and replace the same snapshot before refreshing. Appending overlapping reports can count the same period more than once. Keep companies, currencies and cash-or-accrual bases separate and define a replacement rule for revised snapshots.
Publishing also needs a supported file location, credentials and any required gateway. Microsoft's refresh documentation explains these dependencies. If you need daily reporting, multiple companies or combined accounting and sales data, the next section helps you choose a recurring extraction route.
For help turning an export into a recurring finance report, discuss your QuickBooks reporting project. Include Online or Desktop, company count, the reports and totals to reproduce, required history and refresh frequency. Our Power BI service covers the reporting model; data integration covers recurring extraction and staging.
Choose a recurring QuickBooks connection
For recurring extraction, choose among these routes:
- Use a third-party QuickBooks connector for the quickest supported path.
- Extract QuickBooks Online through its OAuth 2.0 API into a database or warehouse you control.
- For QuickBooks Desktop, use an SDK, Web Connector or vendor bridge, with controlled exports reserved for one-off or low-frequency reporting.
The route is only half the job. Finance reporting needs a supportable refresh, understood access and totals that reconcile to QuickBooks.
Choose the route before writing Power Query
| Starting point | Usually the best route | Main trade-off |
|---|---|---|
| QuickBooks Online or Desktop, one-off or low-frequency reporting | Versioned Excel or CSV report export where supported | Manual snapshot; each new source export is a separate step |
| QuickBooks Online, one company, standard reporting | Governed third-party connector | Fastest, but adds vendor cost and dependency |
| QuickBooks Online, several companies or other source systems | API extraction into a warehouse | More engineering, but controlled history and consolidation |
| QuickBooks Online, an internal product team that can support OAuth | Server-side extractor or a properly engineered custom connector | Full control, but your team owns security and maintenance |
| QuickBooks Desktop, repeatable scheduled reporting | SDK, Web Connector, ODBC or vendor bridge into a supported store | Depends on local software, permissions and availability |
Do not start with a generic Web.Contents snippet copied into a PBIX file. QuickBooks Online uses Intuit OAuth 2.0. Microsoft says arbitrary services commonly need a custom connector for OAuth, and custom connectors must handle login, token refresh and Power BI Service refresh correctly. Microsoft also warns connector developers not to embed confidential client secrets that users can inspect. A server-side extractor or a reviewed connector creates a clearer security and support boundary.
If another company in the group uses Sage, review how to connect Sage to Power BI alongside this plan. Reconcile each source separately before mapping both companies to a shared chart of accounts.
A seven-step QuickBooks-to-Power-BI build
1. Inventory the source
Record whether each company uses QuickBooks Online or Desktop, its country edition, company identifier, home currency, reporting basis and available tracking fields. Treat each QuickBooks Online company as a separate connection identified by its realmId; do not assume one sign-in means one combined ledger.
2. Define the reports and controls first
Write down the decisions the model must support and the QuickBooks reports it must match. At minimum, agree:
- Cash or accrual basis.
- Reporting calendar and period-close rules.
- Home and reporting currencies.
- Treatment of classes, locations, customers and projects.
- Which Profit and Loss, Balance Sheet and A/R or A/P reports form the control totals.
This prevents a technically successful extraction from producing a finance model nobody trusts.
3. Choose and approve the connection
For a third-party connector, verify its Intuit authentication method, Power BI Service refresh support, history limits, multi-company model, data location, deletion process, schema-change handling, support response and full recurring price. Confirm whether it uses the official API or another mechanism.
For an owned extractor, register and test an Intuit app, keep tokens and client credentials outside the PBIX file, separate sandbox from production, and document revocation and reconnection. A Power Query custom connector must implement the OAuth and gateway or service-refresh behaviours it needs; a desktop-only proof does not establish production refresh.
4. Land source-shaped data
Preserve raw identifiers, timestamps, status fields, references and line-level amounts before applying reporting logic. Typical accounting entities include accounts, customers, vendors, invoices, bills, payments, credit memos, journal entries and purchases. Report endpoints can also return Profit and Loss, Balance Sheet and ageing output with parameters such as date range and accounting method.
Keep raw entity extracts separate from saved report-control extracts. They serve different purposes: entity data supports the analytical model, while the report output proves what QuickBooks calculated for the same period and basis.
5. Make extraction restartable
Intuit's query language uses pagination, and its API applies per-company request limits. A production extractor needs deterministic page traversal, retry with backoff, per-company watermarks, duplicate-safe loads and alerts for partial runs. Rotate refreshed OAuth tokens correctly and store the replacement atomically so two overlapping jobs cannot invalidate each other.
Use incremental extraction where it is supported, but schedule a periodic wider comparison. An incremental job can run successfully while missing a deletion, a late adjustment or a mapping change.
6. Build a finance model, not an API mirror
Turn source-shaped tables into a model with explicit dimensions for date, account, customer, vendor, company, class or location where available, and currency. Keep transaction facts at a documented grain. Separate operational dates, such as invoice and payment date, from the accounting period used in a report.
For multiple companies, preserve company as a first-class dimension and map each chart of accounts to a governed group structure. Do not combine similarly named accounts merely because their labels look alike.
7. Reconcile before publishing
Run a control pack for a closed period and retain it with the model:
| Control | QuickBooks reference | Power BI test |
|---|---|---|
| Profit and Loss | Revenue, expenses and net income for the same period and basis | Each headline total and the net result match or have an explained difference |
| Balance Sheet | Total assets, liabilities and equity at the same date | Category totals match and the accounting equation balances |
| Receivables | A/R ageing or open-invoice report at the same date | Open amount and ageing buckets reconcile |
| Refresh completeness | Extract timestamp, company and last successful page or watermark | Every expected company completed; no partial load is published |
Store the source report date, company, cash-or-accrual setting, currency, model result, difference, tolerance and reviewer decision. A green refresh icon is not a reconciliation.
The OAuth permission is not read-only
This is easy to get wrong. Intuit's current scope for QuickBooks Online accounting data is com.intuit.quickbooks.accounting. Its scopes documentation describes access by data category and does not list a separate read-only Accounting API scope. The Accounting API itself supports create and update operations as well as queries.
For a reporting-only integration:
- Restrict the implementation to query and report calls.
- Do not expose write operations in the extraction service.
- Store tokens in a managed secret store, not source code, a spreadsheet or PBIX parameters.
- Log company connections, token refresh failures and revocations without logging token values.
- Review the connector vendor's data retention and deletion controls.
- Revoke the connection promptly when the service is retired.
These controls make the application read-only by design. They do not turn the broad OAuth grant into a read-only permission, so describe the distinction honestly during approval.
QuickBooks Desktop is a separate architecture
QuickBooks Desktop does not use the QuickBooks Online REST API. Intuit provides a Desktop SDK and the QuickBooks Web Connector, which lets a local QuickBooks environment exchange requests with a web service. Third-party ODBC and sync products can provide another supported bridge.
That introduces operating dependencies which a cloud-only diagram can hide:
- The Windows host, company file and connector schedule must be available.
- Unattended access and service credentials need deliberate approval.
- A local database or file source normally needs a Power BI gateway for scheduled refresh.
- Desktop and connector upgrades need regression testing.
- Failed local syncs must stop the downstream model from presenting stale data as current.
If the requirement is quarterly or one-off analysis, a controlled export with a fixed naming convention, archive and reconciliation may be safer than pretending a fragile bridge is live integration. For repeated reporting, stage the bridge output in a database and let Power BI read the supported store.
Failure modes to test
- Cash versus accrual mismatch. The same period can produce different results; store the selected basis with the control.
- Voids, deletions, credits and late changes. Test how the extraction detects and represents each one.
- Entity data versus report output. A hand-built transaction calculation can differ from a QuickBooks report because parameters and accounting treatment differ.
- Pagination or throttling. A successful first page is not a complete extraction; fail the run if any page or company is missing.
- Token lifecycle. Test expiry, refresh, replacement-token storage, revocation and reconnection.
- Multiple companies. Keep realmId, currency and chart-of-accounts mapping explicit throughout.
- Desktop availability. Alert when the local bridge or gateway misses its expected run.
- Schema and API changes. Pin and test supported API behaviour, then monitor Intuit release notes.
Official implementation references
The following API and architecture references were checked on 22 August 2026. The export, import and refresh references linked above were checked on 21 October 2026:
- Microsoft's Power Query connector catalogue
- Microsoft's Web connector limitations
- Microsoft's Power Query authentication guidance
- Intuit's current OAuth scopes
- Intuit's API query and pagination guidance
- Intuit's QuickBooks Online Reports API guidance
- Intuit's batch and request-limit guidance
- Intuit's QuickBooks Web Connector guide
Decide the route with the control pack attached
A useful first conversation needs five facts: Online or Desktop, number of companies, cash or accrual basis, required history and refresh frequency, and the three reports that must reconcile. Bring those to a Trusted Numbers Review to establish the source-to-report controls and a build plan. You can also review our UK Power BI consultancy, Power BI service, data integration service and published BI build pricing, or use the free two-minute reporting checklist to identify which parts of your reporting process need a closer look.
Frequently asked questions
How do I export QuickBooks to Power BI?
In QuickBooks Online, open the required report, set its period and accounting basis, then export to Excel or CSV where offered. In Power BI Desktop, use Get data, choose Excel Workbook or Text/CSV, and select Transform Data. Keep leaf account amounts separate from report subtotals, set data types and reconcile the imported figures before publishing. QuickBooks Desktop for Windows uses its own report Excel export menu.
Will refreshing Power BI get new QuickBooks transactions from my export?
A file import reads the saved export, so Power BI refresh can only load the file available at its configured source. Obtain a new QuickBooks export separately, replace the same reporting snapshot and refresh again. Recurring extraction requires a supported connector or API process, or a separately supported Desktop bridge. Service refresh also depends on file access, credentials and any required gateway.
Does Power BI have a built-in QuickBooks connector?
Microsoft lists its former QuickBooks Online beta connector as no longer supported. For a file-based start, import an Excel or CSV report export. Recurring QuickBooks Online reporting can use a third-party connector or an OAuth-based API extraction layer; QuickBooks Desktop needs its own SDK, Web Connector or vendor bridge.
Can Power BI call the QuickBooks Online API directly?
It is technically possible through a properly built Power Query custom connector, but QuickBooks uses its own OAuth flow and Power Query's generic Web connector does not make arbitrary OAuth services a simple production connection. A managed connector or server-side extractor that stages the data is usually easier to secure, refresh and support.
Can I connect QuickBooks Desktop to Power BI?
Yes, but not through the QuickBooks Online REST API. Intuit supports Desktop integrations through the QuickBooks Desktop SDK and QuickBooks Web Connector. A vendor or ODBC bridge can expose that data to a database, while a controlled Excel or CSV export can be sufficient for a one-off model.
Can a QuickBooks reporting connection be limited to a read-only OAuth scope?
Intuit's current scopes table lists one Accounting API scope rather than a separate read-only accounting scope, and the Accounting API supports write operations as well as reads. A reporting integration should enforce read-only behaviour in its code, use only query and report endpoints, protect and rotate tokens, and never imply that the OAuth grant itself is read-only.
How do I keep Power BI figures matching QuickBooks?
Record the company, reporting period, currency and cash-or-accrual basis for each control run. Reconcile profit and loss, balance sheet and receivables totals to saved QuickBooks reports before release, retain the differences, and investigate rather than hiding any variance.
Do I need an on-premises data gateway?
QuickBooks Online data staged in a supported cloud database normally does not need an on-premises gateway. A Desktop bridge, local file or on-premises database usually does. Confirm the selected connector's Power BI Service refresh support before buying it.
Want QuickBooks in Power BI, refreshed every morning, with the numbers agreeing?
This guide gets the connection working. The Trusted Numbers Review goes the rest of the way: QuickBooks joined to your finance and sales data in one model, refresh that runs itself, and a fixed price to build it. Two weeks, £2,000–£4,000, credited to the build.
Related guides
Connect Sage to Power BI: Sage 50 & 200 UK Guide
Connect Sage 50 or Sage 200 to Power BI. Compare edition-specific routes, follow the UK CSV example and check refresh, finance totals and API access.
20 Jun 2026 · 10 min read
How to Connect Xero to Power BI
A practical guide to connecting Xero to Power BI, covering the API, third-party connectors, done-for-you builds, financial KPIs, refresh and common pitfalls.
9 Jun 2026 · 4 min read
Connect Stripe to Power BI for MRR & Churn
Connect Stripe to Power BI for MRR, churn and revenue reporting. Compare the connection methods, model the metrics and avoid the accounting pitfalls.
23 May 2026 · 4 min read
Connect Klaviyo to Power BI: API Guide & Example
Connect Klaviyo to Power BI using its reporting API or a connector. Follow a worked campaign example, reconcile revenue and plan scheduled refresh.
18 Jun 2026 · 8 min read
Connect Facebook (Meta) Ads to Power BI: Example
Connect Facebook (Meta) Ads to Power BI with the Insights API or a connector. Follow a worked example and check spend, clicks, attribution and refresh.
16 Jun 2026 · 9 min read
Amazon Seller & Vendor Central to Power BI
Connect Amazon Seller Central and Vendor Central to Power BI. Follow a downloadable Vendor Sales example, check totals and plan a reliable refresh.
14 Jun 2026 · 7 min read
Related solutions
Power BI consultancy for your next business decision
Power BI consultancy for sales and finance reporting. See a working example, review pricing and scope your dashboard build with UK-based remote delivery.
Power BI repair and takeover
Power BI repair for failed refreshes, incorrect totals and inherited reports. Get a diagnosis, a repair quote and checks against your source figures.
Tableau to Power BI Migration (UK)
UK-led Tableau to Power BI migration. We rebuild your data model, calculations and dashboards, with a parallel run so numbers reconcile before cutover.