The killer reconciliation card. Shows commerce-vs-S/4HANA Cloud gap broken down by reason, not just the dollar number.
At a glance
The killer reconciliation card: each missing dollar between commerce-platform total revenue and S/4HANA Cloud GL booked revenue, listed with originating order ID, SAP Sales Document number (if any), reason classification, and audit comment. The Finance Manager / SAP Functional Analyst’s daily worklist. The headline lives on Revenue Gap vs Commerce; this card is the per-order audit trail.
| What it counts | A row per commerce order in the period whose payment-cleared value does not match an S/4HANA Cloud Sales Document plus Billing Document of the same value within the same period. Each row tagged with reason: Pending Billing, Voided/Rejected, Credit Memo Refund, Unmapped Marketplace, Period Boundary Timing, FX Translation, EBRR Deferred Revenue, or Unknown. |
| Tax treatment | Net of tax on both sides. |
| Shipping | Both sides include shipping; mismatches drop to Unknown. |
| Discounts | Both net of discount. |
| Refunds | Counted as Credit Memo Refund. |
| Cancelled / voided orders | Counted as Voided / Rejected. |
| Currency | Group Currency translation via SAP TCURR rate type M; residual is FX Translation bucket. |
| Multi-Company-Code scope | All connected CCs with mapped commerce platforms. |
| Time window | 30D |
| Alert trigger | >5% gap unreconciled (Unknown-bucket fraction of commerce gross). |
| Roles | owner, finance |
Calculation
Calculated automatically from your SAP 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 enterprise B2B distributor on S/4HANA Cloud. 30-day window 04 Apr 26 to 03 May 26. Commerce gross 20.14M, gap $2.42M. Sample of 12 rows from the breakdown table (full table has 738 rows):| Commerce platform | Order ID | Order date | Order net | SAP Sales Document | SAP Billing Document | Reason | Comment |
|---|---|---|---|---|---|---|---|
| BigCommerce B2B | BC-449821 | 22 Apr 26 | $48,200 | 5000098234 | (none) | Pending Billing | Goods issue 30 Apr 26; awaiting next billing-due-list run |
| BigCommerce B2B | BC-449833 | 23 Apr 26 | $32,400 | 5000098267 | (none) | Pending Billing | Goods issue 02 May 26 |
| Adobe Commerce | AC-12834 | 18 Apr 26 | $14,200 | (none) | (none) | Unmapped Marketplace | Customer ACME-EU-12 not found in BP master |
| Adobe Commerce | AC-12848 | 19 Apr 26 | $18,600 | (none) | (none) | Unmapped Marketplace | Same ACME-EU-12 customer |
| Shopify Plus | SP-92421 | 25 Apr 26 | $4,800 | 5000098398 | 9100000823 | Credit Memo Refund | G2 Credit Memo posted 28 Apr 26, returned full order |
| BigCommerce B2B | BC-449412 | 12 Apr 26 | $2,400 | (none) | (none) | Voided / Rejected | Sales Document 5000097998 cancelled by customer; rejection reason 04 |
| Shopify Plus | SP-92511 | 03 May 26 23:42 | $1,840 | (none) | (none) | Period Boundary Timing | Created in S/4 04 May 26 03:15 (next day) |
| BigCommerce B2B | BC-449712 | 20 Apr 26 | $94,000 | 5000098198 | 9100000821 | EBRR Deferred Revenue | 12-month maintenance contract, 1/12 recognised |
| Adobe Commerce | AC-12891 | 28 Apr 26 | $1,420 | 5000098465 | 9100000867 | FX Translation | CAD captured at spot rate 0.74; SAP at month-avg 0.7320 |
| Shopify Plus | SP-92438 | 26 Apr 26 | $640 | (none) | (none) | Unknown | No audit trail; logged for investigation |
| BigCommerce B2B | BC-449788 | 21 Apr 26 | $14,200 | 5000098212 | 9100000819 | (matched, not in gap) | Reference row only |
| Shopify Plus | SP-92389 | 24 Apr 26 | $384 | 5000098321 | 9100000826 | (matched, not in gap) | Reference row only |
- Pending Billing rows are easy. They will resolve when the next billing-due-list (VF04) runs. The Finance Manager checks the cadence and escalates if VF04 has not run for >7 days.
- Unmapped Marketplace rows are master-data work. ACME-EU-12 needs a Business Partner record (transaction BP) created with role FLCU01 customer. Once mapped, the integration retries and the Sales Documents flow.
- Voided / Rejected rows are correct as-is. A cancelled order should not become GL revenue. The card surfaces them so Finance can reconcile against the commerce-platform refund posting.
- Period Boundary Timing rows resolve next period. No action needed; just note them for the close.
- Unknown rows are the worklist. SP-92438 at $640 is small but the lack of audit trail is the concerning thing. The SAP Functional Analyst pivots to integration logs (SAP Integration Suite or whatever middleware connects commerce to S/4) to investigate.
- Daily during quarter-end close: SAP Functional Analyst clears the Unknown bucket. Goal: zero Unknown rows by month-close.
- Weekly in normal operations: Finance Manager reviews Pending Billing for stuck cases (>14 days old) and chases Operations for VF04 runs.
- Monthly: Master-data team clears Unmapped Marketplace cases and prevents recurrence by tightening the commerce-to-SAP customer-creation workflow.
Sibling cards merchants should reference together
| Card | Why pair it with Revenue Gap, Detailed Breakdown |
|---|---|
| Revenue Gap vs Commerce | The headline that this card details. |
| Revenue Booked into GL | The SAP-side total. |
| Commerce Orders Without S/4HANA Cloud Sales Document | The Unmapped Marketplace bucket as its own card. |
| Open Sales Document Value | The forward-looking pipeline; rows in Pending Billing here transition to Billed there. |
| Sales Document to Invoice Lead Time | Velocity that drives Pending Billing volume. |
| Credit Memo Value | The G2 Credit Memo trend. |
Reconciling against the vendor’s own dashboard
Where to look in S/4HANA Cloud’s own dashboard: S/4HANA Cloud has no native cross-platform reconciliation report; this card is uniquely a Vortex IQ surface. The closest manual exercise inside SAP is to export Sales Document and Billing Document lists for the period (transaction VA05 / VF05) and cross-reference manually against the commerce platform’s order export. That is a 4-to-8-hour manual job for a $20M-revenue merchant; this card runs it every 15 minutes. For drill-down to the SAP side of any row:Manage Sales Documents Fiori app -> open the Sales Document number from the row Manage Billing Documents Fiori app -> open the Billing Document number Display Document transaction FB03 -> open the FI document for the GL view Manage Business Partner transaction BP -> for Unmapped Marketplace customersWhy our list may legitimately differ from a manual cross-reference:
| Reason | Direction | Why |
|---|---|---|
| Connector sync lag | Card may show false Pending Billing | Last 15 minutes of orders not yet in SAP. |
| Business Partner mapping conflicts | Card may overstate Unmapped | Customer exists under a different BP role; matching logic needs tuning. |
| Tax engine recompute | Card may show false Unknown | If SAP DRC adjusts tax classification, the line totals shift; the card flags as Unknown until reconciled. |
| EBRR period treatment | Card categorises as EBRR | Manually-matched would split this across periods; the card identifies it cleanly. |
| Source | Role |
|---|---|
| Shopify / BigCommerce / Adobe Commerce / SAP Commerce Cloud | Commerce gross orders |
S/4HANA Cloud Sales Documents (I_SalesDocument) | SAP order book |
S/4HANA Cloud Billing Documents (I_BillingDocumentItem) | SAP billing |
S/4HANA Cloud Universal Journal (ACDOCA) | SAP GL postings |
| Stripe / PayPal payments | Cash side, used for FX timing reconciliation |
Known limitations / merchant FAQs
Should the Unknown bucket ever be zero? At month-end close, yes. The Finance Manager and SAP Functional Analyst clear it before quarter-end. During the period, having a few open Unknown rows is normal as integration cases work themselves through. Why does the same row sometimes change reason classification? Because the underlying state moves. A row classified Pending Billing when goods issue was posted but no Billing Document yet, becomes “matched, not in gap” once the next VF04 run creates the Billing Document. The card refreshes every 15 minutes. Can I export this table to Excel for audit? Yes. The full table exports to CSV / XLSX with the same columns. Ask Viq supports “export the gap breakdown for April 2026” as a one-shot action. How does the card handle multi-line orders that partially fulfil? Each commerce-order line maps to a Sales Document line. A 5-line order with 3 lines billed and 2 lines pending generates 2 Pending Billing rows in the breakdown. What is the rule for matching a commerce order to a SAP Sales Document? The integration writes the commerce order ID into the SAP Sales Document’sBSTKD (Customer Reference) field at creation. The card joins on that field. Mis-matched joins (e.g. a commerce order ID typed into wrong field) show as Unknown.
Inter-company sales between Company Codes, do they appear?
No. Inter-company billing flows are SAP-internal and have no commerce-platform side; the card scope is commerce-to-SAP only.
What if my commerce platform isn’t connected to Vortex IQ?
Then it is excluded from the card. The gap shown reflects only connected commerce platforms vs S/4. Connect all commerce surfaces for the full picture.
Refunds processed via the commerce platform but not yet credit-memo’d in SAP?
They show as Pending Billing (commerce-side refund pending SAP-side Credit Memo). Once the G2 Credit Memo posts, the row reclassifies as Credit Memo Refund.
T-codes / Fiori apps for working the bucket?
- Pending Billing: VF04 (run billing-due-list), VF03 (display Billing Document).
- Unmapped: BP (business partner master), CMD_EI_API (master data integration logs).
- Voided / Rejected: VA02 (change Sales Document to clear or confirm rejection).
- Credit Memo: VF03 type G2.
- Period Boundary: no action; reconciles next period.
- FX Translation: configurable rate type in SAP TCURR.
- EBRR Deferred: Run EBRR Recognition (Fiori app
Run Revenue Recognition). - Unknown: integration log review (SAP Integration Suite or BTP Integration Cockpit).