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 counts | The 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 treatment | Net 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. |
| Shipping | Both sides include shipping revenue. Mismatch only occurs if shipping is mapped to a non-revenue GL account in Intacct’s Chart of Accounts. |
| Refunds | Counted on both sides. Commerce gross is reduced by refunds for parity, Intacct Credit Memos are pulled in. |
| Currency | Commerce 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-Entity | Multi-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. |
| Dimensions | Each 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 window | 30D (no vsP comparison, the gap itself is the trend) |
| Alert trigger | >$10k unreconciled (default), tunable per workspace |
| Sentiment key | revenue_gap |
| Roles | owner, 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.| Source | Window 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 | Amount | Explanation |
|---|---|---|
| Pending Invoicing | $382,000 | 41 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,000 | 78 Credit Memos posted in window against orders booked in commerce gross. |
| Voided / Cancelled | $46,000 | 11 cancelled orders that show in commerce platform’s lifetime totals but voided in Intacct. |
| Unmapped Customer | $58,000 | Adobe 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,000 | Orders 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,000 | 4 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,000 | Three Adobe Commerce CAD-billed orders captured at spot rate; Intacct booked at period-average. |
| Unknown / Investigate | $17,000 | 5 BigCommerce orders flagged by the connector but no audit trail. |
- 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.
- 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.
- 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.
- 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.
- **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.| Card | Why pair it with Revenue Gap vs Commerce |
|---|---|
| Revenue Gap, Detailed Breakdown | The 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 GL | The denominator on the Intacct side. Tells you how big the absolute booked revenue is so the gap percentage makes sense. |
| Open Order Value | Pending Invoicing’s forward-looking sibling. Shows what is queued to become GL revenue. |
| Open Orders Blocked | Why Pending Invoicing is stuck. Inventory holds, credit holds, missing approvals. |
| Commerce Orders Without Sage Intacct Order | The Unmapped Customer bucket as its own list. The list of commerce orders without a paired Intacct Order. |
| Credit Memo Value | The Credit Memo Refunds bucket as its own time series. Rising structural Credit Memo volume signals a quality or pricing problem. |
| Cash Application Rate | Once Pending Invoicing clears and Invoices post, Cash Application Rate tells you how fast the cash actually arrives. |
| shopify.total_revenue | The DTC half of the commerce-side numerator. |
| bigcommerce.total_revenue | The B2B half on BC platforms. |
| adobe_commerce.total_revenue | The 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 inA 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:In ProgressorPending Approvalstates, summing Total. Then compare manually to the commerce platform’s last-30-day total revenue export.
- 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.
| Reason | Direction | Why |
|---|---|---|
| Connector sync lag | Card may overstate gap | Intacct 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 gaps | Card overstates gap | If 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 cadence | Small | Commerce platform may capture spot rate; Intacct may consolidate at period-average per the Currency Configuration. The FX Translation bucket isolates this. |
| Tax reclassification | Either | If 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 boundary | Card overstates by 1-2 days of orders | Orders 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 mismatch | Card understates gap | If only some entities are connected via the field map, commerce platforms tagged to unconnected entities are excluded. |
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.
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 >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.