记账工具 firefly-iii 实践
记账工具的选择
前不久发现记账的需求越来越迫切,主要是使用的银行卡账户以及互联网金融账户过多、支付平台过多、购物平台过多,从单一平台如微信很难了解当月收支的全貌。经过梳理,我对记账工具的主要需求包括:
-
复式记账,能够记录所有金融资产、负债账户以及收支情况。
-
能够完整地记录这样一笔交易:在京东(购物渠道)完成一笔订单,使用微信支付(支付平台),付款方式选择了某银行卡(付款账户)。
-
跨平台,至少有网页版和安卓端。
-
使用不要过于复杂。
搜索了下发现,本来开源记账工具就不多,知名的就那几个,初步探索后确定,firefly-iii就是我所需要的。
账户建立和记账实践
-
梳理所有金融账户。firefly-iii将账户分为资产、债务、收入和支出四类,缺了会计中传统的所有者权益账户。我理解,所有者权益,或者说净资产账户,在这里是一个隐形的账户,即资产与负债轧差的结果,无需再细分。为完整反映个人所有账户,首先需要梳理所有使用中的金融账户,例如微信零钱、零钱通、支付宝余额、花呗、借记卡、贷记卡等,需要注意的是,不仅需要借记账户,还要包括所有贷记账户,以完整反映个人净资产状况。
-
账户初始化。
-
资产/债务账户。我11月底有记账的想法,选择了firefy-iii后,为充分熟悉和尽快适应它,决定将所有账户的初始日期设置为11月1日,记录当时的余额和那之后的所有交易。在确定初始金额方面,有一些APP做的比较好,会在每笔交易记录中显示交易后金额,于是只需找到10月的最后一笔交易,记录交易后余额即可;如交易记录不显示交易后余额,试着查找10月账单,看是否显示月末余额;若10月账单也不显示余额,只好记录现在的余额,并在记录这段时间所有交易后,倒算出当时余额。
-
支出账户。支出账户的设置需要投入一些思考。我目前的做法是,以支付平台为支出账户命名。例如,一笔交易使用了微信财付通付款,那么这笔交易对应的目标账户就是【支出账户-财付通】。这样做,方便与支付平台的账单对账。
-
收入账户。以收入渠道命名,如工资、报销、投资收益。
-
-
记录交易。日常使用最多的支付平台是微信财付通和支付宝,所以优先从二者中导出交易记录,发送到邮箱。一些不常用的支付平台,如银联、京东支付、美团支付、多多支付、手机银行、PayPal等,边翻手机边在电脑网页版记录即可,无需导出。注意,这里选择了以支付平台的交易记录为准,不是购物渠道也不是最终付款账户,但最后需要将前者与后两者相比较以保证记录准确无遗漏。特别注意,一些支付优惠并不在购物渠道端显示,需要以支付平台及付款账户的记录为准。
-
记账实战。firefly-iii将交易分为了【支出】、【收入】和【转账】,其中最常用的是【支出】。交易必填五要素:交易描述、来源账户、目标账户、金额、时间。个人使用上,我还会选填交易分类和标签。目前,交易分类我设置了【日常开销】、【资产支出】、【往来】三类,而标签,我习惯会加上购物渠道如【京东】tag。这样,可以通过查看交易分类,方便地了解每月不同类型的支出金额;可以通过查看tag,与各个购物渠道的订单对账。
-
难题之一:贷记账户。经过上面的操作,记账似乎已经圆满完成,但很快出现了问题。贷记账户,如信用卡、花呗、白条、美团月付等,被我放到债务账户,这样通过这些进行支付的时候,会产生【债务账户-花呗】->【支出账户-支付宝】的【支出】类交易。不幸的是,在记录还款交易时,如【资产账户-储蓄卡8888】->【债务账户-花呗】,这笔交易被认为是【支出】类交易,从而导致本月记录的支出增加。但本质上,这笔交易不应当是【支出】,而是【转账】。经过摸索,我删除了所有【债务】账户,并将贷记账户全部作为负资产计入【资产】账户,这样还款会被认为是【转账】交易,从而不影响汇总的支出金额。
-
难题之二:时区问题。我在部署docker容器时,并未指定容器环境的时区变量。在记录一些交易后,我发现,交易详细页面显示的时间不对。在查看数据库信息后发现,在交易数据的表(transaction_journals)中,交易时间的时区字段(date_tz)默认是UTC,记账时填写的时间直接被写入交易时间字段(date),但在读取的时候,会将其自动转换成客户端所在时区UTC+8时间,于是所有交易时间都被推迟了8小时。发现问题后,我手动将数据库中已记录的交易时间字段数据减去8小时,然后设置环境变量TZ=Asia/Shanghai。之后再记录交易时,发现新交易的时区字段调整为Asia/Shanghai,记录的写入和读取也不再产生歧义。所以,务必在部署时,确认TZ设置正确。
-
其他。
-
firefly-iii还有很多功能值得发掘,例如定期交易和功能强大的规则。
-
关于上面讨论的债务与负资产,主要问题在于债务的偿还是否需要计入支出。其实,计入【支出账户-还款】也无不可,只要能和其他支出区分开来。
-