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)
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>'
HTTP/1.1 200 OK
{
"access_token": "QVQ6M2NkMjUzMzMtZDZkZS00OGU1LTk0MzMtMmVhOTY5ZDA5YmU4",
"expires_in": 86400,
"token_type": "Bearer"
}
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>'
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.