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-0.3.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-0.3.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for open_banking_io-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9e063259acae43cd8482bcd565d5fe532438a57b4fef59df6d8826a30fd32086
MD5 4751cb66e5f75f7ba592c1f36e87f644
BLAKE2b-256 f77c3074915a3716385a1df2af2ed707e3d231d96b2dac382c754c3e1e62582d

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_banking_io-0.3.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-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for open_banking_io-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c013867a72bd368f539f3ce8e789ea3641af7309fa289d9f9db0f1546b711b20
MD5 f538a7492895ed57de404d64c6d9115a
BLAKE2b-256 11d9a535af87d2d23a9be1eee2f6ce20dc58b8d96919e78006b5943f4d41c10f

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_banking_io-0.3.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