Skip to content
Kontosjekker
Esc
↑↓navigate↵open⌘Jpreview
On this page

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.

Was this page helpful?