home / bankproducts

Products

Retail banking products. Each row is one product offered by one bank. Categories: current_account, savings_account, pillar_3a, vested_benefits, mortgage, credit_card, debit_card, term_deposit, wealth_management, securities_trading, etc.

Data license: CC-BY-4.0 · Data source: bankproducts.info

1 row where bank_id = "entris" sorted by bank_id descending

✎ View and edit SQL

This data as json, CSV (advanced)

id bank_id ▲ category name currency client_type target_group description valid_from source_document_id bpg access_tier is_tailored notice_period_days iso_account_type age_range_min age_range_max age_range_label status
entris:b2b_settlement Entris Banking AG entris wealth_management Entris Banking B2B Settlement Services CHF private wealthy B2B-only settlement bank, services to other banks (RBA Group ecosystem). No retail products. Analogous to aquila B2B platform. Pricing per institutional partnership individually negotiated.     BPG003CB6BZH pro             active

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE product (
    id                  TEXT PRIMARY KEY,  -- zkb:privatkonto, ubs:key4_banking
    bank_id             TEXT NOT NULL REFERENCES bank(id),
    category            TEXT NOT NULL,     -- current_account, savings_account, pillar_3a, vested_benefits,
                                           -- debit_card, credit_card, prepaid_card, package, ebanking,
                                           -- mortgage, wealth_management, term_deposit, securities_trading,
                                           -- fiduciary_deposit, safe_deposit, guarantee, leasing,
                                           -- financial_planning, personal_advisory, loyalty_program,
                                           -- digital_vault, fx_subscription, robo_advisory, self_directed_trading,
                                           -- metal_account, deposit_account, check
    name                TEXT NOT NULL,     -- bank's own product name
    currency            TEXT DEFAULT 'CHF',
    client_type         TEXT DEFAULT 'private',  -- private, business, institutional
    target_group        TEXT,              -- standard, young, children, students, seniors, eco, gift, rental_deposit, member
    description         TEXT,
    valid_from          TEXT,
    source_document_id  INTEGER REFERENCES source_document(id),
    bpg                 CHAR(12)        -- opaque global id, BPG003xxxxxx; populated post-load by bpg_assignments.sql
        CHECK (bpg IS NULL OR bpg GLOB 'BPG003[0-9A-HJKMNP-TV-Z][0-9A-HJKMNP-TV-Z][0-9A-HJKMNP-TV-Z][0-9A-HJKMNP-TV-Z][0-9A-HJKMNP-TV-Z][0-9A-HJKMNP-TV-Z]'),
    access_tier         TEXT NOT NULL DEFAULT 'free'  -- freemium gating: free public, pro/business paid
        CHECK (access_tier IN ('free', 'pro', 'business')),
    is_tailored         INTEGER             -- v2.6 (atom #278): mirrors CDS-AU (Australian Open Banking) isTailored.
                                            --   0 = pricing publicly published in a schedule (machine-readable, comparable);
                                            --   1 = negotiated per client (UHNW classical private banking, business loans);
                                            --   NULL = unknown / not yet classified (default for new loads).
                                            -- Distinguishes "we haven't crawled it" (NULL) from "bank deliberately
                                            -- doesn't publish because it's relationship-priced" (1) — three states
                                            -- that previously collapsed into "fee.amount IS NULL".
        CHECK (is_tailored IS NULL OR is_tailored IN (0, 1)),
    notice_period_days  INTEGER             -- v2.7 (atom #307): normalised withdrawal notice in days.
                                            --   0/NULL = on-demand; X = days notice. Conversion: months×30,
                                            --   years×365, days verbatim. Backfilled from
                                            --   product_feature.notice_period free-text by
                                            --   db/notice_period_backfill.sql.
        CHECK (notice_period_days IS NULL OR notice_period_days >= 0),
    iso_account_type    CHAR(4)             -- v2.8 (atom #308): ISO 20022 ExternalCashAccountType1Code.
                                            --   4-letter code from the official ISO enum: CACC (Current),
                                            --   SVGS (Savings), LOAN, SACC (Special), MOMA (Money Market),
                                            --   CHAR (Charges), CASH, etc.
                                            --   NULL for categories outside ISO scope: cards
                                            --   (debit/credit/prepaid), mandates (wealth_management,
                                            --   securities_trading, fiduciary_deposit), CH-specific
                                            --   (pillar_3a, vested_benefits, pension_account).
                                            --   Mapped from `category` by db/iso_account_type_backfill.sql.
                                            --   Backfill is conservative — when in doubt, leave NULL rather
                                            --   than force-fit a code that misrepresents the product.
        CHECK (iso_account_type IS NULL OR iso_account_type GLOB '[A-Z][A-Z][A-Z][A-Z]'),
    -- v3.1 (2026-08-12): age-cohort progression fields (atom #397). NULL = unrestricted.
    -- Populated by db/age_range_backfill.sql from product.name/description regex.
    age_range_min       INTEGER
        CHECK (age_range_min IS NULL OR (age_range_min >= 0 AND age_range_min <= 120)),
    age_range_max       INTEGER
        CHECK (age_range_max IS NULL OR (age_range_max >= 0 AND age_range_max <= 120)),
    age_range_label     TEXT,
    -- v3.3 (2026-08-12, PR #410): product-lifecycle status.
    status              TEXT NOT NULL DEFAULT 'active'
        CHECK (status IN ('active', 'legacy_bestand_only', 'retired'))
);
CREATE INDEX idx_product_bank ON product(bank_id);
CREATE INDEX idx_product_category ON product(category);
CREATE INDEX idx_product_lookup ON product(bank_id, category, client_type, target_group);
CREATE UNIQUE INDEX idx_product_bpg ON product(bpg) WHERE bpg IS NOT NULL;
CREATE INDEX idx_product_access_tier ON product(access_tier);
CREATE INDEX idx_product_is_tailored ON product(is_tailored) WHERE is_tailored IS NOT NULL;
CREATE INDEX idx_product_iso_account_type ON product(iso_account_type) WHERE iso_account_type IS NOT NULL;
CREATE INDEX idx_product_notice_period ON product(notice_period_days) WHERE notice_period_days IS NOT NULL;
CREATE INDEX idx_product_age_range ON product(age_range_min, age_range_max) WHERE age_range_min IS NOT NULL OR age_range_max IS NOT NULL;
CREATE INDEX idx_product_status ON product(status) WHERE status != 'active';
Powered by Datasette · Queries took 35.478ms · Data license: CC-BY-4.0 · Data source: bankproducts.info