Goal
Display bank/institution logos (e.g. Monzo) when importing or showing accounts, in a legally defensible way, with a graceful fallback.
Legal context
Bank logos are protected by copyright (artwork) and trademark (brand). No license simply grants them. Display is generally defensible under nominative fair use when:
- The logo identifies the user's actual account at that bank (factual/descriptive use).
- We don't imply endorsement, partnership, or affiliation (no "Powered by Monzo", no Monzo-branded UI chrome).
- The logo isn't altered or used as our app's branding.
This is the same basis Plaid, TrueLayer, Emma, Snoop, Money Dashboard etc. operate on — defensible, not explicitly licensed. Not legal advice; worth a quick lawyer check before commercial launch.
Lower-risk asset sources (preferred order)
- Open Banking provider CDN — if importing via Plaid / TrueLayer / Nordigen (GoCardless Bank Account Data), the institution logo comes in the API response and their terms cover display. Cleanest path; likely already in use for transaction import.
- Logo.dev — https://logo.dev —
https://img.logo.dev/monzo.com style lookup, free tier.
- Brandfetch API — https://brandfetch.com — logo by domain, free tier, terms permit display.
- Per-bank press/brand kits (e.g. Monzo) for the most-used banks.
Guardrails
- Do not bundle scraped bank PNGs in the repo as the primary asset library — weakest legal position. Fetch/attribute via API and cache.
- Always provide a generic fallback: Lucide
landmark / building-2 tinted with the bank's brand color (see generic-icons issue).
- Add a standard trademark disclaimer ("All trademarks are property of their respective owners") for commercial release.
Proposed resolution logic
getInstitutionIcon(id):
1. logo from Open Banking provider response # best, licensed
2. else Logo.dev / Brandfetch by domain # fallback API, cached
3. else generic Lucide "landmark" + brand color
Open question
- Import path: Open Banking (Plaid/TrueLayer/Nordigen) vs CSV/file import? Determines whether logos come licensed-for-free (provider) or via Logo.dev/Brandfetch.
Tasks
Goal
Display bank/institution logos (e.g. Monzo) when importing or showing accounts, in a legally defensible way, with a graceful fallback.
Legal context
Bank logos are protected by copyright (artwork) and trademark (brand). No license simply grants them. Display is generally defensible under nominative fair use when:
This is the same basis Plaid, TrueLayer, Emma, Snoop, Money Dashboard etc. operate on — defensible, not explicitly licensed. Not legal advice; worth a quick lawyer check before commercial launch.
Lower-risk asset sources (preferred order)
https://img.logo.dev/monzo.comstyle lookup, free tier.Guardrails
landmark/building-2tinted with the bank's brand color (see generic-icons issue).Proposed resolution logic
Open question
Tasks
getInstitutionIconwith provider-first, API-fallback, generic-fallback.