使用GnuCash进行简单的个人财务跟踪

2020-05-20 01:46:39

我可以非常详细地回忆起我第一次了解GnuCash的情况。这是一个阳光明媚的春天早晨,科罗拉多州的克里克峡谷(Clear Creek Canyon)。我的白色小普锐斯(Prius)刚刚被前一周的冰雹砸伤,摇摇欲坠地停在一条细长的砾石上,这条石子将道路从30英尺的陡坡分隔开来,一直开到下面的小溪。从我们准备攀登的岩石悬崖下俯视它,它似乎随时都会跌入汹涌的水中。

但我并不担心这一点。我正忙着抱怨自己在追踪个人财务方面遇到的麻烦。“Ledger的简单明文界面一开始很吸引人,但像这样输入交易变得有点单调乏味。我开始想要一个更高级的图形用户界面来绘制和生成报告,“我抱怨着,走上了我的马具。我的朋友们礼貌地点点头表示同意,眼神呆滞。

就在那时,事情发生了。就在那时,躲在我们旁边路线上的那个人转向我说,“你应该试试GnuCash。”虽然他的灰色运动衫和有色环绕太阳镜的引擎盖遮住了他的脸,但他的脸是一个非常关心开源会计软件的人的脸。就在那一刻,我的决定做出了。

今天,亲爱的读者,让我成为你的男人,穿着灰色连帽衫,戴着太阳镜。我会帮你踏上金融启蒙之路的第一步。

GnuCash是一款免费、跨平台、开源的会计软件。我想向你解释如何使用它来跟踪你的个人财务状况,进而对你的消费和储蓄做出更好的决定。您还可以使用它的数据来制作很酷的图表,如上图所示。

你是否曾经想过快速回答有关你的财务状况的问题,比如“我每个月实际存了多少收入?”或者,“这场流行病对我的消费习惯有什么影响?”在上面的图表中,请注意我在食品杂货上的花费何时超过了我在外卖上的花费。大概是华盛顿第一个全职订货的日期。很酷,对吧?这些都是你可以用这些数据挖掘出的趋势。

你想拥有你所有的财务数据。我知道有一些在线产品承诺自动处理使用GnuCash的繁琐部分,我鼓励你也去研究一下。我选择不使用它们中的任何一个,因为我希望可以无限期地访问我的数据。我不希望这种访问取决于一家公司在我的余生中继续经营,或者有善意让我以一种面向未来的文件格式下载它。因为GnuCash是开源的,并且已经有了很好的跨平台支持,所以我可以放心地相信它(或者是一个免费的替代品)在N年后仍然会存在。

你想促进良好的理财习惯。我从使用GnuCash中获得的大部分价值来自于被迫考虑我进行的每一笔交易。当你可以看到愚蠢的购买对你的整体财务状况的影响时,你会发现它们的份量要大得多。此外,通过强迫自己记录和验证所有交易,您将更有可能在欺诈活动造成损害之前及早发现您账户上的欺诈活动。

一个月2-4个小时的时间投入对你来说太多了。这些数字可能会更高,也可能更低,这取决于你个人财务状况的复杂程度,但这大致就是我花的时间。

你不会从更细粒度的财务数据中受益。如果你知道你的信用卡余额每月少于一定数额而感到高兴,那就太棒了!你不需要GnuCash。然而,如果你想知道为什么你的信用卡余额每个月都有一定的数额,你可能会想要阅读这篇文章的其余部分。

金融界人士关心的是回报。因此,本着做金融这类事情的精神,我想我应该展示一下你可以从将时间投资于GnuCash中获得的各种回报。提醒一下,所有这些图表都编辑了美元价值(因为这是我的真实数据),但请放心,如果您自己生成这些图表,它们将显示实际金额。

让我们从GnuCash内置的可定制报告和图形套件中的一些示例开始:

这些可以一目了然地揭示各种趋势,然后可以使用程序内置的强大搜索功能来挖掘这些趋势。如果内置的搜索和报告没有您需要的功能,也没问题!我们拥有所有数据,并且可以选择将其保存为各种友好格式(XML、SQLite等)。如果您希望查看计算或绘制的内容,您可以始终使用PICTASH之类的包来查询数据并生成自定义绘图。这就是我所做的,以便生成下面的报告,这些报告实时地向我显示我距离实现每月和年度预算有多近。我还在这里发布了这些脚本,以便您可以将它们用于您自己的GnuCash目的。

