Information on Handelsbanken Payment API version 2

Update regarding V2 Payments API for Swedish customers

Handelsbanken Relaunches Payment API V2

The PIS API version 2 has now been relaunched. This version is identical to the previously released version, with the addition of a new endpoint.

Our Payment API V2 now supports the SEK Credit Transfer endpoint for the new local domestic payment type in Sweden.

In addition, we have introduced a new endpoint for both corporate and private customers: other-bank-domestic-credit-transfer. This endpoint should be used for payments that need to be debited immediately after successfully passing all internal validation checks. We understand that this functionality is important for some Third-Party Providers (TPPs). For more information, please refer to the FAQ for ‘Payments to other Banks’.

Please note that, due to changes to our account offerings, it will no longer be possible to initiate payments to other banks from the account type Allkortskonto.

Important Timeline

We kindly ask you to review the documentation available on our Developer Portal and test your integration in our Sandbox environment.

Please be aware that we will shortly be deprecating PIS API V1 and is scheduled to be decommissioned on the 15th November 2026.

Previously communicated information about SEK Credit transfer (from March 2026)

FAQ SEK Credit Transfer

Premium API Authorization

Authentication and Authorization of Premium API

Authenticate

Authorize

Call the APIs

Authenticate

The Premium API uses OAuth 2.0 to authenticate clients. To access a Premium API endpoint the client needs an Access Token, that is granted by requesting a OAuth 2.0 Client Credential Grant at the OAuth token endpoint. This page assumes that you, as a service provider is onboarded for the requested service and have access to the endpoints

As part of this process you will get a client id that will be used, in combination with a client certificate that the public part of certificate is known by, and associated with you as a service provider

Authorize - OAuth Client Credential Grant (CCG)


Endpoint

https://premiumapi.handelsbanken.com/mlurd/oauth2/token/1.0

Headers

The request requires to HTTP headers: Accept and Content-Type

Accept should be set to application/json
Content-Type should be set to application/x-www-form-urlencoded

Parameters

grant_type client_credentials
scope is set according to the product to access. See table below. For more than one scope the scopes must be separated by white space characters.
client_id the unique identifier of your application, that you get when you are onboarded to a Premium API

Response

Responds with a JSON object with the following fields:

access_token the returned CCG token. Used in the Authorization header of requests to Premium API endpoints.
expires_in the number of seconds the access_token is valid.
token_type always have the value Bearer

Scope for products

scope Description
premium-accounts Premium Account API
premium-fx-trade-retriever Premium FX API Trade Retiever
premium-fx-indicative-rates Premium FX API Indicate Rates. This is often used in combination with Premium FX Market Order API
premium-fx-market-order Premium FX API Market Order. This is often used in combination with Premium FX Indicative Rates API

Examples

Request - request access to Premium Accounts API

curl -X POST https://premiumapi.handelsbanken.com/mlurd/oauth2/token/1.0 \ --key <Your private key file> \
--cert <Your public cert file> \
-H 'Accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&scope=premium-accounts&client_id=<Your client-id>'

Response

HTTP/1.1 200 OK
{
  "access_token": "QVQ6M2NkMjUzMzMtZDZkZS00OGU1LTk0MzMtMmVhOTY5ZDA5YmU4",
  "expires_in": 86400,
  "token_type": "Bearer"
}

Request - request access to Premium FX API Services

curl -X POST https://premiumapi.handelsbanken.com/mlurd/oauth2/token/1.0 \
--key <Your private key file> \
--cert <Your public cert file> \
-H 'Accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&scope= premium-fx-trade-retriever premium-fx-indicative-rates premium-fx-market-order&client_id=<Your client-id>'

Response:

HTTP/1.1 200 OK
{
  "access_token": "QVQ6M2NkMjUzMzMtZDZkZS00OGU1LTk0MzMtMmVhOTY5ZDA5YmU4",
  "expires_in": 86400,
  "token_type": "Bearer"
}

Call the APIs

The access token that is returned is used in every subsequent API call. The following headers must be set for each call

Authorization set it Bearer <access token>
X-IBM-Client-Id this header contains the unique identifier of your application, that you get when you are onboarded to a Premium API.