Salta al contingut principal

La guia completa per gestionar comptes a Beancount i Fava

· 14 minuts de lectura
Mike Thrift
Mike Thrift
Marketing Manager

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:

TipusPropòsitSigne normalInforme
AssetsRecursos que posseïu (efectiu, inversions, propietats)Positiu (dèbit)Balanç de situació
LiabilitiesDeutes que deveu (targetes de crèdit, préstecs, hipoteques)Negatiu (crèdit)Balanç de situació
EquityPatrimoni net del propietari, beneficis retinguts, saldos inicialsNegatiu (crèdit)Balanç de situació
IncomeFonts d'ingressos (salari, interessos, dividends)Negatiu (crèdit)Compte de resultats
ExpensesCategories 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 simplement Expenses)
  • 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ètodeComportament
"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:Federal es converteix automàticament en Income: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

TascaSintaxi
Obrir un compte2024-01-01 open Assets:US:BofA:Checking USD
Tancar un compte2024-12-31 close Assets:US:OldBank:Savings
Verificar saldo2024-01-01 balance Assets:US:BofA:Checking 5,432.10 USD
Ajustar al saldo2024-01-01 pad Assets:Cash Equity:Opening-Balances
Afegir nota2024-01-15 note Assets:US:BofA:Checking "Monthly reconciliation done"
Adjuntar document2024-01-15 document Assets:US:BofA:Checking "/path/to/statement.pdf"
Afegir metadadesClau-valor amb sagnat a la línia posterior a open
Obertura automàtica (dev)plugin "beancount.plugins.auto_accounts"
Restringir moneda2024-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:

  1. Feu servir sempre directives open explícites -- detecten errors tipogràfics i imposen disciplina
  2. Afegiu restriccions de moneda per prevenir errors entre monedes
  3. Feu servir una convenció de nomenclatura consistent -- per institució per al balanç, per categoria per a ingressos/despeses
  4. Comenceu amb senzillesa i refineu -- subdividiu els comptes a mesura que les vostres necessitats d'informes creixin
  5. Verifiqueu els saldos regularment -- la conciliació mensual detecta errors aviat
  6. Tanqueu els comptes correctament -- amb una verificació de saldo zero
  7. Aprofiteu les funcionalitats de Fava -- indicadors d'actualització, patrons de contracció i integració de documents
  8. Feu servir metadades per a categorització personalitzada i informes

Bona comptabilitat!

References: