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