电商基本功: 电商运费计算方式

40 评论 40702 浏览 237 收藏 14 分钟

电商运费如何科学计算呢?通过文章来了解一下。

作为电商基础中最关键的一环,运费计算是基础并且核心的设计,而且计算过程也比较复杂,容易考虑不周。

笔者分为三个问题分析该怎么计算运费:

  • 问题一:各种商品混在一起时运费怎么归类计算呢?
  • 问题二:多个商品和单个商品运费是一个运费价格计算的吗?
  • 问题三:不同的多个商品选择了不同的运费模版,怎样才能合理计算运费保证商家和用户双方的利益呢?

问题一:各种商品混在一起时运费怎么归类计算呢?

1)一般方法按照店铺归类的品类计算运费。

店铺一般是以商品分类为导向的。比如淘宝店铺的归类。卖家具的店铺一般就不会有卖衣服。因此卖家具的店铺采用按体积计算运费,采用的是物流或者某些特别的快递服务。卖衣服的店铺一般按照重量计算运费,采用如四通一达的快递服务,模版选择按重量计算。

当一次购买多件商品的时候,一个店铺的商品自动归类到一个订单,如淘宝店铺。

当然也可以按照自营与联营的方式计算。普通的自营店铺一起计算运费,联营店铺算是各个商家独自的店铺分别计算,如京东商城。

2)特殊品类按品类分别计算运费。

为什么上面第一点一直强调的普通店铺。因为商品存在特殊性,比如生鲜水果水产冰冻食品,易碎物品对快递及时性和冷链配置要求比较高,导致于普通无要求的商品的价格不一样。另外店铺在做活动时,特价商品会和其他普通商品可能存在不同价格的运费。

因此无论是京东还是淘宝都将生鲜水果和普通的商品划分出来独自成立一个店铺或者说独自计算运费。

比如京东的生鲜与普通商品一起购买时,未达到京东生鲜的包邮标准时需要同时支付生鲜的运费以及普通商品运费。虽然是合在一个订单里面,实际是按照两笔订单计算运费。

京东订单

天猫超市则是分开成2个店铺生成2个订单计算运费。

淘宝订单

3)贵重商品计算运费方式。

一般贵重商品比如贵重的电器,金银首饰等,运费相对于商品价格微乎其微,运费相对利润比较少,大多数贵重商品的品类采用的是包邮方式。当然也可以采用保价方式。而一般金银首饰更加贵重的商品考虑到安全性线上支付定金,线下自己提货的方式居多。

问题二:多个商品和单个商品运费是一个运费价格计算的吗?

商品虽然一般是按照店铺为单位计算运费,但是由于每个商品还是有自己的特殊性,计算商品运费是按照每个商品自己的模版进行计算。另外商品运输可能采用四通一达还是顺丰或者其他小快递公司也会导致运费价格不一致。

比如商品A 和B的运费模版为江浙沪运费5元,江浙沪以外地区10元。但是现在店铺为了促销做活动,商品A江浙沪包邮。则商品A需要设置成江浙沪运费0元,江浙沪以外地区10元的运费模版。

商品A用户要求使用顺丰快递邮寄,则江浙沪运费为10元,江浙沪以外地区为22元。

那么,运费模版该怎么设计呢?

要考虑的有几个步骤:

  • 店铺商家设置可以不同快递或者不同活动的运费模版
  • 店铺商家设置不同区域的运费模版
  • 店铺商家给每个商品选择相应的运费模版或者用户在确认订单下单时可以自主选择可选范围其一的运费模版。

我们以经常使用计重方式为例,在商家的店铺后台设置运费模版。

第一步:新建模版。

输入模版名称,比如顺丰运费模版,用于商品选择模版时进行区分。

默认运费是指除指定区域的运费以外地区使用的模版。

包邮则不用计算重量,无论该数据多少kg运费都为0元,选择不包邮则需要设置首重和续重。

在运费计算里面,首重的kg数内是一个指定的价格,续重则为超过首重以后的kg数,增加的运费价格,一般快递公司是按照每超过1kg计算增加运费。

