> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 支付与结算中的汇率

> 跨币种订单使用哪一个汇率、何时报价与重新报价、为什么本地金额在 UTC+8 中午会变化、已应用的汇率在 API 和 Portal 中显示在哪里，以及结算和退款各自如何选取汇率。

[金额与币种](/docs/zh/developer-docs/core-concepts/currency)中写到 Waffo 会自动换算跨币种订单。本页讲的是这句话背后的机制：用哪个汇率、何时报价、在哪里可见，以及结算时和退款时会发生什么。

## 跨币种订单用的是哪个汇率？

当您的 `orderCurrency` 与客户实际支付的币种不同时，该订单即为跨币种订单。Waffo 会针对正在定价的支付方式，为该货币对报出一个汇率——以订单币种为基准货币、支付币种为报价货币——然后叠加您合同中约定的加价：

```
payable amount = orderAmount × base rate × (1 + contracted markup)
```

结果随后会**向上**取整到支付币种和支付方式所接受的精度——有些支付方式只接受整数倍或固定小数位——取整产生的差额会作为单独的调整项记录，而不是并入汇率。

## 为什么本地金额上午和下午不一样？

因为每日标准汇率并不是按自然日生效的。每个汇率窗口持续一天，但切换点是**每天一个固定时刻（UTC+8），并非零点**，因此在切换前定价的订单和切换后定价的订单，即便落在同一个日历日，同一货币对用到的也是不同汇率。

两点补充说明：每一个报出的汇率都带有自身的有效期和过期时间，所以每日切换只是常规刷新点，并不保证汇率在窗口内不会被替换；而您合同中约定的加价有独立的生效日期，与汇率窗口无关。

## 汇率会锁定吗？锁多久？

没有可以购买或开启的汇率锁定产品。实际存在的是一个快照：

* 汇率在**计算应付金额定价时**报出，并连同汇率引用和过期时间一起存储在订单上。
* 如果应付金额**在收银台被重新计算**——例如促销码改变了订单金额，或者购物者切换了支付方式——则会在那个时刻重新报价。购物者提交时看到的金额就是实际扣款金额。
* 已授权订单之后的\*\*请款（capture）\*\*会复用订单上存储的汇率，不会重新报价。

## Waffo 有汇率查询接口吗？

没有。没有汇率报价接口，没有汇率锁定接口，也没有需要单独申请开通的 FX 锁定服务。不要基于这些去做集成。汇率会作为订单的一部分返回给您：

| 您想要 | 使用 |
| - | - |
| 某一笔订单实际应用的汇率 | 创建响应中的 `orderAction.actionData.exchangeRate`，或 `POST /api/v1/order/inquiry` |
| 客户将要支付的金额 | 同一个 `actionData` 中的 `paymentAmount` / `paymentCurrency`，或查询接口中的 `finalDealAmount` |
| 多笔交易的汇率 | Portal 结算报表与导出，而不是 API 调用 |

## 有两个 `exchangeRate` 字段，分别是什么？

| 字段 | 谁的汇率 | 应理解为 |
| - | - | - |
| `orderAction.actionData.exchangeRate` | Waffo 对该订单应用的汇率 | 文档定义为订单币种与支付币种不同时的 `paymentAmount ÷ orderAmount` |
| `payMethodInfo.exchangeRate` | 支付方式在客户支付过程中自己使用的汇率 | 仅供参考——钱包或银行在其侧使用的汇率，与 `userPaymentAmount` / `userPaymentCurrency` 一起返回 |

如果存在由客户支付的服务费，会以 `userFeeAmount` / `userFeeCurrency` 单独返回。在把任意两个金额的比值当作纯汇率之前，请先把这部分费用考虑进去。

## 在 Portal 哪里能看到汇率？

| Portal 位置 | 字段 | 覆盖范围 |
| - | - | - |
| 交易详情 | `Payment Amount` 及其币种 | 面向客户的金额；没有汇率字段——汇率隐含在与订单金额的比值中 |
| 结算 → 预估 | `Forex Currency Pair`、`Est. Forex Rate` | 尚未结算订单的**预估**换算 |
| 结算 → 结算批次 | `Exchange rate`，显示形式为*原始金额 = 目标金额* | 实际执行的换算，按订单币种展示 |
| 结算报表 | `Forex Currency Pair`、`Forex Rate` | 逐笔交易，见批次详情和自定义导出 |

预估页面由菜单权限控制：如果它出现在您 Portal 的导航中，则说明您的账户可以使用。其数字带 `Est.` 前缀是有原因的——它们在结算执行前计算，仍有可能变动。

## 我的结算是按订单的汇率换算的吗？

不是。结算换算是一个**独立事件**，使用自己的汇率，在结算处理时应用——而不是订单上存储的汇率。这就是为什么批次上的 `Settlement Original Amount`（按订单币种净额）和 `Settlement Target Amount`（同一笔钱换算后的金额）是不同币种，也是为什么在换算完成前目标金额为空。

即使您的订单币种已与结算币种相同，结算行上也会出现 `Forex Currency Pair`，因为费用和税费可能以第三种币种计费。货币对按固定优先级解析，当货币对为空时 `Forex Rate` 也为空——这两点均在[结算报表与导出](/docs/zh/support/settlement-reports-faq)中说明。

## 退款用的是哪个汇率？

始终使用**原订单存储的汇率**，绝不重新报价。支付与退款之间的汇率变动不会改变客户收到的本地退款金额。

| 退款 | 面向客户的金额如何得出 |
| - | - |
| 全额退款 | 从原始应付金额中扣除由客户支付的费用和税费部分 |
| 部分退款 | 退款的订单金额按订单的纯 FX 汇率按比例换算 |

退款金额会**向下**取整到支付币种的精度——与订单定价的方向相反——因此退款永远不会超过原始应付金额，而换算后金额取整为零的退款会被拒绝而不是发出。多次部分退款之间的取整规则见[退款 FAQ](/docs/zh/support/refund-faq)。

***

在核对某个具体数字？请携订单 id [联系支持团队](mailto:support@waffo.com)——应用的汇率、应付金额和取整调整项都存储在该订单上。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.