Qeasy Cloud
Get Started

跨境对账为什么不换算汇率:原币直接比对的三条理由

· 何海波· AI Financial Reconciliation· 4 views· 10 min read
原币对账汇兑损益汇率表跨境财务勾稽校验

摘要:跨境对账不比折算后的金额,比的是原币。汇率每天在动,先折算再比差异永远对不平;汇率影响是汇兑损益,不是对账差异;跨币种要比必须先统一口径。这篇讲透三条理由、勾稽恒等式和汇兑差额的处理。 关键词:原币对账、汇兑损益、汇率表、勾稽恒等式、汇兑差额、外币单据

一、先折算再对账,差异为什么永远对不平

每到月底都有人问:这笔美元订单,我按一个汇率折成人民币跟账上的数比,差了几十块,到底哪儿错了。不是账单错了,也不是账做错了,是比之前多做了一步。

把账单上的美元先换成人民币,再跟账上的人民币比,左右两边根本不是同一件事。左边是按某个汇率折出来的数,右边是账上按另一个时点、另一个汇率记的数。差异里混着汇率,也混着账务问题。

正确的做法是:账单原币金额,跟账上应收的原币金额直接比,不做换算。

拿一笔速卖通订单看。美元结算那一腿是 −20.40 美元,备注里写着汇率 6.7670;人民币结算那一腿是 138.05 元。

拿 6.7670 反算:20.40 × 6.7670 = 138.0468 元,跟 138.05 差 0.0032 元。

这 0.0032 是分位舍入——两条腿各自保留到分,加总后跟原币折算值差半厘不到,不是错,是各自进位。

这 0.0032 元正是"比原币"的直接证据。 先折算再比,它就是查不出原因的差异;比原币,它是一条能解释清楚的舍入尾巴。

二、理由一:账单里的原币,才是平台真正记下的那笔金额

平台在它自己的系统里记的,是原币。速卖通那 20.40 美元就是 20.40 美元,PayPal 那笔欧元就是那笔欧元。平台不会替我们记人民币数——它不知道我们会用哪天、哪一家的汇率。

解析脚本列表页共 54 条脚本,覆盖亚马逊、独立站 PayPal 与 Stripe、沃尔玛、速卖通等平台,每行显示脚本名称、版本号、代码长度和复制、编辑、历史、试跑操作

这张脚本列表一共 54 条,账单类型有 Amazon 资金明细、独立站 PayPal 交易明细、空中云汇结算明细、Stripe 余额交易明细、速卖通人民币结算账单等。

同一套对账规则要同时吃下十几种账单格式、十几个币种。 底层口径必须定死:解析出来的每一行都带原币金额和币别,不在解析这一层做换算。

原因很实在。换算一旦下放到每条解析脚本,每条脚本就要各维护一张汇率表,来源还不一样;账单改个版、汇率类型调一次,就得逐条改一遍。换算位置越靠下,口径漂移的风险越大。

三、理由二:汇率造成的影响是汇兑损益,不是对账差异

这两件事长得像,性质完全不同。

对账差异是同一件事的两边金额对不上——一边是平台账单,一边是你的账。要么漏了单,要么金额算错,要么归属错了账期。这是业务和账务问题,要追,要改。

汇兑损益是持有外币资产负债期间汇率变动带来的价值变动。准则口径很清楚:初始确认按交易日即期汇率或合理近似汇率折算;资产负债表日按当日即期汇率重新折算;差额计入当期损益。

汇兑损益是算出来的,不是对出来的。 它的输入是汇率,不是账单金额。

对比项对账差异汇兑损益
是什么同一笔业务两边金额对不上汇率变动带来的价值变动
怎么来查:漏单、补单、口径、账期算:交易日与资产负债表日即期汇率之差
能不能追原因能不能,它不是错
进不进差异率进不进,单独列示

把汇兑差额混进对账差异,有两个后果。

第一个后果是差异率失真。 差异率是管理层看的经营指标,用来判断某个店铺的账干不干净。里面混进汇率波动,运营好时被抬高,运营差时被压低,指标就不反映事实了。

第二个后果是追不下去。 对账差异的追法是找差异原因:漏单、补单、金额口径、归属账期。汇兑差额没有原因码可填,它是一个算出来的数,填进差异原因里,下一个人接着查就会走死。

