Yet another Plaid CLI.
Project description
Yet Another Plaid CLI
A CLI for exporting Plaid API requests to plain text for importing into accounting/budgeting software (e.g, GnuCash)
Features
- Exports the following Plaid API requests to plain text
- Plaid
transactionsyapcli balancesyapcli transactions
- Plaid
investmentsyapcli holdingsyapcli investment_transactions
- Plaid
- Supports financial institutions that require OAuth authentication with Plaid
Prerequisites
Plaid developer credentials
[ ] TODO explain how to get Plaid developer credentials
Dependencies
- Python 3.12: Minimum necessary version of Python to run
yapcli - pipx: Streamlines installation and commandline use
Quick start
Install from PyPI
pipx install yapcli
yapcli --help
Usage
Configure Plaid credentials
Use the config commands to create and manage your yapcli .env file:
# Show loaded .env paths and default directories
yapcli config paths
# Interactive setup (prompts for core values)
yapcli config init
# Set/update a single key
yapcli config set PLAID_CLIENT_ID your_client_id
yapcli config set PLAID_ENV sandbox
yapcli loads this default .env file on package import.
Configuration precedence (highest to lowest)
- Command-line arguments/options
- Environment variables already set in your shell/session
- Values defined in the
.envfile in your CWD - Values defined in the
.envfile in your config directory
Examples:
yapcli --production ...overridesPLAID_ENVfrom both shell env and.env- Exporting
PLAID_ENV=sandboxin your shell overridesPLAID_ENVin.env .envvalues are used as defaults when neither CLI options nor shell env provide a value
Link a Plaid account
To link your financial institution and obtain credentials:
yapcli link
This will:
- Start a local Flask backend server
- Serve the bundled Plaid Link frontend
- Open your browser to complete the Plaid Link flow
- Save credentials to the default secrets directory (see Default paths below)
Export transactions
yapcli transactions --help
Check balances
yapcli balances --help
Default paths
yapcli resolves default directories using platform directories (unless you override them with command options or environment variables):
YAPCLI_DEFAULT_DIRScontrols the default location for config, secrets, and logs:CWD: use the current working directory (e.g../secrets,./logs,./.env)PLATFORMDIRS: use platform-native locations viaplatformdirs(e.g.~/.config/yapclion Linux)
PLAID_ENV=sandboxadds asandbox/subdirectory for secrets/logs/exports.- Export output defaults to the current working directory:
./output(production)./sandbox/output(sandbox)
Overrides
- Pass
--out-diron export commands to explicitly choose output location - Set
PLAID_SECRETS_DIRto override secrets location globally - Set
YAPCLI_LOG_DIRto override log directory globally - Set
YAPCLI_OUTPUT_DIRto override the default output directory globally
Development environment
See CONTRIBUTING.md for development workflow.
Project scripts
The CLI entry point is defined in pyproject.toml under [project.scripts] as yapcli = "yapcli.cli.main:main". When installed via pipx or pip, the yapcli command becomes available in your PATH.
Related works
ebridges/plaid2qifNo longer supported as of Feb. 2023.bhipplefork also seems to have ceased development.- dthigpen/plaid-cli-python Last updated Feb. 2024. No community development engagement. Uses
plaid-pythonv17.0.0 (currently at 38.1.0) - madhat2r/plaid2text
- build-your-own-mint
- plaid-sync Has an html page to launch the link, but likely outdated.
- plaid-cli Writen in GO. Last updated 5 years ago
Differences
- Last updated / activitely updated / archived or depreciated
- Works with institutions that require OAuth authentication
- Works with institutions that require MFA authmentication
- Installs in single command (doesn't require repo download or environment management)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yapcli-0.1.0.tar.gz.
File metadata
- Download URL: yapcli-0.1.0.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f70e1005d65d7a5c85ace999e1c5645769a20a704a0b7a8f7001207485a190ed
|
|
| MD5 |
2b6bd98dea321898d245436e238a9b40
|
|
| BLAKE2b-256 |
2e888dfaefb195431f522d46ddeeb235b39f6306afc5ba904c117c9287216905
|
Provenance
The following attestation bundles were made for yapcli-0.1.0.tar.gz:
Publisher:
publish.yml on thisIsMikeKane/yapcli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yapcli-0.1.0.tar.gz -
Subject digest:
f70e1005d65d7a5c85ace999e1c5645769a20a704a0b7a8f7001207485a190ed - Sigstore transparency entry: 985082865
- Sigstore integration time:
-
Permalink:
thisIsMikeKane/yapcli@3382fff016415e6274fbba720ebb4ef64a26e834 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/thisIsMikeKane
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3382fff016415e6274fbba720ebb4ef64a26e834 -
Trigger Event:
release
-
Statement type:
File details
Details for the file yapcli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: yapcli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e8b392e900ccfa9e221e456575f82b34bfc6aeae0262554d7bb7b76b025cc46
|
|
| MD5 |
cc626043844d217d5091042a934e2ea8
|
|
| BLAKE2b-256 |
d688a61e42aa582ab700b3264707d4bc607fcf8b97c8be80236975e43d997537
|
Provenance
The following attestation bundles were made for yapcli-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on thisIsMikeKane/yapcli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yapcli-0.1.0-py3-none-any.whl -
Subject digest:
0e8b392e900ccfa9e221e456575f82b34bfc6aeae0262554d7bb7b76b025cc46 - Sigstore transparency entry: 985082878
- Sigstore integration time:
-
Permalink:
thisIsMikeKane/yapcli@3382fff016415e6274fbba720ebb4ef64a26e834 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/thisIsMikeKane
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3382fff016415e6274fbba720ebb4ef64a26e834 -
Trigger Event:
release
-
Statement type: