Monthly cost trend total ex VAT, stacked by row type
Cost components share of total
Top 5 destinations by total cost
Top 10 destinations by cost
All countries click headers to sort
| Country | Parcels | Shipping £ | Duties £ | Total £ | Avg shipping/parcel £ | Avg duties/parcel £ | Avg kg/parcel | Avg order ex VAT £ | Shipping % of order |
|---|
Month-on-month by country total ex VAT per month, with change vs previous month
Monthly spend trend
Monthly breakdown MoM Δ in last column
| Month | Parcels | Shipping £ | Duties £ | Total £ | Avg/parcel £ | MoM Δ | Avg order ex VAT £ | Shipping % of order |
|---|
Parcels by weight band
By product type
Weight band detail
| Weight band | Parcels | Total cost £ | Avg cost £ | £/kg |
|---|
Duties & taxes by month
Top countries by duties paid
| Country | Duty rows | Total duties £ | Avg per row £ |
|---|
Order details one row per shipment · first 500 of 0 matching · DHL duties auto-merged via Shipment #
Order ex VAT = product revenue only (customer's shipping payment AND duties excluded).
● Positive % = Skin Cupid loses on shipping (DHL cost exceeds what the customer paid)
● Negative % = Skin Cupid profits on shipping (customer paid more than the DHL cost)
● 0% = breakeven
| Month | Ship Date | Order Ref | Country | City | Weight | DHL £ ex VAT | DHL duties £ | Order ex VAT | Customer paid ship | Customer paid duties | Net shipping % |
|---|
Monthly cost trend total ex VAT
Service mix share of total spend
Top 5 destinations by total cost
Top 10 destinations by cost
All countries
| Country | Parcels | Total £ | Avg/parcel £ | Avg kg | Avg order ex VAT £ | Shipping % of order | % of total |
|---|
Monthly spend trend
Monthly breakdown MoM Δ in last column
| Month | Parcels | Total £ | Avg/parcel £ | MoM Δ | Avg order ex VAT £ | Shipping % of order |
|---|
Parcels by service
Spend by service
Service detail
| Service | Parcels | Total £ | Avg/parcel £ | Avg kg |
|---|
Order details one row per parcel · first 800 of 0 matching
DPD £ ex VAT = shipping only (customs duties excluded). Order ex VAT = product revenue only (customer's shipping payment AND duties excluded).
● Positive % = Skin Cupid loses on shipping (DPD cost exceeds what the customer paid)
● Negative % = Skin Cupid profits on shipping (customer paid more than the DPD cost)
● 0% = breakeven
⚠ RTC parcels (returns to warehouse, Sender = "RTC WND") have no Shopify order ref by design.
| Ship Date | Service | Order Ref | Country | Weight | DPD £ ex VAT | DPD duties £ | Order ex VAT | Customer paid ship | Customer paid duties | Net shipping % |
|---|
Monthly cost trend total est. ex VAT, stacked by service
Service mix share of total spend
Top channels by parcel count
Monthly spend trend
Monthly breakdown MoM Δ in last column
| Month | Parcels | Est. Net £ | Est. Gross £ | Avg £/parcel | MoM Δ |
|---|
Parcels by service
Spend by service
Service detail
| Service | Code | Parcels | Est. Net £ | Est. Gross £ | Avg £/parcel |
|---|
Parcels by channel
Channel detail
| Channel | Parcels | Est. Gross £ | Avg £/parcel | % of total |
|---|
● Tracked 24 / Tracked 48 (TPS / TPN) are UK-only — always shown as UNITED KINGDOM
● International (MP7) — derived from the matched Shopify order's shipping address
● Unknown — international parcels with no Shopify match (e.g. In Store, Unleashed Warehouse Transfer)
Top 10 destinations by parcels
International only excludes UK domestic for clarity
| Country | Parcels | Est. Gross £ | Avg £/parcel | % of intl |
|---|
All countries including UK domestic
| Country | Parcels | Est. Gross £ | Avg £/parcel | % of total |
|---|
What makes up the cost contracted rate versus what Royal Mail actually bills
Order details one row per parcel · first 800 of 0 matching
How to read Net shipping %: (RM cost − customer paid) ÷ order ex VAT
● Positive % = Skin Cupid loses on shipping ● Negative % = Skin Cupid profits on shipping ● 0% = breakeven
⚠ Non-Shopify channels (In Store, Unleashed Warehouse Transfer) have no Shopify order match by design.
| Despatch Date | Service | Channel | Country | Order Ref | Tracking | RM £ ex VAT | Order ex VAT | Customer paid ship | Customer paid duties | Net shipping % |
|---|
Monthly spend by vendor stacked, net £
Vendor breakdown sorted by total spend
| Vendor | Category | Invoices | Total £ | Avg / month £ | Last invoice |
|---|
Monthly trend net £ vs threshold
Invoices most recent first
| Invoice date | Service period | Invoice # | Net £ | VAT £ | Gross £ | Notes |
|---|
monthly cost USD, stacked by category
cost per order variable versus all-in
Variable is courier, fulfilment, returns and duties — the cost of shipping one more order. All-in divides the whole bill, storage and tech fee included, across the orders shipped. When volume falls the two diverge sharply, which says something about volume rather than about Badger's pricing.
monthly detail partial months are marked
| Month | Weeks | Orders | Storage $ | Courier $ | Fulfilment $ | Goods in $ | Returns $ | Duties $ | Other $ | Total $ | Variable $/order | All-in $/order |
|---|
weekly bills storage is billed monthly, so it lands on one week in four
All-in cost per order is deliberately not shown here. Storage arrives on a single week each month, so a weekly all-in figure swings between roughly $11 and $34 purely on whether storage fell in that week. Use the monthly view for all-in cost; the weekly variable figure is comparable week to week.
| Week | Receipt | Orders | Storage $ | Courier $ | Fulfilment $ | Goods in $ | Returns $ | Duties $ | Other $ | Total $ | Variable $/order |
|---|
order details one row per fulfilled order · 0 orders
Storage and the tech fee carry no order reference on the invoice, so they cannot appear here. A row is what Badger charged to move that specific order.
| Date | Order | Units | Courier $ | Fulfilment $ | Returns $ | Duties $ | Total $ | US goods £ | US delivery paid £ |
|---|
Monthly trend net £ vs threshold
Invoices most recent first
| Invoice date | Service period | Invoice # | Net £ | VAT £ | Gross £ | Notes |
|---|
Monthly trend net £ vs threshold
Invoices most recent first
| Invoice date | Service period | Invoice # | Net £ | VAT £ | Gross £ | Notes |
|---|
Monthly trend net £ vs threshold
Invoices most recent first
| Invoice date | Service period | Invoice # | Net £ | VAT £ | Gross £ | Notes |
|---|
Monthly trend net £ vs threshold
Invoices most recent first
| Invoice date | Service period | Invoice # | Net £ | VAT £ | Gross £ | Notes |
|---|
Monthly trend net £ vs threshold
Invoices most recent first
| Invoice date | Service period | Invoice # | Net £ | VAT £ | Gross £ | Notes |
|---|
Overall operations cost — coming soon
Combines all suppliers once each module is live.
Read the weight column before acting. A rate can look like it jumped when parcels simply got heavier. Where average weight moved more than 15%, the row is marked mix: the cause is likely what you shipped, not what you were charged. Rows marked rate had stable weights, so the change is in the pricing.
Effective rate £ per parcel per month · shading marks where the price stepped
Flagged changes largest movements first · 0 found
| Destination | Month | Baseline £/parcel | Actual £/parcel | Change | Parcels | Avg weight | Weight change | Cause |
|---|
Cost mix the three streams drawn to scale — bar width is total spend
Basis. Parcels are counted in the month they were despatched, for all three couriers — not the month the courier invoiced them. DHL invoices can fall in the month after despatch, so an invoice-month view would put pre-1-July shipments in July.
Customs duty is provisional and understated. Only DHL bills identifiable customs duty. DPD’s charge is a prepaid admin fee, booked above; their customs billing has not been located. Royal Mail duty billing has not been identified at all. Treat customs duty as a floor and accrue for duty collected from customers but not yet invoiced by a carrier.
Carrier switch impact what the parcels routed to DPD would have cost on DHL
| Country | DPD parcels | DPD shipping | DHL shipping | DHL admin fee | Avoided | Per parcel |
|---|
By country three streams per destination, Month B
| Country | Parcels | Shipping | Admin fee | Customs duty | Recovered | Net duty | Status |
|---|
Checkout collection Month B orders — are we charging the customer duty at all?
| Country | Orders | Charged duty | Rate | Avg when charged | Action |
|---|
Courier rate comparison your rate cards × avg parcel weight per destination
1. Gather the files — collect the latest DHL, DPD and (when available) Royal Mail rate cards in Excel format (same format as the originals — DHL’s GB myDHLi-style workbook, DPD’s per-service tabs workbook).
2. Send to Claude — open a new Claude chat, upload all the XLSX files, and say: "Add these as the new rate card year for the Skin Cupid Ops portal." Claude will extract them into the same JSON structure and produce a patched portal build.
3. Deploy the new build — drop the new index.html into Cloudflare Pages, hard-refresh. The year dropdown above will now offer the new year alongside 2026, so you can A/B compare.
4. (Optional) Add side-by-side year-on-year comparison — once two years of rate cards are live, ask Claude to add a YoY column to the rate comparison table showing the rate change per country.
The current cost (left column) updates whenever you hit Refresh — it reads from Google Sheets where your monthly invoice consolidations land. Only the rate-card prices need this manual swap when contracts change.
Current avg £: Shipping cost only — duties paid by Skin Cupid (US/Canada) are excluded so the figure is comparable to rate card prices.
Royal Mail International rate: Shown as actual avg £/parcel from your shipped data (rate card pending). "—" means no RM shipments to that country in this period.
Weight: Avg parcel weight per country; rates rounded up to next weight band.
Transit times: Indicative working days based on each courier’s published guidance — confirm with your account managers for contractual SLAs. DHL varies by destination zone; DPD by chosen service.
Recommendation logic: ★ in the DPD column marks the best-value service (fastest within £2 of the cheapest). The “Cheapest” column only considers options whose transit is within +3 days of the current courier — so a 10-day service won’t be recommended over a 2-day one just on price. DPD options exceeding that band are dimmed.
| Country | Parcels | Avg weight | Current avg £ shipping only |
DHL £ | DPD £ | RM £ | Cheapest | Saving/parcel | Annual saving | Duty |
|---|
Switch opportunities countries where an alternative is cheaper than current
| Country ⇅ | Parcels | Currently using | Switch to | Saving/parcel ⇅ | Annual saving ↓ |
|---|
Spend by courier monthly trend, stacked
Courier comparison cost per parcel and total
| Courier | Parcels | % of parcels | Total spend £ | % of spend | Avg £/parcel |
|---|
Spend share
Country spend & margin all couriers combined, sortable
Note: Order revenue requires Shopify sync. Royal Mail country requires Shopify match (UK domestic is hardcoded).
| Country | Total parcels | DHL | DPD | RM | Total £ | Avg £/parcel | Order rev £ | Customer paid £ | Shipping % of rev | Status |
|---|
| Country | Total parcels | DHL | DPD | RM | Total £ | Avg £/parcel |
|---|
⚠️ Loss-making destinations countries where shipping cost exceeds 40% of order revenue
Settings
Shopify order sync cross-reference DHL parcels with Shopify order values
First sync may take 2–5 minutes depending on order volume. After that, only re-sync if data changes.