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

Plain Text Accounting With the ledger Ecosystem...

Colin Dean
September 30, 2017
350

Plain Text Accounting With the ledger Ecosystem - Ohio Linuxfest 2017

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

September 30, 2017
Tweet

More Decks by Colin Dean

Transcript

  1. #plaintextaccounting My words are my own and not that of

    any of my employers, past, present, or future, nor representative of any project of any nature mentioned herein. 2
  2. #plaintextaccounting Agenda • Why accounting? • Double-entry accounting • Why

    Ledger? • Ledger format and its tools • Tricks 10
  3. #plaintextaccounting Benefits of tracking • Know what you • have

    across all accounts • had at some point in the past • owe and are owed • can spend 14
  4. 16

  5. #plaintextaccounting 20 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
  6. #plaintextaccounting A collection of credits and debits with a timestamp

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

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

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

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

    scenario. • No special editor required. • Give it to your accountant! 43
  11. #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 44
  12. #plaintextaccounting Ledger format • Timestamp • Payee • Accounts with

    positive numbers for credit • Accounts with negative numbers for debit • Optional: comments 45
  13. 58 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
  14. 59 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
  15. 60 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
  16. 62 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
  17. 63 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
  18. 66 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
  19. 67 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
  20. 70

  21. 71 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
  22. 73

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

    worth 74 https://www.marketplace.org/2014/04/21/wealth-poverty/about-half-america-has-zero-net-wealth
  24. 75 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
  25. 77 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
  26. 78 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
  27. 79 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
  28. 80 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
  29. 81 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
  30. 82 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
  31. 83 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
  32. 84 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
  33. 85 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
  34. 86

  35. #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 87
  36. 90 ~ 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
  37. 91 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
  38. 92 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
  39. 94 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
  40. 96 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
  41. 97 ledger -f timekeeping.ledger bal 6.71h CodeAndSupply 15.0m Email [Uptime

    Sponsorship] 6.46h Talks [Plain Text Accounting] -------------------- 6.71h
  42. 98 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
  43. 99 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
  44. #plaintextaccounting Other features • Query language - mostly regex but

    some others • Python integration - web-based entry and scripting 100
  45. 105

  46. 106

  47. 107

  48. 108

  49. 110

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

    have. • Bookkeeping is the practice of tracking transactions. • Double-entry accounting requires balanced transactions. 111
  51. #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. 112
  52. #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. 113
  53. 115

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

    • Logos are property of respective and obvious owners. 118