Skip to main content
Card class: HeroCategory: Ecommerce Platform
Headline GL-booked revenue. The single number the Finance Controller checks at 9am Monday.

At a glance

Revenue formally booked into the General Ledger across the period. The arithmetic sum of revenue-account journal lines (typically accounts 4000 to 4999 in the standard NetSuite chart) posted from Invoices, Cash Sales, Credit Memos, and revenue-recognition journals against the selected subsidiaries.
What it countsSUM(Transaction.Amount) filtered to revenue-class GL accounts, posted (Posting = T), with Transaction.Type IN ('CustInvc', 'CashSale', 'CustCred', 'Journal') and a revenue-account hit on the line. This is the figure that flows into the P&L and survives audit.
Tax treatmentNet of tax. NetSuite books tax to a separate liability account (e.g. 2200 VAT Payable, 2210 Sales Tax Payable). This card sums revenue accounts only, so the figure is exclusive of VAT, GST, and US sales tax across every subsidiary regardless of local tax engine.
ShippingConfigurable. If your account is set up with shipping income posting to a revenue account (4900 Shipping Revenue), it counts. If shipping is booked to a contra-cost account, it does not. Most NetSuite OneWorld setups post to revenue and so include it.
DiscountsAlready deducted at the line level; revenue is booked net of discount items.
Credit MemosDeducted. Credit Memos post a debit against revenue, so a returned 1,000invoicenetsthelinedownto1,000 invoice nets the line down to 0 in the same period (or in the period the Credit Memo posts, whichever is later). This is the key difference vs commerce-platform Total Revenue, which is gross.
Cancelled / voided ordersExcluded by definition. A voided Invoice has Voided = T and its journal lines are reversed, so the GL net is zero.
CurrencyOneWorld accounts: consolidated in reporting currency (parent subsidiary base, typically USD). NetSuite’s General Ledger does the FX translation at the configured cadence (transaction-date rate, period-end rate, or period-average, depending on revenue-recognition rule). Single-subsidiary accounts: native subsidiary currency, no translation needed.
Subsidiary scopeCard respects the selected Subsidiary filter on the dashboard. By default rolls up every subsidiary the connected role can see. Eliminations on intercompany revenue are applied if the user picks the elimination subsidiary.
Revenue recognition (ASC 606)If your account uses Advanced Revenue Management, deferred revenue is excluded from this number; only recognised revenue counts. Without ARM, revenue is booked at invoice posting.
Time window30D vsP (default 30D vs the prior 30D)
Alert triggerdrop >15% vsP, driven by sentiment_key: revenue_trend
Rolesowner, finance, operations

Calculation

Calculated automatically from your NetSuite data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A UK omnichannel apparel brand running NetSuite OneWorld with three subsidiaries: UK Retail Ltd (parent, GBP), US Retail Inc (USD), and EU DTC BV (EUR). The 30-day window covers 14 Mar 26 to 12 Apr 26. Reporting currency is GBP.
SubsidiaryLocal revenueFX rate (period avg)GBP equivalent
UK Retail Ltd£2,840,0001.0000£2,840,000
US Retail Inc$1,920,0000.7820£1,501,440
EU DTC BV€1,180,0000.8540£1,007,720
Less: intercompany elimination(£162,000)n/a(£162,000)
Revenue Booked into GL (this card)£5,187,160
Five things to notice:
  1. Intercompany elimination removed £162,000. UK Retail Ltd shipped wholesale stock to US Retail Inc and booked an inter-co revenue line. This is real revenue inside the UK subsidiary’s ledger but it nets to zero at the consolidated level (the US sub records it as inventory cost). The card respects the elimination convention as long as the user is viewing the consolidated subsidiary; if they pivot to UK Retail Ltd alone, the £162,000 reappears.
  2. The GBP equivalent uses the period-average FX rate, not the spot rate at posting. NetSuite’s Revenue Recognition uses transaction-date rates by default, but consolidated reporting can be configured period-average. If the merchant flips between the two views, the card moves slightly even though the underlying transactions did not.
  3. Commerce platform Total Revenue for the same window was £5,742,000 across Shopify Plus + a B2B Adobe Commerce instance. The £555K gap is the killer finding. A breakdown lives on the Revenue Gap vs Commerce card and the cross-connector card, but at a high level it splits as: £290K orders pending invoicing (still in Pending Billing state), £140K cancellations and Credit Memos that hit GL but not the commerce headline, £85K unmapped marketplace orders not yet syncing into NetSuite, £40K timing on the period boundary.
  4. Last period was £5,420,000. This period is down 4.3% vsP, well below the drop >15% vsP alert threshold. The Nerve Centre stays quiet, but the trendline still appears on the card.
  5. Revenue recognition (ASC 606) impact. The merchant sells annual extended-warranty contracts on £180K of revenue this period. Under ARM these are deferred over 12 months, so only £15K hits this card; the remaining £165K sits in Deferred Revenue. Pre-ARM the figure would be £165K higher and front-loaded, an audit risk for SaaS-adjacent revenue lines.

