La guia completa per gestionar comptes a Beancount i Fava
El vostre pla de comptes és la columna vertebral del vostre llibre major de Beancount. Una jerarquia de comptes ben dissenyada fa que cada informe sigui més clar, cada consulta més ràpida i cada temporada fiscal menys dolorosa. En aquesta guia, repassarem tot el que necessiteu saber sobre com crear, consultar, actualitzar i tancar comptes a Beancount i Fava -- des dels conceptes bàsics per a principiants fins als patrons avançats.
Els cinc tipus de comptes
Beancount utilitza el model estàndard de comptabilitat de partida doble amb exactament cinc tipus de comptes arrel:
| Tipus | Propòsit | Signe normal | Informe |
|---|---|---|---|
| Assets | Recursos que posseïu (efectiu, inversions, propietats) | Positiu (dèbit) | Balanç de situació |
| Liabilities | Deutes que deveu (targetes de crèdit, préstecs, hipoteques) | Negatiu (crèdit) | Balanç de situació |
| Equity | Patrimoni net del propietari, beneficis retinguts, saldos inicials | Negatiu (crèdit) | Balanç de situació |
| Income | Fonts d'ingressos (salari, interessos, dividends) | Negatiu (cr èdit) | Compte de resultats |
| Expenses | Categories de despeses (alimentació, lloguer, subministraments) | Positiu (dèbit) | Compte de resultats |
L'equació fonamental de la comptabilitat sempre es compleix:
Assets + Expenses + Equity + Income + Liabilities = 0
Un criteri pràctic: si els imports només són rellevants durant un període de temps (per exemple, "Quant he gastat en alimentació aquest mes?"), feu servir Income o Expenses. Si representen un saldo continuat (per exemple, "Quant tinc al meu compte corrent?"), feu servir Assets o Liabilities.
Convencions de nomenclatura dels comptes
Els noms de comptes a Beancount són identificadors jeràrquics separats per dos punts. Les regles són:
- Han de començar amb un dels cinc tipus arrel:
Assets,Liabilities,Equity,Income,Expenses - Cada component comença amb una lletra majúscula o un número
- Els components poden contenir lletres, números i guions (sense espais ni guions baixos)
- Es requereixen almenys dos components (per exemple,
Expenses:Food, no simplementExpenses) - Els dos punts (
:) separen els nivells de jerarquia
; Noms de comptes vàlids
Assets:US:BofA:Checking
Liabilities:CA:RBC:CreditCard
Equity:Retained-Earnings
Income:US:Acme:Salary
Expenses:Food:Groceries
Assets:Crypto:BTC-Holdings
; Noms de comptes no vàlids
assets:checking ; tipus arrel en minúscules
Assets:my checking ; no es permeten espais
Expenses ; només un component
El patró de nomenclatura recomanat per als comptes del balanç és:
Tipus : País : Institució : Compte : Subcompte
Per exemple: Assets:US:Vanguard:401k:VTSAX o Liabilities:US:Chase:Sapphire.
Per als comptes de despeses i ingressos, feu servir una nomenclatura basada en categories:
Expenses:Food:Groceries
Expenses:Housing:Utilities:Electric
Income:US:Employer:Salary
Personalitzar els noms arrel
Podeu canviar el nom dels cinc tipus arrel per localització o preferència personal:
option "name_assets" "Actius"
option "name_liabilities" "Passius"
option "name_equity" "Capital"
option "name_income" "Ingressos"
option "name_expenses" "Despeses"
Crear comptes (directiva Open)
Cada compte s'ha de declarar amb una directiva open abans de poder-hi registrar transaccions. La sintaxi completa és:
YYYY-MM-DD open Account [ConstraintCurrency,...] ["BookingMethod"]
Open bàsic
2014-05-01 open Assets:US:BofA:Checking
Amb restriccions de moneda
Restringir les monedes evita registrar accidentalment la moneda equivocada:
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
Amb mètodes de comptabilització
Per als comptes d'inversió, especifiqueu com es fan coincidir els lots quan veneu:
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"
Mètodes de comptabilització disponibles:
| Mètode | Comportament |
|---|---|
"STRICT" | Per defecte. Requereix especificació exacta del lot; dona error en cas d'ambigüitat |
"FIFO" | First-In-First-Out -- redueix primer els lots més antics |
"LIFO" | Last-In-First-Out -- redueix primer els lots més recents |
"AVERAGE" | Fusiona tots els lots i recalcula el cost mitjà |
"NONE" | Sense coincidència de lots; s'accepta qualsevol preu |
Amb metadades
2013-03-14 open Assets:US:BTrade:HOOLI
category: "taxable"
institution: "BTrade Corp"
account-number: "XX-1234-5678"
Triar les dates d'obertura estratègicament
- Feu servir la vostra data de naixement per a comptes universals com
Expenses:Groceries(això us dóna sumes acumulades de tota la vida) - Feu servir la data d'inici de la feina per als comptes d'ingressos laborals
- Feu servir la data real de creació del compte per als comptes específics d'institucions (comptes bancaris, targetes de crèdit)
Obertura automàtica amb un plugin
Si voleu ometre les directives open manuals durant la fase de prototipatge:
plugin "beancount.plugins.auto_accounts"
Això genera automàticament directives open per a qualsevol compte referenciat en transaccions. No obstant això, això redueix la detecció d'errors tipogràfics, de manera que no es recomana per a ús en producció.
Llistar i consultar comptes
Amb bean-query (BQL)
# Llistar tots els comptes amb saldos
bean-query ledger.beancount "SELECT account, units(sum(position)) GROUP BY 1"
# Llistar només els comptes de despeses
bean-query ledger.beancount "SELECT account WHERE account ~ 'Expenses'"
# Extracte de compte amb saldo acumulat
bean-query ledger.beancount \
"SELECT date, account, position, balance WHERE account ~ 'BofA:Checking'"
# Vista de diari per a un compte específic
bean-query ledger.beancount "JOURNAL 'Assets:US:BofA:Checking'"
Amb bean-report
# Balanç de comprovació (tots els comptes amb saldos finals)
bean-report ledger.beancount balances
# Balanç de situació
bean-report ledger.beancount balsheet
# Compte de resultats
bean-report ledger.beancount income
# Diari per a un compte específic
bean-report ledger.beancount journal -a Assets:US:BofA:Checking
Amb Fava
Fava proporciona una interfície visual rica per explorar comptes:
- Pàgina del Balanç de situació: arbre interactiu de tots els Assets, Liabilities i Equity
- Pàgina del Compte de resultats: arbre interactiu de tots els Income i Expenses
- Pàgina del compte: feu clic a qualsevol nom de compte per veure les pestanyes de Diari, Canvis i Saldos
- Barra de filtre: feu servir patrons regex per mostrar només els comptes coincidents (per exemple,
Assets:US)
Actualitzar comptes (Reanomenar i reorganitzar)
Beancount no té cap directiva de reanomenament integrada, però existeixen diversos enfocaments.
1. Cercar i substituir
Una simple cerca i substitució funciona, però aneu amb compte -- Assets:Bank també coincidiria amb Assets:Bank:Cash. Feu servir patrons amb límits de paraula:
sed -i 's/Assets:US:OldBank:Checking/Assets:US:NewBank:Checking/g' *.beancount
2. El plugin rename_accounts
El paquet beancount_reds_plugins proporciona un plugin de reanomenament potent:
plugin "beancount_reds_plugins.rename_accounts.rename_accounts" "{
'Expenses:Taxes' : 'Income:Taxes',
'Assets:House:Capital-Improvements' : 'Expenses:House:Appliances',
}"
Aquest plugin:
- Fa servir coincidència de subcadenes (
Expenses:Taxes:Federales converteix automàticament enIncome:Taxes:Federal) - Suporta expressions regulars amb referències enrere
- Genera automàticament directives Open per als comptes reanomenats
- No modifica els vostres fitxers font -- només canvia la representació en memòria
- Es pot activar/desactivar comentant la línia del plugin
3. Patró de tancar i reobrir
Per a migracions reals de comptes (per exemple, canviar de banc):
; Compte antic
2010-01-01 open Assets:US:OldBank:Checking USD
; Tancar l'antic, obrir el nou
2024-06-15 close Assets:US:OldBank:Checking
2024-06-15 open Assets:US:NewBank:Checking USD
; Transferir el saldo restant
2024-06-15 * "Transferència al nou banc"
Assets:US:OldBank:Checking -5000.00 USD
Assets:US:NewBank:Checking 5000.00 USD
Tancar comptes
La directiva close marca un compte com a ja no actiu:
2016-11-28 close Liabilities:CreditCard:CapitalOne
Què fa el tancament
- Genera un error si hi ha registres posteriors a la data de tancament
- Filtra el compte dels informes fora del seu període actiu
- Indica a Fava que oculti el compte de les vistes d'arbre (configurable)
Quan tancar comptes
- Quan tanqueu un compte bancari o targeta de crèdit real
- Quan canvieu de feina
- Quan consolideu o reorganitzeu el vostre pla de comptes
- Quan veneu una propietat o tanqueu una posició d'inversió
Sempre afirmeu un saldo zero abans de tancar
Beancount no verifica automàticament un saldo zero en tancar. Afegiu una verificació manual:
2023-12-31 balance Assets:US:OldBank:Savings 0.00 USD
2023-12-31 close Assets:US:OldBank:Savings
Organitzar el vostre pla de comptes
Comenceu amb senzillesa, refineu amb el temps
No necessiteu el pla de comptes perfecte des del primer dia. Comenceu amb categories àmplies i subdividiu-les a mesura que les vostres necessitats d'informes creixin. L'autor de Beancount informa de tenir més de 250 comptes de despeses, tots creats orgànicament al llarg del temps.
Patrons d'organització habituals
Patró 1: Per institució (per a comptes del balanç)
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
Patró 2: Per categoria (per a comptes d'ingressos i despeses)
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
Patró 3: Per geografia (per a finances multinacionals)
Assets:US:BofA:Checking
Assets:CA:RBC:Checking
Assets:UK:HSBC:Current
Income:US:Acme:Salary
Income:CA:Freelance:Consulting
Patró 4: Per propietat o projecte (per a immobles o negocis)
Assets:US:Loft4530:Property
Income:US:Loft4530:Rental
Expenses:Loft4530:Electricity
Expenses:Loft4530:Insurance
Expenses:Loft4530:Maintenance
Patró 5: Mirall de comptes relacionats (mateix component d'institució)
Assets:US:ETrade:Cash
Assets:US:ETrade:AAPL
Income:US:ETrade:Dividends
Income:US:ETrade:PnL
Expenses:US:ETrade:Commissions
Quina profunditat han de tenir les jerarquies?
- 2-3 nivells és habitual per a categories de despeses (
Expenses:Food:Restaurant) - 3-4 nivells per a elements del balanç estructurats (
Assets:US:Vanguard:401k:VTSAX) - Eviteu superar els 5 nivells tret que tingueu una raó clara per als informes
- Les jerarquies profundes funcionen bé quan Fava les contrau a les vistes d'arbre
Un exemple del món real
Aquí teniu un pla de comptes pràctic per a finances personals:
; ── Assets ──
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
; ── Liabilities ──
Liabilities:US:Amex:Platinum USD
Liabilities:US:Chase:Freedom USD
Liabilities:US:BofA:Mortgage USD
; ── Income ──
Income:US:Employer:Salary
Income:US:Employer:Bonus
Income:US:Employer:Match401k
Income:US:ETrade:Dividends
Income:US:BofA:Interest
; ── Expenses ──
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
; ── Equity ──
Equity:Opening-Balances
Equity:Retained-Earnings
Funcionalitats específiques de Fava
Indicadors d'actualització
Una de les millors funcionalitats de Fava per a la gestió de comptes. Afegiu aquestes metadades a qualsevol compte:
2014-05-01 open Assets:US:BofA:Checking USD
fava-uptodate-indication: TRUE
Fava mostra llavors punts de colors al costat del compte:
- Punt verd: l'última entrada és una verificació de saldo correcta (el compte està conciliat)
- Punt vermell: l'última entrada és una verificació de saldo fallida (requereix atenció)
- Punt groc: existeix l'última entrada però no és una verificació de saldo (encara no conciliat)
- Punt gris: no hi ha activitat dins del període de retrospecció
Configureu el llindar del gris:
2016-06-14 custom "fava-option" "uptodate-indicator-grey-lookback-days" "60"
Controls de la vista d'arbre
Controleu com Fava mostra els comptes:
; Mostrar comptes tancats a l'arbre
2016-06-14 custom "fava-option" "show-closed-accounts" "true"
; Mostrar comptes sense transaccions
2016-06-14 custom "fava-option" "show-accounts-with-zero-transactions" "true"
; Mostrar comptes amb saldo zero
2016-06-14 custom "fava-option" "show-accounts-with-zero-balance" "true"
Patrons de contracció
Contrau per defecte els comptes profundament imbricats:
; Contraure tots els comptes amb 3 o més nivells de profunditat
2016-06-14 custom "fava-option" "collapse-pattern" ".*:.*:.*"
; Contraure subarbres específics
2016-06-14 custom "fava-option" "collapse-pattern" "Assets:US:Vanguard:.*"
Incloure fills al diari del compte
Quan visualitzeu el diari d'un compte a Fava, incloeu els registres dels comptes fills:
2016-06-14 custom "fava-option" "account-journal-include-children" "true"
Invertir signes per a una millor lectura
Per defecte, els ingressos i passius es mostren com a números negatius (el seu signe natural). Per mostrar-los com a positius:
2016-06-14 custom "fava-option" "invert-income-liabilities-equity" "true"
Gestió de documents
Fava integra la gestió de documents amb la vostra jerarquia de comptes. Establiu una arrel de documents:
option "documents" "/path/to/documents"
Després organitzeu els fitxers per ruta de compte:
/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
Els fitxers que comencen amb YYYY-MM-DD són descoberts automàticament per Fava i apareixen a la vista de diari del compte.
Errors habituals i com evitar-los
1. Errors tipogràfics als noms de comptes
Un sol error tipogràfic com Expenses:Grocries crea un compte completament nou i no desitjat.
Solució: No feu servir el plugin auto_accounts en producció. Requeriu directives open explícites. Beancount generarà immediatament un error per a qualsevol compte no declarat:
ERROR: Invalid reference to unknown account 'Expenses:Grocries'
2. Oblidar les restriccions de moneda
Sense restriccions de moneda, podeu registrar accidentalment EUR en un compte que només hauria de tenir USD.
Solució: Especifiqueu sempre les monedes a les directives open:
2014-01-01 open Assets:US:BofA:Checking USD
3. No verificar saldos regularment
Sense verificacions de saldo regulars, els errors poden passar desapercebuts durant mesos.
Solució: Afegiu verificacions de saldo mensuals per a cada compte actiu:
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. Convencions de nomenclatura inconsistents
Barrejar patrons (per exemple, Expenses:Food vs Expenses:US:Food) fa que les consultes i els informes siguin confusos.
Solució: Trieu una convenció i seguiu-la. Feu servir prefixos de país per als comptes del balanç, nomenclatura basada en categories per a ingressos i despeses.
5. Tancar sense verificació de saldo zero
La directiva close no verifica el saldo. Podríeu tancar un compte que encara té diners.
Solució: Combineu sempre el tancament amb una verificació de saldo:
2023-12-31 balance Assets:US:OldBank:Savings 0.00 USD
2023-12-31 close Assets:US:OldBank:Savings
Patrons avançats
Consells per a múltiples monedes
Declareu les vostres monedes operatives per a columnes dedicades als informes:
option "operating_currency" "USD"
option "operating_currency" "EUR"
Per a comptes amb múltiples monedes, llisteu totes les monedes permeses:
2014-01-01 open Assets:Cash USD,CAD,EUR
Les verificacions de saldo amb múltiples monedes s'han de fer una moneda a la vegada:
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 i balance per a la configuració inicial
Feu servir la directiva pad per establir saldos inicials sense haver de calcular manualment els imports:
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 sintetitza automàticament la transacció d'ajust. Una advertència important: les verificacions de saldo comproven el saldo a l'inici de la data especificada. Per tant, un pad el 2 de gener necessita una verificació de saldo el 3 de gener o posterior.
Metadades de compte per a categorització
Feu servir metadades a les directives open per a informes personalitzats:
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"
Consulteu les metadades amb BQL:
SELECT account, META("category") WHERE META("tax-status") = "taxable"
Notes per a l'historial del compte
Adjunteu notes amb data al diari de qualsevol compte:
2024-03-20 note Assets:US:BofA:Checking "Trucada sobre un càrrec disputat, ref #12345"
2024-06-01 note Liabilities:US:Chase:Sapphire "Quota anual exempta després de trucar a retenció"
Aquestes notes apareixen al diari del compte a Fava, proporcionant un rastre d'auditoria.
Comptes de seguiment i assignació de fons
Beancount no té els registres virtuals de Ledger, però podeu fer servir subcomptes per assignar fons:
; Seguiment del fons d'emergència dins del compte corrent
Assets:US:BofA:Checking:EmergencyFund USD
Assets:US:BofA:Checking:Operating USD
; Seguiment de reemborsaments
Assets:Receivables:Employer:Travel USD
Assets:Receivables:Friend:SharedDinner USD
Categories de despeses amigables amb els impostos
Estructureu els comptes de despeses per facilitar la preparació fiscal:
Expenses:Health:Medical:Deductible
Expenses:Charity:Deductible
Expenses:Business:Office
Expenses:Business:Equipment
Expenses:Education:Professional
Full de referència ràpida
| Tasca | Sintaxi |
|---|---|
| Obrir un compte | 2024-01-01 open Assets:US:BofA:Checking USD |
| Tancar un compte | 2024-12-31 close Assets:US:OldBank:Savings |
| Verificar saldo | 2024-01-01 balance Assets:US:BofA:Checking 5,432.10 USD |
| Ajustar al saldo | 2024-01-01 pad Assets:Cash Equity:Opening-Balances |
| Afegir nota | 2024-01-15 note Assets:US:BofA:Checking "Monthly reconciliation done" |
| Adjuntar document | 2024-01-15 document Assets:US:BofA:Checking "/path/to/statement.pdf" |
| Afegir metadades | Clau-valor amb sagnat a la línia posterior a open |
| Obertura automàtica (dev) | plugin "beancount.plugins.auto_accounts" |
| Restringir moneda | 2024-01-01 open Assets:Cash USD,EUR |
| Establir mètode de comptabilització | 2024-01-01 open Assets:US:ETrade:AAPL AAPL "FIFO" |
Resum
Gestionar bé els comptes és la base d'una comptabilitat efectiva amb Beancount. Aquí teniu els punts clau:
- Feu servir sempre directives
openexplícites -- detecten errors tipogràfics i imposen disciplina - Afegiu restriccions de moneda per prevenir errors entre monedes
- Feu servir una convenció de nomenclatura consistent -- per institució per al balanç, per categoria per a ingressos/despeses
- Comenceu amb senzillesa i refineu -- subdividiu els comptes a mesura que les vostres necessitats d'informes creixin
- Verifiqueu els saldos regularment -- la conciliació mensual detecta errors aviat
- Tanqueu els comptes correctament -- amb una verificació de saldo zero
- Aprofiteu les funcionalitats de Fava -- indicadors d'actualització, patrons de contracció i integració de documents
- Feu servir metadades per a categorització personalitzada i informes
Bona comptabilitat!
- https://beancount.github.io/docs/beancount_language_syntax.html
- https://beancount.github.io/docs/command_line_accounting_cookbook.html
- https://beancount.github.io/docs/beancount_options_reference.html
- https://beancount.github.io/docs/beancount_query_language.html
- https://plaintextaccounting.org/Choosing-accounts
