银行核心账务设计入门必读

要了解银行核心系统,需要从银行核心账务系统了解,实际上,银行的核心本质就是玩转账务。

常见基本概念

  • 客户: 这个比较简单,就是指实体,可以是个人、企业。
  • 账户: 用于记录和反映特定主体(如个人、企业、机构等)经济活动和资金状况的一种工具或载体。
  • 分户账: 一个实体可以开多个账户,每个账户也可以称之为分户,那么分户账简单理解就是账务明细和账户基本信息,如账户明细包含日期、摘要、借方发生额、贷方发生额,交易后余额等,账户基本信息包含账户开户日期、账户类型、客户信息等,以及一些其他相关的记录,如利息计算、账户状态变更等。
  • 明细账: 这个是和总账息息相关的,是对总账科目的进一步细分和详细记录,用于核算企业的各项经济业务,按明细科目分类,提供详细的会计信息,如应收账款明细账,会按不同客户设置明细科目,记录与各客户的往来款项。会计分录是明细账登记的依据,明细账是会计分录的详细反映。

分户账

账号

平时我们用的银行卡是账户吗?

null

答案是否定的!!!

虽然卡号和账户号有对应关系,但它们并不完全相同,不能相互替代使用。

举个例子: 一张借记卡可能同时关联着活期储蓄账户和定期储蓄账户,用户可以通过银行卡在不同账户之间进行资金划转等操作。

那针对不同的场景,可以在银行内部开设不同的账户,那账户号基本上都是有含义的,结构是一般如下:

null

账户号组成

一般情况下,账户号组成部分一般包含不变的要素,如客户号一般是不太变化的,是可以作为账户的一部分的,如开户行可能就不太适合了,毕竟银行网点可能会取消。

分户账

举个例子,你的活期账户某一天有动账,情况如下:

null

活期存款账户发生余额变动

根据上述信息,那么在2025-03-18日的余额为:
上日余额+今日贷方发生额-今日借方发生额=今日余额

即:1000+500+200-300-100=1300

为啥不是 上日余额+今日借方发生额-今日贷方发生额=今日余额;

因为站在银行的角度上,储户的活期属于银行的负债,负债类科目是借减贷增。

上日余额+今日贷方发生额-今日借方发生额=今日余额 ,这个账的记录就是分户账。在记录分户账的过程中,衍生出两个概念,账户明细和账户余额

null

交易分别记录到账户明细和账户余额表

(1)账户明细:记录每一笔明细交易,一般设计的字段有"账号,工作日期,发生额,借贷标志,对方账户",主要是进行插入操作。

(2)账户余额:记录账户的当前最新的余额,一般设计的字段有"账号,工作日期,昨日余额,当前余额"。其中"当前余额"到当天晚上就变成了"今日余额",到了第二天早上就变成了"昨日余额",主要是进行更新操作。

热点账户

热点账户是指短时间内有大量的资金收付,包括转账、汇款、支取现金等一种或者多种交易类型的多笔交易。使得账户频繁更新,为保证余额准确,更新前需要上锁,并发时造成等待,而演变成热点账户。

在银行系统中,比较常见的账户是内部户、一些客户账户。

内部户

举个例子,银行和银联对接,会涉及到待清算账户, 如果发生频繁交易,会导致这个待清算账户频繁发生更新,严重时可能导致系统不可用。

客户账

有些客户如存在发工资场景,也会频繁更新账户,使账户演变成热点账户。

缓冲记账

null

1、将交易先实时并行插入临时登记簿中。

2、后台起一个线程扫描临时登记簿中获取一批未入账 的记录,并锁定这些记录,然后汇总更新热点账户,最后再将锁定记录改成已入账,然后释放锁。

银行系统处理转账,一般都是先扣款,再存款,因为必须保证付款方有足够的余额,才能保证交易成功。

先借后贷

站在银行的角度上,先借后贷意味着先扣款后入账,上面也提到过,客户的存款属于银行的负债,所以A转账给B的时候,对应的会计分录逻辑是借为减贷为增,所以才有先借后贷的说法。

为什么要先借后贷?

假定两客户存款户 A 和 B 在同一数据库中,则一个数据库事务就可以搞定该会计分录,即可由数据库事务来保证"业务事务"。但是,如果两客户 A与 B 不在同一数据库中,特别是在分布式环境中,则需要两个数据库事务才能完成该会计分录。但它们却是一个"业务事务",即业务角度上,要么同时成功,要么同时失败。两个数据库事务如何实现一个"业务事务"?两个数据库事务按先后执行的次序,主控程序有三种情况:

(1)第一个成功,第二个成功;

(2)第一个成功,第二个失败;

(3)第一个失败,第二个不做。

第一种情况和第三种情况,在业务上是符合要求的,那我们只需要考虑第二种情况即可。

第二种情况,只需要对第一个成功进行逆处理就好了呀!道理是没错,但是要保证逆处理能成功才可以。

null

上图中的情况一,如果B先入账,A后扣账,B入账成功,A扣账失败,如果这时候对B入账进行逆处理,但是B提前把钱提取走了,逆处理就会失败,这就造成了资损,这在银行是红线!!!

