InfoQ 研究中心诚意出品,一份报告带你走进中国 2000 万开发者 了解详情
写点什么

聊聊账务系统

  • 2020-09-28
  • 本文字数:4861 字

    阅读完需:约 16 分钟

聊聊账务系统

在讲解账务系统之前,先讲解什么是记账。


记账的历史可追溯到古代,我们的祖先在很早以前就会通过结绳记事来记录实物和部落的收获。随着社会和生产力的发展,结绳记事已经不能满足人们记录的需求了,现代社会活动中人们需要记录的物品种类也越来越多,看待财产的角度也多种多样:在日常生活中有消费流水的记账,在企业经济经营活动中有成本、收入与利润的记账,还有银行和金融机构交易过程中资金流水的记账。


如果按以上记账类型来分类,则可以把记账分为如下三种。


(1)以个人、家庭流水记账为主体的个人财务软件。在移动互联网高速发展的今天,有大量的个人、家庭财务应用涌现,例如:网易出品的网易有钱-专业记账管钱应用就是一个随手记账的理财应用,可以全面管理个人资产,主要功能覆盖记账、理财、消费券管理、欠还款日程管理、资产管理、自动记账、投资理财、消费管理、快捷记账等,同时支持云端数据自动同步和账单报表统计。支付宝也自带记账功能,例如支付宝年度账单、消费记录等。


(2)以中小企业经营活动为主体的财务系统。这类系统发展得非常成熟,在国内主要以用友账务软件和金蝶财务管理平台为代表,一般适用于中小企业经营活动,部署在企业私有云、公有云或单机上,基本覆盖中小型企业财务管理的几大环节:账务管理、固定资产管理、人力资源成本核算、工资管理、出纳管理、经营分析与统计报表。这类系统主要为企业决策者、股东提供企业财务健康度评估、经营活动决策、成本控制与利润分配等相关数据支撑。


(3)以商业银行、金融机构、第三方支付机构为代表的账务系统。这类系统与前面两种有较大区别,以账户为中心来记账,需要支持海量账户数量和账务数据的核对、核算,同时需要有较强的安全性、设计性和容灾处理性等。


本章主要以第 3 种类型来讲解账务系统的概念、业务流程和系统实现。


5.1 账务系统的概念

账务系统,从概念上来讲,指专门用于账务处理的计算机软件系统,也是银行信息化建设的核心之一。第三方金融(支付)机构的账务系统往往参照商业银行的账务系统标准来设计,涵盖记账、对账及核算三大主要功能。


银行或第三方支付机构的业务系统往往需要用户的资金数据进行核算,将处理结果汇总并生成凭证送往账务系统进行统一处理。账务系统充当虚拟货币的银行角色,银行资金管理系统则管理着真实的货币。


账务系统的主要功能是如实记录涉及资金变化的信息流和资金流,通过记账、对账、核算等来识别账目之间的差异,保证账户的内外部(银行、账户余额)同步,通常涉及会计科目、账户等模块。


如图 5-1 所示是一个用户的支付动作业务流程图,可以看到,记账与对账始终贯穿了整个业务流程,大致分成以下几步。


(1)用户在商户 App 或网站上选择商品并支付、结算。


(2)商户系统的服务端将支付请求发出去,支付数据流经过用户、商户(设备)、收单行(第三方支付机构、中国银联、商业银行)、中国网(银)联,最后到达商户发卡行账户(或第三方支付机构)。


(3)资金的结(清)算从支付数据流的终点开始进行,经过发卡行、网(银)联中心、收单行、商户系统等。


(4)商户的账户收到钱。



图 5-1


其中,账务系统起到至关重要的作用,它在发卡行、中国网(银)联、收单行、商户系统等角色之间对支付金额、手续费、优惠金额(分润过程)进行记账、核对,最后对各方的资金、利润进行核算和分配,再通过资金平台系统或收付接口将对应数量的资金分别打入以上角色的相关资金账户。


5.2 账户

