Skip to main content
Card class: HeroCategory: Ecommerce Platform
The killer reconciliation finding for mid-market ecom ops: dollar value of orders that never made it to Sage Intacct GL plus the reason.

At a glance

The dollar value of commerce-platform revenue that has not yet hit the Sage Intacct General Ledger, broken down by reason and by Intacct dimension. Calculated as commerce_total_revenue minus sage_revenue_booked_gl for the same window, with reason codes attached to each missing dollar and the Intacct dimensions (Department, Location, Project, Customer) carried through so Finance can investigate by team or business unit.
What it countsThe signed gap between the sum of total_revenue across every connected commerce platform (Shopify, BigCommerce, Adobe Commerce) and revenue_booked_gl in Sage Intacct for the matching window. The reason breakdown classifies each missing dollar into one of: Pending Invoicing, Voided / Cancelled, Credit Memo Refund, Unmapped Customer, Period Boundary Timing, FX Translation, Revenue Recognition Deferred (if Contracts module is in use), Multi-Entity Routing, or Unknown.
Tax treatmentNet of tax on both sides. Commerce platform tax is stripped if the platform reports tax separately (Shopify taxesIncluded = false, BigCommerce default, Adobe Commerce). Inclusive-tax modes are normalised at compute time. Comparing net to net keeps the gap meaningful; otherwise the figure would always show a structural sales-tax mismatch.
ShippingBoth sides include shipping revenue. Mismatch only occurs if shipping is mapped to a non-revenue GL account in Intacct’s Chart of Accounts.
RefundsCounted on both sides. Commerce gross is reduced by refunds for parity, Intacct Credit Memos are pulled in.
CurrencyCommerce platform revenue is FX-translated to the Intacct reporting currency at period-average rate. A residual FX-translation gap appears in the breakdown as FX Translation if the currency mix is large. Per-entity FX configuration in Intacct is honoured.
Multi-EntityMulti-Entity Console accounts: card sums across all connected entities that have commerce platforms tagged to them in the field map. Single-entity: trivially scoped. The Multi-Entity Routing reason code captures cases where a commerce order belongs to one entity but landed in another.
DimensionsEach gap dollar carries through the originating Intacct dimensions where they exist (e.g. an Unmapped Customer gap surfaces the expected Department or Project from the commerce metadata). This lets the Controller cut the gap by team, business unit, or project.
Time window30D (no vsP comparison, the gap itself is the trend)
Alert trigger>$10k unreconciled (default), tunable per workspace
Sentiment keyrevenue_gap
Rolesowner, finance

Calculation

Calculated automatically from your Sage 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 US B2B distributor (annual revenue ~$60M) running Sage Intacct Multi-Entity Console with two regional entities (East and West Coast distribution warehouses). Connected commerce platforms: BigCommerce B2B Net-30, Adobe Commerce wholesale portal, plus a small Shopify Plus DTC complement. Departments and Locations are dimension-tagged on every Order Entry transaction. The 30-day window covers 14 Mar 26 to 12 Apr 26.
SourceWindow total (USD, period-avg FX)
BigCommerce B2B, Net-30$3,180,000
Adobe Commerce, wholesale portal$1,420,000
Shopify Plus, DTC$580,000
Commerce gross (sum)$5,180,000
Sage Intacct GL booked revenue$4,490,000
Gap (this card)$690,000
Reason breakdown the card surfaces:
ReasonAmountExplanation
Pending Invoicing$382,00041 BigCommerce B2B Orders shipped but not yet invoiced. Net-30 ship-to-bill lag through Intacct’s Order Entry billing schedule.
Credit Memo Refunds$114,00078 Credit Memos posted in window against orders booked in commerce gross.
Voided / Cancelled$46,00011 cancelled orders that show in commerce platform’s lifetime totals but voided in Intacct.
Unmapped Customer$58,000Adobe Commerce wholesale portal has 6 customer accounts not yet mapped to Intacct Customer records, so the Orders failed to import. Three are tagged to the East Coast entity and would have routed to Department 200 (East Coast Sales).
Period Boundary Timing$31,000Orders placed late on 12 Apr 26 in the commerce platform; rolled into Intacct overnight 13 Apr 26 due to integration scheduler.
Multi-Entity Routing$24,0004 Adobe Commerce orders routed to West Coast entity but the customer’s billing-Department dimension belongs to East Coast. Held for Finance review.
FX Translation$18,000Three Adobe Commerce CAD-billed orders captured at spot rate; Intacct booked at period-average.
Unknown / Investigate$17,0005 BigCommerce orders flagged by the connector but no audit trail.
Five things to notice:
  1. The biggest leak is Pending Invoicing ($382K). Not lost revenue, but stuck working capital. Shipping has happened, the customer is on the hook, but no Invoice means no AR record, no DSO clock, and no GL booking. The card lets the Controller drill into the Order list, filter to Department, and chase Operations to bill.
  2. Unmapped Customer ($58K) is real revenue at risk and dimensional metadata makes it actionable. The card surfaces that three of the six unmapped Adobe Commerce accounts belong to East Coast (Department 200), so the East Coast Operations Manager gets a single Slack ping with the list. Without dimension carry-through, the Controller would have to hand-classify each.
  3. Credit Memo Refunds ($114K) is policy, not error. Structural gap between gross commerce headlines and net GL booking. It will always exist; what matters is whether the rate is constant or rising. Rising means a quality, fulfilment, or pricing problem.
  4. Multi-Entity Routing ($24K) is unique to Intacct merchants on Multi-Entity Console. Other ERPs handle this less granularly. The card uses Intacct’s entity dimension to detect routing mismatches that would otherwise be invisible.
  5. **The 17KUnknownbucketistheleakagesignal.Smallenoughnottoalarm,butitiswherereconciliationproblemslive.Alertfiresatthe>17K Unknown bucket is the leakage signal.** Small enough not to alarm, but it is where reconciliation problems live. Alert fires at the >10K threshold on Unknown; Pending Invoicing and Credit Memos are explained gaps and do not trip the sentiment.

