Slide 1

Slide 1 text

#plaintextaccounting plaintext accounting Double-entry accounting using the ledger ecosystem @colindean 1

Slide 2

Slide 2 text

About Me Colin Dean Software Engineer & Community Builder 2

Slide 3

Slide 3 text

#plaintextaccounting Experience with ledger 2012 - 2014 Timetracking & Cryptocurrencies 3

Slide 4

Slide 4 text

#plaintextaccounting Experience with ledger 2016 Paid Time Off 4 https://github.com/colindean/pto-tracker

Slide 5

Slide 5 text

#plaintextaccounting Experience with ledger 2017 Personal and non-profit accounting 5

Slide 6

Slide 6 text

#plaintextaccounting Agenda • Why accounting? • Double-entry accounting • Why Ledger? • Ledger format and its tools • Tricks 6

Slide 7

Slide 7 text

#plaintextaccounting Why accounting? 7

Slide 8

Slide 8 text

#plaintextaccounting To know what you have 8

Slide 9

Slide 9 text

#plaintextaccounting What you can access immediately + What others owe you - What you owe others What you have 9

Slide 10

Slide 10 text

#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

Slide 11

Slide 11 text

#plaintextaccounting Legally required for most businesses 11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

#plaintextaccounting Double-entry accounting • Terminology • Account • Debit • Credit • Transaction 13

Slide 14

Slide 14 text

#plaintextaccounting A label describing an amount of something Account (even if that amount is 0) 14

Slide 15

Slide 15 text

#plaintextaccounting Five common categories of accounts 15 (for personal finance)

Slide 16

Slide 16 text

#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

Slide 17

Slide 17 text

#plaintextaccounting Equity 17 For everything else, there’s Opening Balances Cashback Untrackable errors

Slide 18

Slide 18 text

#plaintextaccounting The addition of value to an account Credit 18

Slide 19

Slide 19 text

#plaintextaccounting The deduction of value from an account Debit 19

Slide 20

Slide 20 text

#plaintextaccounting A collection of credits and debits with a timestamp to describe when the transaction is effective Transaction 20

Slide 21

Slide 21 text

#plaintextaccounting One transaction Credit Debit Deduct from accounts Add to accounts 21

Slide 22

Slide 22 text

#plaintextaccounting Double-entry accounting Transaction Credit Debit 22

Slide 23

Slide 23 text

#plaintextaccounting Double-entry accounting Transaction Credit Debit Credit Debit 23

Slide 24

Slide 24 text

#plaintextaccounting Balance transactions Credit Debit 0 24

Slide 25

Slide 25 text

#plaintextaccounting Balance transactions Credit Debit 0 -100 + 100 = 0 25

Slide 26

Slide 26 text

#plaintextaccounting Balance transactions Credit Debit 0 -100 523 -252 15 -186 -538 + 538 = 0 Johnny Susie Naga Bank Wallet 26

Slide 27

Slide 27 text

#plaintextaccounting Transactions must always be balanced 27

Slide 28

Slide 28 text

#plaintextaccounting Programs 28

Slide 29

Slide 29 text

#plaintextaccounting 29

Slide 30

Slide 30 text

#plaintextaccounting 30

Slide 31

Slide 31 text

#plaintextaccounting 31 “YNAB”

Slide 32

Slide 32 text

#plaintextaccounting 32 GNUCASH NU ASH

Slide 33

Slide 33 text

#plaintextaccounting ledger 33

Slide 34

Slide 34 text

34 https://en.wikipedia.org/wiki/Comparison_of_accounting_software

Slide 35

Slide 35 text

35 https://en.wikipedia.org/wiki/Comparison_of_accounting_software

Slide 36

Slide 36 text

#plaintextaccounting Why ledger? 36

Slide 37

Slide 37 text

#plaintextaccounting Manual entry • Intimate knowledge of every transaction • Envelopes are cash only • Bank exports are card and check only 37

Slide 38

Slide 38 text

#plaintextaccounting Track everything. • USD? Commodity. • BTC? Commodity. • VSTAX? Commodity. • TSLA? Commodity. • House? Commodity. 38

Slide 39

Slide 39 text

#plaintextaccounting It’s just text. • Manual typing is worst case scenario. • No special editor required. • Give it to your accountant! 39

Slide 40

Slide 40 text

#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

Slide 41

Slide 41 text

#plaintextaccounting Ledger format • Timestamp • Payee • Accounts with positive numbers for credit • Accounts with negative numbers for debit • Optional: comments 41

Slide 42

Slide 42 text

42 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 43

Slide 43 text

43 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 44

