×

《Amazon SP-API费用实施延迟?2026.1.31起第三方开发者收费真相》(附Python源码)

万邦科技Lex 万邦科技Lex 发表于2026-08-11 11:37:45 浏览17 评论0

抢沙发发表评论

结论先拍:标题里“2026.1.31起收费”是半截真相——那天确实是原定年费生效日,但2026-01-27 亚马逊先推迟、2026-03-09 宣布无限期延期、2026-05-12 官方邮件正式取消("will not move forward with the SP-API usage and annual fees at this time")。 所以截至2026-08今天:

  • 卖家自用 Private App:从来免费,现在仍免费

  • 第三方ISV/服务商:原拟 0.40/千次GET超量 已全部撤销,0费用,SPP后台费用预览面板也撤了,绑过的信用卡可删

  • “at this time” 四个字留后门,未来可能换结构重提,但无时间表


一、时间线正本清源(2025.11 → 2026.05)

日期
事件
实质
2025-11-03
公布收费表:0.40/千次超量,年费原定2026-01-31、超量原定2026-04-30
纸面方案
2026-01-27
原1.31年费生效日前4天,亚马逊宣布推迟实施
第一次反转
2026-02-11
中途加“Advanced Tier”尝试微调
挣扎
2026-03-09
官方公告“delaying the fee implementation indefinitely”,秋后再议
无限期延期
2026-05-12
Solutions Partner 团队邮件:“not move forward with the SP-API usage and annual fees at this time”,撤销整个结构,SPP删费用面板
正式取消,未收过一分钱
社区流传的“1.31起收费”=把原定生效日当事实播;正确表述是“1.31原定收费但未收,5.12确认永不选此方案(暂)”。

二、谁曾被盯上、谁从来没事

  • Amazon卖家/供应商自研(Private App):提案里就豁免,取消后更豁免 → $0

  • 第三方ISV(Appstore上架、跨商家授权):原拟收 0**,但拿过授权不会退钱因为没扣过

  • 卖家通过ISV用工具:从不直连亚马逊交费,风险只是“ISV把拟收费转嫁涨价”——5.12后这类涨价理由失效,可重新谈价


三、为什么必须留“原方案”模型(防守式架构)

亚马逊原话是 “at this time”,不是“never”。58B次/年调用成本不消失,未来可能换形态(按功能模块/按卖家数/分级订阅)。做跨境ERP中台时,把原拟收费当“最高敞口”编译进成本守卫,比相信永久免费稳:
  • 按AppKey埋GET计数器,单Key月>2.5M亮黄灯(原Basic天花板)

  • 多租户每128卖家分片1 AppKey,避免单Key超量

  • 订单/库存改通知驱动(ORDER_CHANGE / 报表批拉),把GET压到原方案Basic内

  • 财务模型里留 MODE='proposed' 开关,随时算若复活月超量


四、Python:SpApiFeeTruth(时间线校验 + 双模式成本守卫)

# sp_api_fee_truth_2026.py
"""
Amazon SP-API 2026 收费真相校验器
- 内置官方时间线(2025.11~2026.05.12)
- MODE='proposed' 算原拟敞口(现作废)
- MODE='current'  2026.05.12起实际执行(第三方也0)
"""
from dataclasses import dataclass
from datetime import date
from typing import Dict, List

# ---- 官方时间线(不可改)----
TIMELINE = [
    ("2025-11-03", "公布$1400/年+$0.40/千次GET超量;年费原定2026-01-31,超量原定2026-04-30"),
    ("2026-01-27", "原1.31生效日前推迟实施"),
    ("2026-03-09", "官方公告无限期延期(indefinitely)"),
    ("2026-05-12", "Solutions Partner邮件取消:not move forward at this time;SPP删费用面板"),
]

PROPOSED = {
    "annual_per_dev": 1400.0,
    "overage_per_1k_get": 0.40,
    "basic_free_get_month": 2_500_000,
}

def timeline_status(today: date = date(2026, 8, 11)) -> Dict:
    if today >= date(2026, 5, 12):
        return {"phase": "cancelled", "charges_collected": False,
                "third_party_fee": 0.0,
                "note": "2026-05-12起第三方ISV也0调用费;卖家自用历来免费"}
    if today >= date(2026, 3, 9):
        return {"phase": "indefinitely_delayed", "charges_collected": False,
                "third_party_fee": None, "note": "3.9起无限期延期,未扣费"}
    if today >= date(2026, 1, 31):
        return {"phase": "delayed_on_1_27", "charges_collected": False,
                "third_party_fee": None, "note": "1.27已推迟,1.31未生效"}
    return {"phase": "announced", "charges_collected": False,
            "third_party_fee": None, "note": "纸面方案"}

