4.3 KiB
4.3 KiB
YNAB Client Module Summary
Overview
A Python module (ynab_client.py) that authenticates with YNAB using the official SDK and retrieves transactions from configured accounts.
Files Created
ynab_client.py - Main Module
-
YNABClient class: Main interface for YNAB API interactions
__init__(config_path): Initialize from YAML config fileget_transactions_for_days(days=30): Fetch transactions for past N daysget_account_balance(account_id): Get current balance for an account
-
YNABTransaction TypedDict: Defines transaction data structure
id: Transaction IDdate: Transaction date (YYYY-MM-DD)payee_name: Payee namecategory_name: Category nameamount_milliCurrency: Amount in milliCurrency units (divide by 1000 for dollars)memo: Transaction memoaccount_id: YNAB account IDaccount_name: Account namecleared: Cleared status
ynab_example.py - Example Usage
Demonstrates how to:
- Load YNAB client from config
- Fetch transactions for past 30 days
- Display transactions in human-readable format
- Save transactions to JSON file (
ynab_transactions.json)
ynab.yml - Configuration File
Contains:
- YNAB API token
- Budget/Plan ID
- List of accounts to track (name, ID, and extractor)
Configuration File
Create a ynab.yml file in the project root using the following structure:
ynab:
- token: "your-ynab-api-token"
plan_id: "your-budget-id"
accounts:
- name: "Credit Card"
id: "account-uuid"
extractor: "wf_credit_extractor"
- name: "Debit Card"
id: "account-uuid"
extractor: "wf_debit_extractor"
Field Reference
| Field | Required | Description |
|---|---|---|
ynab |
✓ | Top-level key. Contains a list of YNAB configurations (one per budget). |
token |
✓ | Your YNAB Personal Access Token. Generate one at YNAB → Account Settings → Developer Settings. Keep this secret — treat it like a password. |
plan_id |
✓ | The UUID of your YNAB budget. Find it in the URL when viewing your budget: https://app.ynab.com/<plan_id>/budget. |
accounts |
✓ | List of bank accounts to sync. Each entry maps a YNAB account to a Wells Fargo data extractor. |
accounts[].name |
✓ | A human-readable label for the account (used in report output only). |
accounts[].id |
✓ | The UUID of the YNAB account. Find it in the URL when viewing the account in YNAB, or via the YNAB API. |
accounts[].extractor |
✓ | Which Wells Fargo extractor to use for this account. Must be one of: wf_credit_extractor (for credit cards) or wf_debit_extractor (for checking/debit accounts). |
How to Find Your IDs
API Token
- Log in to app.ynab.com
- Go to Account Settings → Developer Settings
- Click New Token, give it a name, and copy the value
Budget (plan_id)
- Open your budget in YNAB — the UUID is in the URL:
https://app.ynab.com/dc25f923-e6b4-45f5-8d42-65e53eed1f1e/budget
Account ID
- Click on an account in YNAB — the UUID appears in the URL after
/accounts/ - Or use the YNAB API Explorer at
https://api.ynab.com/v1/budgets/<plan_id>/accounts
Dependencies
ynab(v2.1.0) - Official YNAB Python SDKpyyaml(v6.0.3) - YAML file parsing
Usage
Basic Usage
from ynab_client import YNABClient
# Initialize client
client = YNABClient("ynab.yml")
# Get transactions from past 30 days
transactions = client.get_transactions_for_days(days=30)
# Access transaction data
for txn in transactions:
amount_dollars = txn["amount_milliCurrency"] / 1000
print(f"{txn['date']} | {txn['payee_name']} | ${amount_dollars:.2f}")
Run Example
python .\ynab_example.py
This will:
- Load credentials from
ynab.yml - Fetch transactions from configured accounts
- Display first 10 transactions
- Save all transactions to
ynab_transactions.json
Key Features
- ✓ Configuration from YAML file
- ✓ Automatic date filtering (past X days)
- ✓ Category name lookup
- ✓ Account name mapping
- ✓ Error handling for network/API issues
- ✓ Both timestamp and formatted date fields
- ✓ Balance retrieval for accounts
Status
- ✓ Module created and tested
- ✓ Configuration loading verified
- ✓ Dependencies installed
- ✓ No static errors