要谈账务记账,必谈账户,第三方支付机构、金融机构和商业银行的账务系统都是以账户为中心的。账户实质上是一种凭证,可将其归结为资产、负债、所有者权益、收入、费用和利润等 6 个会计要素。


5.2.1 账户分类

账户按照功能来分,可以分成以下几种,如图 5-2 所示。


(1)客户资产账户:指用户在支付系统中用于交易的资金所有者权益的凭证,专门为客户提供资产管理服务,主要用于资金的收付款活动,其中包含客户的余额,也叫作余额账户或支付账户。


(2)零钱账户:也叫作消费账户,一般指第三方支付机构根据资金的多少和用途来划分的一类账户,例如支付宝和微信支付系统中用户的零钱账户,该账户通常用于日常开支和消费,将部分资金放在零钱账户里不使用时,支付机构会按理财利率计息,自动赚取相应的收益。


(3)储值卡账户:可大致分为银行储值卡账户和会员储值卡账户。银行储值卡账户通常代表存款(活期或定期储蓄)账户;会员储值卡账户通常是会员的充值账户,用于存储奖励储值金、积分或电子优惠券等。


(4)收益账户:在账户中的收入超过支出时,收益汇总账户代表净收益的余额账户。理财、利息的收益一般被存放在收益汇总账户中。在某些第三支付机构钱包里面,这部分账户的余额限制用户提现,仅用于第三方支付机构内部的商业产品应用和线下商场消费。


(5)信用(贷记卡)账户:由商业银行对符合信用级别的消费者给出信用证明,允许其在额度范围内进行透支,最后由发卡行、商户和持卡人共同结算。



图 5-2


除了以上账户,部分机构一般还会根据用户的使用情况设立一个虚拟的内部账户与实体账户对应,主要用于承接应收和实收等交易操作。


5.2.2 备付金账户

备付金账户是第三方支付机构众多账户中最重要的一个,第 4 章粗略讲解了备付金的概念,本节将详细讲解备付金账户的开立、管理和结算。


备付金有两个重要特征:预收代付和实际收到,如果不同时满足这两个特征,就不属于备付金。也就是说,不属于预收代付的不是备付金,属于预收代付但没有实际收到的也不是备付金。对属于预收代付但没有实际收到资金(即在途资金)的情况,通常以到达账户的时间为准,这部分资金也不属于备付金。


例如:对加油卡充值后,现金金额只转到了我们的备付金账户上,我们在加油站加油时进行支付,使用的就是备付金,充值卡账户在加油站消费系统里面就是备付金账户。


简而言之,备付金的概念是预收(先存放)进去,未来要代(支)付出去,备付金账户的关联关系如图 5-3 所示。



图 5-3


如图 5-3 所示的客户既可以是第三方支付机构或其他金融机构,也可以是买方;如果是第三方支付机构或其他金融机构的话,则备付金主要用于收付交易用户的资金;如果是买方的话,则备付金主要用于收付商户的资金。


1. 备付金管理


备付金管理主要由备付金存管银行和备付金合作银行负责。第三方支付机构在开展支付业务时,都需要在中国人民银行下属的分支机构开立备付金专用存管账户。这些为支付机构提供备付金存管服务的境内银行业金融机构被称为备付金存管银行。


备付金合作银行可以为支付机构办理客户备付金的收取业务和本银行支取业务,并负责对支付机构存放在本银行的客户备付金进行监督。


备付金存管银行和备付金合作银行之间的区别如下。


(1)支付机构在法人所在地中国人民银行分支机构开立“备付金集中存管账户”(也叫作央行 ACS 账户),并且只能开立一个备付金存管账户;可以根据业务场景的需要来选择备付金合作银行,备付金合作银行可以有多家。


(2)备付金存管银行和备付金合作银行的账户分立,是为了方便管理和明确监管责任。备付金存管银行可以为支付机构办理客户备付金的跨行收付业务,负责归集、核对与监督支付机构存放在所有备付金银行的客户备付金信息。


2. 账户开立


第三方支付机构需要在中国人民银行本地分支机构开立对应的备付金专用存款账户(即备付金集中存管账户)。该账户根据用途和合作银行的不同,分为以下三类。