在最高级别,您可以将GnuCash视为跟踪一组帐户的位置,其中每个帐户代表一个资金来源。在大多数情况下,您拥有的每个真实货币帐户都将由其自己的GnuCash帐户跟踪。您的支票帐户、401K、信用卡和Venmo都将是GnuCash中的个人帐户。然而,并不是每个GnuCash帐户都一定代表一个真实的货币帐户,我们稍后将讨论这一点。

为了使这些帐户中的值保持最新,我们创建事务。每笔交易都有关联的日期、说明和金额。每次发生改变您拥有的钱的数量的事情时,您都会将其记录在GnuCash中作为这些交易之一。例如,如果您要去面包店买蛋糕,您将在您的信用卡GnuCash帐户中创建一个相应的交易,如下所示:

这应该是一个非常熟悉的场景,因为它几乎与您的银行或信用卡在您的对账单上显示内容的方式相同。当一笔13.19美元的交易添加到您的信用卡对账单中时,您的总余额将增加13.19美元。同样的事情也发生在这里。但是,您需要了解一个主要区别:

这听起来可能非常抽象和禅宗格言,但它是GnuCash如此强大的核心,也是使用GnuCash时需要理解的最重要的事情。

我们可以在我的面包店示例中看到这一原则的实际作用。看看“转账”一栏:它显示,我们添加到信用卡账单上的13.19美元并不是凭空出现的,而是从一个名为“Expsions:Food:Take Out”的账户转账过来的。如果你仔细想想,这也正是现实世界中发生的事情。你信用卡账单上的13.19美元不是凭空出现的。在幕后,信用卡公司向面包店支付13.19美元(无手续费),然后从你那里收取13.19美元。钱不是创造出来的,它是从你的信用卡余额转到面包店的银行账户上的。

这个简单但强大的概念被称为复式簿记,其目的有两重。首先,也是最重要的,它保护您不会犯会计错误。没有办法记录1000美元的房租付款,然后不小心忘记了零,只从你的银行账户中扣除了100美元。根据定义,每一美元都需要来自某个地方,因此GnuCash会注意到下落不明的900美元,并会抱怨。平衡状态是严格执行的。其次,该系统会自动对您进行的每笔交易进行分类。每一次我们挣钱或花钱,我们都知道钱是从哪里来的,花到哪里去了。这使得以后尝试生成报告时,事情变得容易得多。

但是,请注意,GnuCash正在将资金转移到一个名为“Expsions:Food:Take Out”的帐户,而不是“Bakery Bank Account”。那是怎么回事呢?嗯,虽然完全有可能为我们与之互动的每个现实世界的货币账户创建一个新的虚拟账户,但这样做对我们没有好处。从预算的角度来看,我们不在乎在Whole Foods和Trader Joe‘s花了多少钱,我们只关心我们在食品杂货上花了多少钱-所以我们可以把所有这些交易都放到一个“Expects:Food:Groceries”帐户中(GnuCash使用冒号来表示嵌套帐户,所以这实际上是“Expsions”祖父母帐户中“Food”帐户的“Food”子帐户。)。

其他事情也是如此。我们不在乎在亚马逊上花了多少钱,我们关心的是我们在亚马逊购物时把钱花在了什么地方。买了张桌子?请记入“费用:家具”账户。搅拌器?这列在“开支:厨房用品”里。对你来说还不够具体吗?创建“费用:家具:办公室”帐户,或“费用:厨房用品:金属”帐户。工作太多了吗?只需将这些交易放入根“费用”帐户中,然后使用它即可。使用GnuCash,您可以完全控制如何组织交易。您如何选择这样做将影响您可以在报告和绘图中实现的粒度级别,但GnuCash在其他方面都是一样的。GnuCash所关心的是交易是否平衡-当资金进入一个账户时,必须从另一个账户流出相同金额的资金。

当您第一次启动GnuCash时,它将弹出一个小设置向导,强制您创建一些帐户。如上所述,您可以选择随心所欲地组织您的帐户。话虽如此,GnuCash将自动创建五个顶级帐户,您创建的所有其他帐户可能都属于这些顶级帐户(可以在上面的“我的帐户”页面中看到)。这些账目如下:

