Logos
Serving bank logos, and how to cache them properly.
Every bank object carries a logo field when a logo is on file:
"logo": {
"formats": ["png"],
"hash": "5f2c9d1e7a40b3c8",
"url": "https://api.kontosjekker.asamsig.com/v1/banks/DABANO22/logo.png?v=5f2c9d1e7a40b3c8"
}
Use logo.url as-is. It is content-addressed: the v parameter is a hash of
the asset, so the response is served immutable and can be cached forever. If
the logo is replaced, the hash changes and so does the URL.
Fetching directly
GET /v1/banks/{bic}/logo # negotiated from the Accept header
GET /v1/banks/{bic}/logo.svg # explicit format
GET /v1/banks/{bic}/logo.png
GET /v1/banks/{bic}/logo.webp
Without an extension, the Accept header decides: image/svg+xml wins, then
image/webp, then PNG.
Not every bank has one
The register holds 98 banks; fewer have logos on file. When there is none the
API returns 404 with a not-found problem document rather than a placeholder
image — a placeholder cached for a year is hard to undo. bank.logo is null
in that case, so you can decide before you request.
The React component falls back to the bank’s initials.
Licensing
Logos are trademarks of their banks. They are served so that a payment form can show a customer which bank an account belongs to. That is nominative use — it does not extend to using a bank’s mark to suggest endorsement or affiliation. If you need a logo for anything beyond identification, ask the bank.