Slide 44 text

44 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 45

Slide 45 text

45 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 46

Slide 46 text

46 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 47

Slide 47 text

47 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 48

Slide 48 text

48 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet -3.00

Slide 49

Slide 49 text

49 2017-06-26 Commonplace Coffee Expenses:Restaurants:Coffee 3.00 Assets:Cash:Wallet

Slide 50

Slide 50 text

50 2017-06-27 Commonplace Coffee ; cold brew Expenses:Restaurants:Coffee 3.00 Liabilities:CreditCards:Costco

Slide 51

Slide 51 text

51 2017-06-27 Commonplace Coffee ; cold brew Expenses:Restaurants:Coffee 3.00 Liabilities:CreditCards:Costco

Slide 52

Slide 52 text

52 2017-06-27 Commonplace Coffee ; cold brew Expenses:Restaurants:Coffee 3.00 Liabilities:CreditCards:Costco

Slide 53

Slide 53 text

53 2017-06-30 Spacely Sprockets ; payday! Income:SpacelySprockets -2000.00 Assets:Cash:Bank:Checking 2000.00

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

#plaintextaccounting Running ledger 57

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

60 ledger -f exercise1.ledger accounts Assets:Cash:Bank:Checking Assets:Cash:Bank:Savings Equity:OpeningBalances Expenses:Restaurants:Coffee Income:SpacelySprockets Liabilities:CreditCards:Costco

Slide 61

Slide 61 text

61 ledger -f exercise1.ledger payees Commonplace Coffee Opening Balances Spacely Sprockets Transfer to Savings

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

#plaintextaccounting balance and register alone aren’t that useful 64

Slide 65

Slide 65 text

#plaintextaccounting Expenses minus Income Positive means that expenses are higher than income. Cashflow 65

Slide 66

Slide 66 text

66

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

#plaintextaccounting Assets minus Liabilities Net worth 68

Slide 69

Slide 69 text

69

Slide 70

Slide 70 text

#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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

#plaintextaccounting Commodities 72

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

82

Slide 83

Slide 83 text

#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

Slide 84

Slide 84 text

#plaintextaccounting Other features • Budgeting • Forecasting • Timekeeping 84

Slide 85

Slide 85 text

#plaintextaccounting Budgeting • Periodic transactions • Command line options • --budget • --add-budget • --unbudgeted 85

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

#plaintextaccounting Forecasting • Constantly apply periodic transactions to see future value of accounts 89

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

#plaintextaccounting Time Keeping 91

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

93 ledger -f timekeeping.ledger bal 6.71h CodeAndSupply 15.0m Email [Uptime Sponsorship] 6.46h Talks [Plain Text Accounting] -------------------- 6.71h

Slide 94

Slide 94 text

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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

#plaintextaccounting Other features • Query language - mostly regex but some others • Python integration - web-based entry and scripting 96

Slide 97

Slide 97 text

#plaintextaccounting ledger-cli.org 97 ledger-cli.org/docs.html

Slide 98

Slide 98 text

#plaintextaccounting Ecosystem 98

Slide 99

Slide 99 text

#plaintextaccounting #plaintextaccounting 99

Slide 100

Slide 100 text

#plaintextaccounting plaintextaccounting.org 100

Slide 101

Slide 101 text

101

Slide 102

Slide 102 text

102

Slide 103

Slide 103 text

103

Slide 104

Slide 104 text

104

Slide 105

Slide 105 text

105 Treemap of my 2017 Expenses in Fava, the web UI for Beancount

Slide 106

Slide 106 text

106

Slide 107

Slide 107 text

#plaintextaccounting Takeaways • Accounting informs us of how much we have. • Bookkeeping is the practice of tracking transactions. • Double-entry accounting requires balanced transactions. 107

Slide 108

Slide 108 text

#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

Slide 109

Slide 109 text

#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

Slide 110

Slide 110 text

#plaintextaccounting Is ledger the best? 110

Slide 111

Slide 111 text

111

Slide 112

Slide 112 text

#plaintextaccounting Use the best tool for you 112

Slide 113

Slide 113 text

#plaintextaccounting Go forth and save! 113

Slide 114

Slide 114 text

#plaintextaccounting Attributions • Rich Uncle Pennybags © Hasbro. Artist unknown. • Logos are property of respective and obvious owners. 114

Slide 115

Slide 115 text

@colindean 115

Slide 116

Slide 116 text

#plaintextaccounting plaintextaccounting.org 116 /r/plaintextaccounting @LedgerTips irc://chat.freenode.net/ledger http://j.mp/plaintextaccounting-codeandsupply-2017