Sibling cards merchants should reference together

This card is the trigger; the action lives on its companions.
CardWhy pair it with Revenue Gap vs Commerce
Revenue Gap, Detailed BreakdownThe drill-down. Each missing dollar with the originating commerce order ID, the Intacct-side reason, and the dimension tags (Department, Location, Project, Customer). The Controller’s daily worklist.
Revenue Booked into GLThe denominator on the Intacct side. Tells you how big the absolute booked revenue is so the gap percentage makes sense.
Open Order ValuePending Invoicing’s forward-looking sibling. Shows what is queued to become GL revenue.
Open Orders BlockedWhy Pending Invoicing is stuck. Inventory holds, credit holds, missing approvals.
Commerce Orders Without Sage Intacct OrderThe Unmapped Customer bucket as its own list. The list of commerce orders without a paired Intacct Order.
Credit Memo ValueThe Credit Memo Refunds bucket as its own time series. Rising structural Credit Memo volume signals a quality or pricing problem.
Cash Application RateOnce Pending Invoicing clears and Invoices post, Cash Application Rate tells you how fast the cash actually arrives.
shopify.total_revenueThe DTC half of the commerce-side numerator.
bigcommerce.total_revenueThe B2B half on BC platforms.
adobe_commerce.total_revenueThe B2B half on Adobe Commerce.

Reconciling against the vendor’s own dashboard

Where to look in Sage Intacct: There is no single native Intacct report for this metric, that is precisely why Vortex IQ surfaces it. The closest manual approach inside Intacct is:
Build an Interactive Custom Report (ICR) against the Order Entry data source filtered to documents in In Progress or Pending Approval states, summing Total. Then compare manually to the commerce platform’s last-30-day total revenue export.
A Sage Intacct Implementation Partner can build this ICR in 15 minutes. Most do not, because the cross-platform comparison requires pulling commerce data manually, and the moment that happens you have lost reproducibility. Vortex IQ runs this every 15 minutes against the dimension-tagged GL. Adjacent Intacct reports that look related but are not:
  • Sales Order Register: shows all open Orders but without commerce-side comparison.
  • AR Aging: AR-based, looks at unpaid Invoices not pre-Invoice gap.
  • Income Statement Trend: smooths the gap into a monthly trendline; loses the per-order traceability and the dimensional cut.
  • Standard Dashboard “Sales Trend” widget: aggregated; cannot drill to commerce-order level.
Why our number may legitimately differ from a manual reconciliation:
ReasonDirectionWhy
Connector sync lagCard may overstate gapIntacct REST and XML API sync runs every 5 to 15 minutes. A commerce order placed in the last sync window appears in commerce gross but not yet in Intacct Order list.
Customer mapping gapsCard overstates gapIf a commerce customer does not yet have an Intacct Customer record, the Order cannot be created. The integration logs this as Unmapped Customer and the gap shows the gross order. Until the Admin or Implementation Partner maps it, the gap persists.
FX rate cadenceSmallCommerce platform may capture spot rate; Intacct may consolidate at period-average per the Currency Configuration. The FX Translation bucket isolates this.
Tax reclassificationEitherIf the commerce platform sends an inclusive-tax order and the Intacct tax engine recomputes at a different jurisdiction (e.g. shipping address state), the line totals differ even though gross paid is the same.
Period boundaryCard overstates by 1-2 days of ordersOrders placed late on the last day of the window are in commerce gross but not yet in Intacct GL. They show up on the next period’s reconciliation.
Multi-Entity Console scope mismatchCard understates gapIf only some entities are connected via the field map, commerce platforms tagged to unconnected entities are excluded.
Cross-connector reconciliation, the killer finding: This card IS the cross-connector reconciliation; it has no counterpart on the commerce platforms themselves. The closest sibling on the commerce side is the Pending vs Captured Revenue card on Stripe (which catches Stripe-routed payment captures awaiting settlement) but that compares Stripe-internal state, not commerce-to-ERP. The full audit trail with originating order IDs and dimension tags lives on Revenue Gap, Detailed Breakdown. That is the worklist; this card is the headline.

