📋 TL;DR
XAVI period arguments accept an Excel date, text like
Jan 2025, or a numeric Internal ID — Internal IDs are the most reliable.Point all period arguments at a single year cell and use
DATE($B$1, month, 1)so you only change one cell to roll to a new year.If your company uses a custom fiscal calendar (4-4-5, 4-5-4, etc.), use period Internal IDs — dates and month names won't resolve correctly.
Get your Internal IDs fast via Bulk Add Periods and GL in the CloudExtend Excel add-in.
Best workbook pattern: put Internal IDs in a hidden Row 1, period display names in visible Row 2, then use
=XAVI.BALANCE($A3, B$1)— write once, fill everywhere. Hide, don't delete, Row 1.
Overview
Every XAVI formula that returns financial data — such as XAVI.BALANCE and XAVI.TYPEBALANCE — requires a period argument to tell NetSuite when to pull the numbers. This article explains how XAVI resolves that period, what input formats are accepted, and how to handle custom fiscal calendars where periods don't align to calendar months.
How XAVI resolves a period from a date
When you enter a date in a period argument, XAVI does not filter for transactions on that single day. Instead, it determines which accounting period that date falls in and uses NetSuite's period definition — including the period's actual start and end dates — when it runs the query.
Accepted input formats
You can type any of the following directly into a formula, or reference a cell that contains the value:
Input type | Example | Notes |
Excel date | 1/1/2025, any date in the month | Most reliable; reads the underlying date serial |
Month + year text | Jan 2025, January 2025 | Use a space, not punctuation, between month and year |
Period Internal ID | 313 | Recommended for custom or non-calendar periods (see below) |
💡 Tip: the most reliable input format is your period Internal ID. Use your period's Internal ID (a number like 313) for the most reliable results — it maps directly to a NetSuite period with no parsing required. You can find your period Internal IDs using Bulk Add GL and Periods in the app.
NetSuite period name alignment
The period label XAVI sends to NetSuite must match your NetSuite accounting calendar. If your period names differ from a standard English Month YYYY format, use the exact period Internal ID from NetSuite.
Adjustment periods: pass the Internal ID as a quoted string. For example, if adjustment period ID 313 applies to account 4100:
=XAVI.BALANCE("4100", "313", "313")
Driving an entire sheet from a single year cell
Instead of editing every formula when you roll to a new year, point all your period arguments at one input cell.
Pattern A: Year only (simplest)
Put 2025 in cell $B$1 and reference it in both the from and to arguments. XAVI resolves it as January 2025 – December 2025 automatically.
Pattern B: Explicit months (more control)
Keep the year in $B$1 and build full dates with Excel's DATE function:
=DATE($B$1, 1, 1)→ January=DATE($B$1, 3, 1)→ MarchAny day within the month resolves to the correct period. Using the first day of each month keeps things predictable.
Change the value in $B$1 and all dependent formulas update automatically on the next calculation.
⚠️ Non-calendar periods: If your accounting periods do not align with calendar months, the quick-start reports (CFO Flash and Income Statement) may not display correctly. Replace the date arguments with your actual period names from NetSuite. You can get a list of your periods using Bulk Add GL and Periods in the app.
Custom Fiscal Calendars and Period Internal IDs
Many organizations use custom fiscal calendars — such as 4-4-5, 4-5-4, 5-4-4, or other period structures — where accounting periods do not align to calendar month boundaries. Period names like P01 2025 or P03 2024 cannot be resolved from a date alone because the start and end of each period is unique to your company's configuration in NetSuite.
For users on custom period structures, the recommended approach is to reference the Internal ID of each accounting period directly in your XAVI formulas. This section explains what Internal IDs are, how to find them, and how to structure your Excel workbook so that IDs drive your XAVI formulas while your headers display clean, human-readable period names.
What is a period Internal ID?
Every accounting period in NetSuite is assigned a unique numeric Internal ID when it is created. This ID is stable — it never changes — and is NetSuite's definitive identifier for a specific period.
When you pass an Internal ID to a XAVI formula, NetSuite returns data for exactly that period, regardless of how the period name is formatted or whether its dates cross month boundaries.
Here is a sample mapping from a custom accounting period structure:
Internal ID | Period Name | Start Date | End Date | Quarter |
21 | P01 2024 | Feb 1, 2024 | Feb 28, 2024 | Q1 2024 |
22 | P02 2024 | Feb 29, 2024 | Mar 27, 2024 | Q1 2024 |
23 | P03 2024 | Mar 28, 2024 | Apr 30, 2024 | Q1 2024 |
77 | P01 2025 | Feb 1, 2025 | Feb 28, 2025 | Q1 2025 |
78 | P02 2025 | Mar 1, 2025 | Mar 28, 2025 | Q1 2025 |
79 | P03 2025 | Mar 29, 2025 | May 2, 2025 | Q1 2025 |
Note: The dates shown are illustrative examples. Your own period start and end dates will differ based on your specific NetSuite configuration.
How to find your period Internal IDs
There are two ways to obtain Internal IDs for your accounting periods.
Option 1 — NetSuite UI
In NetSuite, go to Setup > Accounting > Manage Accounting Periods.
If the Internal ID column is not visible, click Customize View and add Internal ID to the displayed columns.
Note the IDs for the periods you want to include in your XAVI reports.
Option 2 — Bulk Add Periods and GL (Recommended)
The Bulk Add Periods and GL feature in CloudExtend Excel generates a structured export of all your accounting periods, including Internal IDs, names, start dates, and end dates. This is the fastest way to capture a complete, accurate mapping for use in your XAVI workbooks.
Open the CloudExtend Excel add-in and navigate to the Bulk Add Periods and GL panel.
Run the period export for the fiscal years you want to report on.
The exported sheet includes the Internal ID, period name, start date, end date, and parent quarter for each period — ready to reference in your report workbook.
💡 Tip: Keep the exported period mapping on a dedicated reference sheet (for example, named Periods) within your workbook. You can then use VLOOKUP or XLOOKUP to pull the correct Internal ID into any reporting sheet automatically.
Building a XAVI report with Internal IDs
The recommended pattern keeps your report viewer-friendly by showing clean period names in the header row while storing Internal IDs in a hidden row that XAVI formulas reference directly.
Example layout
The table below illustrates how the workbook looks. Row 1 (hidden) contains Internal IDs. Row 2 is the visible header. Data rows contain XAVI formulas:
(Hidden Row — Internal IDs) | 21 | 22 | 23 | 77 | 78 |
| P01 2024 | P02 2024 | P03 2024 | P01 2025 | P02 2025 |
Revenue | 2,450,000 | 2,380,000 | 2,610,000 | 2,520,000 | 2,490,000 |
Cost of Goods Sold | (1,102,500) | (1,071,000) | (1,174,500) | (1,134,000) | (1,120,500) |
Gross Profit | 1,347,500 | 1,309,000 | 1,435,500 | 1,386,000 | 1,369,500 |
Formula used (row 3, col B): =XAVI.BALANCE($A3, B$1)
Workbook structure
Row 1 (Hidden): Internal IDs — one per column, aligned to each period. This row is hidden from viewers but drives all XAVI formulas.
Row 2 (Visible Header): Period display names, such as
P01 2024orFebruary 2024, in whatever format makes sense for your audience.Row 3+ (Data): Account rows with XAVI formulas that reference the Internal ID row and the account name column.
The formula pattern
With Internal IDs in Row 1 (for example, cells B1:F1), the formula in each data cell follows this pattern:
=XAVI.BALANCE($A3, B$1)
Where:
$A3— the account identifier (absolute column, so it stays fixed as you copy across columns)B$1— the Internal ID from Row 1 (absolute row, so it stays fixed as you copy down rows)
Using mixed absolute references lets you write the formula once in cell B3 and fill it across all columns and down all account rows without modification.
Hiding the Internal ID row
After confirming your formulas work correctly:
Select Row 1 by clicking the row number.
Right-click and choose Hide.
The Internal IDs are preserved and continue to power your formulas, but viewers see only the clean period name headers in Row 2.
⚠️ Important: Do not delete Row 1 — hiding it is different from deleting it. Deleting Row 1 would break all your XAVI formulas. To add a new period column, temporarily unhide Row 1, enter the new Internal ID, add the label in Row 2, then hide Row 1 again.
