Amazon退款XML feed为何忽略ReturnShipping金额
支付老李
结论
问题不在 XML 结构或 DocumentVersion。ReturnShipping 不能用于指定 Amazon 预付费退货标签的收费金额。此类标签费用由 Amazon 的退货系统根据标签和承运商的结算结果计算并记账,因此退款 feed 中的 ReturnShipping 可能不会生效。
如果需要从商品退款中扣除平台允许卖家收取的费用,应使用 RestockingFee。不要再通过 ReturnShipping 或增加 RestockingFee 来补偿退货标签费用,以免重复扣款。
为什么其他金额可以生效
Principal、Tax 和 RestockingFee 会直接影响订单的退款金额:
Principal:退还商品本金。Tax:退还税费。RestockingFee:从退款中扣除符合平台规则的费用,通常填写负数。ReturnShipping:适用于 Amazon 支持的特定退货运费调整场景,并不是卖家指定预付费退货标签价格的通用入口。
如果退货标签由 Amazon 的退货流程生成,其费用和最终结算金额不会由 POST_PAYMENT_ADJUSTMENT_DATA feed 中填写的金额决定。Feed 被成功接受,也不表示其中每个不适用于当前场景的 Component 都会体现在买家退款中。
建议的处理方式
1. 从退款 feed 中删除 ReturnShipping
只提交实际需要退款或扣款的组件:
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.02</DocumentVersion>
<MerchantIdentifier>XXXXXXXXXXXX</MerchantIdentifier>
</Header>
<MessageType>OrderAdjustment</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderAdjustment>
<AmazonOrderID>XXX-XXXXXXX-XXXXXXX</AmazonOrderID>
<ActionType>Refund</ActionType>
<AdjustedItem>
<AmazonOrderItemCode>XXXXXXXXX</AmazonOrderItemCode>
<AdjustmentReason>CustomerReturn</AdjustmentReason>
<ItemPriceAdjustments>
<Component>
<Type>Principal</Type>
<Amount currency="USD">20.00</Amount>
</Component>
<Component>
<Type>Tax</Type>
<Amount currency="USD">1.40</Amount>
</Component>
<Component>
<Type>RestockingFee</Type>
<Amount currency="USD">-4.00</Amount>
</Component>
</ItemPriceAdjustments>
<Quantity>1</Quantity>
</AdjustedItem>
</OrderAdjustment>
</Message>
</AmazonEnvelope>
这个示例的净退款金额为:
20.00 + 1.40 - 4.00 = 17.40 USD
2. 单独核对退货标签费用
对于 Amazon 生成的预付费标签,应到对应的退货记录、付款结算报告或相关交易报告中核对费用,不能根据退款 feed 的处理结果判断标签是否收费。
标签费用可能要等承运商扫描或完成结算后才会出现,因此不一定与买家退款同时入账。
3. 检查 feed 处理报告
处理报告只能表明 XML 是否通过验证,以及退款消息是否已被接受。如果报告显示处理成功,但订单退款没有采用 ReturnShipping,通常说明该组件不适用于当前订单或退货场景,并非 DocumentVersion 有误。
注意事项
- 金额应尽量采用标准货币精度,例如
3.90、20.00,避免提交-3.900000这类带有多余小数位的数值。这未必是本次问题的原因,但能减少验证或舍入差异。 RestockingFee的负号表示从退款中扣减。是否允许扣除及其最高额度,取决于站点、退货原因和当时适用的 Amazon 退款政策。- 不要将 Amazon 已经收取的预付费标签费用再次计入
RestockingFee,否则可能造成重复扣款。 - 如果退货标签不是由 Amazon 生成,而是卖家自行购买并提供,是否可以向买家扣除费用仍取决于对应站点和订单场景。不能仅凭 XML 枚举中存在
ReturnShipping就认定可以扣款。 - 从这份 XML 无法看出将
DocumentVersion从1.02改为1.01可以解决问题。版本号应与当前使用的 schema 和接口文档保持一致。
备注:内容仅供参考。