总分核对

总分核对是会计核算中确保总分类账(总账)与明细分类账(明细账)金额一致性的关键步骤,主要目的是验证账账相符,避免记账错误。

总分类账(总账) :按一级会计科目(如 "银行存款""应收账款")汇总登记所有经济业务的账簿,反映资金变动的总括情况。

明细分类账(明细账) :按二级或更详细科目(如 "银行存款 --- 工商银行""应收账款 --- 客户 A")记录具体交易的账簿,提供详细数据

银行在进行联机交易的时候,后台系统主要做两部分工作:记分户账&记日志。

null

记分户账

null

记日志

总账数据怎么来的?

总账是从日志中计算出来的,把日志中的活期记录进行汇总,相应科目的科目数据。总账的每个科目,每一天都记一条记录。

null

总账结构

null

总分核对过程

图中的日志A和日志B的设计,叫做双日志设计,实线是当前在用的日志,虚线是昨日日志,每日日终切换,这样设计目的有2点,一是提升性能,二是批量汇总不影响联机交易。

也许你有疑问,这个有什么可核对的呢?不就平的吗?

是的,理论上,这个是平账的,但是也会有不平的情况,一是网络异常等系统原因导致的不平,二是认为故意的不平(试想:我直接操作数据库给自己加一笔钱,是不是太可怕了)

总分核对的本质是 "数据传递链的校验" ,而非重复劳动。即使数据理论上同源,手工操作误差、系统缺陷或人为舞弊仍可能导致账账不符。通过定期核对,企业可确保财务数据的准确性,强化内控,为决策提供可靠依据。

试算平衡与差错处理

试算平衡是会计核算中的一项核心程序,用于验证所有账户的借方总额与贷方总额是否相等,以确保记账过程的准确性。其本质是通过数学平衡原理,检查分录编制、过账及汇总环节是否存在方向性错误。

null

试算平衡的原理

借贷记账法规则:

每笔分录的借方金额必须等于贷方金额。
恒等式:

全部账户借方发生额合计 = 全部账户贷方发生额合计

全部账户借方余额合计 = 全部账户贷方余额合计

试算平衡的步骤

步骤 1:编制试算平衡表

null

试算平衡表

列出所有总账账户(如库存现金、应收账款、应付账款等)。记录每个账户的期初余额、本期借方发生额、本期贷方发生额及期末余额

步骤 2:验证平衡关系

检查发生额:

总借方发生额是否等于总贷方发生额。

检查余额:

总借方余额是否等于总贷方余额。

步骤 3:差错处理

如借方发生额小于贷方发生额,差额是 Δ,那么首先需要临时找一个科目把 Δ补起来,这个科目称为挂账科目(也称其他应收)。然后再查具体是哪个科目发生了错误,查到之后,再从挂账科目结转到错误科目

null

差错处理

如果借方发生额大于贷方发生额,则临时科目为其它应付。

差错处理方式

(1)抹账 :也就是反交易,一般都是当天进行反交易,反交易需要找到

原交易,在日志里面把标志置为作废,然后在明细中减掉相关明细交易记录。

(2)冲账 :冲账不作废历史交易,其实就是一笔新交易,冲账分为以下

几种情况。

重复入账 。比如重复汇款了两次,需要把其中一笔交易冲掉,采用双

边红字修正。所谓红字修正,就是新增一笔原来一样的交易,但是数字的符

号是相反的。

遗漏入账 。比如遗漏汇款了,需要补一笔交易,采用双边蓝字,蓝字

就是正常的交易,但是要填以前的日期。

汇错收款人。比如本来应该是 A 汇款给 C,但是错误汇给了 B,采用单边红字和单边蓝字。

东边有耳:一个大龄码农,先后在支付公司、电商公司、银行工作,对于支付业务和银行业务有一定的理解,有兴趣的小伙伴可以一起交流成长。

往期回顾:

深度解析小额支付系统

深入讲解中国大额支付系统

深度解析中国支付清算体系

相关推荐
GeekAGI3 分钟前
macOS 查看 CPU 使用 TOP 的进程
后端
lamdaxu20 分钟前
结构型设计模式--享元模式
后端
星辰絮语29 分钟前
JDBC操作MySQL数据库
后端
水滴石轩32 分钟前
HarmonyOS TEXT 使用ResourceManager同步转换字符串的最佳实践
性能优化·架构
Java水解38 分钟前
【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现软件开机自启
java·后端·rust
Asthenia04121 小时前
LinkedList vs. ArrayDeque:实例化选择与NPE问题的分析
后端
JavaGuide1 小时前
JDK 24 发布,新特性解读!
java·后端
颜淡慕潇1 小时前
生物医药蛋白分子数据采集:支撑大模型训练的技术实践分享
人工智能·后端
程序员小刚1 小时前
基于SpringBoot + Vue 的图书馆座位预约系统
vue.js·spring boot·后端
奋斗的小方1 小时前
Springboot实战篇(1):项目概述及环境搭建
java·spring boot·后端