Prejsť na hlavný obsah

Kompletný sprievodca správou účtov v Beancount a Fava

· 12 minút čítania
Mike Thrift
Mike Thrift
Marketing Manager

Váš účtový rozvrh je chrbticou vášho Beancount hlavného účtovného kniha. Dobre navrhnutá hierarchia účtov robí každý výkaz prehľadnejším, každý dotaz rýchlejším a každé daňové obdobie menej bolestivým. V tomto sprievodcovi si prejdeme všetko, čo potrebujete vedieť o vytváraní, prezeraní, aktualizácii a uzatváraní účtov v Beancount a Fava -- od základov pre začiatočníkov až po pokročilé vzory.

Päť typov účtov

Beancount používa štandardný model podvojného účtovníctva s presne piatimi koreňovými typmi účtov:

TypÚčelŠtandardné znamienkoVýkaz
AssetsZdroje, ktoré vlastníte (hotovosť, investície, majetok)Kladné (má dať)Súvaha
LiabilitiesDlhy, ktoré dlžíte (kreditné karty, pôžičky, hypotéky)Záporné (dal)Súvaha
EquityVlastný kapitál, nerozdelený zisk, počiatočné zostatkyZáporné (dal)Súvaha
IncomeZdroje príjmov (plat, úroky, dividendy)Záporné (dal)Výkaz ziskov a strát
ExpensesKategórie nákladov (jedlo, nájom, energie)Kladné (má dať)Výkaz ziskov a strát

Základná účtovná rovnica vždy platí:

Assets + Expenses + Equity + Income + Liabilities = 0

Užitočná pomôcka: ak sú sumy relevantné len pre určité časové obdobie (napr. „Koľko som minul na jedlo tento mesiac?"), použite Income alebo Expenses. Ak predstavujú priebežný zostatok (napr. „Koľko mám na bežnom účte?"), použite Assets alebo Liabilities.

Konvencie pomenovania účtov

Názvy účtov v Beancount sú hierarchické identifikátory oddelené dvojbodkou. Pravidlá sú:

  • Musia začínať jedným z piatich koreňových typov: Assets, Liabilities, Equity, Income, Expenses
  • Každá zložka začína veľkým písmenom alebo číslicou
  • Zložky môžu obsahovať písmená, čísla a pomlčky (žiadne medzery ani podčiarkovníky)
  • Vyžadujú sa minimálne dve zložky (napr. Expenses:Food, nie len Expenses)
  • Dvojbodky (:) oddeľujú úrovne hierarchie
; Platné názvy účtov
Assets:US:BofA:Checking
Liabilities:CA:RBC:CreditCard
Equity:Retained-Earnings
Income:US:Acme:Salary
Expenses:Food:Groceries
Assets:Crypto:BTC-Holdings

; Neplatné názvy účtov
assets:checking ; koreňový typ malými písmenami
Assets:my checking ; medzery nie sú povolené
Expenses ; iba jedna zložka

Odporúčaný vzor pomenovania pre súvahové účty je:

Typ : Krajina : Inštitúcia : Účet : Podúčet

Napríklad: Assets:US:Vanguard:401k:VTSAX alebo Liabilities:US:Chase:Sapphire.

Pre výdavkové a príjmové účty používajte pomenovanie podľa kategórií:

Expenses:Food:Groceries
Expenses:Housing:Utilities:Electric
Income:US:Employer:Salary

Prispôsobenie koreňových názvov

Päť koreňových typov môžete premenovať kvôli lokalizácii alebo osobným preferenciám:

option "name_assets"       "Aktiva"
option "name_liabilities" "Pasiva"
option "name_equity" "Kapital"
option "name_income" "Prijmy"
option "name_expenses" "Vydavky"

Vytváranie účtov (direktíva Open)

Každý účet musí byť deklarovaný direktívou open predtým, než naň môžete účtovať transakcie. Úplná syntax je:

YYYY-MM-DD open Account [OmedzenieMenu,...] ["MetódaÚčtovania"]

Základné otvorenie

2014-05-01 open Assets:US:BofA:Checking

S obmedzeniami meny

Obmedzenie mien zabraňuje náhodnému zaúčtovaniu nesprávnej meny:

