Ga naar hoofdinhoud

86 berichten getagd met "beancount"

Bekijk alle tags

Toekomstige Transacties Voorspellen in Beancount

· Eén minuut leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Er is een plugin voor Beancount om toekomstige terugkerende transacties te voorspellen. Hoe past u deze toe in beancount.io? Plaats de volgende inhoud in uw grootboekbestand.

; import the plugin
plugin "fava.plugins.forecast"

; add a monthly HOA fee
2022-05-30 # "HOA fee [MONTHLY]"
Expenses:Hoa 1024.00 USD
Assets:Checking -1024.00 USD

Forecast plugin screenshot

2022-05-30-forecast-plugin

Daarna ziet u de prognose in de Nettowinstgrafiek.

Forecast Plugin

De tag [MONTHLY] hierboven betekent dat deze voor altijd zal terugkeren. Als u meer voorwaarden wilt toepassen, probeer dan [MONTHLY UNTIL 2022-06-01], [MONTHLY REPEAT 5 TIMES], [YEARLY REPEAT 5 TIMES], of [WEEKLY SKIP 1 TIME REPEAT 5 TIMES].

Facturen Maken & Bijhouden met Beancount

· 6 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Een platte-tekst sjabloon, een herhaalbare workflow, en één enkele query voor “Wie is mij nog geld schuldig?”


2022-02-12-crafting-tracking-invoices-with-beancount

Factureren kan aanvoelen als een karwei, klem tussen het werk dat je hebt afgerond en de betaling waar je op wacht. Maar een goed factureringsproces is de ruggengraat van een gezonde cashflow. Het heeft een dubbele functie: het vertelt je klanten duidelijk wat ze verschuldigd zijn en wanneer, en het voedt je boekhoudsysteem met de onweerlegbare feiten die het nodig heeft.

Hoewel speciale SaaS-apps gelikte, geautomatiseerde PDF's kunnen versturen, komen ze vaak met maandelijkse kosten en sluiten ze je gegevens op in een eigen silo. Een lichtgewicht, platte-tekstbenadering met Beancount biedt een krachtig alternatief. Je kunt elke factuur omzetten in een duidelijke set boekhoudkundige entries, waardoor je alle voordelen krijgt van versiebeheer, krachtige metadata en directe query's - geen abonnement vereist.


De Minimaal Viable Factuur (Velden die je nooit mag overslaan)

Voordat je je grootboek aanraakt, heb je een professionele factuur nodig. Het formaat kan eenvoudig zijn, maar de inhoud moet nauwkeurig zijn. Deze velden, ontleend aan de beproefde praktijk van kleine bedrijven, zijn niet-onderhandelbaar.

  • Verkopergegevens: Uw bedrijfsnaam en fysiek adres.
  • Klantgegevens: De naam van uw klant en (idealiter) hun adres.
  • Factuurnummer: Een uniek, opeenvolgend ID dat nooit opnieuw wordt gebruikt. FAC-045 volgt FAC-044.
  • Factuur- & vervaldatum: Geef duidelijk aan wanneer de factuur is uitgegeven en wanneer de betaling wordt verwacht.
  • Regel items: Een duidelijke beschrijving van diensten of producten, samen met de hoeveelheid, het tarief en het regeltotaal.
  • Subtotaal, btw en totaal: Laat de berekening zien zodat de klant deze gemakkelijk kan volgen.
  • Optionele notities: Een plaats voor een bedankje, betalingsinstructies of een door de klant opgegeven inkoopordernummer.

Om u op weg te helpen, hebben we een set kant-en-klare sjablonen gemaakt die al deze velden bevatten. De spreadsheetversies berekenen zelfs de totalen voor u.

Note: Invoice templates are coming soon! In the meantime, you can create your own using the fields listed above in Google Docs, Word, Sheets, Excel, or any other document format.


Registreer de factuur in uw grootboek

Zodra u de factuur-PDF naar uw klant hebt verzonden, moet u deze registreren in Beancount. Dit is een cruciale stap die de inkomsten registreert wanneer ze worden verdiend, niet alleen wanneer ze worden betaald. Het proces omvat twee verschillende transacties.

1. Wanneer u de factuur uitgeeft:

U maakt een transactie die het totale bedrag van uw Inkomsten-rekening naar Activa:Debiteuren verplaatst. Dit creëert een digitale IOU in uw boeken.

; 2025‑07‑21 Factuur #045  Web design sprint voor Acme Corp.
2025-07-21 * "Acme Corp" "FAC-045 Web design sprint"
Activa:Debiteuren 3500.00 USD ; due:2025-08-04
Inkomsten:Design:Web
invoice_id: "FAC-045"
contact_email: "[email protected]"
link: "docs/invoices/2025-07-21_Acme_FAC-045.pdf"

Hier debiteert u Debiteuren en crediteert u uw Inkomsten-rekening. Let op de rijke metadata: de vervaldatum, een unieke invoice_id en zelfs een directe link: naar de PDF die u hebt verzonden.

2. Wanneer de klant betaalt:

Wanneer het geld op uw bankrekening binnenkomt, registreert u een tweede transactie om de IOU "af te sluiten". Dit verplaatst het saldo van Debiteuren naar uw betaalrekening.

2025-08-01 * "Acme Corp" "Betaling FAC-045"
Activa:Bank:Betaalrekening 3500.00 USD
Activa:Debiteuren
invoice_id: "FAC-045"

Het saldo voor FAC-045 in Activa:Debiteuren is nu nul en uw boeken zijn perfect in balans.

Voeg de PDF bij: De link: metadata-sleutel is vooral krachtig in combinatie met Fava, de webinterface van Beancount. Fava geeft een klikbare link weer in de transactieweergave, zodat het brondocument nooit meer dan een klik verwijderd is. Deze workflow werd al in 2016 bedacht in een feature request (GitHub).


Eén query om alle openstaande facturen weer te geven

Dus, wie is u nog geld schuldig? Met dit systeem hoeft u niet door e-mails of spreadsheets te zoeken. U hebt slechts één eenvoudige query nodig.

Sla het volgende op als een bestand met de naam open-invoices.sql:

SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Activa:Debiteuren"
AND balance != 0
ORDER BY
date;

Voer het nu uit vanaf uw commandoregel:

bean-query books.beancount open-invoices.sql

Binnen enkele seconden krijgt u een overzichtelijk, actueel verouderingsrapport van alle openstaande facturen, met daarin het factuurnummer, de klant, de factuurdatum en het verschuldigde bedrag. Geen extra software vereist.


Automatiseer het werk

Het mooie van platte tekst is de mogelijkheid tot scripting. U kunt de saaie onderdelen van deze workflow automatiseren.

  • Sjabloon + Pandoc = PDF: Beheer uw factuursjabloon in Markdown. Een klein Python-script kan de variabelen (klantnaam, regel items, factuurnummer) invullen, en de commandoregeltool Pandoc kan het direct converteren naar een professionele PDF.
  • Git Pre-commit Hook: Als u uw grootboek in Git opslaat, kan een eenvoudige pre-commit hook controles uitvoeren voordat u uw werk opslaat. Het kan controleren of elke nieuwe invoice_id uniek is, of de transactieposten in balans zijn en of het bestand waarnaar wordt verwezen in de link: metadata daadwerkelijk bestaat.
  • Cron Job: Stel een geplande taak (een cron job) in om uw open-invoices.sql query elke nacht uit te voeren en u de samenvatting per e-mail te sturen. U begint elke dag wetende wie een vriendelijke herinnering nodig heeft.

Een realistische kanttekening

Beancount is een boekhoudprogramma, geen facturatie_service_. Het zal niet automatisch betalingsherinneringen naar uw klanten sturen of hun creditcardbetalingen verwerken. De workflow is: u maakt en verzendt de factuur met behulp van de door u gekozen methode (zoals de bovenstaande sjablonen), en vervolgens boekt u de boekhoudkundige entries in uw grootboek.

Voor de meeste freelancers en kleine bedrijven is deze handmatige stap een kleine prijs om te betalen voor een waterdicht, controleerbaar en gratis boekhoudsysteem dat u volledig bezit en beheert (beancount.io).


Volgende stappen

Klaar om de controle over uw facturering over te nemen? Hier leest u hoe u kunt beginnen.

  1. Download een sjabloon en gebruik deze om uw volgende echte factuur te maken, zorg ervoor dat u een opeenvolgend factuurnummer gebruikt.
  2. Bewaar uw verzonden PDF's in een speciale map zoals docs/invoices/ en gebruik de link: metadata-sleutel in uw Beancount-transactie om ernaar te verwijzen.
  3. Sla de open-invoices.sql query op en maak het uitvoeren ervan onderdeel van uw wekelijkse financiële beoordeling.

Platte-tekst boekhouding betekent niet dat u afziet van professionaliteit of controle - het betekent gewoon dat de database grep-baar is. Met een eenvoudig sjabloon en de bovenstaande snippets wordt u sneller betaald en houdt u uw boeken vlekkeloos.

Corrigerende boekingen in Beancount: Uw maandelijkse afstemming

· 5 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Boekhouden is niet klaar wanneer de laatste verkoop op de bankrekening staat. Om een echt beeld te krijgen van de gezondheid van uw bedrijf, moet u een maandelijkse afstemming uitvoeren. Aan het einde van elke periode maakt u corrigerende boekingen - journaalaanpassingen die opbrengsten en kosten correct in het juiste tijdsbestek plaatsen en uw balans eerlijk houden.

In een Beancount-grootboek in platte tekst zijn deze cruciale boekingen transparant, versiebeheerbaar en gemakkelijk te controleren, waardoor een vervelende taak een duidelijk en herhaalbaar proces wordt.

2022-01-25-corrigerende-boekingen-in-beancount-uw-maandelijkse-afstemming


Waarom corrigerende boekingen belangrijk zijn