新建运费模版

第二步:为每个区域设置相应的运费价格。

按照普遍快递公司收费标准,为指定区域设置运费设置到省级就足够。以店铺发货点为始发地根据距离以及交通的便利情况置不同的区间价格。

以江浙沪为例,一般快递公司分为第一区间(江浙沪) 第二区间(皖赣鲁京津冀豫湘粤),第三区间其他 边远地区等价格。

选择指定区域

根据店铺需要,可以设置多个运费模版以用于其他活动或者其他快递公司

多个运费模版

第三步:设置每个商品的运费模版。

首先,模版需要根据重量计算运费,则每个商品的属性中需要输入重量。

一般商品重量包括 净重+ 包装重量 = 毛重。

商品计算运费的重量使用的是毛重。

商品编辑的毛重需要输入数字类型,用于在运费计算时作为统一单位计算。

其次为商品选择一个指定的运费模版,或者如果希望用户在下单时自己选择每个商品的运费模版时,商家可以设置可选的运费模版以及设置默认的运费模版。

设置运费模版

保存好后就可以按照规则计算运费了。

问题三:不同的多个商品选择了不同的运费模版,怎样才能合理计算运费保证商家和用户双方的利益呢?

一个订单只有一个商品时的计算运费方式比较简单:

if(商品毛重>该模版首重)

该订单运费 = 该模版首重价格+ceil(商品毛重-该模版首重) *该模版续重价格

else

该订单运费 = 该运费模版首重价格。

当多个具有相同运费模版商品,同一个订单默认同一个包裹发出,则不能分别计算独自的首重和续重,应该统一在一起计算运费,否则用户则相当于使用了2个包裹。

问题来了,如果不同运费模版商品怎么计算运费呢?同一个包裹发出不同的运费模版时(可能某个商品包邮,也有可能某个商品江浙沪需要运费,某个商品江浙沪不要运费),也不能分别计算独自的首重和续重,怎样才能同时保证商家和用户双方的利益呢?

一般取舍方案是:

  • 1)取最大首重价格的模版首重作为订单首重价格和首重门槛,然后你分别计算商品独自的续重价格。
  • 2)当有最大首重价格相同,首重单位价格相同,续重价格不同的模版时,选取最小续重的模版作为订单首重。
  • 3)当有最大首重价格相同,单位价格不同时,取单位价格最大的模版作为订单的首重。
  • 4)包邮商品不参与运费计算

计算方式如下:

1.先计算Max首重价格商品的运费值

2.顺序计算除去Max首重价格商品以外的商品毛重值
2.1 该商品毛重小于首重中剩余的重量,则不用计算运费,使用首重运费
2.2 该商品毛重大于首重中剩余的重量则多出来的重量则需要使用自增运费

(按照顺序计算逻辑简单也可以按照计算最优值,看计算复杂程度)

伪代码逻辑如下:
temp = 0;//temp首重中累计商品的毛重,最大值为首重
运费 = 0;

if(Max首重价格商品毛重 > 首重) {
运费 = 首重运费 + (temp – 首重)* Max首重价格商品的增重价格 ;
temp = 首重;
} else {
运费 = 首重运费;
temp = max商品毛重;
}

for(对其余有效商品遍历) {
if( 该商品毛重 <= 首重 – temp ) {
//该商品毛重小于首重中剩余的重量,则不用计算运费,使用首重运费。
temp = temp + 该商品毛重;

} else {

//该商品毛重大于首重中剩余的重量则多出来的重量则需要使用自增运费
运费 = 运费 + 该商品增重运费 *( 该商品毛重 – (首重 – temp));
temp = 首重;
}

}

举例说明:

模版A 首重3kg 5元,续重1kg 1元。

模版B 首重3kg 3元,续重1kg 2元。

模版C 首重2kg 5元,续重1kg 1元。

3个商品ABC 分别重 4kg,4kg,4kg,分别使用模版ABC,则首重则选择的是模版C的首重 2kg5元。

