How do you analyze NetSuite ERP data in Metabase?
NetSuite analytics turns finance operations into shared, queryable models. NetSuite is an ERP system where finance teams manage the chart of accounts, transactions, subsidiaries, customers, vendors, and budgets. In Metabase, that operational ledger becomes a governed reporting layer for cash, working capital, close, and plan-versus-actual analysis. Metabase connects to the database that holds the synced data; it does not connect natively to NetSuite.
How do you connect NetSuite to Metabase?
Explore a scoped snapshot quickly
NetSuite's official remote MCP service exposes SuiteQL, reports, saved searches, and records through the MCP Standard Tools SuiteApp. Use a dedicated view-only role with the MCP Server Connection permission. Pair the approved server with the Metabase CLI to load a focused CSV as a table and model.
- Quick questions about NetSuite data
- Validating fields and dashboard ideas before building a pipeline
- Loading a minimal, permissioned snapshot into Metabase
- A CSV is a point-in-time snapshot, not governed reporting
- Finance data needs least-privilege credentials and an explicit tool allowlist
- Move recurring dashboards to the warehouse-backed route
Durable dashboards with history
Use SuiteQL over SuiteTalk REST Web Services, SuiteAnalytics Connect, or a managed connector to land NetSuite records in a database. Preserve accounting periods, posting status, subsidiaries, currencies, and transaction lines.
- Recurring finance and leadership dashboards
- Historical aging, lifecycle, and period reporting
- Joining finance data with sales, product, and operations data
- Requires a destination database and maintained sync
- You own currency, status, accounting period, and reconciliation definitions
- Every modeled total should reconcile to the source system
What can you analyze from NetSuite?
- Trial balance and P&L by period, subsidiary, department, and class
- Cash balance, cash movement, and short-term runway
- Accounts receivable and payable aging
- Budget versus actuals and operating-expense variance
- Close completeness, unposted transactions, and reconciliation exceptions
Which NetSuite dashboards should you build in Metabase?
Finance overview
A compact view of cash, exposure, and operating performance.
- Cash by subsidiary and currency
- Revenue, gross margin, and operating expense
- AR and AP aging
- Actuals vs. budget
Operations
The work that needs attention before the next close.
- Invoices and bills due this week
- Overdue balances by customer or vendor
- Unapproved transactions
- Accounting-period activity
Controls and reconciliation
Find exceptions before they become close surprises.
- Unposted transaction lines
- Intercompany imbalance
- Bank-to-ledger reconciliation exceptions
- Manual journals by risk rule
Planning and trends
Compare actuals with the plan and explain the variance.
- Monthly actuals vs. budget
- Rolling cash forecast
- Department expense trend
- Gross-margin bridge
How do you use NetSuite MCP with the Metabase CLI?
The NetSuite AI Connector Service is a officialMCP option for AI-assisted exploration. NetSuite's official remote MCP service exposes SuiteQL, reports, saved searches, and records through the MCP Standard Tools SuiteApp. Use a dedicated view-only role with the MCP Server Connection permission. The Metabase CLI can then upload a sanitized CSV and create a ready-to-query table and model.
- Start with a narrow read-only question and the minimum required objects.
- Remove secrets, bank details, and personal fields before exporting.
- Use
mb upload csvfor a first snapshot andmb upload replacefor a controlled refresh. - Move to an API or connector sync when the dashboard becomes recurring.
How do you set up NetSuite MCP and the Metabase CLI?
NetSuite AI Connector Serviceofficial
- Data source
- NetSuite API
- Auth
- OAuth 2.0 with PKCE and a view-only NetSuite MCP role
- Access
- Read-only, least privilege
- Use for
- Exploration and scoped exports
Metabase CLIofficial
- Install
npm install -g @metabase/cli- Auth
mb auth login- Load data
mb upload csv --file data.csv- Requires
- An uploads database in Metabase
{
"mcpServers": {
"netsuite": {
"type": "http",
"url": "https://<accountid>.suitetalk.api.netsuite.com/services/mcp/v1/suiteapp/com.netsuite.mcpstandardtools"
}
}
}# Install the Metabase CLI
npm install -g @metabase/cli
# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com
# Load a scoped NetSuite export - creates a table and a model
mb upload csv --file netsuite-export.csv --collection "Finance & Accounting"
# Refresh the same table later
mb upload replace <table-id> --file netsuite-export.csvCan you generate a NetSuite finance dashboard with AI?
Yes. Use the prompt below with an assistant that can access an approved data route and the Metabase CLI. It tells the assistant to inspect the real schema, reconcile totals, and skip cards that the available data cannot support.
Create a polished Metabase dashboard for NetSuite finance analytics.
Work end to end: find existing modeled data first; if none exists, load a minimal
read-only snapshot or describe the warehouse sync required.
Goal: Connect NetSuite to Metabase for general-ledger, cash-flow, accounts-receivable, accounts-payable, budget, and close dashboards using SuiteQL or a warehouse sync.
Inspect before querying:
- Inspect actual tables, column names, currencies, status values, and timestamps.
- Do not assume the source schema matches this guide exactly.
- Reconcile source totals before publishing any finance KPI.
Important:
- Do not claim Metabase connects natively to NetSuite; it reads a
supported database or CLI-uploaded tables.
- Keep native amount, native currency, and reporting-currency amount separate.
- Distinguish authorization, posting, payment, settlement, and reconciliation
states where the source exposes them.
- Use stable business keys and apply updates/deletes during incremental syncs.
- Exclude account numbers, personal data, and secrets from broad dashboards.
- Only build cards whose required fields and history are actually present.
Dashboard sections:
1. Finance overview: Cash by subsidiary and currency; Revenue, gross margin, and operating expense; AR and AP aging; Actuals vs. budget.
2. Operations: Invoices and bills due this week; Overdue balances by customer or vendor; Unapproved transactions; Accounting-period activity.
3. Controls and reconciliation: Unposted transaction lines; Intercompany imbalance; Bank-to-ledger reconciliation exceptions; Manual journals by risk rule.
4. Planning and trends: Monthly actuals vs. budget; Rolling cash forecast; Department expense trend; Gross-margin bridge.
Suggested models: modeled_netsuite_gl, modeled_netsuite_open_ar, modeled_netsuite_open_ap, modeled_netsuite_budgets.
Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. State refresh time, reporting
currency, accounting basis, and any reconciliation caveats.How do you sync NetSuite into a database or warehouse?
Use SuiteQL over SuiteTalk REST Web Services, SuiteAnalytics Connect, or a managed connector to land NetSuite records in a database. Preserve accounting periods, posting status, subsidiaries, currencies, and transaction lines.
NetSuite API or data service
Start from NetSuite's official interface and authentication documentation. Extract only the finance objects required by the models below.
dlt NetSuite REST pipeline
Scaffold SuiteTalk record endpoints and load them into PostgreSQL, BigQuery, Snowflake, or another dlt destination.
Implementation checklist
- Create a dedicated read-only integration identity and document its scopes.
- Land raw records with source IDs, source timestamps, extraction time, and currency fields intact.
- Apply updates and deletes idempotently; keep lifecycle history when aging or process metrics depend on it.
- Reconcile modeled totals to NetSuite for a closed period before exposing the models broadly.
- Connect Metabase to the destination database and schedule model refreshes.
Source documentation
- NetSuite product site
- NetSuite API documentation
- NetSuite AI Connector Service documentation or source
What data model should you use?
| Entity | Grain | Use |
|---|---|---|
accounts | one row per GL account | chart hierarchy and account type |
transactions | one row per transaction header | posting status, date, entity, and currency |
transaction_lines | one row per posting line | amounts by account, department, class, and subsidiary |
accounting_periods | one row per fiscal period | close state and period reporting |
budgets | one row per account-period-dimension | plan-versus-actual reporting |
Build reusable models such as modeled_netsuite_gl, modeled_netsuite_open_ar, modeled_netsuite_open_ap, modeled_netsuite_budgets.
Which finance metrics are useful?
Practical SQL patterns
SELECT
date_trunc('month', posting_date) AS month,
department_name,
SUM(base_currency_amount) AS operating_expense
FROM modeled_netsuite_gl
WHERE account_type = 'Expense'
AND is_posting = TRUE
GROUP BY 1, 2
ORDER BY 1, 3 DESC;Use remaining balances so partial payments and credit memos stay visible.
SELECT
CASE
WHEN CURRENT_DATE <= due_date THEN 'Current'
WHEN CURRENT_DATE - due_date <= 30 THEN '1-30 days'
WHEN CURRENT_DATE - due_date <= 60 THEN '31-60 days'
WHEN CURRENT_DATE - due_date <= 90 THEN '61-90 days'
ELSE '90+ days'
END AS aging_bucket,
SUM(open_base_currency_amount) AS open_amount
FROM modeled_netsuite_open_ar
WHERE open_base_currency_amount <> 0
GROUP BY 1
ORDER BY MIN(GREATEST(CURRENT_DATE - due_date, 0));