轻易云在核算项目上就把汇兑差额单列成一类,单独映射到负数费用应收单,不跟平台佣金、仓储费挤在一起。做差异归因先看落在哪一类,汇兑类直接放行。

反直觉的地方就在这里:常识说"对不上就是有问题"。 这句话有前提——同一口径、同一币种。跨币种比出来的差额不满足这个前提,它不是"有问题",只是"没比"。这就是常识失效的原因。

精度上也有硬指标:

字段精度说明
汇率Decimal(10,6)6 位小数放得下 6.7670
金额Decimal(20,4)4 位小数,外币金额入库不丢精度

为什么汇率 6 位、金额 4 位?因为 0.0032 这种分位差要如实存下来,才能证明"这条差异是舍入,不是错账"。精度不够,差异会被四舍五入吃掉,变成查不出来的窟窿。

四、理由三:跨币种要比较,先统一口径,否则是假差异

到这一步容易绕进去:平台一个账期给你两种结算腿(速卖通就是美元结算加人民币结算),美元账单和人民币账单怎么放一起比?总不能一边对美元、一边对人民币。

答案是:先统一口径,再比原币。

统一到哪一层?统一到"同一条业务腿"上。两条腿说的是同一笔钱,那就拿它们各自跟账上对应的那条腿比,各自比的还是原币;两条腿之间的差额,是拉到同一币种之后才产生的。

这一步做完,勾稽关系是一个恒等式:

Σ原始金额 = Σ结算金额 + Σ汇兑差额,容差 0。

读法是:同一条业务腿的原始金额和结算金额,统一折算到同一币种后,两者之差就是汇兑差额。三项加回来必须严丝合缝,容差是 0。

勾稽项取数口径含义容差
Σ 原始金额账单原币金额,按币别分别汇总平台记的那笔0
Σ 结算金额结算腿实际到账的金额钱真正进来的那笔0
Σ 汇兑差额两条腿之间的汇率差额折算过程中产生的那部分0

分位舍入的场景另算,允许差 < 0.005。但这个 0.005 得有名字——它叫舍入余量,不是"差不多就行",超了就得回头找原因。

五、汇率不写死在单据上:账套汇率表按单据日期带出

这是实操里最容易犯的一个错。有人在制单时打开汇率表,抄个数字填到单据上。

填了反而会和汇率表打架。

原因在取数规则上:外币单据上的汇率,由 ERP 账套的汇率表按「汇率类型 × 币别 × 单据日期」带出。三个条件定一个数,单据上落的是规则,不是手填的数字。

单据上写死汇率会出两个问题。一是和汇率表对不上:汇率表调整了历史汇率,单据还是老的。二是对不上就是错:单据日期是 10 号,你填 15 号的汇率,在账务上就是用错汇率。

所以单据上不填汇率,填的是"按哪个口径取"的规则。 取数是自动的,结果可复算。

编辑解析脚本弹窗,左侧是独立站 PayPal 交易明细 v1.1.1 的基本信息与原始需求描述,右侧账单解析脚本工程师助手给出静态复审结论并列出 3 处潜在问题

这张图是编辑独立站 PayPal 交易明细解析脚本(v1.1.1)的界面。左边是元信息和原始需求描述,右边是复审助手的结论:整体逻辑和注释口径一致,但列出 3 处潜在问题。

币别和金额这两列的口径就写在这段脚本里:取哪一列、要不要乘汇率、负号带不带,全在脚本里定。脚本改一个字段,账期重跑结果就不一样。

轻易云在解析脚本这一层提供的是「先复审、再试跑、最后生效」:改完不直接进生产,先在沙箱里跑一遍,看这个口径改动会让哪些账期、哪些金额动。

整体技术架构图,自上而下分为表现层、业务逻辑层、数据层、基础设施层四层,业务逻辑层包含网关、核心对账域、集成中心等模块,基础设施层连接外部 ERP 系统

这张架构图是四层结构:表现层、业务逻辑层、数据层、基础设施层。业务逻辑层里并排放着网关、核心对账域、集成中心,基础设施层挂着外部 ERP 系统。