2014-05-01 open Assets:US:BofA:Checking       USD
2014-05-01 open Assets:Cash USD,CAD,EUR
2012-03-01 open Assets:US:ETrade:Main:ITOT ITOT

S metódami účtovania

Pre investičné účty špecifikujte, ako sa párujú loty pri predaji:

2014-02-11 open Assets:US:ETrade:IVV   IVV   "FIFO"
2014-02-11 open Assets:US:Schwab:AAPL AAPL "LIFO"
2014-02-11 open Assets:US:Fidelity GOOG "STRICT"

Dostupné metódy účtovania:

MetódaSprávanie
"STRICT"Predvolená. Vyžaduje presnú špecifikáciu lotu; pri nejednoznačnosti hlási chybu
"FIFO"First-In-First-Out -- najprv znižuje najstaršie loty
"LIFO"Last-In-First-Out -- najprv znižuje najnovšie loty
"AVERAGE"Zlúči všetky loty a prepočíta priemerné náklady
"NONE"Žiadne párovanie lotov; akákoľvek cena je akceptovaná

S metadátami

2013-03-14 open Assets:US:BTrade:HOOLI
category: "taxable"
institution: "BTrade Corp"
account-number: "XX-1234-5678"

Strategický výber dátumov otvorenia

  • Použite svoj dátum narodenia pre univerzálne účty ako Expenses:Groceries (tým získate celoživotné súčty)
  • Použite dátum nástupu do zamestnania pre príjmové účty súvisiace s prácou
  • Použite skutočný dátum vytvorenia účtu pre účty viazané na inštitúcie (bankové účty, kreditné karty)

Automatické otváranie pomocou pluginu

Ak chcete počas prototypovania preskočiť manuálne open direktívy:

plugin "beancount.plugins.auto_accounts"

Toto automaticky generuje open direktívy pre každý účet referencovaný v transakciách. Avšak znižuje to detekciu preklepov, preto sa to neodporúča pre produkčné použitie.

Zobrazovanie a dopytovanie účtov

Pomocou bean-query (BQL)

# Zoznam všetkých účtov so zostatkami
bean-query ledger.beancount "SELECT account, units(sum(position)) GROUP BY 1"

# Zoznam iba výdavkových účtov
bean-query ledger.beancount "SELECT account WHERE account ~ 'Expenses'"

# Výpis účtu s priebežným zostatkom
bean-query ledger.beancount \
"SELECT date, account, position, balance WHERE account ~ 'BofA:Checking'"

# Žurnálový pohľad pre konkrétny účet
bean-query ledger.beancount "JOURNAL 'Assets:US:BofA:Checking'"

Pomocou bean-report

# Predvážka (všetky účty s konečnými zostatkami)
bean-report ledger.beancount balances

# Súvaha
bean-report ledger.beancount balsheet

# Výkaz ziskov a strát
bean-report ledger.beancount income

# Žurnál pre konkrétny účet
bean-report ledger.beancount journal -a Assets:US:BofA:Checking

Pomocou Fava

Fava poskytuje bohaté vizuálne rozhranie na skúmanie účtov:

  • Súvaha: interaktívny strom všetkých Assets, Liabilities a Equity
  • Výkaz ziskov a strát: interaktívny strom všetkých Income a Expenses
  • Stránka účtu: kliknutím na názov účtu zobrazíte karty Žurnál, Zmeny a Zostatky
  • Filter: pomocou regulárnych výrazov zobrazíte len vyhovujúce účty (napr. Assets:US)

Aktualizácia účtov (premenovanie a reorganizácia)

Beancount nemá zabudovanú direktívu premenovania, ale existuje niekoľko prístupov.

1. Nájsť a nahradiť

Jednoduché vyhľadanie a nahradenie funguje, ale buďte opatrní -- Assets:Bank by sa zhodoval aj s Assets:Bank:Cash. Používajte vzory s ohraničením slov:

sed -i 's/Assets:US:OldBank:Checking/Assets:US:NewBank:Checking/g' *.beancount

2. Plugin rename_accounts

Balík beancount_reds_plugins poskytuje výkonný plugin na premenovanie:

