PAYATHON 2026

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 和接口文档保持一致。

备注:内容仅供参考。