跨境电商结算系统探索与实践

引言

跨境电商分为进口跨境电商和出口跨境电商。 进口跨境如考拉海购、天猫国际、京东国际这些,出口跨境也就是我们通常说的电商出海业务,常见的平台有速卖通、temu、tiktok,独立站shein等。

国内电商业务非常成熟,各种基础设施也非常完善。

出海电商相对来说不如国内方便,虽然可以在亚马逊、速卖通等平台开店,或者通过店匠、shopify等独立站等方式来开展跨境业务,但是对于规模以上企业来说,自建系统仍然是第一选择,尤其是平台型跨境电商,只能选择自研。

平台型跨境电商一般是自己搭建一整套电商基础设施,让第三方卖家在平台入驻开店,比如速卖通。

场景图

一般来说跨境电商的结算都要比国内复杂,因为海外收款基本都是外币,但是最终打到卖家卡里的资金却是人民币,这中间涉及到外币的结算、清分、换汇和提现。

定位

结算系统属于电商核心系统之一,向上承接交易订单,向下输出账单,提供资金、账户管理和对账等功能。

定位图

电商系统中面向C端用户的钱包、支付跟B端结算一般没有关联,在规模达到一定体量之前可共用的部分比较少,通常都会单独处理或者放到交易系统里实现,本文主要针对出口跨境电商的B端结算系统。

系统设计

在电商结算的初级阶段,自身的职责主要是向上承接交易系统的订单、运营系统输入的各种结算调整单据,按照预定的结算规则,把账目整理清楚(清分),并让归属于各个账户的资金流入对应的钱包,同时提供一系列工具来完成最后的资金划拨,这里面设计到的核心模型有用户、账户、结算单、账单、交易流水。

业务架构图

在实践结算系统之前,首先要了解一些基础的概念。

角色概念

「用户」指使用结算系统的自然实体,比如张三在平台开了一家店,那张三就是结算系统的用户,他所绑定的店铺产生的一系列结算数据,都归属于张三这个用户。

每个用户会根据不同的角色拥有不同的「账户」,结算系统所有的账务、资金活动都是基于账户进行的。在跨境电商结算中,卖家一般都拥有多个账户,为了降低系统复杂度,我们默认交易使用的外币统一为USD,那么卖家这个用户首先会开通一个USD币种的账户用来结算货款、平台佣金等项目;最终卖家要把钱提现到自己的银行卡,那还需要开通一个CNY的账户用来提现和绑定外部银行卡,把USD资金结汇成CNY这一步,我们可以通过平台虚拟户来实现,后文详解。

各种数据源提报进来的结算项目会在系统中生成「结算单」,记录金额、结算类型、费用类型、用户、账期等基本信息。

到账期以后,系统会根据结算单进行结算出账,生成「账单」,账单是一个账期内所有结算单的汇总。

生成账单以后,系统会在付款日对账单进行付款,生成「交易流水」,并通过交易流水进行记账。付款以后交易金额会流入对应的账户,关联账户会产生账户流水进行复式记账。

同理,卖家发起提现,在财务完成打款以后,也会生成交易流水,账户流水。

账期

账期也就是结算周期,一般有以下几种:

  1. 日结,结算范围是当天,一般是次日出账单,即T+1滚动账期,也可约定其他出账日,通常是T+N。
  2. 周结,结算范围是一周,一般是下周一出账单。
  3. 半月结,结算范围是半个月,一般是当月16号和次月1号出账单。
  4. 月结,结算范围是一个月,一般是次月1号出账单。

模型

实体模型

在上游业务发起提报后,进入结算分账流程,按结算主体拆分为结算单,按照提报币种进行结算。

提现单由卖家发起,不可拆分余额,一次提现创建一笔提现单,系统根据业务规则拆分创建打款单驱动资金划拨,此时与账单做关联绑定,后续打款完成后核销账单。

外币提现问题

如果平台没有二清资质,需要找第三方合作机构进行合规处理。

以银行作为清分机构为例,平台需要向银行上报商户的资质(九要素、反洗钱资料以及其他必要的合规信息)和订单信息,银行会根据订单计算商户的外汇收入,在商户发起提现以后,结算系统向银行发起清分结汇请求,最终由银行将美元(或其他外币)结汇成人民币打到商户的银行卡账户中。

相关推荐
小蜗牛慢慢爬行5 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
wm10431 小时前
java web springboot
java·spring boot·后端
小扳2 小时前
微服务篇-深入了解 MinIO 文件服务器(你还在使用阿里云 0SS 对象存储图片服务?教你使用 MinIO 文件服务器:实现从部署到具体使用)
java·服务器·分布式·微服务·云原生·架构
龙少95432 小时前
【深入理解@EnableCaching】
java·后端·spring
溟洵4 小时前
Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)
linux·运维·数据库·后端·sql·mysql
SomeB1oody7 小时前
【Rust自学】6.1. 定义枚举
开发语言·后端·rust
SomeB1oody7 小时前
【Rust自学】5.3. struct的方法(Method)
开发语言·后端·rust
啦啦右一8 小时前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring
森屿Serien8 小时前
Spring Boot常用注解
java·spring boot·后端
盛派网络小助手10 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#