Skip to main content

Library to import bank transactions via API into You Need A Budget (YNAB)

Project description

ynab-api-import

GitHub Release

This library enables importing YNAB transactions via the Gocardless Bank Account Data API (formerly Nordigen). It can be helpful for cases in which your bank is not covered by YNABs native import functionality.

Preparations

Gocardless Bank Account API (formerly Nordigen)

  1. Check if your bank is supported by the API.
  2. Create an account with Gocardless for the Bank Account Data API (They have a separate Login for it which you can get to by clicking on 'Get API Keys' or clicking the link at the bottom of their standard login page)
  3. Go to Developers -> User Secrets and create a new pair of secret_id and secret_key

YNAB

  1. Create a personal access token for YNAB as described here

Usage

1. Install library from PyPI

pip install ynab-api-import

2. Initiate Library

Provide a unique reference (e.g. 'mycheckingaccount') per bank connection to identify the grant later on. You can find the IDs of your budget and the account if you go to https://app.ynab.com/ and open the target account by clicking on the name on the left hand side menu. The URL does now contain both IDs https://app.ynab.com/<budget_id>/accounts/<account_id>

from ynabapiimport import YnabApiImport
ynab_api_import = YnabApiImport(secret_id='<secret_id>', 
                                secret_key='<secret_key>',
                                reference='<reference>',
                                token='<ynab_token>',
                                budget_id='<budget_id>',
                                account_id='<account_id>')

Optionally you can initiate an object from a config.yaml file. To do that create a YAML file with the following content:

secret_id: <secret_id>
secret_key: <secret_key>
reference: <reference>
token: <ynab_token>
budget_id: <budget_id>
account_id: <account_id>

Save the file and provide the path to the library when initializing

ynab_api_import = YnabApiImport.from_yaml('path/to/config.yaml')

2. Find the institution_id of your bank

Countrycode is ISO 3166 two-character country code.

ynab_api_import.fetch_institutions(countrycode='<countrycode>')

You get back a dictionary with all available banks in that country and their institution_ids. Find and save the institution_id of your bank.

[{'name': '<name>', 'institution_id': '<institution_id>'}]

3. Create Auth Link and authenticate with your bank

Provide the institution_id. You get back a link which you need to copy to your browser and go through authentication flow with your bank

ynab_api_import.create_auth_link(institution_id='<institution_id>')

4. Run import with your reference and YNAB identifiers

Optionally you can provide a startdate argument in form of a datetime.date object to only import transactions from a specific date onwards.

ynab_api_import.import_transactions()

Handling of multiple or no active accounts in your bank connection

The library assumes that you have one active account in your bank connection. It will raise an error if there are no active accounts in your connection or more than one. In the latter case you need to provide the correct resource_id in your call. You can find the resource_id by looking into the available options in the error message.

ynab_api_import.import_transactions(resource_id='<resource_id>')

Development

Read the CONTRIBUTING.md file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ynab_api_import-0.4.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

ynab_api_import-0.4.0-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file ynab_api_import-0.4.0.tar.gz.

File metadata

  • Download URL: ynab_api_import-0.4.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1019-azure

File hashes

Hashes for ynab_api_import-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ac403e81b42d72f8756e8011a6ade5933dd783f0197cbc0b1996ee24ae18145b
MD5 0f0026fb6dab2f53f651fa3d6fb15428
BLAKE2b-256 6817816d8cb126a9a2dbb02dd7c9b50527f067eedcb7c3eae1508b0de5a01db3

See more details on using hashes here.

File details

Details for the file ynab_api_import-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: ynab_api_import-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1019-azure

File hashes

Hashes for ynab_api_import-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ddff3df0fd33449b2cf10f848822e1ebb92f96144ed896fcf64e7d425564e253
MD5 2017746d3c2869d5d301d90545861f71
BLAKE2b-256 0855994244bc38677aaf1e06572d3b8e94e73d7a7b0c43bdaf87d5c0ec20f254

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page