Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Plain Text Accounting with ledger and its ecosy...

Colin Dean
July 12, 2017
600

Plain Text Accounting with ledger and its ecosystem

Plain Text Accounting is the practice of maintaining a ledger in a format that values human readability, accountant auditability, and version control. The ledger-like ecosystem enables recording of purchases and transfers and investments, versioning of ledger-files to provide an audit trail, and performing analysis to produce registers, balance sheets, profit and loss statements, track billable time and paid time off, and lots of other reports. In this presentation, you’ll learn some basic accounting principals, ledger tool usage, and why you might choose plain text accounting over Quicken, QuickBooks, Mint.com, or You Need a Budget.

Colin Dean has been using plain text accounting tools for more than four years. He runs the fledgling /r/plaintextaccounting reddit and has contributed to the ledger-like ecosystem.

Colin Dean

July 12, 2017
Tweet

Transcript

  1. #plaintextaccounting Benefits of tracking • Know what you • have

    across all accounts • had at some point in the past • owe and are owed • can spend 10
  2. 12

  3. #plaintextaccounting 16 Assets Income Liabilities Expenses Wallet Bank accounts Investments

    Loans credited Loans owed Mortgage Credit cards Student loans Paychecks Gifts received Interest Dividends Groceries Taxes Gifts given Donations
  4. #plaintextaccounting A collection of credits and debits with a timestamp

    to describe when the transaction is effective Transaction 20
  5. #plaintextaccounting Balance transactions Credit Debit 0 -100 523 -252 15

    -186 -538 + 538 = 0 Johnny Susie Naga Bank Wallet 26
  6. #plaintextaccounting Manual entry • Intimate knowledge of every transaction •

    Envelopes are cash only • Bank exports are card and check only 37
  7. #plaintextaccounting Track everything. • USD? Commodity. • BTC? Commodity. •

    VSTAX? Commodity. • TSLA? Commodity. • House? Commodity. 38
  8. #plaintextaccounting It’s just text. • Manual typing is worst case

    scenario. • No special editor required. • Give it to your accountant! 39
  9. #plaintextaccounting Developer-friendly • Simple format to parse and construct •

    Versionable with meaningful diffs and audits • Standard developer tools for everything. • Syntax highlighting, continuous integration, etc 40
  10. #plaintextaccounting Ledger format • Timestamp • Payee • Accounts with

    positive numbers for credit • Accounts with negative numbers for debit • Optional: comments 41
  11. 54 2017-07-15 Spacely Sprockets ; payday! Income:SpacelySprockets -2000.00 Assets:Cash:Bank:Checking 2000.00

    2017-07-15 Transfer to Savings Assets:Cash:Bank:Checking -100.00 Assets:Cash:Bank:Savings 100.00
  12. 55 2017-07-30 Spacely Sprockets ; payday with taxes Income:SpacelySprockets -2735.00

    Expenses:Taxes:Federal:EIT 459.00 Expenses:Taxes:Federal:FICA 192.00 Expenses:Taxes:State:EIT 84.00 Assets:Cash:Bank:Checking 2000.00
  13. 56 2017-07-30 Spacely Sprockets ; payday with taxes Income:SpacelySprockets -2735.00

    Expenses:Taxes:Federal:EIT 459.00 Expenses:Taxes:Federal:FICA 192.00 Expenses:Taxes:State:EIT 84.00 Assets:Cash:Bank:Checking 2000.00
  14. 58 2017-06-26 Opening Balances Assets:Cash:Bank:Checking 500.00 Assets:Cash:Bank:Savings 1500.00 Liabilities:CreditCards:Costco -61.25

    Equity:OpeningBalances 2017-06-27 Commonplace Coffee ; cold brew Expenses:Restaurants:Coffee 3.00 Liabilities:CreditCards:Costco
 2017-07-15 Spacely Sprockets ; payday! Income:SpacelySprockets -2000.00 Assets:Cash:Bank:Checking 2000.00 2017-07-15 Transfer to Savings Assets:Cash:Bank:Checking -100.00 Assets:Cash:Bank:Savings 100.00
  15. 59 ledger -f exercise1.ledger balance 4000 Assets:Cash:Bank 2400 Checking 1600

    Savings -1938.75 Equity:OpeningBalances 3 Expenses:Restaurants:Coffee -2000 Income:SpacelySprockets -64.25 Liabilities:CreditCards:Costco -------------------- 0
  16. 62 ledger -f exercise1.ledger register 17-Jun-26 Opening Balances Assets:Cash:Bank:Checking 500

    500 Assets:Cash:Bank:Savings 1500 2000 Liabilities:CreditCards:Costco -61.25 1938.75 Equity:OpeningBalances -1938.75 0 17-Jun-27 Commonplace Coffee Expenses:Restaurants:Coffee 3 3 Liabilities:CreditCards:Costco -3 0 17-Jul-15 Spacely Sprockets Income:SpacelySprockets -2000 -2000 Assets:Cash:Bank:Checking 2000 0 17-Jul-15 Transfer to Savings Assets:Cash:Bank:Checking -100 -100 Assets:Cash:Bank:Savings 100 0
  17. 63 ledger -f examples.ledger balance 9547.97 Assets:Cash 9550.47 Bank 6436.35

    Checking 3114.12 Savings -2.5 Wallet -3318.84 Equity:OpeningBalances 744 Expenses 9 Restaurants:Coffee 735 Taxes 700 Federal 500 EIT 200 FICA 35 State:EIT -6735 Income:SpacelySprockets -238.13 Liabilities:CreditCards:Costco -------------------- 0
  18. 66

  19. 67 ledger -f examples.ledger balance ^Income ^Expenses 744 Expenses 9

    Restaurants:Coffee 735 Taxes 700 Federal 500 EIT 200 FICA 35 State:EIT -6735 Income:SpacelySprockets -------------------- -5991
  20. 69

  21. #plaintextaccounting As of 2014, ~50% of Americans have zero net

    worth 70 https://www.marketplace.org/2014/04/21/wealth-poverty/about-half-america-has-zero-net-wealth
  22. 71 ledger -f examples.ledger balance ^Assets ^Liabilities 9547.97 Assets:Cash 9550.47

    Bank 6436.35 Checking 3114.12 Savings -2.5 Wallet -238.13 Liabilities:CreditCards:Costco -------------------- 9309.84
  23. 73 2017-07-01 Vanguard Assets:Cash:Bank:Checking -1000 USD Assets:Investments:Vanguard:RothIRA 8.03535 VTI @

    124.45 USD 2017-07-16 Vanguard Assets:Cash:Bank:Checking Assets:Investments:Vanguard:RothIRA 0.90535 VTI @ 125.56 USD
  24. 74 2017-07-01 Vanguard Assets:Cash:Bank:Checking -1000 USD Assets:Investments:Vanguard:RothIRA 8.03535 VTI @

    124.45 USD 2017-07-16 Vanguard Assets:Cash:Bank:Checking Assets:Investments:Vanguard:RothIRA 0.90535 VTI @ 125.56 USD
  25. 75 P 2017/07/01 16:00:00 VTI 124.45 USD P 2017/07/03 16:00:00

    VTI 125.75 USD P 2017/07/05 16:00:00 VTI 128.89 USD P 2017/07/07 16:00:00 VTI 139.66 USD P 2017/07/09 16:00:00 VTI 133.45 USD P 2017/07/11 16:00:00 VTI 128.58 USD
  26. 76 ledger -f exercise2.ledger --price-db exercise2.pricedb bal -V --end 7/2

    0 Assets -1000 USD Cash:Bank:Checking 1000 USD Investments:Vanguard:RothIRA -------------------- 0
  27. 77 ledger -f exercise2.ledger --price-db exercise2.pricedb bal -V --end 7/4

    10 USD Assets -1000 USD Cash:Bank:Checking 1010 USD Investments:Vanguard:RothIRA -------------------- 10 USD
  28. 78 ledger -f exercise2.ledger --price-db exercise2.pricedb bal -V --end 7/4

    10 USD Assets -1000 USD Cash:Bank:Checking 1010 USD Investments:Vanguard:RothIRA -------------------- 10 USD
  29. 79 ledger -f exercise2.ledger --price-db exercise2.pricedb bal -V --end 7/6

    36 USD Assets -1000 USD Cash:Bank:Checking 1036 USD Investments:Vanguard:RothIRA -------------------- 36 USD
  30. 80 ledger -f exercise2.ledger --price-db exercise2.pricedb bal -V --end 7/8

    122 USD Assets -1000 USD Cash:Bank:Checking 1122 USD Investments:Vanguard:RothIRA -------------------- 122 USD
  31. 81 ledger -f exercise2.ledger --price-db exercise2.pricedb bal -V --end 7/10

    72 USD Assets -1000 USD Cash:Bank:Checking 1072 USD Investments:Vanguard:RothIRA -------------------- 72 USD
  32. 82

  33. #plaintextaccounting Other transaction features • Virtual transactions - ledger within

    an account • Stock lot pricing - designate basis or lot date • Command directives - default accounts, etc. • Balance assertions - declare a balance at a date • Asset allocation - see bond/equity allocation 83
  34. 86 ~ Monthly Expenses:Restaurants:Coffee 30.00 USD Expenses:Restaurants:Lunch 100.00 USD Expenses:Coworking

    50.00 USD Expenses:Groceries 600.00 USD Expenses:Phone 100.00 USD Expenses:House:Utilities 150.00 USD Liabilities:Mortgage 600.00 USD Expenses:Movies 50.00 USD Expenses:Auto:Insurance 150.00 USD Expenses:Auto:Gasoline 120.00 USD Expenses:Taxes 3000.00 USD Expenses 200.00 USD ; all other expenses Assets
  35. 87 2017-06-01 Mortgage Liabilities:Mortgage 580.00 USD Assets:Cash:Bank:Checking 2017-06-26 Commonplace Coffee

    Expenses:Restaurants:Coffee 3.00 USD Assets:Cash:Wallet 2017-06-26 Whole Foods Expenses:Restaurants:Lunch 15.00 USD Liabilities:CreditCards:Costco
  36. 88 ledger -f exercise3.ledger --monthly register --add-budget -p "june 2017”

    17-Jun-01 - 17-Jun-30 Assets 4567.00 USD 4567.00 USD Expenses -200.00 USD 4367.00 USD Expenses:Auto:Gasoline -120.00 USD 4247.00 USD Expenses:Auto:Insurance -150.00 USD 4097.00 USD Expenses:Coworking -50.00 USD 4047.00 USD Expenses:Groceries -600.00 USD 3447.00 USD Expenses:House:Utilities -150.00 USD 3297.00 USD Expenses:Movies -50.00 USD 3247.00 USD Expenses:Phone -100.00 USD 3147.00 USD Expenses:Restaurants:Coffee -27.00 USD 3120.00 USD Expenses:Restaurants:Lunch -85.00 USD 3035.00 USD Expenses:Taxes -3000.00 USD 35.00 USD Liabilit:CreditCards:Costco -15.00 USD 20.00 USD Liabilities:Mortgage -20.00 USD 0
  37. 90 ledger -f exercise3.ledger --forecast "T>{\$-500.00}" register ^assets ^liabilities 17-Jun-01

    Mortgage Liabilities:Mortgage 580.00 USD 580.00 USD Assets:Cash:Bank:Checking -580.00 USD 0 17-Jun-26 Commonplace Coffee Assets:Cash:Wallet -3.00 USD -3.00 USD 17-Jun-26 Whole Foods Liabilit:CreditCards:Costco -15.00 USD -18.00 USD 17-Jul-30 Spacely Sprockets Assets:Cash:Bank:Checking 2000.00 USD 1982.00 USD 18-Jan-01 Forecast transaction Assets -2300.00 USD -318.00 USD 17-Aug-01 Forecast transaction Liabilities:Mortgage 600.00 USD 282.00 USD 17-Aug-01 Forecast transaction Assets -5150.00 USD -4868.00 USD 17-Sep-01 Forecast transaction Liabilities:Mortgage 600.00 USD -4268.00 USD 17-Sep-01 Forecast transaction Assets -5150.00 USD -9418.00 USD
  38. 92 i 2017/06/23 09:15:00 CodeAndSupply:Talks [Plain Text Accounting] o 2017/06/23

    10:00:00 i 2017/07/09 20:15:00 CodeAndSupply:Talks [Plain Text Accounting] o 2017/07/10 00:06:48 i 2017/07/11 22:00:00 CodeAndSupply:Email [Uptime Sponsorship] o 2017/07/11 22:15:00 i 2017/07/11 22:15:00 CodeAndSupply:Talks [Plain Text Accounting] o 2017/07/12 00:06:00
  39. 93 ledger -f timekeeping.ledger bal 6.71h CodeAndSupply 15.0m Email [Uptime

    Sponsorship] 6.46h Talks [Plain Text Accounting] -------------------- 6.71h
  40. 94 ledger -f timekeeping.ledger bal —end 5/13 10.00h Away 1.00h

    DoctorAppt 9.00h Vacation 18.00h Billable 17.25h Development [Front end] 45.0m Meeting 7.00h Nonbillable:Training -------------------- 35.00h
  41. 95 ledger -f timekeeping.ledger reg --end 5/13 17-May-09 (Billable:Meeting) 45.0m

    45.0m 17-May-09 (B:Development [Front end]) 8.25h 9.00h 17-May-10 (B:Development [Front end]) 9.00h 18.00h 17-May-11 (Away:Vacation) 9.00h 27.00h 17-May-12 (Nonbillable:Training) 7.00h 34.00h 17-May-12 (Away:DoctorAppt) 1.00h 35.00h
  42. #plaintextaccounting Other features • Query language - mostly regex but

    some others • Python integration - web-based entry and scripting 96
  43. 101

  44. 102

  45. 103

  46. 104

  47. 106

  48. #plaintextaccounting Takeaways • Accounting informs us of how much we

    have. • Bookkeeping is the practice of tracking transactions. • Double-entry accounting requires balanced transactions. 107
  49. #plaintextaccounting Takeaways • There are many tools. • ledger is

    the most well-known plain text accounting tool. • There is a whole ecosystem and community around it. 108
  50. #plaintextaccounting Takeaways • Text lends itself to easier management. •

    Manual entry may seem tedious but it enables intimate knowledge of one’s finances. • Use the tools you know to manage your finances. 109
  51. 111

  52. #plaintextaccounting Attributions • Rich Uncle Pennybags © Hasbro. Artist unknown.

    • Logos are property of respective and obvious owners. 114