plugin "beancount_reds_plugins.rename_accounts.rename_accounts" "{
'Expenses:Taxes' : 'Income:Taxes',
'Assets:House:Capital-Improvements' : 'Expenses:House:Appliances',
}"

Tento plugin:

  • Používa zhodu podreťazcov (Expenses:Taxes:Federal sa automaticky zmení na Income:Taxes:Federal)
  • Podporuje regulárne výrazy so spätnými odkazmi
  • Automaticky generuje Open direktívy pre premenované účty
  • Nemodifikuje vaše zdrojové súbory -- mení len reprezentáciu v pamäti
  • Dá sa zapnúť/vypnúť zakomentovaním riadku s pluginom

3. Vzor uzatvorenia a opätovného otvorenia

Pre skutočné migrácie účtov (napr. zmena banky):

; Starý účet
2010-01-01 open Assets:US:OldBank:Checking USD

; Uzavrieť starý, otvoriť nový
2024-06-15 close Assets:US:OldBank:Checking
2024-06-15 open Assets:US:NewBank:Checking USD

; Previesť zostávajúci zostatok
2024-06-15 * "Prevod do novej banky"
Assets:US:OldBank:Checking -5000.00 USD
Assets:US:NewBank:Checking 5000.00 USD

Uzatváranie účtov

Direktíva close označí účet ako už neaktívny:

2016-11-28 close Liabilities:CreditCard:CapitalOne

Čo uzatvorenie robí

  • Vyhlási chybu, ak sa po dátume uzatvorenia objavia akékoľvek zaúčtovania
  • Filtruje účet z výkazov mimo jeho aktívneho obdobia
  • Povie Fave, aby skryla účet zo stromových zobrazení (konfigurovateľné)

Kedy uzatvárať účty

  • Keď v reálnom svete zatvoríte bankový účet alebo kreditnú kartu
  • Keď zmeníte zamestnávateľa
  • Keď konsolidujete alebo reorganizujete svoj účtový rozvrh
  • Keď predáte nehnuteľnosť alebo uzatvoríte investičnú pozíciu

Vždy overte nulový zostatok pred uzatvorením

Beancount automaticky neoveruje nulový zostatok pri uzatvorení. Pridajte manuálne overenie:

2023-12-31 balance Assets:US:OldBank:Savings  0.00 USD
2023-12-31 close Assets:US:OldBank:Savings

Organizácia vášho účtového rozvrhu

Začnite jednoducho, postupne zdokonaľujte

Nepotrebujete dokonalý účtový rozvrh od prvého dňa. Začnite so širokými kategóriami a rozdeľujte ich podľa toho, ako rastú vaše reportovacie potreby. Autor Beancountu uvádza, že má viac ako 250 výdavkových účtov, všetky vytvorené prirodzene v priebehu času.

Bežné organizačné vzory

Vzor 1: Podľa inštitúcie (pre súvahové účty)

Assets:US:BofA:Checking
Assets:US:BofA:Savings
Assets:US:Vanguard:401k:VTSAX
Assets:US:Vanguard:401k:VBTLX
Liabilities:US:Amex:Platinum
Liabilities:US:Chase:Sapphire

Vzor 2: Podľa kategórie (pre príjmové a výdavkové účty)

Expenses:Food:Groceries
Expenses:Food:Restaurant
Expenses:Food:Coffee
Expenses:Housing:Rent
Expenses:Housing:Insurance
Expenses:Housing:Utilities:Electric
Expenses:Housing:Utilities:Water
Expenses:Transport:Subway
Expenses:Transport:Gas
Expenses:Health:Medical
Expenses:Health:Dental

Vzor 3: Podľa geografie (pre financie vo viacerých krajinách)

Assets:US:BofA:Checking
Assets:CA:RBC:Checking
Assets:UK:HSBC:Current
Income:US:Acme:Salary
Income:CA:Freelance:Consulting

Vzor 4: Podľa nehnuteľnosti alebo projektu (pre reality alebo podnikanie)

Assets:US:Loft4530:Property
Income:US:Loft4530:Rental
Expenses:Loft4530:Electricity
Expenses:Loft4530:Insurance
Expenses:Loft4530:Maintenance