Het maken van deze aanpassingen is fundamenteel voor deugdelijke boekhouding. Ze zorgen ervoor dat uw financiële overzichten accuraat en betrouwbaar zijn.

  • Nauwkeurigheid van de periodieke winstbepaling: Corrigerende boekingen zijn de motor van periodieke winstbepaling. Ze verplaatsen inkomsten en kosten naar de periode waarin ze daadwerkelijk zijn verdiend of gemaakt, ongeacht wanneer er geld van eigenaar is gewisseld. Dit voldoet aan de kernprincipes van opbrengstverantwoording en matching die de basis vormen van de moderne boekhouding (AccountingCoach.com).

  • Betrouwbare KPI's: Key Performance Indicators (KPI's) zijn slechts zo goed als de gegevens waarop ze zijn gebaseerd. Statistieken zoals brutomarge, netto-inkomen en cashflowprognoses geven alleen de waarheid weer als uitgestelde betalingen, accruals en schattingen correct zijn geboekt (Corporate Finance Institute).

  • Duidelijk controlespoor: Expliciete maandelijkse aanpassingen creëren een duidelijke registratie van uw financiële redenering. Dit helpt auditors (en uw toekomstige zelf) gemakkelijk te traceren wat er is veranderd en waarom, waardoor vertrouwen in uw cijfers wordt opgebouwd (Accountingverse).


Zes veelvoorkomende categorieën (met Beancount-fragmenten)

Hier zijn de zes meest voorkomende soorten corrigerende boekingen, met voorbeelden van hoe u ze kunt registreren in uw Beancount-grootboek. Let op het gebruik van metadata zoals adj:"accrual" om deze boekingen later gemakkelijk te vinden en te analyseren.

1. Nog te factureren opbrengsten

Dit is voor opbrengsten die u hebt verdiend, maar waarvoor u nog geen factuur hebt verzonden of betaling hebt ontvangen.

2025-07-31 * "Consultancy—Juli uren"
Assets:Debiteuren 12000.00 EUR
Income:Consultancy
; adj:"accrual" period:"Jul-25"

2. Nog te betalen kosten

Een kost die u hebt gemaakt, maar nog niet hebt betaald, zoals een energierekening die volgende maand arriveert.

2025-07-31 * "Advocaat—Juli retainer"
Expenses:Juridisch 2500.00 EUR
Liabilities:Crediteuren
; adj:"accrual"

3. Vooruitontvangen opbrengsten

Dit is van toepassing wanneer een klant u vooruitbetaalt. U verantwoordt een deel van die opbrengst naarmate deze in de loop van de tijd wordt verdiend.

2025-07-31 * "Jaarlijkse SaaS vooruitbetaling (verantwoord 1/12)"
Liabilities:VooruitontvangenOpbrengsten 833.33 EUR
Income:SaaS
; adj:"deferral"

4. Vooruitbetaalde kosten

Wanneer u vooruitbetaalt voor een kost (zoals een jaarlijkse verzekeringspolis), boekt u elke maand een deel ervan af.

2025-07-31 * "Verzekering—1 maand kosten van vooruitbetaald"
Expenses:Verzekering 400.00 EUR
Assets:VooruitbetaaldeKosten
; adj:"deferral"

5. Afschrijvingen & Amortisatie

Deze boeking verdeelt de kosten van een langetermijnactief (zoals een computer of voertuig) over de gebruiksduur.

2025-07-31 * "Mac Studio afschrijving"
Expenses:Afschrijving 1250.00 EUR
Assets:Computers:GecumuleerdeAfschrijving
; asset_id:"MAC-03" adj:"estimate"

6. Voorziening dubieuze debiteuren

Een schatting van debiteuren die u niet verwacht te innen, die wordt geboekt als een oninbare vordering.

2025-07-31 * "Voorziening oninbare vorderingen (2% van debiteuren)"
Expenses:OninbareVorderingen 700.00 EUR
Assets:VoorzieningDubieuzeDebiteuren
; basis:"Debiteuren" rate:0.02 adj:"estimate"

Een herhaalbare workflow

Om uw maandelijkse afsluiting efficiënt en foutloos te houden, moet u een consistente workflow hanteren.

  • Gebruik een apart bestand. Bewaar alle aanpassingen voor een periode op één plaats, zoals aanpassingen-2025-07.bean. Gebruik in uw hoofdgrootboekbestand een include-instructie om het als laatste te importeren. Dit zorgt ervoor dat aanpassingen worden toegepast vlak voordat u de definitieve rapporten genereert.

  • Standaardiseer uw metadata. Gebruik altijd consistente metadata-sleutels en -waarden, zoals adj:"accrual|deferral|estimate" en period:"Jul-25". Dit maakt het opvragen en beoordelen van specifieke soorten aanpassingen een fluitje van een cent.

  • Voer een pre-flight check uit. Voordat u uw wijzigingen doorvoert naar Git, voert u bean-check uit op uw aanpassingsbestand om eventuele typefouten of ongebalanceerde boekingen op te sporen.

  • Voer een eenvoudige controle uit. Deze query bevestigt dat al uw aanpassingen voor de periode in evenwicht zijn, waardoor u er zeker van kunt zijn dat u geen fouten hebt geïntroduceerd.

    bean-query main.bean "SELECT account, SUM(number) WHERE meta('adj') AND meta('period') = 'Jul-25' GROUP BY account"

Snelle tips voor probleemoplossing 🤔

  • Stijgt uw saldo Liabilities:VooruitontvangenOpbrengsten? Bekijk uw contractmijlpalen. Mogelijk verantwoordt u opbrengsten te langzaam in vergelijking met het werk dat u levert.

  • Is uw saldo Assets:VooruitbetaaldeKosten negatief? U boekt het waarschijnlijk sneller af dan het schema van het actief toestaat. Controleer uw afschrijvingsschema.

  • Wordt uw Days Sales Outstanding (DSO) slechter na accruals? Uw nog te factureren opbrengsten maskeren mogelijk onderliggende incassoproblemen. Koppel deze KPI aan een ouderdomsrapport van debiteuren om laatbetalende klanten te identificeren voordat het een cashflowprobleem wordt.


Slotopmerkingen

Corrigerende boekingen kunnen vervelend aanvoelen, maar hun waarde wordt kristalhelder wanneer u uw winst-en-verliesrekeningen "voor" en "na" vergelijkt - het verschil is vaak aanzienlijk. Met Beancount worden deze aanpassingen kleine, doorzoekbare patches die u kunt automatiseren en beoordelen, net als code.

Maak er een gewoonte van om maandelijks af te stemmen en uw cijfers blijven net zo nauwkeurig als uw engineering.

Veel succes met balanceren!

Een Revolutie in Persoonlijk Financieel Beheer met Beancount.io

· 4 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Beancounters gebruiken traditioneel commandoregeltools of hosten servers zelf met privénetwerken, waarbij ze via een computer of een algemene teksteditor op mobiel moeten werken. Beancount.io vermindert gedoe door open-source Android- en iOS-mobiele apps en een beveiligde cloud aan te bieden, zodat uw grootboek nu slechts een paar tikken verwijderd is van uw vingerafdruk.

Beancount is een computertaal die dubbel boekhouden in tekstbestanden mogelijk maakt. Zodra u financiële transacties in het bestand definieert, genereert het verschillende rapporten. Martin Blais, de ontwerper van deze taal, stelt dat commandoregelboekhouding veel voordelen heeft - Het is snel, draagbaar, open en aanpasbaar.

Wij zijn het roerend eens met dit argument en delen het gevoel van empowerment dat de Beancount-taal teweegbrengt. En we wilden meer doen - de technologie introduceren bij meer mensen. Dit betekent dat we de bruikbaarheid moeten verbeteren en het toegankelijker moeten maken voor een breder publiek.

Directe toegang tot uw Beancount cloudgrootboek, altijd en overal

Niet iedereen is een commandoregel-enthousiast, en daarom hebben we Beancount.io gebouwd - de persoonlijke financiële manager voor iedereen. Zo werkt het:

Voor zwaar werk kunnen beancounters nog steeds hun computers gebruiken om het grootboek te bewerken of te bekijken via hun browsers op https://beancount.io of door te synchroniseren met Dropbox. Dit behoudt de flexibiliteit van de commandoregeltools, zonder de toegang over verschillende apparaten van de cloudgebaseerde oplossing te verliezen.

Voor dagelijkse lichte handelingen, zoals het direct toevoegen van een boeking, kunnen beancounters de mobiele app gebruiken om verbinding te maken met de beveiligde cloud.

Mike Thrift, een backend engineer die aan dit product werkt, zegt

Ik stelde vroeger elke dag een herinnering in om mijn laptop te openen en gegevens in mijn Beancount-bestanden in te voeren. Nu, met Beancount.io, is het veel gemakkelijker voor mij om mijn grootboek aan te passen wanneer ik het nodig heb, zelfs als ik buiten iets in de winkel koop.

Zhi Li, een software engineer van Facebook, vertelt ons

Ik heb al mijn Beancount-bestanden gemigreerd naar Beancount.io, en nu werkt het perfect voor mijn dagelijks gebruik. Ik heb betaald voor Pro-functies zoals automatische gegevensback-up, maar ik denk dat jullie nog meer kunnen doen om de service te verbeteren.

U kunt zich nu aanmelden op https://beancount.io/sign-up/ of de iOS of Android-app downloaden. We hebben de registratie gestroomlijnd om zo min mogelijk informatie van u te verzamelen om de service op te starten. Daarna krijgt u een vooraf ingesteld leeg grootboek dat direct klaar is om een boeking toe te voegen.

Veelgestelde Vragen

Zou Beancount.io mijn grootboekgegevens aan derden verkopen?

  • Nee. Wij zetten ons in om uw gegevens veilig en privé te houden, en we zullen uw grootboekgegevens nooit verkopen.

Zijn mijn gegevens beveiligd?

  • Ja. We beschermen uw e-mail en grootboek met AES256, uw wachtwoord met BCrypt en uw netwerkverzoeken met SSL.

Zijn mijn grootboekgegevens end-to-end versleuteld?

  • Nee. Vanwege technische beperkingen moeten we uw gegevens nog steeds in het geheugen ontsleutelen bij het indexeren van het grootboekbestand op productieservers. Daarom beperken we directe toegang van al onze teamleden. Helaas kunnen we dit niet doen in Intel's SGX of enige beveiligde kluis vanwege de hoge kosten.

Is dit een betrouwbare service die ik de komende jaren kan vertrouwen?

  • Ja. We hebben Beancount.io oorspronkelijk gelanceerd op 4 juli 2019, en we hebben de service al meer dan twee jaar veilig en betrouwbaar geëxploiteerd. Daarom hebben we geen reden om de service in de toekomst niet voort te zetten.

Kan ik nieuwe functies aanvragen en het project sponsoren?

Migrating from QuickBooks to Beancount: A Step-by-Step Guide

· 31 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Fase 1: Gegevens Exporteren uit QuickBooks

Het migreren van vijf jaar aan gegevens begint met het exporteren van alle QuickBooks-records in een bruikbaar formaat. QuickBooks Desktop en QuickBooks Online hebben verschillende exportopties:

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

1.1 QuickBooks Desktop – Exportopties

IIF (Intuit Interchange Format): QuickBooks Desktop kan lijsten (zoals het rekeningschema, klanten, leveranciers) exporteren naar .IIF-tekstbestanden. Ga in QuickBooks Desktop naar File → Utilities → Export → Lists to IIF, en selecteer vervolgens de lijsten die u nodig heeft (bijv. Rekeningschema, Klanten, Leveranciers). Dit levert een tekstbestand op dat rekeningnamen, -types en lijstgegevens bevat. IIF is een eigen, maar platte-tekstformaat dat relatief eenvoudig te parsen is. Gebruik dit om uw Rekeningschema en contactlijsten vast te leggen ter referentie in Beancount.

Grootboek/Journaal via CSV: Voor transactiegegevens biedt QuickBooks Desktop geen volledige export met één klik, maar u kunt rapporten gebruiken. De aanbevolen methode is om het Algemeen Journaal (alle transacties) over de gewenste datumperiode te exporteren. Open in QuickBooks Desktop Reports → Accountant & Taxes → Journal, stel de datums in van de vroegste transactie tot vandaag, en klik op Export → Excel. Sla het resultaat op als CSV na het verwijderen van eventuele rapportkop- en voetteksten en lege kolommen. Zorg ervoor dat de numerieke gegevens schoon zijn: inclusief centen (bijv. 3.00 niet 3), geen extra aanhalingstekens en geen valutasymbolen of dubbele mintekens in de CSV. De CSV moet kolommen hebben zoals Date, Trans #, Name, Account, Memo, Debit, Credit, Balance (of een enkele kolom Amount, afhankelijk van het rapportformaat).

Tip: QuickBooks Desktop 2015+ kan ook transacties exporteren via het Find-dialoogvenster. Gebruik Edit → Find → Advanced, stel het datumbereik in op vijf jaar en exporteer de resultaten naar CSV. Waarschuwing: Sommige versies beperken de export tot 32.768 regels. Als u zeer grote datasets heeft, exporteer dan jaar na jaar (of in kleinere stukken) om afkapping te voorkomen, en voeg ze later samen. Zorg ervoor dat de datumbereiken niet overlappen om duplicaten te voorkomen.

Andere Formaten (QBO/QFX/QIF): QuickBooks Desktop kan banktransacties importeren via .QBO (Web Connect) of .QFX/.OFX-bestanden, maar voor het exporteren vanuit QuickBooks zijn dit geen gebruikelijke opties. Als uw doel is om alleen banktransacties te extraheren, heeft u deze mogelijk al in QBO/OFX van uw bank. Voor een volledige grootboekexport kunt u zich echter beter houden aan IIF en CSV. QuickBooks Desktop kan niet rechtstreeks naar QIF (Quicken Interchange Format) exporteren zonder tools van derden. Als u toch een manier vindt om QIF te verkrijgen, merk dan op dat sommige oudere grootboektools (Ledger 2.x) QIF konden lezen, maar het is beter om met CSV te werken in onze pijplijn.

1.2 QuickBooks Online – Exportopties

Ingebouwde Excel/CSV Export: QuickBooks Online (QBO) biedt een Export Data-tool. Ga naar Settings ⚙ → Tools → Export Data. Gebruik in het exportdialoogvenster het tabblad Reports om gegevens te selecteren (bijv. General Ledger of Transaction List) en het tabblad Lists voor lijsten (rekeningschema, etc.), kies All dates, en exporteer naar Excel. QuickBooks Online zal een ZIP-bestand downloaden met meerdere Excel-bestanden voor de geselecteerde rapporten en lijsten (bijvoorbeeld Winst & Verlies, Balans, Grootboek, Klanten, Leveranciers, Rekeningschema, etc.). U kunt deze Excel-bestanden vervolgens converteren naar CSV voor verwerking.

Transaction Detail Report: Als de standaardexport van QBO geen enkel Grootboek-bestand bevat, kunt u handmatig een gedetailleerd rapport genereren:

  1. Navigeer naar Reports en zoek Transaction Detail by Account (of General Ledger in sommige QBO-versies).
  2. Stel Report period in op het volledige bereik van vijf jaar.
  3. Onder Rapportopties, stel Group by = None in (om individuele transacties zonder subtotalen te tonen).
  4. Pas de kolommen aan om ten minste op te nemen: Date, Transaction Type, Number, Name (Payee/Customer), Memo/Description, Account, Debit, Credit (of een enkele Amount-kolom), en Balance. Neem ook eventuele klassen of locaties op als u die gebruikt.
  5. Genereer het rapport en Export to Excel.

Dit levert een gedetailleerd grootboek op van alle transacties. Sla het op als CSV. Elke regel vertegenwoordigt één splitsing (boeking) van een transactie. U zult later de regels per transactie moeten groeperen voor de conversie.

Rekeningschema en Andere Lijsten: QuickBooks Online kan het rekeningschema exporteren via Accounting → Chart of Accounts → Batch Actions → Export to Excel. Doe dit om de rekeningnamen en -types te verkrijgen. Exporteer op dezelfde manier Klanten, Leveranciers, etc., als u de namen wilt overnemen voor metadata.

QuickBooks Online API (Optioneel): Voor een programmatische aanpak biedt Intuit een REST API voor QBO-gegevens. Gevorderde gebruikers kunnen een QuickBooks Online-app maken (vereist een ontwikkelaarsaccount) en de API gebruiken om gegevens in JSON op te halen. U kunt bijvoorbeeld de Account-endpoint opvragen voor het rekeningschema en de JournalEntry- of GeneralLedger-rapportendpoints voor transacties. Er zijn Python SDK's zoals python-quickbooks die de API wrappen. Het gebruik van de API omvat echter OAuth-authenticatie en is overdreven voor een eenmalige migratie, tenzij u de voorkeur geeft aan automatisering. In de meeste gevallen is de handmatige export naar CSV/Excel eenvoudiger en minder foutgevoelig.


Fase 2: Gegevens Transformeren en Opschonen

Zodra u de QuickBooks-gegevens in CSV (en/of IIF) hebt, is de volgende stap het omzetten naar Beancount's platte-tekst grootboekformaat. Dit omvat het parsen van de exports, het mappen van QuickBooks-rekeningen naar een Beancount-rekeningschema en het formatteren van transacties in Beancount-syntaxis.

2.1 QuickBooks Exports Parsen met Python

Het gebruik van Python zorgt voor nauwkeurigheid en reproduceerbaarheid van de transformatie. We zullen scripts schetsen voor twee belangrijke taken: het importeren van het rekeningschema en het converteren van transacties.

Rekeningen Importeren en Mappen: Het is cruciaal om uw rekeningen in Beancount op te zetten voordat u transacties toevoegt. QuickBooks-rekeningen hebben types (Bank, Accounts Receivable, Expense, etc.) die we zullen mappen naar de hiërarchie van Beancount (Assets, Liabilities, Income, Expenses, etc.). We kunnen bijvoorbeeld een mapping gebruiken zoals:

# QuickBooks-rekeningtype naar Beancount-hoofdcategorie
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # Accounts Receivable (Debiteuren) als activa
'AP': 'Liabilities', # Accounts Payable (Crediteuren) als passiva
'FIXASSET': 'Assets',
'OASSET': 'Assets', # Other Asset (Overige activa)
'OCASSET': 'Assets', # Other Current Asset (Overige vlottende activa)
'LTLIAB': 'Liabilities', # Long Term Liability (Langlopende verplichting)
'OCLIAB': 'Liabilities', # Other Current Liability (Overige kortlopende verplichting)
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # Other Income (Overige inkomsten)
'EXEXP': 'Expenses', # Other Expense (Overige uitgaven)
}

