Plaid2QIF
Description
Plaid2QIF downloads transactions from various financial institutions in JSON format and converts to formats usable by financial software.
Output Formats supported:
- QIF
- CSV
- JSON
- Extensible to others
Notes
- Tested extensively with GnuCash. Supported by any financial software that supports import from QIF.
- Supports any institution supported by Plaid.
Summary
# Download transactions in various formats (default QIF) from Plaid
plaid2qif download \
--account=<account-name> \
--account-type=<type> \
--account-id=<acct-id> \
--from=<from-date> \
--to=<to-date> \
[--output-format=<format>] \
[--output-dir=<path>] \
[--ignore-pending] \
[--verbose]
Usage
-
Install the
plaid2qifcommand usingpip$ pip install plaid2qif -
Authenticate and link with your financial institution (first time only). To do this, follow the steps for using the associated Account Linker tool.
-
Configure your environment with required values. See "Authentication Configuration" below.
-
Once configured, you're ready to download transactions and save them as QIF files:
plaid2qif download \ --from=<yyyy-mm-dd> \ --to=<yyyy-mm-dd> \ --account-type=<type> \ --account=<account-name> \ --account-id=<plaid-account-id> \ --credentials=<file>
accountis the path to an account in the ledger in GnuCash that you ultimately want to import the transactions to. This is added to the!Accountheader in the QIF file. e.g.:Assets: Checking Accounts:Personal Checking Account. If the name has spaces be sure to quote this param.account-typeis a GnuCash account identifier type as documented here.account-idis Plaid's account ID for the account you want to download, as obtained vialist-accountsabove.- By default, output will go to stdout to be redirected. If you want it to be written to a location use the
output-dirparameter.
Authentication Configuration
- You will need the following information configured in your environment in order to use this tool.
- The suggested way to populate your environment would be to use a file named
.envin your current working directory. Alternatively you could put the values in your~/.profileor however you normally initialize your environment.
| Configuration Parameter | Environment Variable Name | Description | Notes |
|---|---|---|---|
| Client ID | PLAID_CLIENT_ID |
Plaid's unique indentifier for your Plaid account. Obtain from your dashboard | Required. |
| Client Secret | PLAID_SECRET |
Plaid's authentication token for your Plaid account. Obtain from your dashboard | Required. |
| Plaid Environment | PLAID_ENV |
Operating environment. | Optional. Should be one of: sandbox, development, or production. Defaults to development. |
| Plaid API Version | PLAID_API_VERSION |
Version of the API that the plaid-python library supports. |
Optional. Defaults to 2020-09-14 |
| Access Token location | ACCESS_TOKEN_FILE |
Location of the token that grants access to a particular financial institution for downloading records from. | Required. |
Notes on Authentication Configuration
-
The access token and Plaid credentials are sensitive material as they grant access to data within your financial accounts. They should be handled carefully and not shared.
-
These are the most important values that need configuration in order to authenticate with your institution and then download records. Other values can be found in the sample.env.
-
If you're downloading from different institutions that result in multiple access token files, you can override the location of the file at the command line; see below for an example. This approach is open to suggestions for improvement if this doesn't work well for others. See Issue #27.
$ ACCESS_TOKEN_FILE=./cfg/chase.txt plaid2qif ... $ ACCESS_TOKEN_FILE=./cfg/citi.txt plaid2qif ...
Distribution
# increment version in `plaid2qif/__init__.py`
# commit everything & push
$ git tag -s vX.Y.Z
$ git push --tags
$ python3 setup.py sdist bdist_wheel
$ twine upload dist/*
Release files for plaid2qif 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plaid2qif-1.4.0.tar.gz | 8.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plaid2qif-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:17.6 kB
Release files / plaid2qif-1.4.0.tar.gz
| Download URL | plaid2qif-1.4.0.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
db08159e7b7612d67a1cf53e1bb5f9ac8b3f97a6be3b3526074d247668d0c20d
|
|
BLAKE2b-256 checksum How to use checksums |
935e2aea42d4b37768d94385af45cb751fdcee9d2178c625264f02e9148e549a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/35.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.4 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.9.0
|
Release files / plaid2qif-1.4.0-py3-none-any.whl
| Download URL | plaid2qif-1.4.0-py3-none-any.whl |
|---|---|
| Size | 9.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f8d92ac1f730cd58256d6e96264712fe299ee70f8a612544b338e9a9334e54d5
|
|
BLAKE2b-256 checksum How to use checksums |
62a8ead2ac1269b443e8d349b691e55de418f725065a63df1d0d9414319c525f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/35.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.4 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.9.0
|