actualbudget / actual

A local-first personal finance app
https://actualbudget.org
MIT License
15.77k stars 1.22k forks source link

[Feature] Support Importing/Exporting in Double-Entry Bookkeeping (plaintextaccounting) format. #3021

Closed ElDubsNZ closed 4 months ago

ElDubsNZ commented 4 months ago

Verified feature request does not already exist?

đź’»

Pitch: what problem are you trying to solve?

A commonly used method of storing accounting and budgeting data is in the form of "Double-Entry Bookkeeping". Currently this data is unable to be imported to Actual nor exported into this format for use elsewhere.

Describe your ideal solution to this problem

If someone could develop the ability for Actual to import basic text files that are in this format, it would add another level of standardisation to Actual. It's a better way to store financial information, is simple to read, and improves compatibility between budgeting apps which gives users more options.

Double-Entry Bookkeeping is an incredibly simple way of storing budgeting/accounting data. Most commonly known in hledger, beancount, fava etc...

The formatting is incredibly simple:

[Date] [Payee]
    [Account In] [Amount In]
    [Account Out] [Amount Out]

2015/10/12 Exxon
    Expenses:Auto:Gas         $10.00
    Liabilities:MasterCard   $-10.00

Split transactions are simple, because all that matters is that each transaction adds up to zero.

I don't imagine it would be terribly difficult to implement. As all the data is neatly laid out, it just needs something to parse it.

Teaching and learning

We should use existing documentation, rather than reinventing the wheel. Refer users to sites like plaintextaccounting or Ledger-CLI for guidance.

It would be discoverable when you go to import or export and it gives you multiple options.

The aspect that could trip people up, is that Double-Entry Bookkeeping is not inherently an envelope budgeting system. It can be, it's really easy to just put in place "virtual" accounts in your ledger.

2015/10/12 Exxon
    Expenses:Auto:Gas         $10.00
    Liabilities:MasterCard   $-10.00

In this example, the Expenses:Auto:Gas is really the category, while Liabilities:MasterCard would be the real transaction in the transaction history, and Exxon would be the payee. In Actual, this might look a bit more like this:

2024-07-10 BP Fuel
    Budget:Essentials:Transportation   $50.00
    Accounts:Chequing                 $-50.00

Which lines up a bit better with Envelope budgeting.

github-actions[bot] commented 4 months ago

:sparkles: Thanks for sharing your idea! :sparkles:

This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesn’t mean we don’t accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).

The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+

Don’t forget to upvote the top comment with 👍!