home / bankproducts

Fees

One row per fee charged on a product. Every row carries a source_page reference to the original bank PDF. NULL amount means 'on request' (tailored pricing) or 'not published in current source'.

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

4 rows where product_id = "saxo:stock_trading" sorted by amount descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: fee_type, frequency, valid_from (date)

id product_id bank_id fee_type label amount ▲ currency frequency tier channel note source_page valid_from access_tier
saxo:stock_trading:manual_order Stock Trading saxo:stock_trading SAXO BANK (SCHWEIZ) AG saxo transaction_commission Manual order fee (phone/chat/email) 50.0 EUR per_txn     EUR 50 per order placed manually via phone/chat/email. Online orders unaffected.   2026-06-01 pro
saxo:stock_trading:commission_emea Stock Trading saxo:stock_trading SAXO BANK (SCHWEIZ) AG saxo transaction_commission EMEA/APAC stock commission (Classic tier) 0.03 percent per_txn     3 bps of notional value per home.saxo Switzerland page. Applies to all EMEA + APAC exchanges including SIX, Xetra, LSE. Platinum/VIP lower.   2026-06-01 pro
saxo:stock_trading:commission_us Stock Trading saxo:stock_trading SAXO BANK (SCHWEIZ) AG saxo transaction_commission US stock commission (Classic tier) 0.005 USD per_txn     USD 0.005 per share (0.5 cents per share, CPS). No minimum on US stocks per home.saxo Switzerland page. Platinum/VIP tiers lower; specific rates JS-rendered.   2026-06-01 pro
saxo:stock_trading:inactivity Stock Trading saxo:stock_trading SAXO BANK (SCHWEIZ) AG saxo inactivity_fee Inactivity fee 0.0 CHF annual     Saxo explicitly states no inactivity fee.   2026-06-01 pro

Advanced export

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

CSV options:

CREATE TABLE fee (
    id          TEXT PRIMARY KEY,       -- zkb:privatkonto:account_mgmt
    product_id  TEXT NOT NULL REFERENCES product(id),
    bank_id     TEXT NOT NULL REFERENCES bank(id),  -- denormalized
    fee_type    TEXT NOT NULL,          -- standardized key
    label       TEXT,                   -- human-readable German label from PDF
    amount      REAL,                   -- NULL if text-only or varies
    currency    TEXT DEFAULT 'CHF',     -- CHF, EUR, USD, percent
    frequency   TEXT,                   -- monthly, annual, quarterly, per_txn, one_time, per_annum_pct
    tier        TEXT,                   -- for tiered pricing: "3rd card onwards", "vol:>250k", "member"
    channel     TEXT,                   -- ebanking, paper, counter, atm, app, post_office, all
    note        TEXT,                   -- conditions, fine print
    source_page INTEGER,
    valid_from  TEXT,
    access_tier TEXT NOT NULL DEFAULT 'free'  -- freemium gating; propagated from parent product
        CHECK (access_tier IN ('free', 'pro', 'business'))
);
CREATE INDEX idx_fee_product ON fee(product_id);
CREATE INDEX idx_fee_bank ON fee(bank_id);
CREATE INDEX idx_fee_type ON fee(fee_type);
CREATE INDEX idx_fee_category ON fee(fee_type, bank_id);
CREATE INDEX idx_fee_access_tier ON fee(access_tier);
Powered by Datasette · Queries took 26.652ms · Data license: CC-BY-4.0 · Data source: bankproducts.info