Known limitations / merchant FAQs

Should this gap ever be zero? No, and you should be suspicious if it is. A small structural gap (Pending Invoicing + Credit Memos + period-boundary timing) is healthy. Zero gap means either the connector is not pulling new commerce orders, or someone is force-closing the books before reconciliation. Aim for a stable gap that scales with revenue, with the Unknown bucket near zero. How big should the gap be vs total revenue? A typical mid-market commerce business running on Sage Intacct runs at 8 to 15% gross commerce vs net GL revenue gap inside a 30-day window:
  • Pending Invoicing: 3 to 8% (higher for B2B Net-30, lower for DTC).
  • Credit Memo Refunds: 4 to 10% (varies by category, apparel skews high; industrial lower).
  • Voided / Cancelled: 1 to 3%.
  • Unknown: ideally < 0.5% of commerce gross.
If your gap is > 20%, something structural is wrong with the integration or accounting policy. Vortex IQ logs the breakdown so the cause is visible. What is the difference between this and the Revenue Gap, Detailed Breakdown card? This card is the headline ($X total gap, classified by reason, with dimension tags). The detailed breakdown is the per-order list with commerce IDs, Intacct Order IDs (or absent), and audit comments. The Controller checks this card; the Implementation Partner or NetSuite Admin works the breakdown. Why is BigCommerce B2B always the biggest gap? B2B Net-30 introduces a structural ship-to-bill lag of 10 to 30 days. Orders ship from the warehouse, but Invoices generate on a billing schedule that can wait until the order is fully fulfilled or until a billing-cycle batch run inside Intacct’s Order Entry billing schedule. During that lag the order is real revenue economically but not yet GL revenue. DTC orders typically bill at fulfilment (within 24 hours), so the lag is much smaller. Does the card account for ASC 606 deferred revenue? Yes. If your account uses Intacct Contracts and Revenue Management, the GL booked figure already excludes deferred revenue. Commerce gross still includes the full sale (it is a customer payment, not a recognition decision). The gap surfaces as Revenue Recognition Deferred in the breakdown, which is policy-correct, not a defect. SaaS-subscription merchants on Intacct Contracts will see this bucket dominate. Multi-currency stores: does the FX Translation bucket overstate? The bucket isolates the residual after period-average FX is applied per Intacct’s per-entity Currency Configuration. If your Multi-Entity Console runs entities in 5+ currencies, expect the FX bucket to be 0.5 to 2% of commerce gross. Anything larger usually means the field map’s FX rate source is misconfigured. What does the alert look like in practice? At >10KUnknown,theNerveCentrefiresasentimentalertandAskViqsurfacesthequestion"Whatisthe10K Unknown, the Nerve Centre fires a sentiment alert and Ask Viq surfaces the question "What is the 14K reconciliation drift this week?” with a deep-link to the breakdown card. The Controller typically resolves it in 15 to 30 minutes by mapping a missing Customer or escalating a stuck Order. Multi-Entity Console vs single-entity: does the card behave differently? Same logic, simpler scope. Single-entity skips the FX Translation bucket and the Multi-Entity Routing reason code. Most fields are identical. Order vs Invoice vs Cash Receipt, where does each fit?
  • Commerce order → Intacct Order: fast (minutes). If this fails, gap appears as Unmapped Customer.
  • Order → Invoice: slow (hours to days). If this is stuck, gap appears as Pending Invoicing.
  • Invoice → Cash Receipt application: slow (days to weeks). NOT in this card; this gap is captured by DSO.
  • Refund → Credit Memo: variable. Captured as Credit Memo Refunds bucket.
What is the Intacct-vs-NetSuite reconciliation positioning? Conceptually identical. Where Intacct wins: each gap row carries through the eight Intacct dimensions natively, so the Controller can cut by Department or Project without leaving the card. NetSuite’s Class / Department / Location segmentation is similar but less granular, and dimension carry-through requires saved searches. For Implementation Partner conversations: this card is the reason a Partner often recommends Intacct over QuickBooks (which has no equivalent) and is competitive with NetSuite (similar capability, faster to deploy). My Implementation Partner says the gap should be tracked monthly, not weekly. What do you recommend? Most Intacct Implementation Partners review monthly during book close. Vortex IQ runs this card every 15 minutes so the Controller catches structural drift inside the period, not at month-end when it is 30 days late. Both views are useful; the daily Nerve Centre check spots problems early, the monthly Partner review confirms the close. Does the card respect period locks? Yes. Once an Intacct accounting period is locked, the card freezes the GL side at the locked figure. Commerce gross continues to roll forward, so the gap can drift slightly post-lock. The card flags this with a “period locked” indicator on the row.

Tracked live in Vortex IQ Nerve Centre

Revenue Gap vs Commerce is one of hundreds of KPI pulses Vortex IQ tracks across Sage 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.