Skip to content

COD Fee with Weight-Based Shipping

Many carriers charge by package weight, while COD collection fees often depend on order value (cart subtotal). Shopify lets each shipping rate use one rate type — Weight or Order amount — not both on the same rate.

This guide shows a practical pattern used by merchants with weight-based shipping profiles: keep your normal Weight rate, add several parallel COD rates (one per fee band) with the COD surcharge baked into every weight tier, then use Payflow to show only the COD rate that matches the cart subtotal. Pair that with Cash on Delivery Setup so COD payment appears only on those rates.

At checkout the customer typically sees:

What they seeHow it is priced in ShopifyWhen it appears
Standard home delivery (prepaid)Weight tiers — your existing carrier tableAlways (unless you hide it with other rules)
Home delivery | COD band AWeight tiers — same breakpoints, each price + fee AOnly when cart subtotal is in band A (Payflow)
Home delivery | COD band BWeight tiers — same breakpoints, each price + fee BOnly when cart subtotal is in band B (Payflow)
Home delivery | COD band CWeight tiers — same breakpoints, each price + fee COnly when cart subtotal is in band C (Payflow)

Payflow then:

  1. Cash on Delivery Setup — shows COD payment only when the customer selects a rate whose name matches your COD keyword (e.g. COD, Utánvét).
  2. Three Delivery Customization hide rules — each uses Subtotal amount so only one COD band is visible for the current cart.

Payflow does not calculate weight or cart total at checkout — you enter final prices in Shopify once per band.

A merchant ships with MPL home delivery (weight tiers) and charges a flat COD collection fee by order value:

Cart subtotal (store currency)COD fee added on top of weight shipping
0 – 20,000 Ft+274 Ft
20,001 – 50,000 Ft+377 Ft
50,001 – 100,000 Ft+649 Ft

They create three COD shipping rates in Shopify (e.g. … (COD 1), … (COD 2), … (COD 3)), each with Weight tiers. For the 0–2 kg row, if the prepaid rate is 1,450 Ft, the three COD rates use 1,724, 1,827, and 2,099 Ft — the same +274 / +377 / +649 on every weight row.

Gather:

  1. Existing weight-based shipping in Shopify (your prepaid carrier rate and its tiers).
  2. COD fee by cart subtotal — flat amounts per band (not percentages).
  3. A naming scheme so Payflow can target rates:
    • Prepaid rate: no COD keyword in the title.
    • Each COD band: same carrier name + a shared COD keyword + a unique band label (e.g. MPL home delivery (COD 1)).

Step 1 — Add one COD rate per cart-value band (duplicate weight tiers)

Section titled “Step 1 — Add one COD rate per cart-value band (duplicate weight tiers)”

In Shopify admin → Settings → Shipping and delivery, for each COD fee band add a new shipping rate in the same zone as your prepaid carrier rate:

  1. Add rate → name it clearly, e.g. MPL home delivery (COD 1). Include your COD keyword and a band label (COD 1, COD 2, …) that other bands do not share.
  2. Set Rate type to Weight (same as prepaid).
  3. Copy the same weight breakpoints as the prepaid rate.
  4. In every Price cell, enter prepaid price + COD fee for this band (same surcharge on every row).
  5. Repeat for the next band (COD 2, COD 3, …).
  6. Save the zone.
Shipping and delivery zone listing standard rates and multiple COD variants with different price ranges
Shipping and delivery zone listing standard rates and multiple COD variants with different price ranges
One COD variant using Weight tiers; each price is the prepaid weight price plus the flat COD fee for that cart band
One COD variant using Weight tiers; each price is the prepaid weight price plus the flat COD fee for that cart band
COD band price (per weight row) = (prepaid weight price for that row) + (COD fee for that cart band)

Example for the 0–2 kg row:

