Skip to main content

open-banking.io

open-banking-io (Python)

Server-to-server client for open-banking.io. It authenticates with your API key and decrypts the zero-knowledge data envelopes locally with your exported private key — the service only ever returns ciphertext it cannot read.

pip install open-banking-io
from open_banking_io import OpenBankingClient

# Load the credentials .json you exported from the app (API key + private key).
with OpenBankingClient.from_credentials("credentials.json") as client:
    for account in client.get_accounts():
        booked = next((b for b in account.balances if b.type == "ITBD"), None)
        label = account.display_name or account.owner_name
        print(f"{label} {account.iban}: {booked.amount if booked else None} {account.currency}")

        page = client.get_transactions(account.id, limit=50)
        for t in page.items:
            print(
                f"  {t.booking_date}  {t.creditor_name or t.debtor_name}  {t.amount} {t.currency}"
            )

    # Trigger an online sync (decrypts the account uid locally and posts it):
    client.sync(account.id)

Or construct it explicitly:

client = OpenBankingClient(api_base_url, api_key, private_key_pkcs8)

API

  • get_accounts() -> list[Account] — decrypts each account's envelope, display name and balances.
  • get_transactions(account_id, *, date_from=None, date_to=None, limit=None, offset=None) -> TransactionPage
  • get_connections() -> list[Connection]
  • sync(account_id) -> SyncResult — decrypts the account uid locally and posts it.
  • sync_all() -> SyncAllResult — syncs every account that has an active session.

Amounts are exposed as decimal.Decimal. Models are plain @dataclasses.

When the client constructs its own httpx.Client it applies a default 30s timeout and sends a User-Agent: open-banking-io/python/<version> header on every request (a caller-supplied client is left untouched).

Encryption

Envelopes use ECDH P-256 → HKDF-SHA256 → AES-256-GCM. Decryption requires the private key from your credentials bundle and happens entirely in-process. Full wire format and the other language clients: repo README · THREAT_MODEL.md.

Development

python -m venv .venv
.venv/bin/pip install -e .[dev]
.venv/bin/pytest -q

MIT licensed.

Download files

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

Source Distribution

open_banking_io-1.0.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

open_banking_io-1.0.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file open_banking_io-1.0.0.tar.gz.

File metadata

  • Download URL: open_banking_io-1.0.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_banking_io-1.0.0.tar.gz
Algorithm Hash digest
SHA256 eab1b46cfb4e051f9e39a982f02778c0e7798fd8f31812d7adca02de3e334d99
MD5 efdc9e9c0fd7b41ef9cc23c9c40e7f33
BLAKE2b-256 5cf101115b2fb97c4cd5cf28e0bb8e0ac44e78f45ad2b7ad4e4e3257e7f3c5c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_banking_io-1.0.0.tar.gz:

Publisher: publish-python.yml on open-banking-io/clients

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

File details

Details for the file open_banking_io-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for open_banking_io-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4007ec152917573f4f74602160892c2bdea3d3e3371b87393fdae9eb5c6cf016
MD5 06d46d0a0442209afc95abbc42a67de7
BLAKE2b-256 41f5902cb2557ee799788c09a330cf7b7ebd011f424b53934ab4bb39397598e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_banking_io-1.0.0-py3-none-any.whl:

Publisher: publish-python.yml on open-banking-io/clients

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 Sentry Error logging StatusPage Status page