(1)备付金存管账户。第三方支付机构在中国人民银行开立的备付金存管账户,可以以现金、商业银行转账、自有资金划拨形式接收客户备付金,并以本行转账及跨行转账形式向商户和个人支付相关资金或费用。


(2)备付金收付账户。第三方支付机构在备付金合作银行开立的账户,可以以现金、商业银行转账(本行或跨行)、中国银联或网联转账形式接受备付金,以本银行资金内部转移形式办理客户备付金支取和资金调拨业务。


(3)备付金汇缴账户。第三方支付机构的备付金汇缴账户可以同时开立在备付金存管银行和合作银行。汇缴账户可以以现金、网银转账或者本银行资金内部调拨形式接收客户备付金,但不可办理备付金支取业务。备付金存管银行应当于每日营业终了前,将备付金汇缴账户内的资金全额划转至备付金存管账户或在同一合作银行开立的备付金收付账户。支付机构也可以通过备付金汇缴账户将客户的备付金直接退回至原资金转出账户。


3. 账户结算


第三方支付机构只能通过备付金存管银行办理相关客户委托的跨行付款业务,以及调整不同备付金合作银行的备付金银行账户头寸。支付机构在备付金合作银行存放的客户备付金,不得跨行划转至备付金存管银行之外的商业银行,即备付金合作银行账户之间不能进行资金调拨和划转,而且在其他不同支付机构的备付金银行之间不得办理客户备付金的划转。


根据中国人民银行的规定,支付机构应当在收到客户备付金或客户划转客户备付金不可撤销的支付指令后,办理客户委托的支付业务,不得提前办理。


对应到以上三类账户的话,备付金存管、收付、汇缴三类账户的功能数量、使用条件不同,监管功能由强到弱。


l 备付金存管账户由中国人民银行集中、统一监督和管理,功能齐全,具备本行和跨行之间收付款、自有资金划拨、调整备付金账户金额等功能。


l 收付账户由合作银行开立和管理,仅具备合作银行本行的付款功能,不具备跨行转账功能。


l 汇缴账户在存管银行或者合作银行开立,支持本行收款和原路退还业务,其资金需要日终清零,并归集到备付金存管账户或收付账户。


账户模型

在设计账务系统时,需要对资产账户、零钱(个人消费)账户、储值卡账户、收益汇总账户及贷记(信用)账户进行账户建模、操作抽象和关系建立。


在记账过程中抽象出来的账户属性、关系链有以下几种。


(1)账户编号:是客户在商业银行或金融机构开立账户时经过系统授权并给予的唯一编号。账户编号并不是一组随机、无意义的数字编号,而是具有从属关系、明显业务分类和业务标识的一类编号。对账户进行科学、合理编号,有利于编制会计凭证、登记账簿、查阅账目等会计、审计工作,同时便于系统和人为识别、分类、核对。


(2)账户余额:指当前账户里现存且未使用的货币数量,其中包含当前可用余额和当前不可用余额。例如:在日常生活中,商家为了销售和留住顾客,给予顾客账户相应的代金券(不可提现金额),对于用户提现操作来讲,这部分代金券就是不可用余额。


(3)可用余额:指当前账户在当前场景、当前时刻可以使用的金额。


(4)冻结余额:指当前账户里不可使用的金额。其中涉及几种类型的冻结原因:因原子业务(转账操作)操作冻结资金,造成账户资金处于不可使用状态;或因政策、法律、个人账户错误操作及付款停滞等原因造成账户资金处于不可使用状态;因与商家签订对应的销售活动协议造成账户资金处于不可使用状态(例如运营商的充值按月返现活动)。


(5)货币种类:指以上余额的金融币种属性,余额 + 币种 = 真实价值。


(6)借贷属性:借贷是会计行业中的术语,它表明了会计记账的方向,也表示账户金额增加和减少的双方。


在会计 T 字账借贷中:“借”表示资产、费用、成本的增加,以及负债、收入、所有者权益的减少;“贷”表示负债、收入、所有者权益的增加,以及资产、费用、成本的减少。


