Skip to content
返回变现与收入

货币支持

如何支持多显示货币同时以一种基础货币结算,无汇率风险。

为什么

客户想在本地货币看价 — 德国客户看 29 欧知多少,vs 29 美元需心算汇率转化降转化。但接受 30 货币付创汇率风险:若你显 29 欧且客户付欧元,你收欧元须转美元(你基础货币),且转化率变。解是仅显示多货币:按锁定率从你美元基价转在客户本地货币显,但美元收 — 客户卡按其银行率转,你总收美元。这给显示益(客户见熟悉数)无汇率风险(你总美元结算)。最常见错是按显示货币收 — 你担汇率风险,若欧对美跌 10%,那些客户收入跌 10%。本地货币显,基础货币收。

何时使用

当你有国际客户(> 20% 收入来自基础货币区外)时。多数 SaaS 上线 6 月内。

如何做

1. 选基础货币(多数 SaaS 美元)— 这是你结算、报收入、定价的货币
2. 定价页加显示货币转化:检测访客位置(从账单地址或无则 IP 地理作备),并在基价旁显转化价
3. 用支付处理器的日锁汇率(Stripe 货币转化 API)— 勿用实时率,结账会话中变且困惑用户
4. 基础货币(美元)收 — 客户卡发行按其率转,你收美元;客户可能见与显示价微异(其银行率 vs 你显示率),所以加注:"美元收 — 你银行可能按不同率转"
5. 坚持本地货币付的客户(部分 EU 企业要求 EUR 发票会计),用 Stripe 多货币结算:EUR 收让 Stripe 按日率自动转 USD
6. 定价页勿给货币选择 — 这生决策摩擦;检测并显示,但让客户在计费设置中改若在意
7. 汇率动 > 5% 时更新显示价 — 若你显 29 欧且率动使美元价现 32 欧则更新显示;过时显示价结账时困惑
8. 仅基础货币报收入 — 多货币收入报创汇率损益复杂化会计;让支付处理器处理转化并报结算美元额

示例

# 显示货币转化(仅显示,美元收)
const BASE_PRICE_USD = 29;
const FX_RATES = { USD: 1.0, EUR: 0.92, GBP: 0.79, JPY: 150 };  // 日锁

function displayPrice(countryCode: string) {
  const currency = COUNTRY_CURRENCY[countryCode];  // DE → EUR
  const rate = FX_RATES[currency];
  const localPrice = BASE_PRICE_USD * rate;
  return { amount: localPrice, currency, base: { amount: BASE_PRICE_USD, currency: "USD" } };
}
// 德国访客见:"26.68 欧(美元收 — 29 美元)"
// 他们付 29 美元,其银行按银行率转欧

# Stripe 收(总美元)
await stripe.paymentIntents.create({
  amount: 2900,         // 29.00 美元
  currency: "usd",      // 总美元
  customer: customerId,
  description: "EZ4Code Pro — 美元收",
});
// 客户银行对账单:"29.00 美元"或"27.20 欧元"(银行转化)

# 要求 EUR 发票的客户(B2B)
await stripe.paymentIntents.create({
  amount: 2668,         // 26.68 欧元
  currency: "eur",
  customer: customerId,
});
// Stripe 按日率自动转美元并美元结算

常见问题

  • ⚠按显示货币收 — 你担汇率风险,若本地货币对基跌 10% 收入跌 10%。本地显,基收。
  • ⚠用实时汇率 — 结账会话中率变,显示价和收额异,困惑用户。用日锁率。
  • ⚠定价页给货币选择器 — 这生决策摩擦且多数用户不在意。自动检测并显示,计费设置中可改。

最佳实践

  • ✓按访客本地货币显(自动检测)但基础货币收 — 这给显示益无汇率风险。
  • ✓用支付处理器的日锁汇率 — 实时率结账中变困惑用户;锁率会话稳。
  • ✓显示价旁加"美元收"注 — 这设期望并防客户银行对账单显微异额时的支持工单。