Migrating from QuickBooks to Beancount: A Step-by-Step Guide
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:
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:
- Navigeer naar Reports en zoek Transaction Detail by Account (of General Ledger in sommige QBO-versies).
- Stel Report period in op het volledige bereik van vijf jaar.
- Onder Rapportopties, stel Group by = None in (om individuele transacties zonder subtotalen te tonen).
- 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.
- 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