资产是你实际拥有的东西,比如支票账户、经纪账户、401K、Venmo账户、钱包里的现金等等。

GnuCash文档将股本描述为“总净值”,但我一直对这与我的用例中的资产有什么不同持怀疑态度。因此,我大多选择不使用它。如果您正在做一些更高级的会计或使用某些内置报告,它可能会有一定的用途。

收入账户是你收到的钱的来源,比如雇主发的工资、礼物等等。

负债是你所欠的东西--你最终将不得不偿还的钱,但现在还没有。就我个人而言,我只使用这个作为我的信用卡的父母账户,但你也可以在这里追踪个人债务或贷款之类的东西。

创建这些特定帐户非常重要,因为GnuCash根据帐户类型以不同方式处理它们之间的交易。例如,“负债:”帐户中的正余额表示您拥有负金额的钱,而“资产:”帐户中的正余额表示正金额。同样,一些GnuCash内置报告也依赖于设置正确的帐户类型。

完成设置向导后,请查看GnuCash为您创建的一些默认帐户。您可以随意删除您不会使用的内容,并创建您将使用的新内容。当您完成该操作时,您将拥有一堆帐户--所有帐户的余额均为0美元。显然,您的大多数真实货币帐户中都有一些非零金额的钱,因此我们设置过程的最后一步是更改GnuCash帐户以反映这一点。正如我们现在所知道的,我们不能仅仅创造这笔钱--它需要从某个地方转移。GnuCash为我们提供了一个预先准备好的“权益:期初余额”账户,仅用于此目的。

假设我们刚刚创建了一个名为“Assets:Checking Account”的空帐户,我们希望对其进行设置,使其反映我们的真实支票帐户的余额,该帐户中有1000美元。为此,我们需要填写一个新的交易条目,其中包含当前日期、“期初余额”说明、“股权:期初余额”转账账户和1000美元的存款。当我们输入该交易时,我们的帐户页面将更新以反映我们的新余额$1000。

现在,如果您打开“股权:期初余额”帐户,您实际上也可以在那里查看和编辑交易。这是GnuCash的金科玉律。要将这1000美元存入你的银行账户,它需要离开期初余额账户。因此,两个帐户都将显示交易。

如果您速度快,您可以在不到10分钟的时间内完成此初始设置。恭喜你!您正在获取丰富的财务数据。

为了保持平衡,你要记录你做的每一笔交易-这听起来很可怕,但我每个月只花2-4个小时分成两个时段。如果您比我更有纪律性,您可以递增地进行日志记录,而不是一次完成所有日志记录。我还没有试过,但我敢打赌,它可以将每月投入的总时间减少到一个小时左右。

要成功记录您的数据,首先要有一个良好的收集数据(收据、发票等)的工作流程。实际上,我在这里处理三个不同的案件:

在理想的情况下,我会在GnuCash移动应用程序中记录购买情况。因此,一旦我在酒吧/餐厅/商店付账,我就会立即拿出手机记录交易。这款应用同时支持Android和iOS,你可以从桌面导入你的账户结构,以便自动完成功能。

有时我忘了使用手机应用程序,所以对于支持电子邮件收据(和在线购物)的餐厅来说,我更喜欢那些而不是纸质收据。下次我查看电子邮件时,我会立即将所有收据移到收据文件夹中,将它们从收件箱中取出(我练习收件箱为零)。

纸质收据是最糟糕的情况,但许多地方仍然只有纸质。这些很烂,因为它们很容易丢失。我建议你花6美元从亚马逊上买一个小收据,一回到家就把所有积累的纸质收据贴在上面(这还有一个额外的好处,就是让它们按时间顺序排列)。

接下来是实际的数据输入。这里的第一步是导入从GnuCash mobile记录的任何事务。这个应用程序有一个很好的功能,它会记住你最后一次导出的时间,然后只会将新的交易转储为任何数量的文件格式,然后这些文件就可以被应用程序的桌面版本摄取。一旦完成了这项工作,就只需要不断地输入你保存的所有收据了。如果你还记得我们设置期初余额的步骤,那基本上就是你对每一张收据所需要做的-只需更改每一张收据的日期、说明、金额和转账账户即可。这听起来可能很可怕,但是一旦你养成了这个习惯,它就很容易了。老实说,这有时会让人超级放松。我倾向于在周日早上做我的第一件事-只需在第二个监视器上扔一场足球比赛或一些愚蠢的YouTube,然后进入巡航控制。