RateCalculationPrice
Prepaid1,450 Ft
COD band 1 (cart 0–20,000)1,450 + 2741,724 Ft
COD band 2 (cart 20,001–50,000)1,450 + 3771,827 Ft
COD band 3 (cart 50,001–100,000)1,450 + 6492,099 Ft

Apply the same +274 / +377 / +649 (or your real fees) on every weight tier. Shopify stores fixed numbers — they do not auto-update if you change the formula later.

Section titled “Step 2 — Link COD shipping to COD payment (Payflow)”

Follow Cash on Delivery (COD) Setup:

  1. Create customization → Cash on Delivery Setup.
  2. Add a keyword that appears in all COD band names (e.g. COD, Utánvét).
  3. Confirm the Cash on Delivery manual payment method.
  4. Set ActiveSave.
Cash on Delivery Setup matching every COD band that contains the shared keyword
Cash on Delivery Setup matching every COD band that contains the shared keyword

The preview should list all COD variants (e.g. three of six shipping methods). Customers still see every band until you add the hide rules in Step 3.

Step 3 — Show only the COD rate for this cart subtotal

Section titled “Step 3 — Show only the COD rate for this cart subtotal”

Without this step, checkout lists every COD band at once. Create one Delivery Customization per band that hides the other COD variants using Subtotal amount (before shipping and taxes).

Rule name (example)Subtotal conditions (AND)Hide rates contains text
Show COD 1 only≥ 0 and ≤ 20,000COD 2, COD 3
Show COD 2 only≥ 20,001 and ≤ 50,000COD 1, COD 3
Show COD 3 only≥ 50,001 and ≤ 100,000COD 1, COD 2

Use Contains text strings that match only the bands you want to hide (see Delivery Customization — hide).

  1. Create customization → Hide shipping methods (repeat for each band).
  2. Add two subtotal conditions with AND (minimum and maximum for that band).
  3. Under Hide, add Contains text rows for the other COD band labels.
  4. Set ActiveSave.
  5. Confirm all three rules appear under Shipping methods in Payflow.
Payflow dashboard listing three Active shipping-method rules for COD bands
Payflow dashboard listing three Active shipping-method rules for COD bands
Example hide rule: subtotal 0–20,000 hides the other two COD band names so only COD 1 remains
Example hide rule: subtotal 0–20,000 hides the other two COD band names so only COD 1 remains

For bands 2 and 3, duplicate the same structure with the subtotal ranges and hide targets from the table above. You do not need separate screenshots for each — only the subtotal range and which Contains text targets change.

  1. Open a real checkout (not only the admin preview).
  2. Prepaid path — select the standard Weight rate → COD payment should not appear.
  3. COD path — select the visible COD rate → only Cash on Delivery payment should remain.
  4. Change cart subtotal across your bands (e.g. 15,000 → 25,000 → 60,000) and confirm a different COD shipping line appears with the matching price.
  5. Change cart weight across bands and confirm the shipping price updates within the same visible COD option.
  • COD fee or weight price change — update the Price cells in every affected COD rate in Shopify; Payflow rules do not store amounts.
  • New cart band — add a new COD rate (full weight table) and a new hide rule; update existing rules to hide the new label.
  • New weight band — add a row to prepaid and to each COD copy, using the same surcharge per cart band.
  • High order limits — use COD Restrictions or add subtotal hide rules above your maximum.

If you have few weight bands, you can instead create one COD rate per weight band with Rate type → Order amount (cart tiers inside each rate) and use Payflow Total weight rules to hide the wrong weight band. That avoids duplicating full weight tables per cart band but means more cells in Order amount mode. See the tiered fees page for order-amount tier editing.

SituationBetter approach
COD fee is a single flat amount on all ordersOne COD rate with one price — see COD Setup
COD fee scales only with cart total, shipping is flatOne COD rate, Order amount tiers only — see Tiered fees
You need live percentage mathNot available in Shopify shipping profiles; see Percentage fee FAQ
Many carriers × many weight × many cart bandsConsider fewer bands or a shipping app with formulas