Vzor 5: Zrkadlenie súvisiacich účtov (rovnaká zložka inštitúcie)

Assets:US:ETrade:Cash
Assets:US:ETrade:AAPL
Income:US:ETrade:Dividends
Income:US:ETrade:PnL
Expenses:US:ETrade:Commissions

Aká hlboká by mala byť hierarchia?

  • 2-3 úrovne sú bežné pre kategórie výdavkov (Expenses:Food:Restaurant)
  • 3-4 úrovne pre štruktúrované súvahové položky (Assets:US:Vanguard:401k:VTSAX)
  • Vyhnite sa viac ako 5 úrovniam, pokiaľ nemáte silný dôvod pre reportovanie
  • Hlboké hierarchie fungujú dobre, keď ich Fava zbalí v stromových zobrazeniach

Príklad z praxe

Tu je praktický účtový rozvrh pre osobné financie:

; ── Aktíva ──
Assets:US:BofA:Checking USD
Assets:US:BofA:Savings USD
Assets:US:Vanguard:401k:VTSAX VTSAX
Assets:US:Vanguard:Roth:VTSAX VTSAX
Assets:US:ETrade:Cash USD
Assets:US:ETrade:AAPL AAPL
Assets:Cash:Wallet USD

; ── Záväzky ──
Liabilities:US:Amex:Platinum USD
Liabilities:US:Chase:Freedom USD
Liabilities:US:BofA:Mortgage USD

; ── Príjmy ──
Income:US:Employer:Salary
Income:US:Employer:Bonus
Income:US:Employer:Match401k
Income:US:ETrade:Dividends
Income:US:BofA:Interest

; ── Výdavky ──
Expenses:Food:Groceries
Expenses:Food:Restaurant
Expenses:Food:Coffee
Expenses:Housing:Rent
Expenses:Housing:Insurance
Expenses:Housing:Utilities:Electric
Expenses:Housing:Utilities:Water
Expenses:Transport:Subway
Expenses:Transport:Taxi
Expenses:Transport:Gas
Expenses:Health:Medical
Expenses:Health:Dental
Expenses:Health:Pharmacy
Expenses:Shopping:Clothing
Expenses:Shopping:Electronics
Expenses:Entertainment:Streaming
Expenses:Entertainment:Books
Expenses:Travel:Flights
Expenses:Travel:Hotels
Expenses:Taxes:Federal
Expenses:Taxes:State
Expenses:Taxes:SocialSecurity
Expenses:Taxes:Medicare

; ── Vlastný kapitál ──
Equity:Opening-Balances
Equity:Retained-Earnings

Funkcie špecifické pre Fava

Indikátory aktuálnosti

Jedna z najlepších funkcií Fava pre správu účtov. Pridajte tieto metadáta ku ktorémukoľvek účtu:

2014-05-01 open Assets:US:BofA:Checking  USD
fava-uptodate-indication: TRUE

Fava potom zobrazuje farebné bodky vedľa účtu:

  • Zelená bodka: posledný záznam je úspešné overenie zostatku (účet je zosúladený)
  • Červená bodka: posledný záznam je neúspešné overenie zostatku (vyžaduje pozornosť)
  • Žltá bodka: posledný záznam existuje, ale nie je overením zostatku (ešte nie je zosúladený)
  • Sivá bodka: žiadna aktivita v rámci obdobia spätného pohľadu

Nastavenie prahu pre sivú bodku:

2016-06-14 custom "fava-option" "uptodate-indicator-grey-lookback-days" "60"

Ovládanie stromového zobrazenia

Ovládajte, ako Fava zobrazuje účty:

; Zobraziť uzatvorené účty v strome
2016-06-14 custom "fava-option" "show-closed-accounts" "true"

; Zobraziť účty s nulovým počtom transakcií
2016-06-14 custom "fava-option" "show-accounts-with-zero-transactions" "true"

; Zobraziť účty s nulovým zostatkom
2016-06-14 custom "fava-option" "show-accounts-with-zero-balance" "true"

Vzory zbaľovania

Predvolene zbaliť hlboko vnorené účty:

