Concepts

Data Model

Data Model

The SQLite archive stores normalized rows plus raw provider JSON where useful.

Core tables:

  • institutions: provider institution IDs, names, countries, BICs, raw JSON.
  • connections: read-only consent/requisition state and expiry metadata.
  • accounts: stable provider account IDs, current provider resource IDs, IBAN/name/currency/owner metadata.
  • transactions: normalized transaction fields and raw provider payloads.
  • sync_runs: sync attempts, status, errors, and transaction counters.

Transaction amounts are text decimal strings. Do not store or compute money with float64.

provider_account_id is the stable archive identity. provider_resource_id is the current live fetch identifier when a provider separates stable account identity from session-scoped resource IDs. Enable Banking uses identification_hash for the stable ID and uid as the resource ID.

Transaction deduplication order:

  • provider/account transaction ID
  • provider/account reference
  • stable hash of provider, account, booking date, amount, currency, counterparty, and description

CSV exports use this stable header:

date,value_date,account_id,iban,institution,counterparty_name,counterparty_account,description,amount,currency,transaction_id,provider,category

Local query/sql commands allow read-only SELECT/WITH inspection of this schema. Mutating SQL and multiple statements are rejected before execution.