Sibling cards merchants should reference together

Revenue Booked into GL is the canonical revenue figure but it lags real economic activity. Pair it with these to triangulate.
CardWhy pair it with Revenue Booked into GL
Revenue Gap vs CommerceThe killer finding for any commerce business running NetSuite. Commerce Total Revenue minus this card, broken down by reason. Tells you whether the gap is timing, mapping, or accounting policy.
Invoiced RevenueThe Invoice-only slice of this card. Excludes Cash Sales and revenue journals. Useful when AR Aging-driven analysis matters more than P&L roll-up.
Cash CollectedTells you what you actually banked, vs what you booked. The spread between this card and Cash Collected is your DSO problem.
Revenue by SubsidiaryThe same number sliced by subsidiary. Essential on OneWorld accounts when one subsidiary is masking trends in another.
Revenue by ClassNetSuite’s Class dimension typically splits revenue by business unit, brand, or channel. The most actionable cut on consolidated revenue.
Revenue by CurrencyOneWorld stores: shows currency mix and FX exposure on the booked total.
Open Sales Order ValueForward-looking complement. Today’s GL revenue is yesterday’s open SOs that converted; today’s open SOs are tomorrow’s GL revenue.
shopify.total_revenue / bigcommerce.total_revenue / adobe_commerce.total_revenueThe commerce-platform headline for the same window. The gap between commerce gross and NetSuite GL is the working-capital telemetry every Controller wants.

Reconciling against the vendor’s own dashboard

Where to look in NetSuite: The closest native equivalents in the NetSuite UI are:
Reports → Financial → Income Statement (period view) Reports → Sales → Sales by Item (transaction view) Reports → Sales → Sales Order Register (forward-looking, NOT this card)
The Income Statement summary line “Total Income” should match this card to within a couple of pounds when you select the same period and the same subsidiary. For an audit-grade match, run Reports → Financial → General Ledger → All Activity filtered to revenue accounts (4000-4999) and posted transactions, then sum the credit column. Common mistakes when comparing against NetSuite’s own reports:
  • Sales Order Register sums Sales Orders, not booked revenue. SOs in Pending Approval or Pending Fulfilment state contribute to that report but are not yet GL revenue. Expect Sales Order Register > this card.
  • Sales by Item is transaction-level and includes Quote and Estimate transaction types if the saved search isn’t filtered. This card excludes them.
  • Customer Aging is AR-based, not revenue-based. It excludes Cash Sales (paid at point of sale) and shows outstanding balances, not booked revenue.
Why our number may legitimately differ from NetSuite’s reports:
ReasonDirectionWhy
Subsidiary base currency vs reporting currencyEitherIf you compare the card (reporting currency) against an Income Statement run at a single subsidiary level (subsidiary base currency), the FX translation differs. Always run NetSuite reports at the same scope as the dashboard filter.
Period-end vs period-average FXSmallNetSuite Revenue Recognition uses transaction-date rates by default. Some consolidated reports use period-average. The card uses transaction-date rates per posted line. Differences average to fractions of a percent unless the period had a major FX shock.
Credit Memo timingEitherA return invoice issued in Period 1 with a Credit Memo posting in Period 2 splits across two periods. NetSuite’s Income Statement applies the same convention, but a saved search filtered to a single transaction type misses one side of the pair.
Intercompany eliminationCard lowerWhen the user filters to “Consolidated”, eliminations apply. NetSuite’s per-subsidiary Income Statements do not eliminate inter-co lines.
Revenue recognition (ASC 606 / ARM)Card lowerDeferred revenue is excluded from this card. The unrecognised balance lives on the Balance Sheet under Deferred Revenue, not Income Statement.
Non-revenue accounts wrongly mappedEitherIf your account chart has revenue items mapped to non-revenue accounts (e.g. shipping booked to Cost of Goods rather than Other Income), they’re missed. The card uses the standard 4000-4999 range; merchants with non-standard charts should confirm their mapping in the field map.
Cross-connector reconciliation, the killer finding:
CardExpected relationshipWhat causes legitimate divergence
shopify.total_revenueCommerce gross > NetSuite GL bookedPending Billing orders (commerce booked, not yet invoiced), cancellations and Credit Memos (subtract from GL but not commerce headline), unmapped marketplace orders, period-boundary timing.
bigcommerce.total_revenueCommerce gross > NetSuite GL bookedAs Shopify above. B2B BigCommerce orders are particularly prone to long Pending Billing lag.
adobe_commerce.total_revenueCommerce gross > NetSuite GL bookedAs above. Adobe Commerce B2B installations often have multi-step approval before SOs invoice.
stripe.stripe_total_revenueStripe ≤ NetSuite GLStripe sees only card / wallet payments. Cash Sales paid via PayPal, ACH, wire, or terms (Net-30 invoices) are missing from Stripe but in NetSuite.
paypal.pp_total_volumePayPal ≤ NetSuite GLPayPal-only subset.
The detailed gap-breakdown lives on the revenue-gap cross-connector card. The single most-asked finding from any mid-market commerce Controller using Vortex IQ is “where did the £555K go?”, and that card answers it line by line.