; Zbaliť všetky účty s 3 a viac úrovňami
2016-06-14 custom "fava-option" "collapse-pattern" ".*:.*:.*"

; Zbaliť konkrétne podstromy
2016-06-14 custom "fava-option" "collapse-pattern" "Assets:US:Vanguard:.*"

Zahrnúť podriadené účty v žurnáli účtu

Pri prezeraní žurnálu účtu vo Fave zahrnúť zaúčtovania z podriadených účtov:

2016-06-14 custom "fava-option" "account-journal-include-children" "true"

Invertovanie znamienok pre lepšiu čitateľnosť

Štandardne sa príjmy a záväzky zobrazujú ako záporné čísla (ich prirodzené znamienko). Na zobrazenie ako kladné:

2016-06-14 custom "fava-option" "invert-income-liabilities-equity" "true"

Správa dokumentov

Fava integruje správu dokumentov s vašou hierarchiou účtov. Nastavte koreňový adresár dokumentov:

option "documents" "/path/to/documents"

Potom organizujte súbory podľa cesty účtu:

/path/to/documents/
Assets/
US/
BofA/
Checking/
2024-01-15.january-statement.pdf
2024-02-15.february-statement.pdf
Liabilities/
US/
Amex/
Platinum/
2024-03-15.march-bill.pdf

Súbory začínajúce na YYYY-MM-DD sú automaticky objavené Favou a zobrazujú sa v žurnálovom pohľade účtu.

Bežné chyby a ako sa im vyhnúť

1. Preklepy v názvoch účtov

Jediný preklep ako Expenses:Grocries vytvorí úplne nový, neúmyselný účet.

Riešenie: Nepoužívajte plugin auto_accounts v produkcii. Vyžadujte explicitné open direktívy. Beancount okamžite ohlási chybu pri akomkoľvek nedeklarovanom účte:

ERROR: Invalid reference to unknown account 'Expenses:Grocries'

2. Zabudnutie obmedzení meny

Bez obmedzení meny môžete náhodne zaúčtovať EUR na účet len pre USD.

Riešenie: Vždy špecifikujte meny v open direktívach:

2014-01-01 open Assets:US:BofA:Checking  USD

3. Nepravidelné overovanie zostatkov

Bez pravidelného overovania zostatkov môžu chyby zostať neodhalené celé mesiace.

Riešenie: Pridajte mesačné overenia zostatkov pre každý aktívny účet:

2024-01-01 balance Assets:US:BofA:Checking   5,432.10 USD
2024-02-01 balance Assets:US:BofA:Checking 4,890.55 USD
2024-03-01 balance Assets:US:BofA:Checking 6,123.00 USD

4. Nekonzistentné konvencie pomenovania

Miešanie vzorov (napr. Expenses:Food vs Expenses:US:Food) robí dotazy a výkazy mätúcimi.

Riešenie: Zvoľte konvenciu a dodržiavajte ju. Používajte predpony krajín pre súvahové účty, pomenovanie podľa kategórií pre príjmy a výdavky.

5. Uzatvorenie bez overenia nulového zostatku

Direktíva close neoveruje zostatok. Mohli by ste uzatvoriť účet, na ktorom sú ešte peniaze.

Riešenie: Vždy spárujte uzatvorenie s overením zostatku:

2023-12-31 balance Assets:US:OldBank:Savings  0.00 USD
2023-12-31 close Assets:US:OldBank:Savings

Pokročilé vzory

Tipy pre viacero mien

Deklarujte vaše prevádzkové meny pre vyhradené stĺpce výkazov:

option "operating_currency" "USD"
option "operating_currency" "EUR"

Pre účty s viacerými menami uveďte všetky povolené meny:

2014-01-01 open Assets:Cash  USD,CAD,EUR

Overenia zostatkov s viacerými menami sa musia robiť po jednej mene:

2024-01-01 balance Assets:Cash     562.00 USD
2024-01-01 balance Assets:Cash 210.00 CAD
2024-01-01 balance Assets:Cash 60.00 EUR

Pad a Balance pre počiatočné nastavenie

Použite direktívu pad na stanovenie počiatočných zostatkov bez manuálneho výpočtu súm:

