An order you shipped that SAP never billed is pure missed revenue and a hole in the audit trail. This card counts them and is usually one IDoc partner profile away from the cause.
At a glance
This is the cleanest revenue-at-risk finding in the SAP connector. It takes orders the merchant has actually fulfilled on a connected storefront and checks whether each one has a matching Billing Document in S/4HANA Cloud (VBRK / VBRP). The ones with no match are orders you delivered but never invoiced: the goods left the building, the customer has them, and SAP has no record that it is owed money. That is missed revenue, an AR balance that should exist but does not, and an audit-trail gap an auditor will flag. The most common cause is mechanical, not strategic: a Sales Document type misconfigured in the IDoc partner profile, so the order-to-billing chain breaks before a Billing Document is ever created. Find the unmatched orders, fix the partner profile, and the revenue posts.
| What it detects | Fulfilled storefront orders with no corresponding SAP Billing Document. The order shipped but was never invoiced, so the revenue never reached AR or the GL. |
| How the join works | The card matches each completed commerce order to a SAP Billing Document (VBRK / VBRP) via the order-to-Sales-Document-to-Billing-Document chain, using the connector’s order-reference map. An order counts as unmatched when no Billing Document resolves after the grace period in the window. |
| SAP side | Billing Documents (VBRK header, VBRP items) and the Sales Documents (VBAK / VBAP) they bill. The card also reads the IDoc status for the order’s inbound message, because a failed or misrouted IDoc is the usual break point. |
| Commerce side | Orders marked fulfilled or completed on Shopify, BigCommerce, Adobe Commerce, or other connected storefronts inside the window. Fulfilment is the trigger because a shipped order should always have a downstream invoice. |
| Common root cause | A Sales Document type misconfigured in the IDoc partner profile, so the inbound order never creates the right document; an IDoc stuck in error; the billing-due list not run; a customer with no Business Partner so billing cannot post; or an order-reference mismatch between the platforms. |
| How to resolve | Check the IDoc partner profile and the message status for the unmatched orders, confirm the Sales Document type mapping, run or reschedule the billing-due list, and resolve any upstream customer-master gap so the invoice can post. |
| Data source / freshness | SAP Billing Documents, Sales Documents, and IDoc status via OData against the live system; commerce orders via each platform’s API. Vortex IQ polls every 15 minutes by default. |
| Time window | 7D (rolling 7 days) |
| Alert trigger | more than 0 fulfilled orders still unmatched after 7 days |
| Roles | owner, finance, operations |
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 merchant runs S/4HANA Cloud (Company Code 1000, GBP) with a Shopify Plus DTC store and a BigCommerce B2B portal. Orders flow into SAP via inbound IDocs that create Sales Documents, which then bill on the daily billing-due list. The 7-day window ends 12 Mar 26. The card reads 9 unmatched orders, above the>0 alert.
| Commerce order | Channel | Fulfilled | Order value | Sales Document in SAP | Billing Document | IDoc status |
|---|---|---|---|---|---|---|
| #SHOP-44821 | Shopify DTC | 06 Mar 26 | £180 | created | billed | matched |
| #SHOP-44903 | Shopify DTC | 07 Mar 26 | £240 | created | none | billing-due list not run |
| #BC-10277 | BigCommerce B2B | 05 Mar 26 | £4,400 | none | none | IDoc in error, wrong doc type |
| #BC-10288 | BigCommerce B2B | 06 Mar 26 | £2,950 | none | none | IDoc in error, wrong doc type |
| #SHOP-45010 | Shopify DTC | 08 Mar 26 | £95 | created | none | customer has no Business Partner |
- 9 unmatched orders trips the
>0alert, and three distinct causes are present. #SHOP-44903 is a billing-due-list timing problem (the Sales Document exists, it just has not billed yet). The two BC orders are an IDoc partner-profile fault. #SHOP-45010 is an upstream customer-master gap. Same symptom, three different fixes. - The two BigCommerce orders are the killer rows. £4,400 and £2,950 of fulfilled B2B revenue with no Sales Document at all, because the inbound IDoc is in error: the Sales Document type configured in the partner profile is wrong, so SAP rejected the message. The goods shipped, the customer has them, and SAP has no idea it is owed £7,350. Fix the partner profile, reprocess the IDocs, and both orders flow through to billing.
- #SHOP-44903 will resolve itself; the others will not. A Sales Document waiting for the next billing-due-list run is a timing artefact that clears on the next run, which is why the alert uses a 7-day grace. The IDoc errors and the customer-master gap will sit unmatched indefinitely until someone acts. Triage by IDoc status: errors first.
- #SHOP-45010 traces upstream. The Sales Document was created but billing cannot post because the buyer has no Business Partner. That is the same root cause as Ecom Customers Absent from SAP Business Partner. Resolve the customer first, then the invoice posts. Pair this card with Revenue Gap vs Commerce to see these unmatched orders aggregated into the headline revenue divergence.
Sibling cards merchants should reference together
This card is the order-level evidence behind the revenue gap. Pair it with the gap, order-flow, and root-cause cards below to size the loss and trace each unmatched order to its fix.| Card | Why pair it with Ecom Orders Missing Matching SAP Billing Document |
|---|---|
| Revenue Gap vs Commerce | The aggregate. This card is the order-by-order detail; that card rolls the unmatched orders into the headline gap between commerce revenue and SAP-booked revenue. |
| Revenue Gap Detailed Breakdown | The full reconciliation. Splits the gap into timing, mapping, and policy causes, of which unmatched billing documents are a major part. |
| Commerce Orders Without S/4HANA Cloud Sales Document | The earlier break point. An order with no Sales Document never reaches billing; this card catches the orders that got a Sales Document but no invoice, and the orders that never got either. |
| IDoc Error Queue Depth (last 24h) | The mechanical cause. Most unmatched orders trace to an IDoc in error. This card shows the queue depth; that one shows the order impact. |
| Ecom Customers Absent from SAP Business Partner | The upstream cause. An order from a buyer with no Business Partner cannot bill, so it lands here. |
| Invoiced Revenue | The total that did bill. The contrast with this card is the slice of fulfilled revenue still waiting to be invoiced. |
| Sales Document to Invoice Lead Time | The speed of the chain. A long lead time turns into unmatched orders once it crosses the grace period. |
| shopify.total_revenue / bigcommerce.total_revenue / adobe_commerce.total_revenue | The channels generating the fulfilled orders. The channel with the most unmatched orders is where the integration is leaking. |
Reconciling against SAP
Where to look in S/4HANA Cloud: The closest native equivalents inside the SAP Fiori launchpad are:Manage Billing Documents Fiori app (the VF03 equivalent) to confirm whether a Billing Document exists for an order Manage Sales Orders / Display Sales Order to trace the order from inbound IDoc to Sales Document Billing Due List (VF04 equivalent) to see Sales Documents awaiting billing Monitor IDocs / IDoc status overview to find inbound order messages in error and the reason Embedded Analytics: query the Billing Document CDS view and intersect with the inbound order referenceTo reconcile, take the unmatched orders from the card and search Manage Billing Documents for each order reference. If no Billing Document exists, walk back: is there a Sales Document? If not, check the inbound IDoc status. The break point tells you the fix, billing-due-list timing, an IDoc error, or an upstream customer-master gap. Common mistakes when comparing against SAP’s own reports:
- Checking too soon. A fulfilled order that has not yet hit the next billing-due-list run is not lost, just pending. The card applies a grace period so timing artefacts do not raise false alarms; a manual same-day check will show more unmatched orders than the card.
- Looking for the Billing Document without checking the Sales Document. If there is no Sales Document, the break is upstream of billing (an IDoc error or a customer gap), and searching only the Billing Document list tells you nothing about why.
- Ignoring IDoc status. The single most informative field is the inbound IDoc status. An IDoc in error with a wrong Sales Document type points straight at the partner profile, which is the most common root cause. A report that does not surface IDoc status hides the answer.
- Order-reference mismatch. If the order reference the storefront sends does not match the field SAP stored it in, an existing Billing Document will not resolve and the order looks unmatched. Confirm the reference map before concluding revenue is missing.
| Reason | Direction | Why |
|---|---|---|
| Grace period vs same-day check | Card lower | The card waits out the billing-due-list cadence before flagging; a same-day manual check counts pending orders as unmatched. |
| Sales Document present vs absent | Either | The card distinguishes orders with a Sales Document but no invoice from orders with neither; a Billing-Document-only report cannot tell them apart. |
| IDoc error visibility | Either | The card reads IDoc status; a billing report that ignores IDocs cannot explain the gap and may miscount its size. |
| Order-reference mapping | Card higher | A reference mismatch makes an existing Billing Document fail to resolve, overstating unmatched orders until the map is fixed. |
| Upstream customer gap | Card higher | Orders that cannot bill because the buyer has no Business Partner show here; resolving the customer removes them. |
| Company Code scope | Either | The card respects the dashboard Company Code filter; a report run at a different scope counts a different set of orders. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
| shopify.total_revenue | Every fulfilled Shopify order should have a SAP Billing Document after the grace period | Billing-due-list timing (clears on next run), an inbound IDoc in error, or a DTC buyer with no Business Partner. High DTC volume makes timing artefacts common, so the grace period matters most here. |
| bigcommerce.total_revenue | Every fulfilled B2B order should bill | Net-30 B2B order types are more prone to Sales-Document-type misconfiguration in the IDoc partner profile, the classic root cause. A single wrong doc-type mapping can strand every order from that channel. |
| adobe_commerce.total_revenue | As BigCommerce | Adobe Commerce B2B approval workflows and multi-step order release can delay Sales Document creation, so orders cross the grace period before SAP ever sees them; check the integration trigger timing. |