At a glance
The absolute customer-paid shipping revenue collected over the period: SUM(shipping_amount) over orders. Pairs with Shipping Cost as % of Revenue (the rate version) and with Free vs Paid Shipping (the composition view).
Calculation
Worked example
A B2B+DTC homewares merchant on Adobe Commerce 2.4.7. UK base, GBP. 4,820 orders. Period: 14 Apr 26 to 13 May 26. Shipping aggregates:
Per-method breakdown (joined with
payment.method for shipping-method via shipping_description):
Comparison to prior period:
What this is telling Operations:
- Shipping revenue grew 11.9% on order growth of only 3.9%. The per-order paid shipping rose from £13.50 to £15.00. Cause likely a carrier rate increase (Royal Mail and DHL both raised in late Mar 26).
- Free-shipping share is 970 of 4,820 orders, 20.1%. Healthy threshold-driven free-ship rate. £14,200 of free-ship discounts absorbed (the merchant “spent” £14,200 to chase the threshold-driven AOV lift).
- DHL Express at £40/order is the highest per-order. Mostly international orders; investigate whether the carrier mark-up is passing through fully or being absorbed.
- Royal Mail Special Delivery at £30/order is the second-highest. Used for high-AOV (>£100) DTC where customers opt for next-day. Consider raising threshold given the rate increase.
- Cross-link with
shipstation.shipping_cost: carrier-paid £52,800 in the period. Net shipping revenue = collected £58,400 − paid £52,800 = £5,600 surplus. With £14,200 of absorbed free-ship discount, the net economic position on shipping is+£5,600 − £14,200 = -£8,600, i.e. shipping is a loss-leader for AOV. That is a deliberate strategy if AOV uplift covers it; verify with AOV and the lift attribution. - Action: consider raising free-ship threshold to £85 to recover £4-6k/month if AOV elasticity supports it.
Sibling cards merchants should reference together
Reconciling against the vendor’s own dashboard
Where to look in Adobe Commerce Admin:Reports > Sales > Shipping with date range matching the period. Total at the bottom should match this card. Default usesFor per-method breakdown:base_currency; switch this card tobase_shipping_amountfor like-for-like.
Reports > Sales > Shipping with “Show By” = “Shipping Method”. Shows shipping revenue per carrier/service.Why our number may legitimately differ from Adobe Commerce Admin:
Cross-connector reconciliation (when these connectors are connected for this merchant):
Known limitations / merchant FAQs
Why is my “shipping revenue” number lower than the customer-facing total on invoices? Because Adobe stores shipping excl-tax inshipping_amount and the tax separately in shipping_tax_amount. Customer invoices show the inc-tax sum. Add them for the customer-facing figure: SUM(shipping_amount + shipping_tax_amount). The card’s headline excl-tax view aligns with how Finance books shipping revenue (net) in the GL.
Free shipping is hurting my number, can I separate it?
Free shipping isn’t “hurting” the number; it just doesn’t contribute. The pre-discount listed shipping (shipping_amount + shipping_discount_amount) shows what shipping would have been without promos. The discount portion is the cost of the free-ship strategy.
Refunded shipping, where is it?
On Credit Memos as creditmemo.shipping_amount. Aggregate via Refund Value. Net shipping = this card − refunded shipping. The card is intentionally creation-time gross because Finance books the refund separately.
B2B freight orders aren’t showing, why?
Many B2B sellers charge freight outside the platform (carrier invoices the merchant after shipment, merchant invoices the customer separately). Those orders have shipping_amount=0 in Adobe. To capture them, integrate the freight invoicing system (e.g., a 3PL connector) and combine.
My multi-currency total looks weird, why?
Mixed-currency shipping_amount is summed without FX. A USD store contributing $5,000 and a GBP store contributing £4,000 sums to “9,000” with no unit. Toggle to base_shipping_amount (FX-converted to store base currency at order time) for a meaningful total.
Why doesn’t ShipStation match?
ShipStation knows what you paid carriers (cost). This card knows what customers paid you (revenue). Both are correct at their endpoint. The interesting calculation is cost − revenue = margin (positive = you are profitable on shipping; negative = you are absorbing shipping cost as marketing).
My free-ship threshold is £50; I see lots of orders just under £50, why?
That is healthy. Free-ship thresholds intentionally pull AOV up via the “I might as well add another item” psychology. The cluster just under £50 is customers who decided not to add. The cluster just over £50 is the threshold-driven AOV lift. Together they suggest the threshold is calibrated to your AOV distribution.
A spike in shipping revenue over the weekend, real or admin-bulk?
Adobe Admin can create bulk orders manually (B2B PO imports). Those have created_at = bulk-import time even if real customer orders were over weekdays. Filter admin_created orders for the true customer-paid signal.
Can I see this by Customer Group?
Yes. Slice via Customer Group filter. B2B groups often have negotiated freight outside Adobe (so look low here); DTC groups carry the bulk of card-paid shipping.
Why does today’s number sometimes drop?
Today’s data is in-progress; the card might display “(in progress)” on the trailing point. Otherwise: a cancellation just occurred and the card excludes cancelled orders, so the cancelled order’s shipping is removed retroactively. This is correct.