2000-05-28 open Assets:US:BofA:Checking  USD
2000-05-28 pad Assets:US:BofA:Checking Equity:Opening-Balances
2024-07-01 balance Assets:US:BofA:Checking 12,345.67 USD

Beancount automaticky syntetizuje vyrovnávaciu transakciu. Dôležitá poznámka: overenia zostatkov kontrolujú zostatok na začiatku uvedeného dátumu. Takže pad z 2. januára potrebuje overenie zostatku z 3. januára alebo neskôr.

Metadáta účtov pre kategorizáciu

Používajte metadáta v open direktívach pre vlastné reportovanie:

2014-01-01 open Assets:US:BofA:Checking  USD
category: "liquid"
tax-status: "taxable"

2014-01-01 open Assets:US:Vanguard:401k USD
category: "retirement"
tax-status: "tax-deferred"

Dopytovanie metadát pomocou BQL:

SELECT account, META("category") WHERE META("tax-status") = "taxable"

Poznámky k histórii účtu

Pripojte datované poznámky k žurnálu ľubovoľného účtu:

2024-03-20 note Assets:US:BofA:Checking "Volal som ohľadom spornej platby, ref #12345"
2024-06-01 note Liabilities:US:Chase:Sapphire "Ročný poplatok odpustený po zavolaní na retenciu"

Tieto poznámky sa zobrazujú v žurnáli účtu vo Fave a poskytujú audit trail.

Sledovacie účty a earmarking

Beancount nemá virtuálne zaúčtovania ako Ledger, ale na earmarking môžete použiť podúčty:

; Sledovanie núdzového fondu v rámci bežného účtu
Assets:US:BofA:Checking:EmergencyFund USD
Assets:US:BofA:Checking:Operating USD

; Sledovanie náhrad
Assets:Receivables:Employer:Travel USD
Assets:Receivables:Friend:SharedDinner USD

Kategórie výdavkov priaznivé pre dane

Štruktúrujte výdavkové účty tak, aby uľahčili prípravu daňového priznania:

Expenses:Health:Medical:Deductible
Expenses:Charity:Deductible
Expenses:Business:Office
Expenses:Business:Equipment
Expenses:Education:Professional

Rýchly prehľad

ÚlohaSyntax
Otvoriť účet2024-01-01 open Assets:US:BofA:Checking USD
Uzatvoriť účet2024-12-31 close Assets:US:OldBank:Savings
Overiť zostatok2024-01-01 balance Assets:US:BofA:Checking 5,432.10 USD
Vyrovnať na zostatok2024-01-01 pad Assets:Cash Equity:Opening-Balances
Pridať poznámku2024-01-15 note Assets:US:BofA:Checking "Mesačné zosúladenie dokončené"
Priložiť dokument2024-01-15 document Assets:US:BofA:Checking "/path/to/statement.pdf"
Pridať metadátaOdsadený kľúč-hodnota na riadku za open
Automatické otvorenie (dev)plugin "beancount.plugins.auto_accounts"
Obmedziť menu2024-01-01 open Assets:Cash USD,EUR
Nastaviť metódu účtovania2024-01-01 open Assets:US:ETrade:AAPL AAPL "FIFO"

Zhrnutie

Dobrá správa účtov je základom efektívneho účtovníctva v Beancount. Tu sú kľúčové odporúčania:

  1. Vždy používajte explicitné open direktívy -- zachytávajú preklepy a vynucujú disciplínu
  2. Pridajte obmedzenia meny na prevenciu chýb krížových mien
  3. Používajte konzistentné konvencie pomenovania -- podľa inštitúcie pre súvahu, podľa kategórie pre príjmy/výdavky
  4. Začnite jednoducho a zdokonaľujte -- rozdeľujte účty podľa toho, ako rastú vaše reportovacie potreby
  5. Pravidelne overujte zostatky -- mesačné zosúladenie zachytí chyby včas
  6. Správne uzatvárajte účty -- s overením nulového zostatku
  7. Využívajte funkcie Fava -- indikátory aktuálnosti, vzory zbaľovania a integráciu dokumentov
  8. Používajte metadáta pre vlastnú kategorizáciu a reportovanie

Šťastné účtovanie!

References: