什么是本地化定价?
每个产品都有一个基础货币的基础价格。本地化定价允许您通过为每种货币或国家设置的固定价格来覆盖该基础价格。通过在产品上设置pricing_mode 来开启此功能,然后为每个市场附加一条规则。
这是国际定价所采用的几个相互独立的调节手段之一,每个手段解决不同的问题:
本地化定价和自适应货币共同运作。当没有匹配的本地化规则时,产品会回落到其基础价格——如果客户已经使用您的基础货币,会直接收费,否则通过自适应货币转换。
用例
Exact Prices for One Market
在价格敏感的市场中收取特定金额。
by_country 规则可以让一款基础价格为 $20 的产品在印度以 ₹999 销售——这是您选择的确切数字,而不是 FX 转换结果。若要按国家自动降低价格,请改用购买力平价。Exact Prices per Currency Zone
$19.99 按实时 FX 汇率转换后,可能会得到 €18.43 这样不规整的数字。
by_currency 规则会设置您输入的确切价格——€9.99、¥1000、₹499。若要在所有货币中自动将转换后的价格舍入为简洁的尾数,请使用魅力定价。Reversible Market-Entry Promotions
要在新国家/地区推出产品?添加一条带有优惠价格的
by_country 规则,促销结束后再将其归档,即可回退到基础/自适应定价。规则会被归档而不会被删除,因此您可以保留一份清晰的记录,了解哪些规则曾在何时生效。Competitive Price-Matching
固定某个市场的价格,以匹配当地竞争对手。英国的 £9.00
by_country 规则会维持这一确切价格,无论 GBP/USD 汇率如何变动。核心概念
- 定价模式 — 产品在任意时刻恰好处于一种模式,由其
pricing_mode设置:by_currency:每种货币一个价格,与国家无关。所有使用 EUR 付款的人都会看到 €9.99。by_country:针对某个国家设置专属价格(印度为 ₹999),即使多个国家使用同一种货币也是如此。
- 固定金额,以最小货币单位表示 — 规则的
amount是货币最小单位的整数,与 API 中其他位置的表示方式相同:99900表示 ₹999.00,999表示 €9.99。这是您设置的价格,而不是转换后的金额。 - 匹配的规则优先于自动定价 — 当本地化规则适用于某个订单行时,该订单行会跳过 Purchasing Power Parity 和 Charm Pricing。结账时,客户支付您设置的金额,不做任何更改。在订阅计划变更时,如果规则使用的货币与订阅货币不同,则会进行转换;请参阅订阅计划变更时的应用方式。
- 没有匹配规则时 — 产品保持现有行为:使用基础货币的客户直接支付基础价格;其他客户通过 Adaptive Currency 进行转换。
- 匹配规则时费用包含在内 — 客户支付的金额正好是您设置的金额。Adaptive Currency 的 FX 费用由您承担(该笔交易按费用包含处理),而不是在此基础上另行收取,因此您声明的本地价格始终就是实际收取的价格。
在 Dashboard 中设置
1
Open the product form
在 Merchant Dashboard 中,前往 Products 并创建产品(或打开现有产品进行编辑)。像往常一样设置基础 Price 和货币。
2
Enable Localized Pricing and choose a mode
在 Pricing 部分勾选 Localized Pricing,然后选择 By Country 或 By Currency。

3
Add a price for each market
点击 Add Country Price 或 Add Currency Price,填写 Localized pricing 面板,然后点击 Add。您添加的每个市场都会显示在覆盖规则表中,之后可以编辑或移除。
- By Country
- By Currency
选择国家,选择货币并输入金额(例如印度输入 ₹999),然后点击 Add。
该国家现在会显示在 Country overrides 表中,您可以编辑或移除它。


4
Save the product
点击 Add product 保存。本地化价格会立即应用于之后的结账。
使用设置了规则的账单国家运行测试结账,并确认显示了本地化金额。
通过 API 管理
Localized Pricing 完全支持通过 API 使用。首先设置产品的定价模式,然后附加规则。设置定价模式
创建产品时(或更新现有产品时)设置pricing_mode。null 表示仅使用基础价格,即现有行为。
添加本地化价格
为产品附加规则。在by_country 模式下必须提供 country_code;在 by_currency 模式下必须省略该字段。
by_currency 产品,请省略 country_code。例如,对于所有使用 EUR 付款的客户,可以设置统一的固定 €9.99(currency: 'EUR'、amount: 999)。
列出、更新和归档
您只能更新规则的amount;创建后货币和国家不可更改。归档是幂等的软删除操作,因此规则将停止匹配,但仍会保留在历史记录中。
API Reference
查看完整的 Product Localized Prices endpoints:create、list、retrieve、update 和 archive。
在结账时的应用方式
本地化定价会按购物车订单行解析,并且仅适用于设置了pricing_mode 的产品。Dodo Payments 会从请求中读取两个信号:客户的账单国家,以及可选的 billing_currency(省略时,会根据账单国家推导货币)。
- 按国家:查找与账单国家匹配的规则。如果存在,客户将以该规则的货币支付规则金额。
- 按货币:查找与客户货币匹配的规则(即
billing_currency,或根据其国家推导出的货币)。如果存在,客户将以该货币支付规则金额。 - 没有匹配项,或没有
pricing_mode:使用基础价格;当客户货币与基础货币相同时直接收取,否则通过 Adaptive Currency 转换。
在订阅计划变更时的应用方式
当订阅者切换计划时,本地化定价会继续适用。当现有订阅变更计划为设置了pricing_mode 的产品时,新计划的价格会按照与结账相同的规则解析,并使用订阅中已锁定的账单国家和货币:
- 按国家:应用与订阅账单国家匹配的规则。如果规则货币与订阅计费货币不同,则按实时 FX 汇率转换规则金额——规则仍会应用,不会被跳过。
- 按货币:应用与客户计费货币匹配的规则,客户准确支付规则金额。
- 没有匹配项,或没有
pricing_mode:使用新计划的基础价格,并在需要时通过 Adaptive Currency 转换——与结账时相同的回退行为。
- 预览结果准确。 Preview Change Plan 返回的本地化金额与实际变更收取的金额相同。
- 续订保留本地化价格。 变更后,新计划会以其本地化金额续订,并保持费用包含状态——与以该价格创建的订阅完全一致。
- 按实际金额计算按比例计费。 升级时,未使用时间的抵扣额基于客户实际支付的旧计划金额计算,而新计划则按照其本地化规则定价。
- 安排的变更会在安排时锁定价格。 安排在计费周期结束时执行的变更,会收取安排时计算的金额,即使您在此期间编辑了规则也是如此。
- 计费货币不会改变。 计划变更不会切换订阅结算所使用的货币;使用其他货币的规则会通过 FX 转换为该货币。
- 附加项不支持本地化。 新计划中的附加项价格始终使用其基础定价。
重要行为
本地化规则的变更不会触发专属 webhook。解析后的金额会像其他任何价格一样,显示在生成的付款或订阅中。
最佳实践
- 设置合理的基础价格。 对于没有规则的所有市场,基础价格都是回退价格,并通过 Adaptive Currency 转换。
- 输入整洁的金额。 固定金额的意义就在于获得 ₹999、€9.99 或 ¥1000 这样的整洁价格,而不是 FX 转换结果。如需跨所有货币自动进行四舍五入,请参阅 Charm Pricing。
- 根据需求选择模式。 使用
by_country进行购买力定价;当每个货币区域使用一个价格即可满足需求时,使用by_currency。 - 促销时归档,而不是重新创建。 归档规则会将市场恢复为基础/自适应定价,同时保留历史记录;之后可根据需要重新创建规则或重新定价。
- 宣传总价前注意税费。 对于不含税产品,客户支付的是本地化金额加税费,因此不要在广告中将其标为最终价格。
相关内容
Purchasing Power Parity
按国家自动降低价格,为每个国家设置一个百分比。
Charm Pricing
在每种货币中将转换后的价格四舍五入为 49.99 等整洁的尾数。
Adaptive Currency
自动 FX 转换以及本地化定价所依赖的费用处理方式。
Tax-Inclusive Pricing
控制价格是否含税。
Pay What You Want
让客户选择金额。本地化规则不适用于此处。

