General & Getting Started
🔵 Where did the name XAVI come from?
XAVI stands for the principles behind modern finance: Extend data, Analyze performance, Create Value, and deliver Intelligence.
XAVI = eXtended Analytics & Value Intelligence
XAVI is the mascot of CloudExtend Financial Reporting — and the inspiration behind every formula you'll find in the product.
When you type
=XAVI.INCOME()or=XAVI.BALANCE()in Excel, you're putting XAVI to work: pulling live data directly from NetSuite and dropping it right where you need it.The
XAVI.prefix also serves a practical purpose. It gives every Financial Reporting formula its own distinct namespace inside Excel — so you always know exactly what's powering your numbers, and there's never any confusion with native Excel functions or other add-ins.
🔵 How often does data refresh?
Data is cached for 1 hour. To get the latest data immediately after posting new transactions, click Refresh All in the task pane. To refresh only specific cells, use Refresh Selected.
🔵 Can I use XAVI offline?
No. XAVI requires an active internet connection to communicate with NetSuite. Formulas will not resolve without a connection.
🔵 Can I use prebuilt reports for my day-to-day financial reporting?
Prebuilt reports are intended as examples and starting points, rather than permanent templates for recurring financial reporting. They demonstrate how XAVI formulas can be combined to build common financial reports.
For reports you rely on regularly, we recommend creating your own version based on the prebuilt example. You can then customize the formulas, filters, subsidiaries, departments, periods, and layout to match your organization's reporting requirements.
Keep the following in mind:
Prebuilt reports may change. We continue to refine these examples, so their formulas and layouts may change in future releases.
Fiscal calendars matter. Prebuilt reports are designed around standard monthly accounting periods. If your NetSuite account uses a 4-4-5 or 4-5-4 fiscal calendar, adjustment periods, or other custom fiscal period structures, the prebuilt report may not produce the expected results.
Your own reports remain under your control. Use the prebuilt reports as a reference for XAVI formulas, then build and maintain the version you use for recurring reporting.
🔵 Can I share workbooks with users who don't have an ExtendInsights license?
If you share a workbook directly with another licensed CloudExtend user, XAVI formulas will continue to work for them. Keep in mind results may differ slightly depending on that person's own NetSuite permissions, since XAVI pulls data live and respects each user's access level.
To share more broadly, with people who don't have a XAVI license, the formulas will not resolve for them, since XAVI formulas are connected live to NetSuite and have a short cache life. To share results with this wider audience:
Make a copy of the workbook first. This preserves your original file with live XAVI formulas intact.
In the copy, run the script below to replace all XAVI formulas with their static values, leaving every other formula (SUM, VLOOKUP, etc.) untouched. (Alternatively, you could select all and use Paste Special > Values, but this would also flatten any regular formulas in the sheet, not just XAVI ones.)
Once the script has run, share the copied workbook. Unlicensed users will now see the static results exactly as they last calculated, with no formulas required to view them.
Copy this code and use it in Step 2:
function main(
workbook: ExcelScript.Workbook,
scope: "Current Sheet" | "Entire Workbook",
backup: "Yes, I've made a backup" | "No, a backup is not necessary" | "Cancel, I'll make a backup"
) {
if (scope === "Cancel, I'll make a backup") {
console.log("Canceled. XAVI formulas will be permanently and irreversibly overwritten with their current values. A backup copy of the workbook is strongly recommended first.");
return;
}
let worksheets: ExcelScript.Worksheet[] = [];
if (scope === "Entire Workbook") {
worksheets = workbook.getWorksheets();
} else {
worksheets = [workbook.getActiveWorksheet()];
}
let convertedCells = 0;
let processedSheets = 0;
for (let s = 0; s < worksheets.length; s++) {
const sheet = worksheets[s];
const usedRange = sheet.getUsedRange(true);
if (usedRange === undefined) { continue; }
processedSheets++;
const formulas: (string | number | boolean)[][] = usedRange.getFormulas();
const values: (string | number | boolean)[][] = usedRange.getValues();
const rowCount = formulas.length;
const colCount = rowCount > 0 ? formulas[0].length : 0;
for (let r = 0; r < rowCount; r++) {
for (let c = 0; c < colCount; c++) {
const formula = formulas[r][c];
if (typeof formula === "string" && formula.toUpperCase().indexOf("XAVI") >= 0) {
usedRange.getCell(r, c).setValue(values[r][c]);
convertedCells++;
}
}
}
}
console.log("XAVI conversion complete.");
console.log("XAVI cells converted: " + convertedCells);
console.log("Sheets processed: " + processedSheets);
}
Building Reports with XAVI
🔵 Are custom segments supported?
Yes. This is supported.
🔵 Are multiple filters supported?
Yes. You can layer filters — for example, filtering by Subsidiary, then Class, then Department.
🔵 Are "is not" statements supported?
Not natively, but you can replicate "is not" logic using formulas as a workaround.
🔵 Can I use wildcards with XAVI.BUDGET?
Yes.
=XAVI.BUDGET("6*", "Jan 2025", "Dec 2025")returns the sum of all 6xxx expense budgets for the year.
🔵 Can I mix a wildcard and an exact account in one formula?
No — a single formula uses one pattern. But you can use different formulas in different rows:
Row 1: =XAVI.BALANCE("4*", ...) → Total Revenue Row 2: =XAVI.BALANCE("4010", ...) → Product Revenue Row 3: =XAVI.BALANCE("4020", ...) → Service Revenue
This is a common pattern for reports that show a summary total with a supporting breakdown below it.
🔵 How can I exclude Locations, Departments, or other dimensions from a Balance formula?
We had a customer with 38 store locations and 1 corporate location. They wanted to create a consolidated P&L Statement for all locations "except" the Corporate Location.
Because The
XAVI.BALANCEformula does not have an exclude option, the solution was to use 2 formulas, ie=XAVI.BALANCE("4100", "Jan 2025", "Jan 2025") - XAVI.BALANCE("4100", "Jan 2025", "Jan 2025",,,"Corporate Location").This creative solution subtracts the Corporate Location amounts from the total. This is yet another advantage of using real Excel formulas.
🔵 How do I report on multiple subsidiaries at once?
To report on ALL subsidiaries, use the Top Level Consolidated subsidiary in your NetSuite account (or leave your subsidiary blank and it will default to your top level).
Choosing a parent subsidiary will always consolidate the children of the parent as well.
=XAVI.BALANCE("4*", "Jan 2025", "Dec 2025", "MyCorp (Consolidated)")To see multiple subsidiaries in the same report, just copy your formula from one column to another and reference your desired subsidiary.
🔵 Can XAVI dynamically add columns for new office locations in a P&L report?
Not automatically. Location is passed as a parameter to the formula and needs to be set manually. When a new location is added in NetSuite, it will dynamically appear as an available option in the location parameter — but it won't show up as a column in the report itself until the user updates the cell to include that location.
Understanding Report Results
🔵 Why do some account balances show a different sign than what I see in NetSuite?
XAVI shows true GL (General Ledger) values. NetSuite sometimes flips signs for presentation purposes in its reports (for example, showing expenses as positive numbers). The totals always match — only individual line signs may appear different. If this causes confusion in your reports, adjust the sign in Excel using a simple multiplication by
-1.
🔵 Why doesn't XAVI.NETINCOME("Feb 2025") match my Balance Sheet Net Income?
XAVI.NETINCOMEalways computes a period range. When you supply only one period, XAVI treats it as a single-period range (from = to), returning only that month's P&L — not year-to-date.To match Balance Sheet Net Income, always supply both
fromPeriodandtoPeriod:
=XAVI.NETINCOME("Jan 2025", "Feb 2025")
🔵 Why do some accounts show "N/A" instead of $0 in prior periods?
When a report compares the current period to a prior period, you may see "N/A" instead of a dollar amount such as $0 for certain accounts. This isn't an error, it means the account didn't exist in your NetSuite chart of accounts yet during that earlier period, so there's no historical value to show. This is different from an account that existed but simply had no activity, which will correctly show $0. Displaying N/A instead of $0 keeps your comparative and variance reporting accurate: showing $0 would incorrectly suggest the account existed with zero activity, which could be misleading when analyzing trends or variances. Once an account starts appearing in a period, its balance (including $0, if applicable) will display normally in every period from that point forward.
Known Limitations
🔵 NetSuite request limit exceeded
If you receive this message during a refresh, wait a few seconds and try again.
Why does this happen?
NetSuite enforces a limit on how many API requests can run simultaneously across your entire account. When that limit is reached, any new request arriving at that moment is rejected immediately. Once existing requests finish and free up a slot, the next request can proceed.
Your account's limit is determined by your NetSuite service tier and the number of SuiteCloud Plus (SC+) licenses you hold. This pool is shared across every integration connected to your NetSuite account; your CRM sync, your iPaaS flows (e.g., Celigo integrator.io), reporting tools, and CloudExtend/XAVI all draw from the same pool simultaneously.
How can it be addressed further?
Your admin can reduce these errors by editing the integration record "CloudExtend Excel for NetSuite" and adjusting the concurrency limit.
Purchase SuiteCloud Plus (SC+) licenses. Each license adds 10 concurrent slots to the account pool. Contact your NetSuite account manager or support to determine the right number for your usage patterns.
Upgrade your service tier. Higher service tiers carry higher default concurrency limits (up to 55+ at Tier 5).
Where can a NetSuite admin monitor concurrency usage?
NetSuite provides a dedicated Concurrency Monitor with real-time and historical usage:
Setup > Integration > Integration Management > Integration Governance — view total account limit, per-integration allocations, and unallocated pool
Concurrency Monitor dashboard — heatmap of peak usage by hour and month, charts of rejected vs. accepted requests
RESTlet script record > Log tab — review rejected RESTlet requests per script

