Per-vendor fee (charge once per distinct vendor in cart)

Created by Lisa Erkens, Modified on Mon, 13 Oct at 4:49 PM by Lisa Erkens

{% liquid
  # Add $3 per distinct vendor present (useful for split-ship approximations).
  # Example: 2 vendors in cart -> $6 fee. Optionally cap at a max.

  # --- editable settings ---
  assign service_name = "Per-Vendor Shipping"
  assign service_code = "PER_VENDOR"
  assign currency = "USD"
  assign description = "Adds a fee per distinct vendor"
  assign base_price = 0                         # cents base
  assign per_vendor_fee = 300                   # cents
  assign max_vendor_fee = 1500                  # cents cap (set to a big number to effectively disable)

  # --- logic ---
  assign seen = ""                              # we'll store tokens like |VENDOR|
  assign vendor_count = 0

  for item in shopify_rate_check.items
    assign token = "|" | append: item.vendor | append: "|"
    unless seen contains token
      assign seen = seen | append: token
      assign vendor_count = vendor_count | plus: 1
    endunless
  endfor

  assign calc_fee = per_vendor_fee | times: vendor_count
  assign calc_fee = calc_fee | at_most: max_vendor_fee
  assign shipping_price = base_price | plus: calc_fee

  assign rate = rate | merge: "currency", currency
  assign rate = rate | merge: "service_name", service_name
  assign rate = rate | merge: "service_code", service_code
  assign rate = rate | merge: "total_price", shipping_price
  assign rate = rate | merge: "description", description

  assign rates = rates | array_append: rate
%}
{
  "rates": {{ rates | array_wrap | json }}
}

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article