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).
| What it counts | SUM(shipping_amount) over orders created in the 30-day window. shipping_amount is the post-discount, excl-tax shipping the customer paid (after free-shipping coupons or threshold-based discounts). |
| API field | shipping_amount (post-discount, excl-tax), shipping_discount_amount, shipping_tax_amount, base_shipping_amount from GET /rest/V1/orders. |
| VAT / tax treatment | Excl-tax by default. Adobe Commerce stores the shipping VAT separately as shipping_tax_amount. For UK/EU merchants, the customer’s invoice line “Shipping inc. VAT” equals shipping_amount + shipping_tax_amount. Both are exposed; the headline uses the excl-tax view to mirror Finance accounting practice. |
| Shipping | The card IS the shipping view. |
| Discounts | Already deducted, this is post-discount paid shipping. The free-shipping discount portion is in shipping_discount_amount (positive number representing the discount applied). The pre-discount listed shipping is shipping_amount + shipping_discount_amount. |
| Cancelled orders | Excluded by default. Cancelled orders typically have shipping_amount=0 anyway, but the explicit exclusion ensures cleanliness. |
| Refunds | Not subtracted, the card is creation-time. Refunded shipping (Credit Memo with shipping_amount > 0) reduces net but appears separately on Refund Value. Net shipping = this card − Credit Memo shipping. |
| Currency | Mixed-currency display by default. base_shipping_amount for FX-neutral. |
| Channels / sources | All Adobe Commerce sources. B2B orders that use freight (LTL, FTL) charged outside Adobe (invoiced separately) do not appear here. |
| Multi-store scope | All Store Views by default. |
| Time window | 30D rolling. |
| Alert trigger | None on this card directly. The rate-side alert is on Shipping Cost as % of Revenue. |
| Roles | owner, operations |
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:| Component | Value (GBP) |
|---|---|
SUM(shipping_amount) (card default, excl-tax, post-discount) | £58,400 |
SUM(shipping_discount_amount) | £14,200 |
| Pre-discount listed shipping | £72,600 |
SUM(shipping_tax_amount) | £11,680 |
SUM(shipping_amount + shipping_tax_amount) (incl-tax) | £70,080 |
payment.method for shipping-method via shipping_description):
| Shipping method | Order count | SUM(shipping_amount) | Avg per order |
|---|---|---|---|
| Royal Mail Tracked 48 (UK standard) | 2,840 | £25,560 | £9.00 |
| Royal Mail Special Delivery | 380 | £11,400 | £30.00 |
| DHL Express (international) | 220 | £8,800 | £40.00 |
| ParcelForce 24 | 410 | £6,150 | £15.00 |
| Free shipping (>£75 threshold) | 920 | £0 | £0.00 |
| Free shipping (loyalty perk) | 50 | £0 | £0.00 |
| Total | 4,820 | £58,400 | avg paid £15 (excluding free) |
| Window | SUM(shipping_amount) | Order count | Avg per non-free order |
|---|---|---|---|
| 14 Apr to 13 May 26 | £58,400 | 4,820 | £15.00 |
| 15 Mar to 13 Apr 26 | £52,200 | 4,640 | £13.50 |
| Change | +11.9% | +3.9% | +11.1% |
- 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
| Card | Why pair it with Total Shipping |
|---|---|
| Shipping % of Revenue | Rate-side companion. |
| Free vs Paid Shipping | Composition: how much of the order base avoided shipping fees. |
| Total Revenue | Denominator-of-context. |
| AOV | Free-ship thresholds drive AOV; pair to measure threshold effectiveness. |
| Total Discount | Includes shipping discount portion. |
| Refund Value | Refunded shipping reduces net; this card is creation-time gross. |
shipstation.shipping_cost | Carrier-side cost; the merchant-paid figure for true margin. |
shopify.total_shipping | Shopify peer. |
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:
| Reason | Direction of divergence |
|---|---|
Currency. Admin defaults to base_shipping_amount; this card defaults to display-currency mixed shipping_amount. | Material for multi-currency stores |
| Reports indexer lag. Reports > Sales > Shipping uses nightly aggregated tables. This card refreshes every 5-15 min. | Vortex IQ ahead by ~12-24h on most-recent day |
Cancelled inclusion. Card excludes cancelled by default; Admin reports include or exclude depending on status filter. Cancelled orders typically have shipping_amount=0 so the impact is small. | Minor |
| Status filter. Admin reports default to “Status = Any”. Match unless overridden. | None expected |
| Time-zone, sync lag. Standard. | Minor |
| Card | Expected relationship | What divergence tells you |
|---|---|---|
shipstation.shipping_cost | Carrier-paid cost. Merchant collected (this card) − carrier paid = gross shipping margin (before considering free-ship absorption) | If carrier-paid > collected, shipping is a cost centre; renegotiate or raise rates. |
easypost.shipping_cost | EasyPost equivalent if used | Same logic. |
| Sum of (Royal Mail postage + DHL bill + …) | Should approximately match ShipStation total | Reconciles carrier integration vs invoices. |
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.