把汇率放到图上看,位置就清楚了:汇率表在 ERP 那边,对账在核心对账域这边,中间靠集成中心连。 汇率要走的是集成这条路,从账套汇率表按条件取回来落到单据上。这也解释了为什么不能让解析脚本自己折算:脚本属于对账域,汇率属于 ERP 域,硬写死就抹掉了两个域的边界。

六、汇兑差额单独成类:出负数费用应收单,不并入收入

汇兑差额最后落到单据上,位置是明确的。

归其他费用类,出负数的费用应收单。 三条规矩:

  1. 单独成类。 汇兑差额有自己的核算项目分类,不跟平台佣金、仓储费混在一起。
  2. 出负数费用应收单。 汇兑差额一般是负数,单据金额为负。
  3. 不并入收入,也不出收款单。

第三条要单独说。并入收入是收入口径被污染:收入是交易的产物,汇兑差额是汇率的产物,两个混在一起,后面算毛利率、算净额口径都得手工抠出来。

换成收款单更糟。 收款单意味着钱进账了,而汇兑差额并没有进银行账户,它是账面价值变动。出了收款单,银行账号和币别的校验会直接拒单;就算没被拒,账上也会多出一笔不存在的资金流水。

拿速卖通的人民币结算账单看:整张单子 270 条数据行,核算项目只有 3 类——汇兑、换汇结算、扣款。

没有任何一行指向主营收入。 这张账单本身是资金侧的账单,不是收入源。把它当收入源,跟美元侧那份一合计,同一笔生意就记了两遍,双计。

再看换汇那一批的构成:258 条汇兑、6 条换汇结算、6 条扣款,汇兑是绝对大头。

沙箱机制价值图,中间是解析、对账、分摊、转换四类沙箱脚本,左侧是业务人员自助编写与即时生效等业务灵活性,右侧是双层隔离、强制终止、只读查询等安全性要点

这张图讲沙箱机制:中间四类沙箱脚本——解析、对账、分摊、转换;左边是业务灵活性,业务人员自己写自己改、即时生效;右边是安全性,双层隔离、强制终止、只读查询。

轻易云把汇率口径的调整也放进这套沙箱流程:解析脚本改了哪一列、对账规则改了哪一条、转换映射改了哪一条,都先在沙箱里跑一遍,不动生产账。

放到汇率这件事上,意义很直接:调汇率口径、改解析脚本、改转换规则,都不用等月结。改动在沙箱里跑完看结果,再决定要不要推到正式账上。

为什么这点值得单说?因为汇率口径的问题,多账期、多币种一起跑才暴露。 换三个币种、两个账期一起跑,差异分布的形状就清楚了,而月结那两天没时间慢慢试。

七、落到实施和日常操作上的几条硬规则

给实施顾问和财务负责人各留几条。

给实施顾问:

  • 账单行上带币别和原币金额两列,这两列不做任何折算;
  • 汇兑差额单独一个核算项目分类,映射到负数费用应收单;
  • 收款项和汇兑类款项在单据类型上分开,不然转换环节容易串。

给财务负责人的自查口径:

  • 做差异分析前先确认两边是不是同币种,不同币种的差额先剔出去,别混进差异率;
  • 汇兑差额要能从费用应收单里单独捞出来,单独看数;
  • 月结前跑一次多账期、多币种,看汇兑差额是不是集中在某几个币别上。

最后提醒一句边界。 汇兑差额计入当期损益这条,准则上没有争议;但具体用哪个汇率类型、哪些单据算差额、进管理费用还是财务费用,准则不管,这是企业会计政策,要由财务负责人拍板并写下来,不能每个月临时定。


三条可以今天就做的动作

第一,找出这个账期里所有跨境账单的结算腿,标出币别和原币金额;确认对账比对用的是原币金额,没有在比对之前先折算。

第二,挑一笔带汇兑差额的记录手工验一遍:原币金额乘汇率是否等于结算金额,差的是不是只有分位(小于 0.005)。能验通,说明口径没问题。

第三,把汇兑差额从收入里剥出来单独看一眼:是不是单独成类、有没有出负数费用应收单、有没有混在收款单里。三项有一项不对,今天就改。

Original content. Please credit the source when reposting: https://www.qeasy.cloud/insights/reconciliation/16-10-no-fx-conversion-in-recon

Comments