多个商品模版计算运费先取最大首重(单位首重)价格和最小增重价格的商品来计算所有商品毛重的首重。

则购买3个商品各买一件时的运费即为:

5(C的首重)+ (4-2)*1(商品C续重)+ 4*2(商品B续重)+4*1(商品A续重) = 19元

Why?为什么不直接选取最贵的首重费用模版直接计算首重和续重呢?

首先首重作为商品重量总和的一个台阶,只要有包裹产生则该最贵的首重价格必然产生。因此采取最贵首重的模版。

其次其他模版的商品相当于搭载了最贵首重包裹的顺风车,将多余的重量塞在了最贵首重的包裹里面,独立商品多出来的部分则独立计算多余金额。

因此这种算法考虑了商家和用户双方的利益有一定的合理性。

基本的运费计算方法已经介绍完成。当然还有重要的一点是:订单中总运费需要计算以外,每个商品的单独的运费需要在订单属性中保存下来,用于商品的退款计算等。另外,结合整体店铺的活动运费分摊到每个商品的运费价格还有需要注意的地方。

 

本文由 @曦曦冉冉L 原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自pixabay,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 学习了

    来自陕西 回复
  2. 你写的真的很棒,我可以转载到我的公众号吗?我会标明出处的!! 😳

    来自浙江 回复
  3. 如果abc都是重2.1kg呢?

    来自上海 回复
    1. 首重仍然是选择C模板 5(C)+(2.1-2)*1(C) + 2.1*2(B) + 2.1*1(B) = 11.4

      来自浙江 回复
    2. 首重仍然是选择C模板 5(C)+(2.1-2)*1(C) + 2.1*2(B) + 2.1*1(A) = 11.4

      来自浙江 回复
    3. 谢谢解答。不好意思,我的例子还是有问题。如果商品abc都是重0.8kg呢?

      来自上海 回复
    4. 5(C首重)+0.8*2(B续重)+0.8*1(A续重) = 7.4

      来自浙江 回复
    5. 这样不公平,如果实际这三样商品差不多重量和体积,明明可以一个首重5元就搞定的,现在却要多两个续重的费用

      来自上海 回复
    6. 不好意思,时间有点久了,刚我又看了下原来的公式,前面的回答我都写错了。

      【该商品毛重小于首重中剩余的重量,则不用计算运费,使用首重运费】。

      5(C首重)+(0.8(B重量)-(2(C首重标准)-0.8(C重量)-0.8(A重量)))*2(B续重) = 5.8
      0.8(B重量)-(2(C首重标准)-0.8(C重量)-0.8(A重量) 是B在首重中的剩余重量。
      其中 A和B的计算可以根据顺序计算,也可以按金额比最小顺序排序计算,看计算复杂度。

      来自浙江 回复
    7. B商品剩余重量不取整了吗
      5+ceil(0.4)*2=7

      来自浙江 回复
  4. 最后的举例让人最迷茫

    来自上海 回复
  5. 模版A 首重3kg 5元,续重1kg 1元。

    模版B 首重3kg 3元,续重1kg 2元。

    模版C 首重2kg 5元,续重1kg 1元。

    3个商品ABC 分别重 4kg,4kg,4kg

    仅仅这个示例,并没有照顾买方啊。
    若按笔者思路,总运费: 5(C的首重)+ (4-2)*1(商品C续重)+ 4*2(商品B续重)+4*1(商品A续重) = 19元
    A,B,C单独发,总运费: A费用+B费用+C费用= (5+1)+(3+2)+(5+2*1)=18元
    后者还便宜些了

    来自广东 回复
    1. 这个示例可能数据举例不够好,当然可以通过各种背包方式去找最优解,看开发成本。

      来自浙江 回复
    2. 背包?不是产品吗?怎么还知道算法?哈哈

      来自广东 回复
  6. 如果,是一个店铺里面,一个订单的话,里面包含了 不同类型的模版; 如有一个订单,里面有A、B、C三个商品,A商品是按件的模版;B商品是按体积的模版;C是按重量的模版;这个运费怎么计算啊,大神;以及哪家电商具体怎么解决的

    回复
    1. 不同的商品的模板应该分单计算运费。

      来自浙江 回复
  7. 不错,写得挺详细,期待后续文章

    来自河北 回复
    1. 谢谢关注。

      来自浙江 回复
  8. 请问关于订单的运费包邮活动和优惠券之间该如何处理?是先不考虑优惠券(因为不知道用户是否使用),根据订单的商品价格判断是否参与包邮,即使使用优惠券也不影响包邮活动;方案二:根据用户最终应付金额进行判断是否包邮,这就会出现多种情况。
    比如满50包邮,购买的60元的商品,但有一张20元的优惠券

    来自上海 回复
    1. 您好,我觉得包邮活动和优惠券的应该属于 促销活动的范畴。促销活动的是否采用包邮还是优惠券应该根据这两种促销活动的等级来确认。
      比如,包邮活动是店铺级别的,优惠券是平台级别的,则两个可以同时享有。这个可以根据您平台定的优惠策略的利润确定。
      如果两个都是店铺级别的,并且活动针对的都是同一个商品,则需要两个优惠活动需要互斥,只能推荐选择最好的那个优惠活动。

      您还可以参考一下我的另外一篇文章:http://www.woshipm.com/pd/944899.html

      来自浙江 回复
    2. 非常感谢,谢谢大神的指点 ❓ ,我再琢磨一下哈。有问题再向您请教!

      来自上海 回复
    3. 我也做产品不久,不是大神 😀 ,一起共同进步。

      来自浙江 回复
  9. 或者是5(首重)+ 4*1(A商品续重)+ (4-2)*2(B商品续重)+ 4*1 (C商品续重)= 17元 ?

    来自浙江 回复
    1. 实在很抱歉,确实 这个数据写错了。当时写的时候想成了没有超过 首重去了。
      —这句话是正确的————————————————
      其次其他模版的商品相当于搭载了最贵首重包裹的顺风车,将多余的重量塞在了最贵首重的包裹里面,独立商品多出来的部分则独立计算多余金额。
      ——————————————————————–

      计算公式是

      5(首重)+ (4-2)*1(商品A续重)+ 4*2(商品B续重)+4*1(商品C续重) = 19元

      来自浙江 回复
    2. 笔误: 5(C的首重)+ (4-2)*1(商品C续重)+ 4*2(商品B续重)+4*1(商品A续重) = 19元

      来自浙江 回复
    3. 终于更正了…前面这个公式看得我头很大…

      来自湖北 回复
    4. 哈哈。很抱歉。

      来自浙江 回复
    5. 突然想到一个问题,听听你的意见

      当运费模板是按件数计价时,会不会也出现这种情况?相同的算法吗

      来自湖北 回复
    6. 我觉得按件数是可以使用同样的算法。件数计算更为简单,不用给每次的SKU单品设置毛重。
      不过很多轻薄的商品比如衣服等一般是按件数计算。

      按件数算,淘宝的方式也是和按重量一样设置,可以选择首次件数,递增件数。
      首次件超过的情况如上面转换成件数
      4件 A商品 首次件3件5元,续1件1元
      4件 B商品 首次件3件3元,续1件2元
      4件 C商品 首次件2件5元,续1件1元
      5(C) + 2×1(C) + 4×2(B)+ 4×1(A) = 19元

      首次件不超过情况
      4件 A商品 首次件3件5元,续1件1元
      4件 B商品 首次件3件3元,续1件2元
      1件 C商品 首次件2件5元,续1件1元
      5(C) + 4×2(B)+ 3×1(A,按顺序A有一件被计算到首次件) = 19元

      按体积计算,淘宝也是按照重量,件数设置。不过就我知道的物流公司,
      体积计算方式是直接根据所有物件的体积相加,然后乘以每立方米的运费值得出。
      (长度的长宽高大小是按照最长的那端算)。
      上面公式也可以适用,不过所有按体积计算的模板公式都相同,得出的值也相同。
      每立方米 5元,续1立方米 5元。

      如有问题,欢迎继续讨论。

      来自浙江 回复
    7. 我觉得按件数是可以使用同样的算法。件数计算更为简单,不用给每次的SKU单品设置毛重。
      不过很多轻薄的商品比如衣服等一般是按件数计算。

      按件数算,淘宝的方式也是和按重量一样设置,可以选择首次件数,递增件数。
      首次件超过的情况如上面转换成件数
      4件 A商品 首次件3件5元,续1件1元
      4件 B商品 首次件3件3元,续1件2元
      4件 C商品 首次件2件5元,续1件1元
      5(C) + 2×1(C) + 4×2(B)+ 4×1(A) = 19元

      首次件不超过情况
      4件 A商品 首次件3件5元,续1件1元
      4件 B商品 首次件3件3元,续1件2元
      1件 C商品 首次件2件5元,续1件1元
      5(C) + 4×2(B)+ 3×1(A,按顺序A有一件被计算到首次件) = 19元

      按体积计算,淘宝也是按照重量,件数设置。不过就我知道的物流公司,
      体积计算方式是直接根据所有物件的体积相加,然后乘以每立方米的运费值得出。
      (长度的长宽高大小是按照最长的那端算)。
      上面公式也可以适用,不过所有按体积计算的模板公式都相同,得出的值也相同。
      每立方米 5元,续1立方米 5元。

      如有问题,欢迎继续讨论。

      来自浙江 回复
    8. 笔误: 😥 5(C) + 4×2(B)+ 3×1(A,按顺序A有一件被计算到首次件) = 16元

      来自浙江 回复
    9. 😎 多谢解答…笔误小公主

      不过我发现一种情况,当存在续(重/件)费用比首费用高的情况时,这种算法比各位首续分开算的方法产生的运费更多

      是否 行业内会存在续费比首费多的情况呢

      来自湖北 回复
    10. 如果不一定按顺序,把一个B算到C的首次件中,那么…
      5(C) + 3*2(B,B一件在C首次件中)+ 4*1(A) = 15
      😡

      来自湖北 回复
    11. 人人不能自己修改或删除自己的答案,头疼。 🙁
      1)续费如果比首费高的话,也没办法,还是需要按照首费+续费的公式计算。
      2)可以不一定是顺着的顺序,也可以是按照最优的顺序。比如再按照上面继续递归方式计算最贵的每件/每公斤 首重来选出商品也是可以的。
      我觉得这个计算也要考虑到计算复杂度。毕竟可能最终相差不了多少钱,而且,可能商品的模板也不会有这么多。

      来自浙江 回复
    12. 多谢解答,我又看了一些资料,已经差不多弄懂运费逻辑了,再次谢谢 😆

      来自湖北 回复
    13. 你看到的逻辑也可以分享出来,大家一起学习一下。

      来自浙江 回复
    14. 退货可能涉及到退运费,所以需要将运费分摊到各个商品上。上述订单运费是19元,那A B C三个商品的运费分别是7元、8元、4元吗?求作者指教

      来自浙江 回复
    15. 还有个问题,如果A B C三个商品的重量分别是0.2、0.3、0.5,加起来都不足2kg,那运费就是首重费5元,那三个商品的运费分别是多少?是按重量分摊吗?

      来自浙江 回复
  10. 按照这种计算方式,选择费用最大的C方案的首重,应该只对应2千克的货物,但是ABC三个商品在计算续重的时候却各自都减掉了2kg。也就是C方案的2kg的首重,最后却对应了6kg的商品。
    应该是5(首重)+ 4*1(A商品续重)+ 4*2(B商品续重)+ (4-2)*1 (C商品续重)= 19元 吧
    最近也在怼商城的物流费用问题,感觉头好大 o(╥﹏╥)o

    来自浙江 回复
    1. 我加了一个伪代码,你可以理解一下。原来的公式删除了。

      来自浙江 回复