以在線教育公司為例,如何做一款財(cái)務(wù)對(duì)賬產(chǎn)品?
筆者以一個(gè)虛構(gòu)的在線教育公司的對(duì)賬業(yè)務(wù)為背景,分享了怎么做對(duì)賬產(chǎn)品以及對(duì)應(yīng)的設(shè)計(jì)要點(diǎn)。
財(cái)務(wù)同學(xué)每月月初都需要核對(duì)上個(gè)自然月微信、支付寶等金融收款賬戶的交易流水和公司業(yè)務(wù)系統(tǒng)交易訂單的一致性,基于一致的前提下才能做賬。隨著業(yè)務(wù)的爆發(fā)性地增長,業(yè)務(wù)訂單量太大,人工對(duì)賬過于耗時(shí)和繁瑣,就到了需要通過產(chǎn)品方案來解決,實(shí)現(xiàn)自動(dòng)化對(duì)賬。
適讀對(duì)象
本文是四勾作為一名產(chǎn)品,通過產(chǎn)品方案來實(shí)現(xiàn)自動(dòng)化對(duì)賬的產(chǎn)品實(shí)踐,比較適合對(duì)對(duì)賬財(cái)務(wù)專業(yè)知識(shí)和對(duì)賬工作流有一定認(rèn)知,但就是不知道如何下手的產(chǎn)品經(jīng)理。
如果你還不清楚為什么要對(duì)賬,對(duì)賬是什么和什么對(duì)等一些財(cái)務(wù)方面的專業(yè)知識(shí)的話,建議先閱讀文章底部的「參考文章」惡補(bǔ)之后,再回來閱讀正文。
一、背景介紹
為了便于理解和深入業(yè)務(wù)場(chǎng)景,四勾虛設(shè)一個(gè)場(chǎng)景,帶著大家逐漸深入。
1. 虛擬場(chǎng)景
海豚教育是一家 K12 在線教育公司,主要服務(wù)的對(duì)象是小學(xué)和初中階段的學(xué)生,有數(shù)學(xué)、英語、語文等學(xué)科,主要的業(yè)務(wù)交易包括 2 部分:
- 其一,購買課程的資金流入,分為體驗(yàn)課和正式課,體驗(yàn)課單價(jià) 30 – 50;正式課是一年的課程,課單價(jià) 6k – 8k;
- 其二,課程退費(fèi)的資金流出。
資金的流入和流出都是通過微信或支付寶來進(jìn)行交易,現(xiàn)在交易訂單量巨大,需要通過產(chǎn)品來實(shí)現(xiàn)將微信和支付寶的每日交易數(shù)據(jù)和海豚自己的業(yè)務(wù)交易數(shù)據(jù)對(duì)賬。
微信和支付寶我們都叫做金融賬戶。
2. 對(duì)賬的價(jià)值
比較容易理解的是實(shí)際的收支和業(yè)務(wù)訂單的收支一致,保證做賬數(shù)據(jù)的正確性。其實(shí)有更深層次的價(jià)值,反向校驗(yàn)業(yè)務(wù)數(shù)據(jù)的準(zhǔn)確性,發(fā)現(xiàn)業(yè)務(wù)數(shù)據(jù)的問題,及時(shí)修正;規(guī)避財(cái)務(wù)風(fēng)險(xiǎn),進(jìn)而更好的服務(wù)用戶。
舉個(gè)栗子,微信有一筆 50 元的退費(fèi)記錄,業(yè)務(wù)訂單里沒有,賬無法對(duì)上。財(cái)務(wù)發(fā)現(xiàn)問題之后會(huì)聯(lián)系孩子的班主任老師,在業(yè)務(wù)系統(tǒng)一查發(fā)現(xiàn)他的退費(fèi)申請(qǐng)由于超時(shí)過期,退費(fèi)申請(qǐng)自動(dòng)關(guān)閉了。發(fā)現(xiàn)問題后需要采取措施,補(bǔ)退費(fèi)記錄,對(duì)賬號(hào)做停課處理。
3. 設(shè)計(jì)思路
- 其一,每個(gè)金融賬戶分開獨(dú)立對(duì)賬,指微信和支付寶
- 其二,以金融賬戶數(shù)據(jù)為參照物,拿海豚業(yè)務(wù)訂單數(shù)據(jù)往上對(duì)齊
- 其三,對(duì)賬不區(qū)分學(xué)科,學(xué)科是對(duì)賬完畢之后用來出財(cái)務(wù)餅狀圖的
二、對(duì)賬工作流
自動(dòng)對(duì)賬是按照每日對(duì)賬,當(dāng)天拉取前一日的微信和支付寶對(duì)賬單,和海豚的前一日的業(yè)務(wù)訂單進(jìn)行自動(dòng)化匹配,然后做出正常或異常的標(biāo)記。針對(duì)標(biāo)記異常的,再人工跟進(jìn)。
對(duì)賬工作流分為 4 個(gè)步驟,每個(gè)步驟有具體的分工,全景圖如下。
對(duì)賬工作流全景圖
1. 賬單下載
賬單下載更多的是技術(shù)層面的實(shí)現(xiàn),這里不做展開,涉及到如下 2 個(gè) API。
微信是當(dāng)日上午 10 點(diǎn)出前一日的對(duì)賬單,所以我們需要 10 點(diǎn)后拉取。
支付寶是當(dāng)日上午 9 點(diǎn)出前一日的對(duì)賬單,所以我們需要 9 點(diǎn)后拉取。
微信下載對(duì)賬單 API:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_6
支付寶下載對(duì)賬單 API:https://docs.open.alipay.com/204/106262/
2. 數(shù)據(jù)準(zhǔn)備
數(shù)據(jù)分為 3 個(gè)部分,每個(gè)金融賬戶各自需要 1 份數(shù)據(jù),我們這里叫做「微信對(duì)賬數(shù)據(jù)」和「支付寶對(duì)賬數(shù)據(jù)」。另外,業(yè)務(wù)系統(tǒng)的訂單數(shù)據(jù),我們叫做「海豚對(duì)賬數(shù)據(jù)」。
1)金融對(duì)賬數(shù)據(jù)
微信和支付寶的邏輯一樣,下面以微信為例:
整理后的微信對(duì)賬數(shù)據(jù)
交易類型,照搬微信對(duì)賬單上的,不做修改;
海豚訂單,是微信里的「商戶訂單號(hào)」,便于理解,四勾有意改了個(gè)更直觀的名字;
金融賬戶訂單,是微信的微信訂單號(hào)。
2)海豚對(duì)賬數(shù)據(jù)
每天凌晨 2 點(diǎn)拉取前一日的海豚業(yè)務(wù)訂單,包括購課付款成功和退費(fèi)成功的交易訂單,只拉取成功的訂單,忽略支付中或退費(fèi)中的交易未結(jié)束的部分。
同時(shí),整理完的對(duì)賬數(shù)據(jù)我們需要單獨(dú)存儲(chǔ),出于 2 點(diǎn)考慮:
- 其一,業(yè)務(wù)訂單的修改不會(huì)影響我們的對(duì)賬數(shù)據(jù);
- 其二,對(duì)賬完畢后我們會(huì)基于對(duì)賬數(shù)據(jù)計(jì)算各種各樣的財(cái)務(wù)報(bào)表,要確保數(shù)據(jù)源的一致性。
如下圖所示,保留 userId、課程名稱和課程編號(hào),便于以后按照課程欄目的財(cái)務(wù)統(tǒng)計(jì)。
整理后的海豚對(duì)賬數(shù)據(jù)
3. 對(duì)賬
1)單筆訂單的對(duì)賬狀態(tài)
正常:系統(tǒng)自動(dòng)對(duì)平的
異常未處理:系統(tǒng)未自動(dòng)對(duì)平的會(huì)標(biāo)記成異常未處理
異常已處理:人工處理掉異常,并且人工進(jìn)行海豚對(duì)賬數(shù)據(jù)和金融賬戶對(duì)賬數(shù)據(jù)關(guān)聯(lián)上
異常已掛起:
- 就是暫時(shí)忽略,以后再說
- 以后可以對(duì)已掛起的數(shù)據(jù)再次人工處理成異常已處理
單筆訂單對(duì)賬狀態(tài)的流轉(zhuǎn)
2)自動(dòng)對(duì)賬
微信自動(dòng)對(duì)賬完的數(shù)據(jù)狀態(tài)
舉個(gè)栗子:今天是 2019-12-26,我們對(duì)昨天 2019-12-25「微信」的對(duì)賬數(shù)據(jù)。上午 10 點(diǎn)所有金融賬戶數(shù)據(jù)準(zhǔn)備完畢后,立馬執(zhí)行自動(dòng)對(duì)賬。當(dāng)然對(duì)完微信之后會(huì)再對(duì)「支付寶」。
Q1:左右兩邊的數(shù)據(jù)來源?
左邊是海豚昨天的訂單里面,收款和退款的金融賬戶是微信的;
右邊的是微信昨天的全量交易對(duì)賬數(shù)據(jù)。
Q2:如何自動(dòng)對(duì)賬?
第 1 步,右邊的數(shù)據(jù)按照交易時(shí)間順序排列,并展示出來(此時(shí),左邊全部為空);
第 2 步,針對(duì)右邊每一條數(shù)據(jù),拿「海豚訂單」去海豚對(duì)賬數(shù)據(jù)里面查詢,同時(shí)滿足下面條件就自動(dòng)標(biāo)記成「正?!梗?/p>
- 其一,能查詢到記錄(只去海豚對(duì)賬數(shù)據(jù)的 25 號(hào)數(shù)據(jù)里面查)
- 其二,金額一樣
第 3 步,將第 2 步中查到的海豚對(duì)賬數(shù)據(jù)展示在對(duì)應(yīng)金融數(shù)據(jù)的左側(cè),并且將狀態(tài)標(biāo)記成「正?!?/p>
第 4 步,將金融對(duì)賬數(shù)據(jù)沒有標(biāo)記成正常的其它所有的行,都標(biāo)記成「異常未處理」(此時(shí),這些數(shù)據(jù)的左側(cè)都是空白)
第 5 步,將海豚對(duì)賬數(shù)據(jù)沒有被標(biāo)記正常的其它所有數(shù)據(jù),按照交易時(shí)間順序插入,都標(biāo)記成異常未處理(此時(shí),這些海豚數(shù)據(jù)的右側(cè)全部是空白)
自動(dòng)對(duì)賬包括上面的 5 步,自動(dòng)對(duì)賬結(jié)束會(huì)出現(xiàn):
- 其一,狀態(tài)只有 2 種,正常和異常未處理;
- 其二,異常未處理的,要么右邊空白,要么左邊空白
3)滾動(dòng)對(duì)賬
舉個(gè)栗子:一筆支付,微信 23:59:59 收到錢,回調(diào)海豚服務(wù)器時(shí)已經(jīng)跨天 00:00:02,這樣在自動(dòng)對(duì)賬時(shí)會(huì)被標(biāo)記成異常未處理。
出現(xiàn)上面的情況是由于遭遇日切,滾動(dòng)對(duì)賬就是專門來處理這種 case 的。
滾動(dòng)對(duì)賬前后的狀態(tài)變化
上下文:
24 號(hào)所有對(duì)賬結(jié)束后,海豚和微信各有 1 條異常未處理;
25 號(hào)自動(dòng)對(duì)賬結(jié)束后,海豚有 1 條異常未處理,微信有 2 條;
現(xiàn)在將要執(zhí)行 25 號(hào)的滾動(dòng)對(duì)賬
Q:如何滾動(dòng)對(duì)賬?
第 1 步,拿 24 號(hào)微信異常的數(shù)據(jù),去 25 號(hào)海豚的數(shù)據(jù)查,海豚訂單號(hào)一致、金額一致,就意味匹配成功,將兩者關(guān)聯(lián)上,并同時(shí)標(biāo)記為異常已處理;
第 2 步,反過來,拿 25 號(hào)微信異常去查 24 號(hào)海豚數(shù)據(jù)。
處理完上面 2 步之后,就如上圖下半部分所示。
4. 差錯(cuò)處理
差錯(cuò)處理分為 2 種,一種是能人工匹配上,處理成異常已處理;另一種是怎么也匹配不上,處理成異常已掛起。
1)處理成異常已處理
通過線下人工查明原因,找到匹配的兩邊的訂單號(hào),然后上系統(tǒng)進(jìn)行人工關(guān)聯(lián)。
將異常處理成異常已處理
2)處理成異常已掛起
將異常處理成異常已掛起
處理異常之后,對(duì)賬狀態(tài)發(fā)生變化,就如下所示:
處理完部分異常后的對(duì)賬狀態(tài)
三、產(chǎn)品實(shí)現(xiàn)
1. 頁面信息流
2. 對(duì)賬明細(xì)-全部
舉個(gè)栗子:要進(jìn)行 2019-12-14 到 31 號(hào)對(duì)賬,如何操作:
對(duì)賬時(shí)間段:選擇 2019-12-14 ~ 2019-12-31
對(duì)賬周期,如果選擇周,下面就按照自然周拆分,顯示 4 行,如上圖所示;如果按照日,下面顯示 31 – 14 + 1 = 18 行。
3. 對(duì)賬明細(xì)-微信
點(diǎn)擊上圖微信下面的最后一行,顯示如下界面。點(diǎn)擊下圖「上一周期」,顯示上一個(gè)自然周的對(duì)賬。
Q:何為「未平賬」,何為「已平賬」?
- 對(duì)賬狀態(tài)中,只要有異常未處理,稱為未平賬;
- 沒有異常未處理的,稱為已平賬,包括正常、異常已處理和異常已掛起。
參考文章
1. 詳細(xì)解析「財(cái)務(wù)對(duì)賬」的秘密https://zhuanlan.zhihu.com/p/42289649
2. 財(cái)務(wù)對(duì)賬系統(tǒng)設(shè)計(jì)
https://juejin.im/post/5b1c76f4e51d450688135cfd
3. 聊聊對(duì)賬系統(tǒng)的設(shè)計(jì)方案
https://juejin.im/post/5c485cd8f265da61327fa12f
4. 支付對(duì)賬系統(tǒng)怎么設(shè)計(jì)?
https://mp.weixin.qq.com/s/SOpwMsVB5wNkwMZdKKMkwg
5. 從0開始學(xué)習(xí)搭建支付系統(tǒng)——核算對(duì)賬核心
https://zhuanlan.zhihu.com/p/45492985
本文由 @四勾 4J 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自u(píng)nsplash,基于CC0協(xié)議
大家有不明確的或者有疑問的,歡迎加我微信詳聊:vincent4j
看了您的文章很有收獲,可以加微信進(jìn)一步溝通嗎,我的微信號(hào)15933556182,期待您的回復(fù)呀~
可以加我微信詳聊:vincent4j
請(qǐng)問掛起操作的目的是什么?對(duì)于掛起或者未處理的異常,都會(huì)參與到下一次的滾動(dòng)對(duì)賬嗎?
掛起就是「來源于自己商城或平臺(tái)之外」的收入,比如說我們測(cè)試環(huán)境來的訂單,再比如說通過小鵝通賣課程自動(dòng)轉(zhuǎn)到微信商戶里的。
掛起的是滾動(dòng)對(duì)賬完畢之后,操作者確認(rèn)是「來源于自己商城或平臺(tái)之外」的收入,掛起操作在滾動(dòng)對(duì)賬之后。
未處理的異常,也是在滾動(dòng)對(duì)賬之后,就是滾動(dòng)對(duì)賬都對(duì)不平的。
如果還有疑問,直接加 vx vincent4j
非常感謝解答!
針對(duì)掛起的付款金額,會(huì)統(tǒng)計(jì)在應(yīng)收金額里面嗎?
會(huì),那也是收入的一部分
但是在統(tǒng)計(jì)收入展示的時(shí)候會(huì)分成多列:所有收入金額,其中掛起金額,其中異常未處理金額。
寫的不錯(cuò),很清晰啦
這種完全是通過第三方支付訂單號(hào)去對(duì)賬的么?有沒有一種可能,就是第三方支付訂單號(hào)匹配上然后金額不匹配,假設(shè)海豚系統(tǒng)可以修改金額,那么修改完之后如何下一步操作呢?還是沿用原有的人工處理異常流程么?如果采用,那么對(duì)賬的效率問題有沒有考慮過?
或者還有沒一種手工單的可能,那么這部分怎么對(duì)呢?
(這是暫時(shí)想到這么多問題,不知道實(shí)際有沒這個(gè)問題)
問題 1,金額對(duì)不上的情況,需要通過線下理清楚問題出在哪方是海豚方,還是微信方;如果是海豚方,修正訂單數(shù)據(jù);如果是微信方,對(duì)付款人多退少補(bǔ);然后再出發(fā)再次對(duì)賬。
問題 2:手工單也是需要導(dǎo)入業(yè)務(wù)系統(tǒng)的
有點(diǎn)混亂,表示沒看懂
可以具體說說,或者私聊我