Known limitations / merchant FAQs

Why is the GL booked figure lower than my Shopify or BigCommerce headline? Three structural reasons, in order of typical contribution:
  1. Pending Billing. Commerce orders post to Sales Orders in NetSuite, then move through Pending Approval → Pending Fulfilment → Pending Billing before becoming an Invoice that hits the GL. The lag is usually 1-7 days for DTC and 10-30 days for B2B Net-30 terms. Anything in those pre-billing states is commerce revenue but not yet GL revenue.
  2. Credit Memos. A return on a $1,000 order subtracts from this card but the commerce platform usually shows it on the original gross headline. Over a year a 10% return rate becomes a 10% structural gap.
  3. Cancellations. A cancelled order may still show in the commerce platform’s lifetime totals (especially BigCommerce) but is voided in NetSuite, so the GL net is zero.
The full reconciliation lives on the Revenue Gap vs Commerce card. Why is NetSuite “the source of truth” for revenue if my commerce platform shows higher numbers? NetSuite is where the audit happens, where tax authorities pull, and where the bank lender looks. The commerce platform is where the customer paid, but customer-paid is not the same as recognised revenue under accounting standards (ASC 606 in the US, IFRS 15 in the UK / EU). For boardroom and bank conversations, this card is what counts. For acquisition and conversion analysis, commerce headlines are what counts. Both are right, they just answer different questions. Does this card include Cash Sales (POS or Direct-to-Consumer paid at checkout)? Yes. NetSuite’s Cash Sale transaction type books revenue and cash in a single step (no Invoice intermediate). The card includes CashSale transaction type so retail POS and prepaid web orders that bypass the Invoice workflow are counted. What’s the difference between SuiteAnalytics and SuiteQL on this metric? Both reach the same underlying tables. SuiteAnalytics is the dashboard-friendly query layer with cached results (refresh every 15-60 minutes depending on your tier). SuiteQL is the SQL endpoint with sub-minute freshness but tighter rate limits. Vortex IQ uses SuiteQL with a 15-minute cache for this card; the underlying number reflects the GL state as of the last sync window. For real-time intraday checks, the native NetSuite GL is always live. TBA (Token-Based Auth) vs OAuth2, does it affect this card? No effect on the number. TBA and OAuth2 are auth mechanisms, not data sources. Vortex IQ supports both. NetSuite is moving customers to OAuth2 over the 2026-2027 horizon; if your account is still on TBA, the card runs identically. My account uses Advanced Revenue Management, what does the card show? Recognised revenue only. Deferred revenue (multi-period contracts, subscription billings, extended warranties) sits on the Balance Sheet until ARM releases it; the released portion hits this card period by period. Pre-ARM accounts: the full invoice posts to revenue at billing, no deferral logic. How does NetSuite handle multi-currency vs SAP and Oracle E-Business? NetSuite OneWorld translates at three configurable cadences (transaction-date, period-average, period-end) directly inside the GL, with FX revaluation runs as a single click. SAP and Oracle E-Business require more elaborate translation entries and treasury journals, plus separate reporting modules for consolidation. NetSuite’s single-instance model means this card stays consistent across the consolidation regardless of how many subsidiaries you add. Where SAP wins is on deeper local-tax, manufacturing-cost, and treasury features that mid-market commerce typically does not need. OneWorld required for multi-currency on this card? Yes for true multi-subsidiary multi-currency consolidation. Single-subsidiary NetSuite (Standard or Mid-Market editions) supports multi-currency transactions (a UK store can take a USD invoice) but not multi-subsidiary consolidation. The card auto-detects and renders accordingly. If you flip the dashboard to “all subsidiaries” on a single-sub account, the card simply shows the one subsidiary’s total. B2B credit-hold mechanics, does this card show held revenue? A Sales Order on credit hold is not yet an Invoice, so it’s not in this card. Once Finance releases the hold and the SO bills, it lands here. The lag is the killer working-capital signal; pair this card with Open SOs Blocked to see what’s stuck.

Tracked live in Vortex IQ Nerve Centre

Revenue Booked into GL is one of hundreds of KPI pulses Vortex IQ tracks across NetSuite and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.