bunq · Authentication Profile

Bunq Authentication

Authentication

bunq secures its APIs with apiKey and signature across 3 declared security schemes, as derived from its OpenAPI definitions.

BankingNeobankPaymentsAccountsSEPAOpen BankingFintechEuropeNetherlands
Methods: apiKey, signature Schemes: 3 OAuth flows: API key in:

Security Schemes

installationToken apiKey
· in: header ()
sessionToken apiKey
· in: header ()
clientSignature signature
· in: header ()

Source

Authentication Profile

Raw ↑
generated: '2026-07-12'
method: derived
source: openapi/bunq-openapi.yml
summary:
  types:
  - apiKey
  - signature
  note: >-
    bunq authentication is a multi-step, RSA-signed handshake, not a simple
    bearer token. An API key is exchanged for a session via installation ->
    device-server -> session-server, and every request is additionally signed
    with the client private key.
schemes:
- name: installationToken
  type: apiKey
  in: header
  headerName: X-Bunq-Client-Authentication
  description: >-
    Installation token returned by POST /v1/installation. Used only to
    authenticate the device-server and session-server handshake calls. Obtained
    by POSTing your 2048-bit RSA (PKCS#8) public key; the response also returns
    the bunq server_public_key used to verify response signatures.
  sources:
  - openapi/bunq-openapi.yml
  - https://doc.bunq.com/basics/authentication
- name: sessionToken
  type: apiKey
  in: header
  headerName: X-Bunq-Client-Authentication
  description: >-
    Session token returned by POST /v1/session-server. Sent on every business
    call for the life of the session. Opening the session requires your bunq API
    key (the "secret").
  sources:
  - openapi/bunq-openapi.yml
  - https://doc.bunq.com/quickstart/opening-a-session
- name: clientSignature
  type: signature
  in: header
  headerName: X-Bunq-Client-Signature
  algorithm: RSA-SHA256 (PKCS#1 v1.5)
  description: >-
    Base64-encoded RSA signature of the request body, created with your private
    key using SHA-256 and PKCS#1 v1.5 padding. Required on the device-server and
    session-server handshake calls and, per bunq's signing documentation, on
    authenticated requests. bunq signs its responses in X-Bunq-Server-Signature,
    which the client verifies with the installation server_public_key.
  sources:
  - https://doc.bunq.com/basics/signing
  - https://doc.bunq.com/basics/signing/python-code-example
notes: >-
  API keys for production are issued in the bunq mobile app; sandbox keys are
  issued via the developer portal or the sandbox tinker/hackathon toolkit. PSD2
  third parties register an eIDAS certificate to obtain a
  UserPaymentServiceProvider and API key. bunq also supports OAuth for
  third-party access on top of this model.
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com