现在,这里有一条潜在的(很大的)捷径。无需手动保存和输入所有收据,您只需从银行网站导出所有信用卡/银行账户交易,然后将其导入GnuCash即可。不过,我不亲自做这件事有几个原因。首先,手动完成每一笔交易迫使我思考我是如何消费的,这才是将GnuCash作为个人使用的真正意义所在(IMO)。其次,我手动记录我的交易,因为我想要比信用卡公司自动分配给每个交易的类别更细粒度(尽管您总是可以在导入后编辑这些类别)。最后,从其他来源自动导入交易也将自动导入可能存在的任何潜在欺诈性费用。当然,你可以检查每一笔进口交易并寻找可疑的交易,但我个人觉得这样做比手动输入所有我有收据的东西然后检查任何不符之处更有可能遗漏一些东西。也许那只是我一个人的想法。无论如何,这些都是需要考虑的事情。不管怎么说,我想做这种导入工作流程会节省大量的时间。尤其是当涉及到对账时。

需要考虑的一件重要事情是,有些交易可能涉及两个以上的帐户。例如,您的一些工资支票用于纳税,一些用于您的401K,一些用于您的银行账户,等等。我们可以创建单个拆分事务,将所有这些事务分组在一起,而不是为每个事务创建单独的事务。不要忘记,GnuCash的黄金法则在这里仍然适用-即使是拆分的交易也需要完全平衡。我们只是在多个账户之间进行平衡。因此,例如,如果你的雇主付给你1000美元,300美元用于纳税,那么恰好700美元必须进入你的银行账户,或者在其他账户之间进一步分配(只要它们的价值总和正好是700美元)。

说到工资(或租金,或其他定期发生的事情),您可以通过使用计划事务来节省时间。这个特性只是在设定的日期自动创建模板化的事务,对于时间表上发生的任何事情都非常方便。

好的。现在我们已经完成了所有数据的输入,是时候对账了-基本上只需确保GnuCash文件中的交易与现实账户中的交易之间存在1:1的映射即可。您不必为每个帐户都这样做,甚至如果您不想这样做的话也不必这样做。在你的真实账户和GnuCash账户之间多花几美元可能不是什么大不了的事。然而,如果你每次登录的时候都会少一点,那么这两块钱的差额可能很快就会增加到很多,很多。在一个月的时间里试图找出你会计上的错误是一件令人头疼的事。请相信我。如果你真的要这么做,逐步协调要容易得多,而不是一下子全部协调。

要对帐,请首先打开对帐窗口(Actions->;rematile)和您拥有的真实帐户的任何相应文档。在这种情况下,让我们假设我们正在查看一张在线信用卡对账单。

这是打开对账窗口时的外观。在“期末余额”字段中,您应该将最近的余额显示在您的信用卡对帐单上。然后,检查对账单上的每笔交易,并在对账列表中找到相应的交易。单击该事务旁边的复选框。当您检查每个事务时,您将看到窗口更改值右下角的“Difference”字段。您的目标是将该字段设置为零,表明虚拟帐户和真实帐户之间没有区别。

如果您在最后看到一个非零的差额,您应该或者a)遇到一个存在于您的真实账户中但不存在于您的虚拟账户中的交易,或者b)反之亦然。在a)的情况下,请确保您识别了费用,然后添加匹配的虚拟交易。我经常发现,情况b)只有在我的银行尚未处理交易时才会发生。在上图中,请注意我们的虚拟帐户是如何比真实帐户多25美元的。我敢打赌,25美元的“食品”费用只是还没有记入信用卡账单。那样的话,取消勾选就可以了。它将在您下次进入对账对话框时显示,而其他完全对账的费用则不会显示。

如果你持有不同货币的股票或资产,GnuCash有一些工具可以帮助你,但你的会计会变得有点困难。我个人并不会打乱这些功能,所以很遗憾我不能帮你。虽然GnuCash文档看起来有点笨重和吓人,但还是相当不错的。

对于我的股票和非货币资产,i o。

..