Skip to main content

Unofficial Desjardins AccèsD wrapper — track your balance, credit cards, transactions, and statements from Python

Project description

desjardins-py

Personal use only. This project is intended solely for personal, non-commercial use. You may not redistribute, sublicense, or use it as part of a product or service.

Disclaimer: This project is not affiliated with, endorsed by, or in any way connected to Desjardins Group. It is an independent, unofficial tool that interacts with Desjardins' web interface through browser automation. Use at your own risk. Your credentials are never transmitted anywhere other than Desjardins' own servers.

Unofficial Desjardins AccèsD wrapper for Python. Track your balance, credit cards, transactions, and statements. Pipe the data anywhere you need it.

Features

  • Fetch accounts, credit cards, transactions, and statement metadata from AccèsD
  • Returns typed Pydantic models — work with your data directly in Python
  • Persist to SQLite, MySQL, or PostgreSQL with a single save() call
  • Incremental fetching — only imports transactions newer than the last run
  • Export to CSV or XLSX with to_csv() / to_excel()
  • Persistent browser session — saves the session after the first OTP verification so subsequent runs are unattended

How it works

  1. Opens a headless Chromium browser to log into your AccèsD account and obtain a valid session token
  2. Intercepts the accounts API response to collect BankAccount and CreditCard records
  3. Calls the Desjardins REST API directly (reusing the session token) to fetch transactions and statement metadata for each account
  4. Returns a typed FetchResult containing all fetched data. Use it directly in your code or persist it to a database

Usage

Once fetched, your data is plain Python objects — use them however you like:

  • Budget automation — categorize transactions and trigger alerts when spending thresholds are hit
  • Power BI / Tableau — load into a database and connect a live report on top of it
  • Excel / Google Sheets — export with to_excel() or to_csv() and refresh your spreadsheet on a schedule
  • Custom dashboards — pipe into any Python data stack (pandas, Plotly, Streamlit, etc.)
  • Notifications — send a daily summary to Slack, email, or a home automation system

Installation

With pip

pip install desjardins-py
playwright install chromium

With uv

uv sync
uv run playwright install chromium

Examples

Basic fetch and inspect data

No database required. Credentials are passed directly.

from desjardins_py import DesjardinsClient

client = DesjardinsClient(
    card_number="your_card_number",
    password="your_password",
)

result = client.fetch()

# result.accounts          → list[BankAccount]
# result.cards             → list[CreditCard]
# result.transactions      → list[Transaction]
# result.card_transactions → list[CardTransaction]
# result.statements        → list[Statement]

for account in result.accounts:
    print(account.name, account.amount, account.currency)

for tx in result.transactions:
    print(tx.effective_date, tx.description, tx.amount)

On first run a you will be propmted for a OTP verification code in the terminal. Subsequent runs reuse the saved session in .session/.


Persist to SQLite

from desjardins_py import DesjardinsClient

client = DesjardinsClient(
    card_number="your_card_number",
    password="your_password",
)
client.connect_db("sqlite:///accesd.db")

result = client.fetch()
result.save()  # inserts only transactions newer than the last fetch

Persist to PostgreSQL

pip install desjardins-py[postgres]   # or: uv sync --extra postgres
from desjardins_py import DesjardinsClient

client = DesjardinsClient(
    card_number="your_card_number",
    password="your_password",
)
client.connect_db("postgresql+psycopg2://user:password@localhost:5432/accesd")

result = client.fetch()
result.save()

For MySQL: pip install desjardins-py[mysql] and use mysql+pymysql://user:password@localhost:3306/accesd.


Export to XLSX

from desjardins_py import DesjardinsClient

client = DesjardinsClient(
    card_number="your_card_number",
    password="your_password",
)

result = client.fetch()
result.to_excel("accesd.xlsx")   # one sheet per table
result.to_csv("./export")      # one CSV file per table

Database schema

Table Description
bank_accounts Chequing / savings accounts
credit_cards Credit cards and lines of credit
transactions Bank account transaction history
card_transactions Credit card transaction history
statements Statement metadata (name, date, size)

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

desjardins_py-0.1.0.tar.gz (84.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

desjardins_py-0.1.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file desjardins_py-0.1.0.tar.gz.

File metadata

  • Download URL: desjardins_py-0.1.0.tar.gz
  • Upload date:
  • Size: 84.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for desjardins_py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4c9136b20cbac07baaa5403dc8295123e8eed15922a58b1dfa99c97423dbbf54
MD5 b26b251a50dd957a268753a52e3fada6
BLAKE2b-256 2110f0125ff9ba71bf5bc7145772ce66c6ce8fdd009c17a518474c39072f2b3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for desjardins_py-0.1.0.tar.gz:

Publisher: release.yml on MaximBacar/desjardins-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file desjardins_py-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: desjardins_py-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for desjardins_py-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa5f27a4a63c5c5310c0b40db378cf4d86995885dfba38499faa80f744ade82e
MD5 270a4f1f72b662ca5efd773ce8f4e85a
BLAKE2b-256 d05f10ca4563845cb38e14f6f4ec1353b247969a8bc1c5fa910e3892cb19b60e

See more details on using hashes here.

Provenance

The following attestation bundles were made for desjardins_py-0.1.0-py3-none-any.whl:

Publisher: release.yml on MaximBacar/desjardins-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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