Importers ========= The importers normally all work very well together with `Smart Importer `__ and are also usable in `Fava `__. Bitstamp -------- Import transactions from `Bitstamp `__ Create a file called (or ending with) bitstamp.yaml in your import location (e.g. downloads folder). .. code-block:: yaml username: "12345" key: "MyKey" secret: "MySecret" account: 'Assets:Bitstamp' otherExpensesAccount: 'Expenses:Fee' capGainAccount: 'Income:Capitalgain' monthCutoff: 3 currencies: - eur - btc .. code-block:: python from tariochbctools.importers.bitst import importer as bitstimp CONFIG = [bitstimp.Importer()] QuickFile -------------- Import from `QuickFile `__ using their API services. Supports a `range of (mostly UK) banks `__. Requires a QuickFile account (any pricing plan, including free) but with a paid Automated Bank Feed subscription (`small annual fee `__). It is assumed you already have automated bank feeds configured within QuickFile for the accounts of interest and are able to browse transactions within the QuickFile dashboard. .. code-block:: python from tariochbctools.importers.quickfile import importer as qfimp CONFIG = [qfimp.Importer()] Create a file called ``quickfile.yaml`` in your import location (e.g. download folder). .. code-block:: yaml account_number: "YOUR_ACCOUNT_NUMBER" api_key: YOUR_API_KEY app_id: YOUR_APP_ID from_date: 2020-12-13 to_date: 2020-12-20 accounts: 1200: Assets:Other 1201: Assets:Savings transaction_count: 200 from_date and to_date are both optional To obtain an API key you must create an app in the `Account Settings | 3rd Party Integration | API` section of your account dashboard. The only permissions it needs to have is "Invoices.Bank_Search" your api_key is for your account, you can find it on "Settings - My Apps" or in the quickfile sandbox Accounts are indexed in the config by their ``nominal code`` (typically: ~1200) visible in each account's settings. Only accounts listed in the config will be queried. Revolut ------- Import CSV from `Revolut `__ .. code-block:: python from tariochbctools.importers.revolut import importer as revolutimp CONFIG = [revolutimp.Importer("/Revolut-CHF.*\.csv", "Assets:Revolut:CHF", "CHF")] Wise (formerly Transferwise) ---------------------------- Import from `Wise `__ using their api. First, generate a personal API token by logging on and going to settings. Next, you need to generate a public/private key pair and then upload the public key part to your account. To generate the keys, execute (e.g. in your ``.ssh`` folder) .. code-block:: bash openssl genrsa -out wise.pem openssl rsa -pubout -in wise.pem -out wise_public.pem openssl pkey -in wise.pem -traditional > wise_traditional.pem The final command makes a traditional private key for compatibility with the python rsa library. This may stop being necessary at some point. See `this page https://github.com/sybrenstuvel/python-rsa/issues/80` for details. Now upload the *public* key part to your Wise account. You can then create an import config for beancount, or add Wise to your existing one. .. code-block:: python from tariochbctools.importers.transferwise import importer as twimp CONFIG = [twimp.Importer()] Create a file called (or ending with) transferwise.yaml in your import location (e.g. download folder). .. code-block:: yaml token: baseAccount: privateKeyPath: /path/to/wise_traditional.pem Optionally, you can provide a dictionary of account names mapped by currency. In this case you must provide a name for every currency in your Wise account, otherwise the import will fail. .. code-block:: yaml token: baseAccount: SEK: "Assets:MySwedishWiseAccount" GBP: "Assets:MyUKWiseAccount" privateKeyPath: /path/to/wise_traditional.pem TrueLayer --------- Import from `TrueLayer `__ using their api services. e.g. supports Revolut. You need to create a dev account and see their documentation about how to get a refresh token. .. code-block:: python from tariochbctools.importers.truelayer import importer as tlimp CONFIG = [tlimp.Importer()] Create a file called (or ending with) truelayer.yaml in your import location (e.g. download folder). .. code-block:: yaml account: client_id: client_secret: refresh_token: Instead of a single ``account``, the configuration may include a *mapping* from TrueLayer account IDs to beancount accounts. e.g.: .. code-block:: yaml accounts: 1aacb3110398ec5a2334fb0ffc2fface: Assets:Revolut:GBP ec34db160c61d468dc1cedde8bedb1f1: Liabilities:Visa If it is present, transactions for *only these accounts* will be imported. GoCardless (formerly Nordigen) ------------------------------ Import from `GoCardless `__ (formerly known as `Nordigen `__) using their api services. Supports `2500+ banks `__ in Europe and the UK including e.g. Revolut. You need to create a free account and create a token. I've included a small cli to allow to hook up to different banks with GoCardless. If you're country is not supported you can play around with other countries e.g. CH is not allowed but things like revolut still work. You can also create multiple links and they will all be listed in the end. .. code-block:: console nordigen-conf list_banks --secret_id YOURSECRET_ID --secret_key YOURSECRET_KEY --country DE nordigen-conf create_link --secret_id YOURSECRET_ID --secret_key YOURSECRET_KEY --bank REVOLUT_REVOGB21 --reference myref --max_historical_days 90 --access_valid_for_days 90 --access_scope "[\"balances\", \"details\", \"transactions\"]" nordigen-conf list_accounts --secret_id YOURSECRET_ID --secret_key YOURSECRET_KEY nordigen-conf delete_link --secret_id YOURSECRET_ID --secret_key YOURSECRET_KEY --reference myref .. code-block:: python from tariochbctools.importers.nordigen import importer as nordimp CONFIG = [nordimp.Importer()] Create a file called (or ending with) nordigen.yaml in your import location (e.g. download folder). .. code-block:: yaml secret_id: secret_key: accounts: - id: asset_account: "Assets:MyAccount:CHF" ZKB --- Import mt940 from `Zürcher Kantonalbank `__ .. code-block:: python from tariochbctools.importers.zkb import importer as zkbimp CONFIG = [zkbimp.ZkbImporter("/\d+\.mt940", "Assets:ZKB")] Raiffeisen CH ------------- Import mt940 from `Raiffeisen Schweiz `__ .. code-block:: python from tariochbctools.importers.raiffeisench import importer as raiffeisenimp CONFIG = [ raiffeisenimp.RaiffeisenCHImporter("/Konto_CH\d+_\d+\.mt940", "Assets:Raiffeisen") ] Interactivebrokers ------------------ Import dividends and buys from `Interactive Brokers `__ Create a file called (or ending with) ibkr.yaml in your import location (e.g. downloads folder). .. code-block:: yaml token: queryId: baseCcy: CHF .. code-block:: python from tariochbctools.importers.ibkr import importer as ibkrimp CONFIG = [ibkrimp.Importer()] ZAK --- Import PDF from `Bank Cler ZAK `__ .. code-block:: python from tariochbctools.importers.zak import importer as zakimp CONFIG = [zakimp.Importer(r"Kontoauszug.*\.pdf", "Assets:ZAK:CHF")] mt940 ----- Import Swift mt940 files. Schedule -------- Generate scheduled transactions. Define a file called (or ending with) schedule.yaml in your import location (e.g. downloads folder). That describes the schedule transactions. They will be added each month at the end of the month. .. code-block:: yaml transactions: - narration: 'Save' postings: - account: 'Assets:Normal' amount: '-10' currency: CHF - account: 'Assets:Saving' .. code-block:: python from tariochbctools.importers.schedule import importer as scheduleimp CONFIG = [scheduleimp.Importer()] Cembra Mastercard Montly Statement ---------------------------------- Import Monthly Statement PDF from Cembra Money Bank (e.g. Cumulus Mastercard). Requires the dependencies for camelot to be installed. See https://camelot-py.readthedocs.io/en/master/user/install-deps.html#install-deps .. code-block:: python from tariochbctools.importers.cembrastatement import importer as cembrastatementimp CONFIG = [cembrastatementimp.Importer("\d+.pdf", "Liabilities:Cembra:Mastercard")] Blockchain ---------- Import transactions from Blockchain Create a file called (or ending with) blockchain.yaml in your import location (e.g. downloads folder). .. code-block:: yaml base_ccy: CHF addresses: - address: 'SOMEADDRESS' currency: 'BTC' narration: 'Some Narration' asset_account: 'Assets:MyCrypto:BTC' - address: 'SOMEOTHERADDRESS' currency: 'LTC' narration: 'Some Narration' asset_account: 'Assets:MyCrypto:LTC' .. code-block:: python from tariochbctools.importers.blockchain import importer as bcimp CONFIG = [bcimp.Importer()] Mail Adapter ------------ Instead of expecting files to be in a local directory. Connect per imap to a mail account and search for attachments to import using other importers. Create a file called mail.yaml in your import location (e.g. downloads folder). .. code-block:: yaml host: "imap.example.tld" user: "myuser" password: "mypassword" folder: "INBOX" targetFolder: "Archive" The targetFolder is optional, if present, mails that had attachments which were valid, will be moved to this folder. .. code-block:: python from tariochbctools.importers.general.mailAdapterImporter import MailAdapterImporter CONFIG = [MailAdapterImporter([MyImporter1(), MyImporter2()])] Neon ---- Import CSV from `Neon `__ .. code-block:: python from tariochbctools.importers.neon import importer as neonimp CONFIG = [neonimp.Importer("\d\d\d\d_account_statements\.csv", "Assets:Neon:CHF")] Viseca One ---------- Import PDF from `Viseca One `__ .. code-block:: python from tariochbctools.importers.viseca import importer as visecaimp CONFIG = [visecaimp.Importer(r"Kontoauszug.*\.pdf", "Assets:Viseca:CHF")] BCGE ---- Import mt940 from `BCGE `__ .. code-block:: python from tariochbctools.importers.bcge import importer as bcge CONFIG = [bcge.BCGEImporter("/\d+\.mt940", "Assets:BCGE")] Swisscard cards --------------- Import Swisscard's `Cashback Cards ` transactions from a CSV export. .. code-block:: python from tariochbctools.importers.swisscard import importer as swisscard CONFIG = [swisscard.SwisscardImporter("swisscard/.*\.csv", "Liabilities:Cashback")] Fidelity Netbenefits -------------------- Import Fidelity Netbenefits `` transactions from a CSV export of the activities. .. code-block:: python from tariochbctools.importers.netbenefits import importer as netbenefits CONFIG = [ netbenefits.Importer( regexps="Transaction history\.csv", cashAccount="Assets:Netbenefits:USD", investmentAccount="Assets:Netbenefits:SYMBOL", dividendAccount="Income:Interest", taxAccount="Expenses:Tax", capGainAccount="Income:Capitalgain", symbol="SYMBOL", ignoreTypes=["REINVESTMENT REINVEST @ $1.000"], baseCcy="CHF", ) ] radicant account statements --------------------------- Import PDF from `radicant `__ .. code-block:: python from tariochbctools.importers.radicant import importer as radicant CONFIG = [radicant.Importer("Account.*\.pdf", "Assets:Radicant")] AwardWallet ------------------------------ Import from `AwardWallet `__ using their `Account Access API `__. As of 2025 AwardWallet integrates over 460 airline, hotel, shopping and other loyalty programmes. Many programmes do not support retrieval of transactions, only balances. 1. Update your personal AwardWallet account. The importer can only retrieve data that has already been synced to your AwardWallet account. 2. Follow the instructions in the `API documentation `__ to register for a free Business account and create an API key. The API key is restricted to the **allowed IP addresses** you specify in the Business interface API Settings. 3. Link and authorize personal accounts using the included ``awardwallet-conf`` CLI tool: .. code-block:: console awardwallet-conf --api-key YOUR_API_KEY get_link_url Manage access to your personal account under `Manage Users `__ in the personal web interface. 4. Generate a config file for all linked users ending with ``awardwallet.yaml`` in your import location (e.g. download folder) and edit it to your needs. .. code-block:: console awardwallet-conf --api-key YOUR_API_KEY generate > awardwallet.yaml If you have multiple accounts using the same points currency (e.g. ``AVIOS`` used by BA, Iberia, ...) create sub-accounts for each so that ``balance`` directives will work. Example configuration file: .. code-block:: yaml api_key: YOUR_API_KEY users: 12345: name: John Smith all_history: false # only the last 10 txns per account accounts: 7654321: provider: "British Airways Club" account: Assets:Current:Points currency: AVIOS 5. Finally, initialize the importer: .. code-block:: python from tariochbctools.importers.awardwalletimp import importer as awimp CONFIG = [awimp.Importer()]