The killer reconciliation card. Shows commerce-vs-NetSuite gap broken down by reason, not just the dollar number.
At a glance
The killer reconciliation card. Surfaces the dollar gap between commerce-platform revenue (Shopify, BigCommerce, Adobe Commerce orders) and NetSuite-booked revenue (Invoices posted to GL), and decomposes the gap by reason. Most merchants on a NetSuite + commerce stack discover when they first connect Vortex IQ that 1.5 to 5% of their commerce revenue never reaches NetSuite, lost to sync failures, mapping errors, currency mismatches, refund-flow asymmetries, and timing differences. This card is the single biggest reason mid-market multi-platform merchants connect their NetSuite to Vortex IQ: it surfaces revenue leakage that no single platform can see on its own.
| What it counts | commerce_revenue (period) - netsuite_invoiced_revenue (same period, same scope), broken down by gap-cause: (1) unmapped orders (commerce orders never created an NS SO), (2) commerce-side cancellations not reflected in NS, (3) refund timing mismatches (NS recognised the invoice; commerce processed a refund the same day), (4) currency reconciliation gaps (commerce in one currency, NS in another, FX rate divergence), (5) channel-attribution mismatches (commerce treats one channel; NS attributes another), (6) genuine sync-lag (orders <24h old not yet reflected in NS). |
| VAT / tax treatment | Vortex IQ normalises both sides to a comparable basis (typically tax-inclusive on UK / EU, tax-exclusive on US). Without normalisation, naive subtraction produces tax-driven false gaps. |
| Shipping | Both sides include shipping. |
| Discounts | Both sides post-discount. |
| Refunds | Both sides net of refunds within the period (the timing-mismatch bucket isolates cross-period refunds). |
| Cancelled / voided orders | Both sides exclude. The cancellation-mismatch bucket isolates one-side-only cancellations. |
| Currency | Vortex IQ converts both sides to a single comparison currency (typically the merchant’s NS consolidation currency) at the transaction-date FX rate. |
| Channels / sources | Web (Shopify / BC / Adobe) is the primary scope. POS, marketplace, B2B, and EDI flows can be included via manifest configuration. |
| Time window | 30D |
| Alert trigger | >5% gap unreconciled. Healthy stores run 0 to 2% gap; >5% is a structural issue. |
| Roles | owner, finance, controller |
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 on NetSuite OneWorld, Shopify Plus on the front-end. Reporting period 02 Apr 26 to 01 May 26. Headline: £4,820,400 commerce revenue (Shopify), £4,612,200 NetSuite invoiced revenue. Gap: £208,200 (4.3% of commerce revenue). Decomposition:| Gap reason | Dollar gap | % of total gap | Recoverable? |
|---|---|---|---|
| Unmapped orders (Shopify orders never created NS SO) | £128,400 | 61.7% | Yes, with sync fix |
| Sync lag (orders <24h old not yet in NS) | £28,200 | 13.5% | Will resolve naturally |
| Refund timing mismatch (Shopify refunded same day, NS not yet posted credit memo) | £22,400 | 10.8% | Reconciles on memo posting |
| Currency reconciliation gap (multi-currency Shopify checkouts, FX timing) | £14,200 | 6.8% | Process improvement only |
| Cancellation mismatch (Shopify-side cancel after NS SO created) | £10,400 | 5.0% | Process improvement only |
| Channel attribution mismatch (B2B portal orders treated differently) | £4,600 | 2.2% | Audit + reclassification |
| Total | £208,200 | 100% |
- The £128,400 of unmapped orders is the kill shot. 86 Shopify orders, all in the period, that never produced a NetSuite Sales Order. These represent revenue the customer paid for, the merchant fulfilled, and that the GL never recorded. Average £1,492 per unmapped order, indicating B2B-portal flow (typical retail orders are £80 to £150).
- Drill into the 86 unmapped orders. Vortex IQ’s sub-card Commerce Orders Without NetSuite SO lists them by order number, value, and presumed cause. Investigation shows:
- 52 orders failed the Shopify-to-NetSuite sync due to a customer-mapping issue (a B2B account had two Shopify customer records, only one mapped to NS).
- 22 orders failed because the SKU was not yet created in NetSuite (a new product launched on Shopify before the SKU was mirrored to NS).
- 12 orders failed due to a tax-rate mapping error on a UK regional postcode.
- Action and recovery:
- Customer-mapping issue: create the missing NS customer records, retroactively map Shopify customer IDs, and re-run the SO creation. Recovers £78,400 of revenue into the GL within 48 hours.
- Missing SKUs: create the 22 SKUs in NS, retroactively post the SOs. Recovers £36,200.
- Tax-rate error: fix the postcode mapping, retroactively post the 12 SOs. Recovers £13,800.
- Total recovery: £128,400. Sync-lag gap of £28,200 will resolve naturally within 24 to 48h. Refund timing gap will reconcile when the memos post.
- Net financial impact:
- The merchant was about to close month-end with a £208,200 revenue understatement that would have been booked in the next period (or never, in the unmapped-order case). The CFO would have signed off “April revenue: £4,612,200” when actual completed-and-fulfilled revenue was £4,820,400.
- Auditors and lenders typically allow up to 2% reconciling differences without a flag; this £208,200 is 4.5% of the NS-booked figure, which would have triggered an audit query.
- Long-term value: with the sync issues fixed, the merchant’s monthly gap drops from 4.3% to 0.5 to 1%. Over 12 months, that is £2.4m of revenue that now lands in the GL on the day it is earned, not whenever the controller manually reconciles, ageing 30+ days.
Sibling cards merchants should reference together
This card is the master cross-channel reconciliation. The siblings drill into specific gap-causes:| Card | Why pair it with Revenue Gap Breakdown |
|---|---|
| Revenue Gap vs Commerce | The headline gap dollar; this card is the breakdown by reason. |
| Commerce Orders Without NetSuite SO | Drills into the unmapped-orders cause (typically the largest gap component). |
| Inventory Sync Drift | Different gap (inventory not revenue) but same root cause: sync between commerce and NS broken. |
| Revenue Gap Spike Alert | Fires when this gap suddenly widens. |
| Revenue Booked into GL | The NetSuite-side denominator. |
shopify.total_revenue | The commerce-side numerator. |
bigcommerce.total_revenue | Same for BigCommerce-fronted stores. |
adobe_commerce.total_revenue | Same for Adobe Commerce-fronted stores. |
Reconciling against the vendor’s own dashboard
Where to look in NetSuite’s own dashboard: NetSuite cannot show this card on its own. NetSuite’s view is of NetSuite-booked revenue; it has no visibility into orders that were placed on Shopify but never reached NS. The card is necessarily Vortex IQ-derived from joined cross-platform data. To approximate manually:- NS Saved Search: sum of Invoiced Revenue for the period.
- Shopify Admin: sum of revenue from Orders Report for the same period.
- Subtract. Investigate the gap manually by sampling a transaction list from each platform and finding orders that exist on one side but not the other.
| Reason | Direction | Why |
|---|---|---|
| Period boundary | Either | Vortex IQ uses commerce-order date for inclusion; NS uses Invoice tranDate. The boundary days move. |
| Tax basis normalisation | Material | Without normalisation, US-tax-exclusive NS vs UK-tax-inclusive Shopify produces a 16-22% false gap. Vortex IQ normalises both sides. |
| Currency rate timing | Material | Multi-currency stores can show large false gaps from FX rate divergence. Vortex IQ uses transaction-date FX. |
| Channel scope | Either | Vortex IQ defaults to Web; merchants who want to include B2B-portal must configure scope explicitly. |