Met behulp van de QuickBooks Desktop IIF-export of de CSV met de rekeningenlijst van QBO, halen we de naam en het type van elke rekening op. Dan:

  • Beancount-rekeningnamen aanmaken: QuickBooks gebruikt soms dubbele punten (:) in rekeningnamen om subrekeningen aan te duiden (bijv. “Current Assets:Checking). Beancount gebruikt dezelfde dubbele-puntnotatie voor hiërarchie. U kunt de naam vaak direct hergebruiken. Als de QuickBooks-rekeningnamen niet met een categorie beginnen, voeg dan de gemapte categorie toe. Bijvoorbeeld, een QuickBooks-rekening van het type BANK genaamd "Checking" wordt Assets:Checking in Beancount. Een EXP (expense)-rekening "Meals" wordt Expenses:Meals, enz.

  • Zorg voor geldige naamgeving: Verwijder of vervang alle tekens die Beancount kunnen verwarren. QuickBooks staat tekens zoals & of / in namen toe. Het is verstandig om speciale tekens te verwijderen of te vervangen (bijv. & vervangen door and, schuine strepen of spaties verwijderen). Zorg er ook voor dat alle rekeningnamen uniek zijn na transformatie – QuickBooks staat mogelijk dezelfde subrekeningnaam onder verschillende ouders toe, wat prima is, maar in Beancount moet de volledige naam (met ouders) uniek zijn. Hernoem indien nodig of voeg een kwalificator toe om ze te onderscheiden.

  • Rekeningopeningen uitvoeren: In Beancount moet elke gebruikte rekening worden geopend met een open-directive. U kunt een datum kiezen vóór uw eerste transactie (bijv. als u gegevens van 2019–2023 migreert, gebruik dan 2018-12-31 of een nog eerdere datum voor alle openingen). Het script schrijft dan regels zoals: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD voor elke rekening (ervan uitgaande dat USD de hoofdvaluta is). Gebruik de juiste valuta voor elke rekening (zie notities over meerdere valuta's hieronder).

Transactieconversie: De belangrijkste uitdaging is het converteren van de QuickBooks-transactie-export (CSV) naar Beancount-boekingen. Elke QuickBooks-transactie (factuur, rekening, cheque, journaalpost, etc.) kan meerdere splitsingen (regels) hebben die moeten worden samengevoegd tot één Beancount-transactie.

We gebruiken de CSV-lezer van Python om door de geëxporteerde regels te itereren en splitsingen te verzamelen:

import csv
from collections import defaultdict

# Lees alle regels uit de QuickBooks Journaal CSV
rows = []
with open('quickbooks_geexporteerd_journaal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# Groepeer regels per transactie (ervan uitgaande dat 'Trans #' transacties identificeert)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

Nu is transactions een dictionary waarbij elke sleutel een transactie-ID/nummer is en de waarde de lijst met splitsingen voor die transactie is. Vervolgens converteren we elke groep naar Beancount:

def format_date(qb_date):
# QuickBooks-datums kunnen eruitzien als "12/31/2019"
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# Sorteer splitsingen op regelvolgorde indien nodig (ze komen meestal in de juiste volgorde)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# Transactiekop
output_lines.append(f'{date} * "{payee}" "{memo}"')
if first.get('Num'): # voeg referentienummer toe indien beschikbaar
output_lines.append(f' number: "{first["Num"]}"')
# Loop door elke splitsing/boeking
for split in splits:
acct_name = split['Account'].strip()
# Map QuickBooks-rekeningnaam naar Beancount-rekening (met eerdere mapping)
beancount_acct = account_map.get(acct_name, acct_name)
# Bepaal bedrag met teken:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# Sommige exports hebben een enkele Amount-kolom (negatief voor credits)
amt_str = amount
else:
# Indien aparte Debit/Credit-kolommen
amt_str = debit if debit else f"-{credit}"
# Verwijder eventuele komma's in getallen voor de zekerheid
amt_str = amt_str.replace(",", "")
# Voeg valuta toe
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# Memo/omschrijving voor de splitsing
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# Einde van transactie – lege regel
output_lines.append("")

Deze scriptlogica doet het volgende:

  • Formatteert de datum naar JJJJ-MM-DD voor Beancount.

  • Gebruikt de begunstigde (Name) en memo voor de transactieomschrijving. Bijvoorbeeld: 2020-05-01 * "ACME Corp" "Factuurbetaling" (Als er geen begunstigde is, kunt u het QuickBooks-transactietype gebruiken of de begunstigde leeg laten).

  • Voegt number-metadata toe als er een referentienummer is (cheque #, factuur #, etc.).

  • Itereert door elke splitsingsregel:

    • Mapt de QuickBooks-rekeningnaam naar de Beancount-rekening met behulp van een dictionary account_map (gevuld vanuit de stap van het rekeningschema).
    • Bepaalt het bedrag. Afhankelijk van uw export, heeft u mogelijk een enkele Amount-kolom (met positieve/negatieve waarden) of afzonderlijke Debit- en Credit-kolommen. De bovenstaande code behandelt beide gevallen. Het zorgt ervoor dat credits worden weergegeven als negatieve bedragen voor Beancount (aangezien in Beancount een enkel getal met een teken per boeking wordt gebruikt).
    • Voegt de valuta toe (uitgaande van USD, tenzij er een andere valutakolom aanwezig is).
    • Schrijft de Beancount-boekingsregel met de rekening, het bedrag en een opmerking met de regelmemo. Bijvoorbeeld: Assets:Checking 500.00 USD ; Storting Income:Sales -500.00 USD ; Storting Dit weerspiegelt een storting van $500 (van Income naar Checking).
  • Na het opsommen van alle splitsingen, scheidt een lege regel de transactie.

Omgaan met meerdere valuta's: Als uw QuickBooks-gegevens meerdere valuta's bevatten, neem dan de valutacode op bij elke boeking (zoals hierboven getoond). Zorg ervoor dat rekeningen in vreemde valuta's worden geopend met die valuta. Als u bijvoorbeeld een bankrekening in EUR heeft, zou u open Assets:Bank:Checking EUR uitvoeren en de transacties op die rekening gebruiken EUR. Beancount ondersteunt grootboeken met meerdere valuta's en houdt impliciete conversies bij, maar u moet mogelijk prijsboekingen voor wisselkoersen toevoegen als u conversie naar een basisvaluta in rapporten wilt. Het wordt ook aanbevolen om uw belangrijkste operationele valuta bovenaan het Beancount-bestand te declareren (bijv. option "operating_currency" "USD").

De conversie uitvoeren: Sla het Python-script op (bijvoorbeeld als qb_naar_beancount.py) en voer het uit op uw geëxporteerde bestanden. Het zou een .beancount-bestand moeten produceren dat alle rekeningen en transacties bevat.

2.2 Omgaan met Randgevallen en Gegevensopschoning

Houd tijdens de transformatie rekening met deze veelvoorkomende valkuilen en hoe u ze kunt aanpakken:

  • Mismatch in Rekeningnamen: QuickBooks kan rekeningnamen hebben die botsen met de hiërarchische namen van Beancount. QuickBooks kan bijvoorbeeld twee verschillende bovenliggende rekeningen hebben met elk een subrekening genaamd "Insurance". In Beancount moet Expenses:Insurance uniek zijn. Los dit op door er een te hernoemen (bijv. "Insurance-Vehicle" vs "Insurance-Health") vóór de export of map ze naar unieke Beancount-rekeningen in uw script. Consistente naamgevingsconventies (geen speciale tekens en gebruik van hiërarchie) zullen hoofdpijn besparen. Gebruik de remapping-bestandsbenadering indien nodig: onderhoud een CSV of dictionary van oude naam → nieuwe Beancount-naam en pas deze toe tijdens de conversie (ons voorbeeldcode gebruikt een account_map en kan overschrijvingen uit een bestand laden).

  • Datums en Formaten: Zorg ervoor dat alle datums consistent zijn geformatteerd. Het bovenstaande script normaliseert M/D/J naar ISO-formaat. Pas ook op voor problemen met fiscaal jaar vs kalenderjaar als uw periode van vijf jaar een jaareinde overschrijdt. Beancount geeft niet om grenzen van fiscale jaren, maar u wilt misschien later bestanden per jaar splitsen voor het gemak.

  • Numerieke Precisie: QuickBooks behandelt valuta met centen, dus werken in centen is meestal prima. Alle bedragen moeten idealiter twee decimalen hebben in de CSV. Als bedragen zijn omgezet in gehele getallen (geen decimaal) of komma's/haakjes hebben (voor negatieven), schoon die dan op in het script (verwijder komma's, converteer (100.00) naar -100.00, etc.). De CSV-export, indien correct uitgevoerd (volgens de instructies), zou die opmaakproblemen al moeten vermijden.

  • Negatieve Bedragen en Tekens: QuickBooks-rapporten tonen negatieven soms als -100.00 of als (100.00) of zelfs --100.00 in bepaalde Excel-exports. De opschoningsstap moet hiermee omgaan. Zorg ervoor dat de debet- en creditbedragen van elke transactie op nul uitkomen. Beancount zal dit afdwingen (indien niet in evenwicht, zal het een fout geven bij het importeren).

  • Dubbele Transacties: Als u transacties in batches moest exporteren (bijv. jaar na jaar of rekening per rekening), wees dan voorzichtig met het samenvoegen zonder overlap. Controleer of de eerste transactie van een jaar niet ook de laatste is van de vorige batch, enz. Het is gemakkelijk om per ongeluk een paar transacties op de grenzen te dupliceren. Als u duplicaten vermoedt, kunt u de uiteindelijke Beancount-boekingen op datum sorteren en zoeken naar identieke boekingen, of Beancount's unieke transactietags gebruiken om ze te vangen. Een strategie is om QuickBooks-transactienummers op te nemen als metadata (bijv. gebruik de Trans # of factuurnummer als een txn-tag of quickbooks_id-metadata) en dan te zorgen dat er geen duplicaten van die ID's bestaan.

  • Ongebalanceerde Splitsingen / Tussenrekeningen: QuickBooks kan vreemde gevallen hebben zoals een transactie met een onbalans die QuickBooks automatisch heeft aangepast naar een "Opening Balance Equity" of "Retained Earnings". Bij het instellen van de beginbalansen van rekeningen boekt QuickBooks bijvoorbeeld vaak verschillen naar een Eigen Vermogen-rekening. Deze zullen verschijnen in de geëxporteerde transacties. Beancount vereist expliciet evenwicht. Mogelijk moet u een Eigen Vermogen-rekening voor beginbalansen introduceren (meestal Equity:Opening-Balances) om QuickBooks te spiegelen. Het is een goede gewoonte om een beginbalansboeking te hebben op de eerste dag van uw grootboek die de startsaldi van alle rekeningen vaststelt (zie Fase 5).

  • Randgevallen met Meerdere Valuta's: Als u meerdere valuta's gebruikt, kan de export van QuickBooks alle bedragen in de thuisvaluta of in hun oorspronkelijke valuta vermelden. Idealiter krijgt u de gegevens in de oorspronkelijke valuta voor elke rekening (de rapporten van QuickBooks Online doen dit meestal). In Beancount heeft elke boeking een valuta. Als QuickBooks wisselkoersen of een thuisvaluta-conversie heeft geleverd, kunt u die negeren en vertrouwen op de prijsboekingen van Beancount. Als QuickBooks geen wisselkoersen heeft geëxporteerd, wilt u misschien handmatig prijsrecords toevoegen (bijv. met de price-directive van Beancount) voor belangrijke datums om de waardering te evenaren. Voor de basisintegriteit van het grootboek is het echter voldoende dat transacties in hun oorspronkelijke valuta's in evenwicht zijn – ongerealiseerde winsten/verliezen hoeven niet expliciet te worden geregistreerd, tenzij u dezelfde rapporten wilt.

  • Debiteuren / Crediteuren: QuickBooks houdt factuur- en rekeningdetails bij (vervaldata, betaalstatus, etc.) die niet volledig zullen worden overgedragen in een plat grootboek. U krijgt de A/R- en A/P-transacties (facturen die A/R verhogen, betalingen die A/R verlagen, etc.), maar niet de factuurdocumenten of klantensaldi per factuur. Als gevolg hiervan moet u na de migratie controleren of uw A/R- en A/P-rekeningsaldi in Beancount gelijk zijn aan de openstaande saldi van klanten/leveranciers in QuickBooks. Als u facturen moet volgen, kunt u de metadata van Beancount gebruiken (bijv. een invoice-tag of link opnemen). De QuickBooks-factuurnummers zouden via de Num- of Memo-velden moeten zijn meegekomen – ons script bewaart de Num als number: "..." in de transactiemetadata.

  • Inactieve of Gesloten Rekeningen: De IIF-export kan inactieve rekeningen bevatten (als u ervoor koos deze op te nemen). Het is prima om ze te importeren (ze zullen gewoon geen transacties en een nulsaldo hebben als ze echt inactief zijn). U kunt ze in Beancount als gesloten markeren na de laatste transactiedatum met een close-directive. Dit houdt uw grootboek opgeruimd. Bijvoorbeeld: 2023-12-31 close Expenses:OldAccount ; gesloten na migratie Dit is optioneel en voornamelijk voor de netheid.

Door de gegevens zorgvuldig op te schonen en te mappen zoals hierboven beschreven, krijgt u een Beancount-grootboekbestand dat structureel uw QuickBooks-gegevens weerspiegelt. De volgende stap is om te verifiëren dat het ook numeriek QuickBooks weerspiegelt.


Fase 3: Gegevensvalidatie en Afstemming

Validatie is een kritieke fase in een migratie van boekhoudgegevens. We moeten ervoor zorgen dat het Beancount-grootboek tot op de cent nauwkeurig overeenkomt met de QuickBooks-boekhouding. Er kunnen verschillende strategieën en hulpmiddelen worden gebruikt:

3.1 Afstemming van de Proefbalans

Een proefbalans-rapport toont de eindsaldi van alle rekeningen (met debet- en creditbedragen of positief/negatief aangegeven) en zou op nul moeten uitkomen. Het draaien van een proefbalans in beide systemen voor dezelfde datum is de snelste manier om de algehele nauwkeurigheid te bevestigen.

  • In QuickBooks: Genereer een Trial Balance-rapport voor de laatste dag van het laatste jaar (bijv. 31 december 2023). Dit rapport toont het saldo van elke rekening. Exporteer het of noteer de belangrijkste cijfers.

  • In Beancount: Gebruik de rapportage van Beancount om een proefbalans te genereren. Een eenvoudige methode is via de opdrachtregel:

    bean-report gemigreerd.beancount balances

    Het balances-rapport is een proefbalans die alle rekeningen en hun saldi vermeldt. U kunt het bestand ook openen in Fava (de web-UI van Beancount) en kijken naar de sectie Balances of Balance Sheet. Elk rekeningsaldo in Beancount moet overeenkomen met de proefbalans van QuickBooks. Als QuickBooks bijvoorbeeld Accounts Receivable = 5,000toont,danmoetderekeningAssets:AccountsReceivablevanBeancounteentotaalvan5,000* toont, dan moet de rekening Assets:Accounts Receivable van Beancount een totaal van 5,000 (debet) hebben. AlsSales Income = 200,000,danzoudeIncome:SalesinBeancount200,000*, dan zou de Income:Sales in Beancount 200,000 (credit) moeten tonen (wat mogelijk als -200,000 wordt weergegeven als u een proefbalans gebruikt die credits als negatieven presenteert).

Als er discrepanties zijn, spoor ze dan op:

  • Controleer of een hele rekening ontbreekt of extra is (zijn we een rekening vergeten of hebben we er een opgenomen die al voor de migratieperiode was gesloten?).
  • Als een saldo niet klopt, ga dan dieper: QuickBooks kan een Account QuickReport of grootboekdetail voor die rekening genereren, en u kunt dit vergelijken met het register van Beancount voor die rekening (bean-report gemigreerd.beancount register -a RekeningNaam). Soms komen verschillen door een ontbrekende of dubbele transactie.

Verifieer ook dat de som van alle rekeningen nul is in de proefbalans van Beancount (het drukt een totaal af dat nul of zeer dicht bij nul zou moeten zijn). Beancount dwingt dubbel boekhouden af, dus als u een onbalans heeft die niet nul is, betekent dit dat activa min passiva-eigen vermogen niet op nul uitkwam, wat duidt op een probleem (wat QuickBooks normaal gesproken ook niet zou toestaan, maar kan gebeuren als er gegevens zijn weggelaten).

3.2 Vergelijkingen van Rekeningensaldi

Naast de proefbalans kunt u specifieke financiële overzichten vergelijken:

  • Balans: Genereer een QuickBooks Balans voor de einddatum en een Beancount-balans (bean-report gemigreerd.beancount balsheet). Dit is vergelijkbaar met de proefbalans, maar georganiseerd per Activa, Passiva, Eigen Vermogen. De cijfers moeten per categorie overeenkomen. Voor een meer gedetailleerde controle, vergelijk de totalen van de belangrijkste rekeningen: kas, debiteuren, vaste activa, crediteuren, eigen vermogen, etc.

  • Winst- en Verliesrekening (Resultatenrekening): Genereer een W&V voor de periode van vijf jaar (of jaar na jaar) in QuickBooks en in Beancount (bean-report gemigreerd.beancount income voor een resultatenrekening over de volledige periode). Het netto-inkomen van Beancount moet gelijk zijn aan dat van QuickBooks voor elke periode. Als u alle vijf jaar hebt gemigreerd, moet het cumulatieve netto-inkomen overeenkomen. U kunt ook individuele omzet- en kostentotalen vergelijken om ervoor te zorgen dat er geen categorie is gemist of verdubbeld.

  • Steekproef van Willekeurige Transacties: Kies een paar willekeurige transacties (vooral uit elk jaar en van elke belangrijke rekening) en controleer of ze correct zijn gemigreerd. Zoek bijvoorbeeld een factuur van 3 jaar geleden in QuickBooks en zoek vervolgens naar het bedrag of de memo ervan in het Beancount-bestand (aangezien alle transacties tekst zijn, kunt u het .beancount-bestand in een teksteditor openen of zoekhulpmiddelen gebruiken). Controleer of de datum, bedragen en rekeningen overeenkomen. Dit helpt bij het opsporen van problemen met datumnotatie of verkeerd gemapte rekeningen.

3.3 Geautomatiseerde Integriteitscontroles

Maak gebruik van de eigen validatietools van Beancount:

  • bean-check: Voer bean-check gemigreerd.beancount uit. Dit zal het bestand parsen en eventuele fouten in syntaxis of balancering rapporteren. Als het script iets heeft gemist, zoals een niet-geopende rekening of een niet-gebalanceerde transactie, zal bean-check dit signaleren. Een schone doorgang (geen uitvoer) betekent dat het bestand op zijn minst intern consistent is.

  • Saldo-asserties: U kunt expliciete saldo-asserties toevoegen in het grootboek voor belangrijke rekeningen als extra controle. Als u bijvoorbeeld het saldo van de bankrekening op een bepaalde datum weet, voeg dan een regel toe: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD Dan zal bean-check ervoor zorgen dat in het grootboek, op die datum, het saldo inderdaad $10.000 is. Dit is optioneel, maar kan nuttig zijn voor zeer belangrijke rekeningen. U kunt eindsaldi uit QuickBooks halen (bijv. aan het einde van elk jaar) en deze in het Beancount-bestand affirmeren. Als een assertie mislukt, zal Beancount een verschil rapporteren.

  • Proefbalans doorrollen: Als u dat liever heeft, kunt u een periode-voor-periode controle uitvoeren. Vergelijk voor elk jaar de nettoverandering. Bijvoorbeeld, netto-inkomen in QuickBooks 2020 versus Beancount 2020, etc., om ervoor te zorgen dat elk jaar correct is afgesloten naar het eigen vermogen (QuickBooks rolt het netto-inkomen automatisch door naar Ingehouden Winsten elk nieuw jaar; in Beancount ziet u gewoon het cumulatieve eigen vermogen). Als u verschillen ziet, kan dit duiden op een probleem in de gegevens van een specifiek jaar.

  • Transactietellingen en Duplicaten: Tel het aantal transacties in QuickBooks versus Beancount. QuickBooks toont niet gemakkelijk een directe telling, maar u kunt dit inschatten door regels in de CSV te tellen (elke transactiekop versus splitsingen). In Beancount is een snelle manier om het aantal keren txn of * " in het bestand te tellen. Ze moeten gelijk zijn aan of iets hoger zijn dan QuickBooks (als u beginbalanstransacties of aanpassingen heeft toegevoegd). Een significant verschil betekent dat er iets weggelaten of gedupliceerd kan zijn. Ons gebruik van unieke ID's in metadata kan helpen: als u duplicaten vermoedt, zoek dan in het Beancount-bestand naar hetzelfde chequenummer of factuurnummer dat twee keer voorkomt waar dat niet zou moeten.

  • Afstemmingsstatus: We hebben een rec: "y" of "n" metadata opgenomen op basis van de afgestemde status van QuickBooks in ons script (als rec in het voorbeeld). Dit is geen standaard Beancount-functie (Beancount houdt afgestemd/in behandeling niet op dezelfde manier bij als Ledger), maar het kan nuttige metadata zijn. U kunt controleren of alle transacties die in QuickBooks zijn afgestemd, aanwezig zijn. Uiteindelijk kan het opnieuw afstemmen van bankrekeningen in Beancount (met uw afschriften) het laatste bewijs zijn dat er niets ontbreekt.

Door deze validaties uit te voeren, bouwt u vertrouwen op dat de migratie de gegevens heeft behouden. Neem de tijd voor deze fase – het is gemakkelijker om afwijkingen nu te corrigeren dan maanden later wanneer er mogelijk op de boeken wordt vertrouwd. Veelvoorkomende problemen als de validatie mislukt: een ontbrekend beginsaldo van een rekening, een transactie met een datum buiten het bereik, of een tekeomkering bij een boeking. Allemaal oplosbaar zodra ze zijn geïdentificeerd.


Fase 4: Vastleggen in het Beancount Grootboek

Na het opschonen en valideren is het tijd om de gegevens te formaliseren in uw Beancount-grootboekstructuur. "Vastleggen" betekent hier zowel het finaliseren van de grootboekbestanden als het mogelijk inchecken ervan in een versiebeheersysteem voor auditeerbaarheid.

4.1 Organiseren van Grootboekbestanden en Configuratie

Beslis hoe u de Beancount-grootboekbestanden structureert. Voor vijf jaar aan gegevens kunt u alles in één bestand bewaren of splitsen per jaar of categorie. Een veelvoorkomende, duidelijke structuur is:

  • Hoofdgrootboekbestand: bijv. ledger.beancount – Dit is het startpunt dat andere bestanden kan include. Het kan globale opties bevatten en vervolgens jaarlijkse bestanden opnemen.
  • Rekeningenbestand: Definieer het rekeningschema en de beginbalansen. Bijvoorbeeld, accounts.beancount met alle open-directieven (zoals gegenereerd door het script). U kunt hier ook commodities (valuta's) vermelden.
  • Transactiebestanden: Eén per jaar, bijv. 2019.beancount, 2020.beancount, etc., met de transacties voor dat jaar. Dit houdt elk bestand beheersbaar van omvang en stelt u in staat om u op een jaar te concentreren indien nodig. U kunt ook splitsen op entiteit of rekening, maar splitsen op tijd is eenvoudig voor financiële gegevens.

Voorbeeld hoofd-bestand:

option "title" "Mijn Bedrijfsgrootboek"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

Op deze manier worden alle gegevens geaggregeerd wanneer u rapporten genereert, maar behoudt u de orde.

Beancount vereist niet meerdere bestanden – u kunt één groot bestand hebben – maar de bovenstaande structuur verbetert de duidelijkheid en het versiebeheer. Volgens de best practices van Beancount is het goed om duidelijke sectiekoppen te gebruiken en gerelateerde boekingen logisch te groeperen.

4.2 Instellen van Beginbalansen en Eigen Vermogen

Als uw migratie niet vanaf een absoluut nulpunt begint, moet u omgaan met beginbalansen. Twee scenario's:

  • Boeken beginnen vanaf nul: Als de periode van vijf jaar begint bij de oprichting van het bedrijf (bijv. u begon QuickBooks te gebruiken in jan 2019 met alle rekeningen op nul, behalve het initiële eigen vermogen), dan heeft u mogelijk geen aparte beginbalanstransactie nodig. De eerste transacties in 2019 (zoals de initiële financiering van een bankrekening) zullen op natuurlijke wijze de beginbalansen vaststellen. Zorg er alleen voor dat eventueel startkapitaal of eerdere ingehouden winsten worden verantwoord via eigen-vermogenstransacties.

  • Boeken halverwege (gedeeltelijke geschiedenis): Als u eerder met QuickBooks begon en 2019 een middenpunt is, dan had elke rekening per 1 jan 2019 een overgedragen saldo. QuickBooks zou die als beginbalansen of ingehouden winsten hebben. In Beancount is het gebruikelijk om een Beginbalansen-boeking te maken op de dag vóór uw startdatum:

    • Gebruik een eigen-vermogenrekening genaamd Equity:Opening-Balances (of iets dergelijks) om de som van alle openingsbedragen te compenseren.
    • Voorbeeld: als op 2018-12-31, Kas 10.000wasenDebiteuren10.000 was en Debiteuren 5.000 en Crediteuren 3.000(credit),zouueentransactieschrijven:20181231"Beginbalansen"Assets:Cash10000.00USDAssets:AccountsReceivable5000.00USDLiabilities:AccountsPayable3000.00USDEquity:OpeningBalances12000.00USDDitlaatOpeningBalancesachtermetdenegatievesom(3.000 (credit), zou u een transactie schrijven: `2018-12-31 * "Beginbalansen"` ` Assets:Cash 10000.00 USD ` ` Assets:Accounts Receivable 5000.00 USD ` ` Liabilities:Accounts Payable -3000.00 USD ` ` Equity:Opening-Balances -12000.00 USD ` Dit laat Opening-Balances achter met de negatieve som (–12k) die de boeking balanceert. Nu beginnen alle activa/passiva-rekeningen 2019 met de juiste saldi. Dit moet eventuele QuickBooks "Retained Earnings" of overgedragen saldi weerspiegelen.
    • Alternatief, gebruik de pad- en balance-directieven van Beancount: Voor elke rekening kunt u deze pad (aanvullen) vanuit Opening-Balances en het saldo affirmeren. Dit is een meer geautomatiseerde manier. Bijvoorbeeld: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 USD Dit vertelt Beancount om de benodigde boeking in te voegen (naar Opening-Balances) zodat Kas gelijk is aan 10000 USD op die datum. Doe dit voor elke rekening. Het resultaat is vergelijkbaar, maar het schrijven van een expliciete transactie zoals in de eerste methode is ook eenvoudig.
  • Ingehouden Winsten: QuickBooks exporteert niet expliciet een "Ingehouden Winsten"-transactie – het berekent deze gewoon. Na de migratie merkt u misschien dat Equity:Retained Earnings nul is als u deze niet heeft aangemaakt. In Beancount zijn ingehouden winsten gewoon de winst van voorgaande jaren. U kunt ervoor kiezen om een rekening Ingehouden Winsten aan te maken en de winsten van voorgaande jaren daarheen over te boeken op de eerste dag van elk nieuw jaar, of u kunt het eigen vermogen gewoon de som van alle inkomsten/uitgaven laten zijn (wat onder de sectie Eigen Vermogen in rapporten verschijnt). Voor de transparantie maken sommige gebruikers jaarlijks sluitingsboekingen. Dit is optioneel en voornamelijk voor presentatiedoeleinden. Aangezien we alle transacties hebben gemigreerd, zal de winst voor elk jaar op natuurlijke wijze worden opgeteld als u een rapport per jaar genereert.

  • Vergelijkende Controles: Na het instellen van de beginbalansen, genereer een balans op de startdatum om ervoor te zorgen dat alles correct is (deze zou die beginbalansen versus het Opening Equity moeten tonen die op nul uitkomen).

4.3 Finaliseren en Versiebeheer

Nu de gegevens in Beancount-formaat zijn en gestructureerd, is het verstandig om de bestanden vast te leggen in een versiebeheerrepository (bijv. git). Elke wijziging in het grootboek kan worden gevolgd, en u heeft een audittrail van alle aanpassingen. Dit is een groot voordeel van platte-tekstboekhouding. In QuickBooks zijn wijzigingen bijvoorbeeld misschien niet gemakkelijk te vergelijken, maar in Beancount kunt u regel-voor-regel verschillen zien. Zoals sommige gebruikers opmerken, krijgt u met Beancount transparantie en de mogelijkheid om wijzigingen terug te draaien indien nodig – elke boeking kan worden gekoppeld aan een wijzigingsgeschiedenis.

Overweeg om de commit van deze initiële migratie te taggen als v1.0 of iets dergelijks, zodat u weet dat het de staat van de boeken vertegenwoordigt zoals geïmporteerd uit QuickBooks. In de toekomst zult u nieuwe transacties rechtstreeks in Beancount invoeren (of importeren uit bankfeeds, etc.), en kunt u normale softwareontwikkelingspraktijken gebruiken (maandelijks of dagelijks committen, branches gebruiken voor experimenten, etc.).

Fava of andere tools instellen: Fava is een webinterface voor Beancount die het gemakkelijk maakt om rapporten te bekijken. Voer na het committen fava ledger.beancount uit om door de financiële overzichten te bladeren en ze een laatste keer te vergelijken met uw QuickBooks-rapporten. U kunt kleine verschillen gemakkelijker opmerken in een UI (bijvoorbeeld, een rekening die nul zou moeten zijn maar een klein saldo toont, duidt op een ontbrekende sluitingsboeking of een verdwaalde transactie).

Naamgevingsconventies en consistentie: U heeft nu volledige controle, dus zorg voor consistentie:

  • Alle rekeningen moeten duidelijke namen hebben, beginnend met gecapitaliseerde categorienamen (Assets, Liabilities, etc.). Als er een vreemd uitziet (bijv. Assets:assets:SomeAccount door een hoofdletterverschil uit QuickBooks), hernoem deze dan in het rekeningenbestand en werk de transacties bij (een snelle zoek/vervang-actie op het bestand kan dit doen, of gebruik Beancount's bean-format of de multi-cursor van een editor).
  • Commodity-symbolen (valutacodes) moeten consistent zijn. Gebruik voor USD overal USD (niet $ of US$). Gebruik voor andere standaardcodes (EUR, GBP, etc.). Deze consistentie is belangrijk voor de prijsopzoekingen en rapporten van Beancount.
  • Verwijder eventuele tijdelijke of dummy-rekeningen die mogelijk zijn aangemaakt (als u bijvoorbeeld Expenses:Miscellaneous gebruikte voor onbekende rekeningen in het script als een vangnet, probeer die dan te elimineren door alle rekeningen correct te mappen).

QuickBooks afsluiten: Op dit punt zou u parallelle boeken in Beancount moeten hebben die overeenkomen met QuickBooks. Sommigen kiezen ervoor om beide systemen een korte periode parallel te laten draaien om er zeker van te zijn dat er niets is gemist. Maar als de validatie solide is, kunt u de QuickBooks-boeken "afsluiten":

  • Als dit een bedrijfsomgeving is, overweeg dan om alle QuickBooks-brondocumenten (facturen, rekeningen, bonnen) te exporteren voor uw administratie, aangezien die niet in Beancount zullen bestaan tenzij u ze handmatig bijvoegt.
  • Bewaar een back-up van de QuickBooks-gegevens (zowel het bedrijfsbestand als de exportbestanden).
  • Houd voortaan het Beancount-grootboek aan als het primaire registratiesysteem.

Door de gegevens vast te leggen in het Beancount-grootboek, heeft u de migratiepijplijn voltooid. De laatste stap is het uitvoeren van een audit en het aantonen van de consistentie van de financiële overzichten, om uzelf (en eventuele belanghebbenden of auditors) ervan te overtuigen dat de migratie succesvol was.


Fase 5: Audit na Migratie en Voorbeelden

Om het succes van de migratie te illustreren, bereidt u een voor-en-na vergelijking van financiële overzichten en mogelijk een diff van transacties voor. Dit levert bewijs dat de boeken consistent zijn.

5.1 Verifiëren van Financiële Overzichten

Produceer belangrijke financiële rapporten van zowel QuickBooks als Beancount voor dezelfde data en vergelijk ze:

  • Balans per 31 dec 2023: Vergelijk de totalen van Activa, Passiva en Eigen Vermogen regel voor regel. Ze moeten overeenkomen. Als QuickBooks bijvoorbeeld Totaal Activa = 150.000enTotaalPassiva+EigenVermogen=150.000** en **Totaal Passiva + Eigen Vermogen = 150.000 toonde, moet de Beancount-balans dezelfde totalen tonen. Als u de rekeningen iets anders heeft gestructureerd (bijvoorbeeld enkele subrekeningen samengevoegd), pas daar dan op aan bij de vergelijking of ga een niveau dieper om ervoor te zorgen dat de sommen gelijk zijn.

  • Winst & Verlies 2019–2023: Zorg ervoor dat de totale Inkomsten, totale Uitgaven en Nettowinst voor elk jaar (of de hele periode) identiek zijn. Kleine verschillen kunnen ontstaan als QuickBooks afrondingen deed op rapporten, maar transacties dragen meestal centen exact over, dus de nettowinst zou exact moeten zijn. Als de winst van een jaar verschilt, onderzoek dan de gegevens van dat jaar – vaak een indicator van een ontbrekende of dubbele boeking in die periode.

  • Verschillen in Proefbalans: Maak indien mogelijk een spreadsheet waarin u elke rekening en het saldo van QuickBooks versus Beancount opsomt. Aangezien we verwachten dat ze overeenkomen, zou dit een kolom met allemaal nullen moeten zijn. Dit is in wezen de kruiscontrole van de proefbalans die we hebben besproken, maar het uitschrijven ervan helpt bij de documentatie.

5.2 Voorbeeldvergelijking (Voor vs Na)

Hieronder volgt een voorbeeldfragment dat de gegevensconsistentie aantoont. Stel dat onze QuickBooks-proefbalans voor 31 dec 2023 was:

RekeningQuickBooks Saldo (31 dec 2023)
Activa
Assets:Bank:Checking$12.500,00 (debet)
Assets:Accounts Receivable$3.200,00 (debet)
Passiva
Liabilities:Credit Card$-1.200,00 (credit)
Liabilities:Loans Payable$-5.000,00 (credit)
Eigen Vermogen
Equity:Opening-Balances$-7.500,00 (credit)
Equity:Retained Earnings$-2.000,00 (credit)
Equity:Current Year Profit$0,00

In Beancount, na het importeren en boeken van alle transacties tot 2023, geeft een bean-report balances (proefbalans) het volgende weer:

RekeningBeancount Saldo (31 dec 2023)
Activa
Assets:Bank:Checking12,500.00 USD (debet)
Assets:Accounts Receivable3,200.00 USD (debet)
Passiva
Liabilities:Credit Card-1,200.00 USD (credit)
Liabilities:Loans Payable-5,000.00 USD (credit)
Eigen Vermogen
Equity:Opening-Balances-7,500.00 USD (credit)
Equity:Retained Earnings-2,000.00 USD (credit)
Equity:Winst (2019-2023)0.00 USD

(Opmerking: Eigen Vermogen-secties kunnen anders gestructureerd zijn; de sleutel is dat de totalen overeenkomen. Hier speelt "Winst (2019-2023)" in Beancount de rol van de winst van het lopende jaar/ingehouden winsten gecombineerd, en toont nul omdat de winst is afgesloten naar Ingehouden Winsten.)

Zoals te zien is, komt elke rekening tot op de cent overeen. De som van de debetbedragen is gelijk aan de som van de creditbedragen aan beide kanten.

Bovendien, als we een Winst & Verlies voor 2023 genereren:

  • QuickBooks: Inkomsten 50.000,Uitgaven50.000, Uitgaven 48.000, Nettowinst $2.000.
  • Beancount: Inkomsten 50.000,Uitgaven50.000, Uitgaven 48.000, Nettowinst $2.000 (die vervolgens werd afgesloten naar Ingehouden Winsten of verschijnt onder Eigen Vermogen in de eindejaarsbalans).

U kunt indien nodig een diff van transacties maken, maar aangezien QuickBooks-gegevens niet in grootboekvorm zijn, is het effectiever om op rapporten te vertrouwen. Men zou zowel de QuickBooks CSV als de Beancount-transacties op datum kunnen sorteren en belangrijke velden vergelijken als een laatste controle (dit kan in Excel of met een script). Echter, aangezien we vertrouwen op onze eerdere validatie, is de controle van de financiële overzichten meestal voldoende.

5.3 Audittips

  • Als een auditor of belanghebbende geruststelling nodig heeft, presenteer dan de voor-en-na financiële overzichten naast elkaar. De transparantie van Beancount kan audits zelfs vereenvoudigen omdat u elk getal van een overzicht snel kunt terugvoeren naar de bronboeking (vooral met de drill-down functionaliteit van Fava).
  • Bewaar de QuickBooks-back-up en geëxporteerde CSV's als onderdeel van uw audittrail. Documenteer eventuele aanpassingen die tijdens de migratie zijn gemaakt (bijvoorbeeld "Rekening X hernoemd naar Y voor consistentie" of "Transactie Z opgesplitst in twee boekingen voor duidelijkheid" als u dergelijke wijzigingen heeft aangebracht).
  • Implementeer in de toekomst regelmatige controles in Beancount. Bijvoorbeeld, maandelijkse afstemming van bankrekeningen en een assertie van hun eindsaldo helpt bij het opsporen van eventuele gegevensproblemen of fouten bij het invoeren. De migratie geeft een goede basis; discipline handhaven in het nieuwe systeem zal voortdurende nauwkeurigheid garanderen.

Vier tot slot de voltooiing van de migratie: u heeft met succes vijf jaar aan boekhoudgegevens overgezet van QuickBooks naar Beancount. De gegevens zijn nu in een lichtgewicht, versiebeheerd tekstformaat met volledige dubbel boekhouden-integriteit. U heeft de gegevens geëxporteerd, getransformeerd met Python-scripts, de integriteit gevalideerd via proefbalansen en rapporten, en vastgelegd in een goed georganiseerd Beancount-grootboek. Dit uitgebreide proces zorgt ervoor dat het Beancount-grootboek een nauwkeurige, getrouwe replica is van uw QuickBooks-boeken over de periode van vijf jaar, wat u voorbereidt op een gestroomlijnde boekhouding in de toekomst.

Introductie van Ondersteuning voor Meerdere Bestanden in Beancount

· 2 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Veel van onze klanten vragen ons sinds februari hoe ze meerdere bestanden aan één grootboek kunnen toevoegen. Ze hebben de bestandsstructuur nodig om transacties te archiveren of te categoriseren. Dus, na een paar maanden werk, kondigen we met genoegen aan dat de functie gratis is uitgebracht.

Zo gebruikt u het:

Bestand > nieuw bestand aanmaken

2021-09-24-multi-file-one-ledger

Ga naar het tabblad voor de bestandseditor in de linker navigatiezijbalk. Volg vervolgens de "Bestand"-dropdown en klik op "Nieuw bestand aanmaken".

Bestand > nieuw bestand aanmaken

Geef uw nieuwe bestand een naam

Geef uw bestand een geldige bestandsnaam en sla het op. Alle bestandsnamen moeten eindigen op ".bean".

Geef uw nieuwe bestand een naam

Voeg het bestand toe

Dit is een cruciale stap: u moet het nieuw aangemaakte bestand opnemen in main.bean.

Als u bijvoorbeeld stock.bean heeft toegevoegd, specificeer dan include "stock.bean" in main.bean.

Voeg het bestand toe

Vernieuw en navigeer naar bestand

Vernieuw de pagina en u zult zien dat het bestand verschijnt in de "Bestand"-dropdown.

Vernieuw en ga naar bestand

Hernoem of verwijder het bestand

Wanneer u naar het bestand navigeert, kunt u het hernoemen of verwijderen via de "Bewerken"-dropdown.

Hernoem of verwijder het bestand

Problemen?

Stel vragen in https://t.me/beancount.

Fava Upgrade naar Versie 1.19: Belangrijke Wijzigingen en Verbeteringen

· Eén minuut leestijd
Mike Thrift
Mike Thrift
Marketing Manager

We hebben de MIT-gelicentieerde open source software Fava geüpgraded naar versie 1.19. Hier zijn de wijzigingen sinds onze laatste update:

  • v1.19 (2021-05-18)
    • migratie van de opties conversion en interval naar de default-page optie
    • optie invert-income-liabilities-equity toegevoegd
    • upgrade naar CodeMirror 6
    • voegt een Bulgaarse vertaling toe
    • andere kleine verbeteringen en bugfixes
  • v1.18 (2021-01-16)
    • enkele kleine verbeteringen en diverse bugfixes.

Enthousiast geworden? Probeer het nu op https://beancount.io/ledger/

2021-07-16-upgrade-fava-to-1-19

Vragen? We staan voor je klaar op https://t.me/beancount :)

Amortisatie Begrijpen in Beancount

· 2 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Amortisatie spreidt betalingen uit over meerdere termijnen in de tijd. In beancount.io kunt u de plugin fava.plugins.amortize_over gebruiken om dit te realiseren.

2021-01-09-amortiseren

Zonder amortisatie, als u uw auto voor 6 maanden wilt verzekeren met kosten van $600. Moet u dit vastleggen als een eenmalige uitgave voor een specifieke datum.

2017-06-01 open Assets:Bank:Checking
2017-06-01 open Assets:Prepaid-Expenses
2017-06-01 open Expenses:Insurance:Auto


2017-06-01 * "Pay car insurance"
Assets:Bank:Checking -600.00 USD
Assets:Prepaid-Expenses

Echter, met amortisatie kunt u de uitgave over zes maanden toerekenen door plugin "fava.plugins.amortize_over" bovenaan het bestand te plaatsen en amortize_months: 6 te gebruiken voor de transactie.

plugin "fava.plugins.amortize_over"

2020-06-01 open Assets:Bank:Checking
2020-06-01 open Assets:Prepaid-Expenses
2020-06-01 open Expenses:Insurance:Auto

2020-06-01 * "Amortize car insurance over six months"
amortize_months: 6
Assets:Prepaid-Expenses -600.00 USD
Expenses:Insurance:Auto

En dan in het Journaal zult u zien dat de transactie is opgesplitst in 6 boekingen.

2020-11-01 * Amortize car insurance over six months (6/6) am
2020-10-01 * Amortize car insurance over six months (5/6) am
2020-09-01 * Amortize car insurance over six months (4/6) am
2020-08-01 * Amortize car insurance over six months (3/6) am
2020-07-01 * Amortize car insurance over six months (2/6) am
2020-06-01 * Amortize car insurance over six months (1/6) am

Schermafbeelding amortisatietransactie

Verbeteringen aan Beancount.io: Prestatie- en Beveiligingsupgrades

· Eén minuut leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Het onderhouden van een veilige en goed presterende online service is nooit een eenmalige taak. Het vergt inspanning om niet alleen nieuwe functies te ontwikkelen, maar ook om bestaande functionaliteiten te vernieuwen.

Verouderde software stelt onze klanten bloot aan beveiligingskwetsbaarheden. Hoe verminderen we dit risico? Enerzijds werken we proactief samen met beveiligingsonderzoekers om onverwachte problemen te vinden en op te lossen. Anderzijds integreren we periodiek de nieuwste versie van de upstream software.

Vandaag delen we graag enkele verbeteringen die we hebben aangebracht aan Beancount.io.

2021-01-07-upgrade-fava-to-1-17

  1. We hebben de server geüpgraded en de service tot 30% versneld. De beschikbaarheid van de service is ook aanzienlijk verbeterd.
  2. We hebben de MIT-gelicentieerde open-source software Fava geüpgraded naar versie 1.17. Dit heeft diverse bugs opgelost en veel nieuwe functies toegevoegd.

Enthousiast geworden? Probeer het nu op https://beancount.io/ledger/

Vragen? We staan voor u klaar op https://t.me/beancount :)

Introductie van Beancount's Beloningsprogramma voor Ontwikkelaars

· 4 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Beancount.io kondigt met enthousiasme het gloednieuwe beloningsprogramma voor ontwikkelaars in onze gemeenschap aan! Een Security Bug Bounty-programma is een open aanbod aan externe individuen om compensatie te ontvangen voor het melden van beancount.io en open-source Beancount mobile bugs gerelateerd aan de beveiliging van de kernfunctionaliteit.

Geen enkele technologie is perfect, en wij geloven dat samenwerken met ontwikkelaars, ingenieurs en technologen over de hele wereld cruciaal is bij het identificeren van zwakke punten in ons project tijdens de ontwikkeling. Als u denkt dat u een beveiligingsprobleem in ons product of onze dienst hebt gevonden, moedigen wij u aan ons hiervan op de hoogte te stellen. Wij werken graag met u samen om het probleem snel op te lossen.

Campagneperiode

2020-10-13-security-bug-bounty

2020-10-15 17:00 PST tot 2020-11-30 17:00 PST

Bereik

De volgende onderdelen van Beancount zijn opgenomen in Fase 1 van de Bug Bounty Campagne:

  1. beancount.io/ledger : Uw persoonlijke financiële manager.
  2. open-source Beancount mobile

Stappen om deel te nemen en bugs te melden

  • Als het NIET gerelateerd is aan persoonlijk identificeerbare informatie (PII) en exacte grootboekgegevens. Geef informatie over bugs via de GitHub ISSUE-aanvraag in https://github.com/puncsky/beancount-mobile/issues/:
    • Asset. Kies de repository waartoe de bug behoort en maak daarin een "New Issue" aan.
    • Ernst. Kies het kwetsbaarheidsniveau volgens "Kwalificerende Kwetsbaarheden".
    • Samenvatting — Voeg een samenvatting van de bug toe.
    • Beschrijving — Eventuele aanvullende details over deze bug.
    • Stappen — Stappen om te reproduceren.
    • Ondersteunend Materiaal/Referenties — Broncode om te repliceren, vermeld eventueel aanvullend materiaal (bijv. screenshots, logs, etc.).
    • Impact — Welke impact heeft de gevonden bug, wat zou een aanvaller kunnen bereiken?
    • Uw naam, land en Telegram-ID voor contact.
  • Als het gerelateerd is aan PII en exacte grootboekgegevens, neem dan contact op met puncsky op Telegram en stuur de bovenstaande informatie.
  • Het Beancount.io-team zal alle bugs beoordelen en u zo snel mogelijk feedback geven via de opmerkingen op de pagina met een specifieke bug of persoonlijk via Telegram als het gerelateerd is aan PII en exacte grootboekgegevens.
  • De uitkering van beloningen zal plaatsvinden in de vorm van een Fysiek Cadeau, Cadeaubon of USDT-equivalent nadat de campagne rond 1 december 2020 PST is afgelopen.

Kwalificerende kwetsbaarheden

Om in aanmerking te komen voor de bounty, moet de beveiligingsbug origineel en eerder ongemeld zijn.

Alleen de volgende ontwerp- of implementatieproblemen die de stabiliteit of beveiliging van Beancount.io aanzienlijk beïnvloeden, komen in aanmerking voor de beloning. Veelvoorkomende voorbeelden zijn:

  • Lek van PII en grootboekgegevens terwijl de hostmachine niet gecompromitteerd is.
  • Een speciale actie die de hele website of mobiele app doet vastlopen of crashen.
  • Een gebruiker beïnvloedt een andere gebruiker zonder voorafgaande toegangsverlening.

Voor scenario's die niet binnen een van de bovenstaande categorieën vallen, waarderen we nog steeds meldingen die ons helpen onze infrastructuur en onze gebruikers te beveiligen en belonen we dergelijke meldingen op individuele basis.

Kwetsbaarheden buiten bereik

Houd bij het melden van kwetsbaarheden rekening met het aanvalsscenario, de exploitabiliteit en de beveiligingsimpact van de bug. De volgende problemen worden als buiten bereik beschouwd, en we accepteren GEEN van de volgende soorten aanvallen:

  • Denial-of-service-aanvallen
  • Phishing-aanvallen
  • Social engineering-aanvallen
  • Reflected file download
  • Openbaarmaking van softwareversie
  • Problemen die directe fysieke toegang vereisen
  • Problemen die buitengewoon onwaarschijnlijke gebruikersinteractie vereisen
  • Fouten die verouderde browsers en plug-ins beïnvloeden
  • Openbaar toegankelijke inlogpanelen
  • CSV-injectie
  • E-mailenumeratie / account oracles
  • CSP-zwakheden
  • E-mailspoofing
  • Technieken waarmee u profielfoto's van gebruikers kunt bekijken (deze worden als openbaar beschouwd)

Beloningen

De prijs voor de meest kritieke bug die PII en grootboekgegevens blootlegt is een AirPods Pro (in de VS) of USDT-equivalent.

De prijs voor een beveiligingsbug is een Amazon Cadeaubon van $20 of USDT-equivalent.

Wij zijn een klein team met een beperkt budget en kunnen slechts het volgende uitkeren:

  • 1 AirPods Pro voor iedereen.
  • 10 beloningen van $20 per maand, tot 3 maanden. Als het werkelijke aantal gevallen dat bedrag in die maand overschrijdt, sturen we de resterende beloning in de volgende maand. ($600 in totaal voor deze campagne)

Vragen?

Stel ze ons via https://t.me/beancount