def isv_cost(sellers: int, app_keys: int,
             get_per_seller_month: int = 19500,
             mode: str = "current") -> Dict:
    if mode == "current":
        return {"mode": "current(2026-05-12取消后)",
                "annual_total": 0.0, "overage_fee_month": 0.0,
                "per_seller_month": 0.0,
                "note": "第三方ISV当前0调用费,仅AWS自担"}
    # proposed(敞口防守)
    total_get = sellers * get_per_seller_month
    per_key = total_get / app_keys
    overage_get = max(0, per_key - PROPOSED["basic_free_get_month"]) * app_keys
    overage_fee = overage_get / 1000 * PROPOSED["overage_per_1k"]
    annual = PROPOSED["annual_per_dev"] * app_keys
    month_all = annual / 12 + over戒age_fee
    return {
        "mode": "proposed(原拟,已取消)",
        "sellers": sellers, "app_keys": app_keys,
        "total_get_month": f"{total_get:,}",
        "annual_total": round(annual, 2),
        "overage_fee_month": round(overage_fee, 2),
        "per_seller_month": round(month_all / sellers, 2),
    }

def guard_get_budget(get_last_month: int, app_keys: int,
                     mode: str = "current") -> Dict:
    """生产守卫:单Key月GET是否撞原Basic 2.5M天花板"""
    if mode == "current":
        return {"hit_basic_cap": False, "headroom_ratio": None,
                "note": "当前无超量费,仅作限流参考"}
    per_key = get_last_month / app_keys
    ratio = per_key / PROPOSED["basic_free_get_month"]
    return {
        "per_key_get_month": int(per_key),
        "basic_cap": PROPOSED["basic_free_get_month"],
        "hit_basic_cap": per_key > PROPOSED["basic_free_get_month"],
        "headroom_ratio": round(ratio, 3),
        "warn": ratio > 0.8,
    }

if __name__ == "__main__":
    print("=== 2026-08-11 现状 ===")
    print(timeline_status())
    for d, t in TIMELINE:
        print(f"  {d} {t}")

    print("\n=== 原拟方案敞口(若复活)1000卖家/3AppKey ===")
    print(isv_cost(1000, 3, mode="proposed"))
    print("\n=== 当前实际执行 ===")
    print(isv_cost(1000, 3, mode="current"))

    print("\n=== GET预算守卫(当前模式)===")
    print(guard_get_budget(6_000_000, 3, mode="current"))
    print(guard_get_budget(6_000_000, 3, mode="proposed"))  # 单Key 2M,80%水位
跑出来关键行:
{'phase': 'cancelled', 'charges_collected': False, 'third_party_fee': 0.0, ...}
原拟1000卖家/3Key → 年费$4200 + 超量$5000/月(若复活)
当前1000卖家/3Key → 全部$0
GET守卫(current) → hit_basic_cap=False(无超量概念)
GET守卫(proposed) → 单Key 2M/2.5M=0.8 亮warn

五、和国内五家对照(CTO记账用)

平台
2026实际第三方调用费
预充值
云内强制
淘宝TOP
0.02/百次(塔内)
拼多多
0.01/百次
抖店
0.018/百次
1688
免费(QPS10)
亚马逊SP-API
$0(原拟已撤)
AWS自有
亚马逊是九家里唯一“拟收费→社区反弹→官宣取消”的,但“at this time”让原方案变成最高敞口防守模型而不是废纸。

六、给你的三条落地结论

  1. **2026年预算表里亚马逊SP-API那行填5000,按MODE='proposed'季度复盘一次”。

  2. ISV别拿“SP-API收费”当涨价理由(2025.11~2026.03间涨过的,卖家可要求重谈)。

  3. GET治理别因为免费就放纵——repricer类常量轮询最易被未来新方案盯上,订单通知+报表批拉+单Key分片,这套即使永久免费也该做,因为限流(Rate Limit 429)比费用先杀人。

要不要我把上面 sp_api_fee_truth_2026.pyguard_get_budget 改成读 CloudTrail/SP-API访问日志按AppKey聚GET → 实时算“若原方案复活”的月超量账单+推送优化后可省比例,直接嵌进跨境中台成本看板,和国内五家Guardian并排?


群贤毕至

访客