支付最后的黑盒,賬務核心
賬務核心應該是支付三大黑盒“對賬中心、支付引擎、賬務核心”中門檻最高的了。因為他既有會計核算知識,又有懂技術實現(xiàn)高性能的記賬,今天我就用“大白話+圖片”的方式盡可能通俗易懂的給家介紹這個黑盒是如何設計的。
一、什么是核算
核算通俗地講就是一套會計從原始憑證到財務報表的會計處理流程。會計核算的內(nèi)容有近十項,但是對于結算類業(yè)務來說其實只要核算到會計賬簿即可,剩下的都是財務內(nèi)部營收核算的工作了。
圖1:核算處理過程
核算不是一招鮮吃遍天,他要結合業(yè)務場景經(jīng)濟項目來做核算,比如銀行就有存款核算、貸款核算和支付核算三大核算業(yè)務,這三塊業(yè)務核算的側(cè)重點都各不相同,其核心還是圍繞業(yè)務場景通過會計方法來記錄、檢查、計算和分析整個業(yè)務處理過程。
二、賬務核心設計
賬務核心是支付平臺的所有賬務的基準。他日間與支付引擎配合記錄聯(lián)機交易清算賬務,日終與對賬中心配合處理期末的核算賬務。
日間聯(lián)機交易分為內(nèi)場結算和外場清算,賬務核心負責內(nèi)場結算賬務的處理。為了實現(xiàn)支付高性能,賬務核心采用了實時和緩沖記賬的方式。優(yōu)先更新客戶資金余額,異步方式進行內(nèi)部戶更新和賬簿登記。
圖2:支付核心主流程
2.1 業(yè)務架構
賬務核心是支付平臺的賬務基準,其業(yè)務架構分為了“賬務服務、賬務系統(tǒng)、會計系統(tǒng)”三個主要的子系統(tǒng)。
圖3:賬務核心業(yè)務架構
1)賬務服務:對外為支付引擎、會員系統(tǒng)提供入賬和賬戶管理服務。
2)賬務系統(tǒng):提供賬戶和會計子系統(tǒng)的記賬和余額更新的管理和調(diào)度。
3)分錄系統(tǒng):登記分錄流水完成賬簿登記和余額更新處理,與賬務系統(tǒng)相互依賴同步結果。
4)日終系統(tǒng):也稱為總賬系統(tǒng),負責會計日切、總賬核算和日結。
2.2 賬務核心主流程
圖4:賬戶核心主流程
1)資金與賬簿分離
賬務系統(tǒng)優(yōu)先更新客戶資金和記錄單邊賬務(即先貸后借),讓用戶可以及時了解到資金的變動情況和查詢到明細記錄。而完整的內(nèi)部明細賬務通過實時和異步的方式由會計系統(tǒng)補充記錄。
對于復雜的分賬類交易,需要通過入賬規(guī)則控制,在分賬完成后再同步交易對手余額。
2)實時與緩沖記賬:
會計系統(tǒng)記賬有實時和緩沖兩種方式。
- 實時入賬:會計系統(tǒng)根據(jù)入賬流水(憑證)生成分錄流水,然后定時任務掃碼來入賬。
- 緩沖記賬:對于會頻繁更新一些內(nèi)部戶可以配置緩沖規(guī)則,來進行定時的異步記賬。
3)日終總賬的匯總:
每天會計日切后,系統(tǒng)會抽取賬戶內(nèi)外部賬戶的分戶余額存入日余額表,并且匯總當日的明細賬最終形成總賬,并生成總賬試算平衡表。
支付三流合一
此處我們再來回顧下《白話結算》時所說的支付三流合一,把“資金流”和“賬務流”區(qū)分出來,就能更好的理解業(yè)務場景和系統(tǒng)實現(xiàn)的必要性。如果兩者揉在一起,賬務核算就會成為你難以逾越的痛。
2.3 賬務科目設置
圖5:科目與賬戶的關系
2.3.1 總賬類科目
一級科目又被稱為總賬科目,是財政部制定的,企業(yè)可以根據(jù)業(yè)務所需進行裁剪??傎~科目在系統(tǒng)實現(xiàn)層面就是一張總賬匯總表。
圖6:總賬類科目特性
2.3.2 明細類科目
一級以下的科目是明細類科目,可以由企業(yè)自行設置。明細科目只允許末級科目設置賬戶和賬簿,中間的科目僅做分類使用。
末級科目層級按照不同業(yè)務場景有三級、四級,一般來說銀行資金鏈路較短是三級,支付機構有訂單因此多為四級。
圖7:科目核算關系
科目的核算公式是我們所熟知的“會計恒等式”,在這個公式里面我們舍去了“所有者權益”,增加了待清算和損益類科目。
有些公司為了科目的簡潔損益類合并到“資產(chǎn)類-其他應收”和“負債-其他應付”,而我們保留損益類是為了科目核算清晰和便于理解。
2.4 賬務與核算體系
2.4.1 賬務核算體系
圖8:賬務核算體系
賬務核算分為“賬戶層、賬務層、賬簿層、總賬層”四層,他們共同組成了對資金和賬務的整體處理與核算。其中賬簿一層是核算的基準,因此他的登記準確是至關重要的。
1)賬戶層(應用):負責對外提供會員系統(tǒng)對客戶賬戶的使用,對內(nèi)的會計科目、內(nèi)部賬戶的管理,
2)賬務層(資金):根據(jù)記賬憑證來記錄賬戶間資金和余額的變動。資金需要通過這些賬戶來完成對內(nèi)資金的結算和對外跨行資金的清算。
3)賬簿層(賬務):按照會計分錄記錄每一筆賬務的明細。其中明細賬簿的賬務核算,是驅(qū)動資金清算和日終匯總核算的依據(jù)。
4)總賬層(結賬):會計日切后,按照總賬維度對明細賬簿的日發(fā)生額與余額進行匯總核算,最終完成會計結賬。
2.4.2 科目與分戶賬
圖9:科目與分戶關系
科目采用樹形結構存儲,只有末級科目才有分戶賬戶,用來記錄資金余額。分戶按照內(nèi)外部屬性和會計屬性有兩種分戶組成形式;
1)外部賬戶:客戶賬戶由于有錢包余額、資金凍結等業(yè)務場景,因此設計了多分戶賬的形式。由于都是負債類科目,因此都是貸方余額。
2)內(nèi)部賬戶:功能較為單一因此單賬戶即可,余額按照會計屬性分為,資產(chǎn)類“借方余額”,負債類“貸方余額”,共同類“雙向余額”,損益類一般無余額(系統(tǒng)實現(xiàn)上其實是有的,如果要使用的話,收入為貸方、成本為借方)。
2.4.3 會員與分戶賬
圖10:會員與分戶關系
1)會員賬戶映射關系
我們?nèi)粘K褂玫腻X包賬戶的“可用余額”、“凍結余額”其實是對會計分戶的映射關系。
我們的會員錢包賬戶余額分為可用和凍結,因此需要分別設置對應的“貸方可用分戶賬”、“貸方凍結分戶賬”來登記資金余額的變動。像“待結算、在途資金、保證金、手續(xù)費”等余額,其實就是多開一套會計賬戶而已。
分戶余額在實現(xiàn)上有幾個?
客戶分戶是負債類科目,在理論上2個貸方余額即可。但是在實際系統(tǒng)設計中,借貸都會有發(fā)生賬務交易,因此實際的系統(tǒng)設計中為了匯總期末余額方便采用了四個余額。即“可用貸方余額、可用借方余額、凍結貸方余額、凍結借方余額”,本文圖中為了描述簡潔選用了理論上所需的貸方余額。
2)客戶賬戶模版
客戶開戶需要根據(jù)預先設定好的客戶賬戶模版,通過用戶角色來確定開哪些類型的賬戶,要開幾個對應的資金分戶來記錄余額。有了模版就無需人工來介入輔助開戶了。
3)分戶余賬簿關系
客戶分戶除了有“明細賬簿”記錄會計賬務外,還有一個分戶余額明細賬簿用來登記余額的變動,這樣我們就能在賬單上查看每筆交易的余額變動了。
4)內(nèi)部戶映射關系
內(nèi)部戶就是一個會計賬簿,因此就不用客戶賬戶那么復雜,按照科目開立賬戶即可,同時對應內(nèi)部戶的明細賬簿來登記會計分錄。
5)資金單邊記賬
為了處理賬務的高效,賬務系統(tǒng)采用了先變更客戶資金余額(即限貸后借),單邊記錄客戶賬資金變動。讓用戶能夠及時掌握資金變動。
6)會計補全分錄
會計系統(tǒng)采用先保存記賬分錄,再以異步的方式實時或者緩沖來補全賬務明細,實現(xiàn)資金與賬務的最終一致。
2.5 領域模型
考慮到支付同學大都有技術背景,更多關注流程和數(shù)據(jù)的流轉(zhuǎn)關系,因此我們這里給大家介紹下賬務和會計系統(tǒng)的領域模型。
2.5.1 賬務領域模型
賬務領域模型,用來處理了會計科目與分戶賬之間的關系,實現(xiàn)資金與賬務的最終一致。
圖11:賬務領域模型
1)會計科目:按照會計科目樹形機構來存放科目賬戶信息。
2)外部賬戶:外部賬戶包含賬戶模版、分戶賬戶和分戶余額,他們共同組成了客戶的賬戶。
3)內(nèi)部賬戶:內(nèi)部賬戶由于是內(nèi)部使用的過渡賬戶,因此他僅一個分戶即可。
4)枚舉對象
- 賬戶屬性:區(qū)分賬戶的角色屬性;包含對公、對私、內(nèi)部;
- 賬戶類型:分戶的賬戶類型;包含基本戶、一般戶、結算戶、臨時戶、保證金戶等;
- 余額方向:分戶會計余額期末的反映方向;參數(shù)有“借方、貸方”;
- 資金屬性:分戶記賬時登記余額的記賬信息,存放在分戶的子戶;參數(shù)有“借記、貸記”;
2.5.2 會計領域模型
會計領域模型包含了聯(lián)機交易的賬務核算和總賬核算,我們這里重點介紹下賬務核算
圖12:會計領域模型(省略總賬)
整個記賬過程通過支付請求的流水號作為“系統(tǒng)跟蹤號”來串聯(lián)整個交易過程中的“憑證號、事物號、分錄號、套號、記賬流水號”等實體的主鍵。
1)會計憑證:又被稱為記賬憑證,一筆支付請求流水會生成1張會計憑證,擔保類分賬會生成多賬。
2)事務管理:用來存放單次記賬交易,用來保障賬戶余額更新、明細賬簿登記能在一次事務中完成。如果需要緩沖記賬,會將該記賬交易保存到緩沖記賬表進行定時處理。
3)分錄流水:將記賬憑證轉(zhuǎn)化為會計分錄存放在分錄流水中,通過事務表和緩沖記賬表來完成賬務處理。
4)緩沖記賬:對于需要頻繁更新的內(nèi)部賬戶,為了提高性能會采用緩沖記賬的方式,系統(tǒng)定時任務會掃描緩沖明細,然后按照緩沖記賬規(guī)則更新賬務明細和余額。
5)明細賬簿:明細賬簿分為內(nèi)部明細和外部明細賬簿,外部明細賬簿還包含了分戶子賬戶余額變動明細。
三、業(yè)務處理流程
3.1 實時記賬
大多數(shù)交易都是采用準實時入賬的流程,所謂準實時就是異步的方式進行記賬,只要處理完理就返回賬務回執(zhí)結果。下面我們通過一筆商戶收款交易來介紹實時記賬過程。
圖13:收單交易會計分錄
實時記賬首先是更新外部賬戶余額,并且單邊記賬更新余額明細,隨后異步推送會計系統(tǒng)登記記賬信息并生成分錄,這筆分錄更新分戶余額、明細賬簿記賬后完成賬務處理。
圖14:實時記賬流程
3.2 緩沖記賬
緩沖記賬是對于需要頻繁更新余額和明細賬簿的場景,把記賬信息存放在緩沖區(qū),根據(jù)設定的時間段進行匯總記賬和更新賬戶余額。
3.2.1 緩沖機制
緩沖記賬根據(jù)賬務處理的復雜度和及時性分為“普通定時緩沖”和“日終匯總緩沖”。
1)普通定時緩沖:
對于即時分賬這類及時性要求高,并且請求多個分賬方余額更新時。采用普通定時緩沖(一般5-10分鐘),該機制會先更新客戶資金(例如付款方余額)然后保存分錄到緩沖區(qū),定時觸發(fā)進行匯總記賬和余額更新。
2)日終匯總緩沖:
對于擔保、合單和組合這種會出現(xiàn)超大賬戶請求的交易,可以采用日終匯總一次性入賬的方式。因為擔保達成長達數(shù)天,因此這種方式客戶無感,也能降低性能瓶頸。
3.2.2 緩沖流程
下面我們以一筆即時分賬來介紹下緩沖記賬處理流程方式。在這個場景中賬戶需要集中使用過渡戶,并且分賬涉及多個分賬方。這類交易在業(yè)務高峰時過渡戶將成為瓶頸,并且涉及大量賬戶的余額更新,因此需要采用“定時緩沖記賬”來處理。
圖15:即時分賬會計分錄
會員支付成功后,系統(tǒng)會將“支付申請+分賬結算”提交給賬務系統(tǒng),賬務系統(tǒng)先扣除付款方賬戶金額,然后生成分錄流水并將數(shù)據(jù)存入緩沖記賬表。
當定時任務掃描緩沖表將定時觸發(fā)緩沖記賬。觸發(fā)后首先獲取緩沖記賬分錄,然后鎖定“分賬方賬戶集”。此時會有“支付和分賬”兩個記賬批次,系統(tǒng)先完成內(nèi)部戶的余額和明細登記,然后同步更新分賬方的余額。記賬完成后,系統(tǒng)解除鎖定結果通到給支付引擎。(圖中的“逐筆批次”在系統(tǒng)上就是一個線程來異步處理)
圖16:緩沖記賬處理流程
日終匯總緩沖也是類似,只是日終緩沖會做一次檢查,保證當日所有緩沖記錄都被處理。
四、交易核算
4.1 交易處理
我們前文《對賬清潔算》中曾經(jīng)介紹過聯(lián)機交易的賬務核算,這里面我們簡單的來回顧下。
圖17:聯(lián)機交易賬務處理流程
當天商戶有收款、退款和付款三筆交易,三筆交易都會收取相應的手續(xù)費,賬務完成后日終對賬要對這些賬務進行核算。
4.2 收款賬務核算
圖18:收款業(yè)務核算
當天商戶收款1000元,繳納手續(xù)費10元,與渠道有1000元的應收清算款。
4.3 退款賬務核算
圖19:退款業(yè)務核算
用戶向商家申請退款50元,實際商家收款49元,因此退款時需要退還手續(xù)費1元。退款成功后實際與渠道有50元的應付清算款。
4.4 付款賬務核算
圖20:付款賬務核算
客戶付款1000元,繳納手續(xù)費1元,付款成功后與渠道有99元的應付清算款。
五、期末核算
期末支付系統(tǒng)會與渠道進行對賬和調(diào)賬,對平之后資金進行日終處理。這個過程如下。
圖21:期末核算流程圖
5.1 核算準備
在進行總賬核算前,確保外圍系統(tǒng)已經(jīng)完成賬務處理,過程包括“通知日切、賬務清理、渠道清算”三個步驟。
5.1.1 通知日切
首先要通知外圍的“支付引擎、對賬系統(tǒng)”日切,確保后續(xù)的交易全部計入下個會計日期。
5.1.2 賬務清理
日切后需要對緩沖記賬形成的單邊賬進行處理,確保當日賬務全部完成。
5.1.3 渠道清算
渠道清算主要是完成每條渠道待清算賬戶與銀存賬戶的結轉(zhuǎn)平賬,我們的渠道清算是按照“收、付、退”的維度來進行劃分的。
我們按收付維度來計算軋差金額,然后與渠道的清算資金進行核對,核對無誤后進行資金結轉(zhuǎn)。如果當日有資金調(diào)度也要完成調(diào)度資金的結轉(zhuǎn)和賬戶。
圖22:渠道資金結轉(zhuǎn)
5.2 總賬核算
外圍系統(tǒng)賬務處理完畢后,就可以開始總賬核算了。
5.2.1 總賬日余額平衡
在開始進行總賬核算前,先要保證所有科目平衡。因此會將所有賬戶的借方余額和貸方余額進行匯總核對。如果匯總不平則會軋差出錯賬凈額,補一筆分錄到“待查錯賬”科目先保證總賬平衡,待時候人工檢查賬務差錯原因后再做核銷。
圖23:余額平衡檢查和錯賬處理
5.2.2 明細賬戶匯總
我們可以看到之前賬務核算的時候,只有會計分錄,每個賬戶的發(fā)生金額、期末余額還沒有生成。因此需要通過明細賬戶匯總來生成每個賬戶發(fā)生額和期末余額,
明細賬戶匯總,就是給每個賬戶生成發(fā)生額,然后根據(jù)期初的余額生成期末余額,數(shù)據(jù)存入日余額匯總表。
圖24:明細賬戶匯總
5.2.3 總賬科目匯總
日余額明細生成后,需要生成總賬平衡數(shù)據(jù)(圖中橘色部分數(shù)據(jù))。通過總賬的科目代碼,同類科目代碼從末級開始匯總賬戶發(fā)生額,并生成總賬的期末余額。
圖25:總賬科目核算
注意圖中示例我們當天有一筆退款結轉(zhuǎn)因為有異常造成總賬借方不平,在核算檢查時我們補充了一筆“待查錯賬(借方)”的記賬分錄,先置平總賬。次日結算員就能方便的查看到差錯,并處理相應的錯賬。
5.3 平衡檢查與日切
完成匯總工作之后剩下來就做一些平衡檢查和會計日切的收尾工作。
1)總賬平衡檢查:檢查總賬平衡表借方余貸方余額是否相符。
2)總分平衡檢查:檢查總賬與下級分戶余額是否相符。
3)日余額表日切:賬戶日余額按照“客戶賬戶”和“內(nèi)部賬務”維度保存到歷史表。
4)會計日切:最后更新會計日期進入下一個會計賬期。
六、賬務核心交互
賬務核心與清結算系統(tǒng)有很強的依賴關系,因此賬務核心主要是會計管理部分的內(nèi)容。
6.1 科目管理
用來管理參與記賬的所有科目??颇繛闃湫谓Y構的多層級數(shù)據(jù),在主界面可以可以創(chuàng)建一級科目,下級科目可以在具體科目上創(chuàng)建。
圖26:科目管理
科目的創(chuàng)建時一級科目可以直接創(chuàng)建,二級以下科目依賴于上級科目的信息,下級科目只能填寫科目編號和科目信息。如果已經(jīng)是末級科目則不允許創(chuàng)建下級科目。
圖27:明細科目創(chuàng)建
6.2 賬戶管理
賬戶分為外部賬戶和內(nèi)部賬戶,外部賬戶為客戶賬戶,不可以手工添加,只能做凍結、解凍等基礎輔助操作。內(nèi)部賬戶可以通過人工來開戶,開戶需要填寫對于的末級科目號。
圖28:賬戶管理
6.3 分錄流水
分錄流水以系統(tǒng)跟蹤號串聯(lián)賬務過程,每條分錄至少包含“一借一貸”2條數(shù)據(jù)。
圖29:分錄流水
6.4 記賬憑證
1)憑證查詢
通過列表我們可以查詢當日產(chǎn)生的記賬憑證信息。我們可以看到憑證類型有很多包括“收款憑證、付款憑證、轉(zhuǎn)賬憑證、匯總憑證、結賬憑證、調(diào)賬憑證”,這些類型可以根據(jù)業(yè)務場景需要來進行拓展和進一步細分。
圖30:憑證查詢列表
2)憑證詳情
憑證信息包含了憑證、借貸分錄、摘要和操作人相關的詳情。同時憑證可以下載也可以打印。
圖31:憑證詳情信息
七、總結
好啦總結下今天的內(nèi)容。
7.1 賬務核心包含哪些
1、賬務系統(tǒng):是賬務系統(tǒng)對外提供的服務,包含賬務服務和賬戶管理;
2、會計系統(tǒng):會計系統(tǒng)是進行復試記賬和日終管理的系統(tǒng);
7.2 賬務處理機制
為了實現(xiàn)賬務處理及時性和準確性,賬務處理采用優(yōu)先客戶資金賬戶單邊記賬,通過實時或者緩沖補全會計賬務的方式。賬務處理方式分為實時和緩沖記賬兩種方式。
1)實時處理:對于普通簡單交易(一借一貸)采用單邊更新客戶余額,異步補全分錄的方式。
2)緩沖記賬:對于分賬類需要頻繁訪問內(nèi)部戶,批量更新賬戶余額的交易。在更新客戶資金的同時(例如付款方)后將分賬指令存放到緩沖區(qū),定時匯總完成記賬和更新余額。如果涉及分賬方余額也會同步更新。
7.3 賬務核算處理
賬務核算分為“交易核算”、“渠道清算”、“總賬核算”三個主要核算步驟。
1)交易核算:講日間聯(lián)機交易形成會計賬務。
2)渠道清算:根據(jù)渠道資金清算結果將待清算和銀存賬戶進行結轉(zhuǎn)平賬。
4)總賬核算:總賬就是要生成總賬的匯總平衡表,他分為所有賬戶維度的明細匯總和一級科目維度的總賬匯總。最后完成總賬的核算檢查后賬務核心就能日切。
這部分內(nèi)容“交易核算”、“渠道清算”產(chǎn)品經(jīng)理、研發(fā)經(jīng)理進階必須掌握的,總賬核算作為補充知識了解即可。(因為總賬在中小機構結算員手工就能做完,大型機構有幾個人就能處理了)
好啦,賬務核心的內(nèi)容主要的就是這些,如果還有什么疑問歡迎大家留言。
本文由人人都是產(chǎn)品經(jīng)理作者【剛哥】,微信公眾號:【剛哥白話】,原創(chuàng)/授權 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議。
太硬核了
請教剛哥,你在做為面試官面試應聘者的時候,會用哪些標準考核有產(chǎn)品經(jīng)驗、但沒有垂直領域經(jīng)驗的候選人?
這個要看垂直行業(yè)經(jīng)驗的崗位必要性了,如果目標就是主攻垂直行業(yè)方向,那經(jīng)驗這方面不會妥協(xié),會在軟件層面如學歷、年齡方面做些妥協(xié)(找老板哭鬧要去);
如果垂直行業(yè)必要性不強,我還是關注專業(yè)能力相關性、思考能力、溝通能力、學習能力