(7)所属科目:指所从属的会计科目,会计科目指对会计要素中对象的具体分类核算项目,针对会计对象的具体内容,科目设置不同,而且不同企业对科目的设立也不尽相同。一般所属科目设置的依据是对资金的运动进行第 3 层划分,按经济内容对资产、负债、所有者权益、收入、费用和利润等会计要素做进一步分类后的类型名称。


(8)账套:指对存放会计核算对象的所有会计业务数据文件的一种总称,在一个账套里面包含的文件有会计科目、记账凭证、会计账簿、会计报表等。同时,它是一组相互关联的数据,每个独立核算的企业都有一套相互关联的账簿体系,把这套完整的账簿体系建立在计算机系统中就叫作一个账套,一般来讲一个企事业单位或公司只会用到一个账套,但如果在一个大型的集团公司中有几个独立核算的下属实体子公司,就可以建立多个账套。


本文转载自公众号技术琐话(ID:TheoryPractice)。


原文链接


聊聊账务系统


2020-09-28 10:003414

评论

发布
暂无评论
发现更多内容

【JS】防抖与节流---在定义时返回的是回调函数

Sam9029

JavaScript 前端 防抖节流 9月月更

哈希索引

周杰伦本人

9月月更

【C语言深度剖析】重点详解函数的形参和实参、传值和传址

Albert Edison

开发语言 传值 C语音 9月月更 传址

全球新兴市场移动应用报告

易观分析

移动应用

Nodejs安装及环境配置

nodejs NVM 9月月更

redis数据类型

想要飞的猪

Ansible如何使用lookup插件模板化外部数据

山河已无恙

ansible 9月月更

【中秋特辑】嫦娥妹妹,你别着急~

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

2022 WAIC 闭幕,融云提供分论坛元宇宙直播技术支持

融云 RongCloud

直播 元宇宙

数据治理(十二):Ranger2.1.0源码编译

Lansonli

数据治理 9月月更

ERP是什么?

优秀

ERP

Web & Electron 平台即时通讯产品的技术选型

融云 RongCloud

Web Electron 即时通讯

Java进阶(十)tomcat中context配置

No Silver Bullet

tomcat Context 9月月更

「工作小记」多个页面的相似操作公共化设计方案

叶一一

前端 设计思维 9月月更

Python 教程之数据分析(7)—— Jupyter Notebook 入门

海拥(haiyong.site)

Python 9月月更

Python 教程之变量(1)—— 变量、表达式、条件和函数

海拥(haiyong.site)

Python 9月月更

这个中秋,国潮元宇宙的A新玩法是……?

文心大模型

Java进阶(十三)servlet监听器

No Silver Bullet

Java Servlet 9月月更

LeetCode-448. 找到所有数组中消失的数字(Java)

bug菌

9月日更 Leet Code 9月月更

支撑全产业AI,需要怎样的算力服务?

脑极体

C++学习------cmath头文件的源码学习02

桑榆

c++ 9月月更

LeetCode-316. 去除重复字母&&1081.不同字符的最小子序列(Java实现)

bug菌

9月日更 Leet Code 9月月更

社招前端二面常见面试题

coder2028

JavaScript 前端

云渲染为设计行业带来哪些福利?

3DCAT实时渲染

「趣学前端」今日祝福不限量,批量导入在路上

叶一一

前端 设计思维 9月月更

基于threejs中秋佳节之际带你遨游星空🌃

南城FE

前端 中秋 three.js

中移链DDC-SDK技术对接全流程(二)

BSN研习社

区块链、

2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,

福大大架构师每日一题

算法 rust 福大大

为什么低代码和专业代码走向融合才能破解低代码困境?

牛刀专业低代码

低代码 低代码平台

当代用电行为大赏:有人心疼电费,有人靠屋顶光伏“理财”

脑极体

【JS】两种实现-懒加载的方式-附无限滚动案例

Sam9029

JavaScript 前端 懒加载 9月月更

聊聊账务系统_移动_曹兵强_InfoQ精选文章