Accounts API specific documentation
Changes from the previous version
This is the change log of the Accounts API (AIS), allowing PSD2-regulated TPPs to access Nordea customers’ account and transaction information. The top most item is the latest change and the API changes described in it are relative to the version directly below. The current latest version of the API is 4.1.
Version 5.4
There are changes in the account information service (AIS) response model.
- New
rate_markup
element/field added in transaction list response - New
currency_conversion_fee_currency
element/field added in transaction list response - New
transaction_type
element/field added in transaction list response - New
exchange_rate
element/field added in transaction list response - New
currency_conversion_fee
element/field added in transaction list response
Below fields that were previously mandatory will now be set as optional.
Endpoint | Field |
---|---|
/v5/accounts | Bank, Country |
/v5/accounts/<ACCOUNT_ID> | Bank, Country |
/v5/accounts/<ACCOUNT_ID>/transactions | Currency |
Version 5.3
KEY CHANGE: Added registation_number and Nickname optional in response
Version 5.2
KEY CHANGE: transaction_id parameter changed from required to optional. (This change applies from end of Q3 2024 in production)
Version 5.1
KEY CHANGE: Adding notification for TPP that they can fetch limited transaction data up to last 90-days.
Version 5.0
Technical Account Identifier format changed. New format is longer and unreadable.
New fields have been added to responses:
- new
account_number
element/fields in transaction response - new
balance_after_transaction
field in transaction response for Finland - new
counterparty_name
field in transaction response for Denmark - new
message
field in transaction response for Denmark - new
own_message
field in transaction response for Denmark - new
payment_date
field in transaction response for Denmark - new
nickname
field in account response (DRAFT only!)
Overview
Account Information Services (AIS) API consists of three endpoints supporting the GET HTTP method, providing a list of accounts, details of a specified account and transaction history for a specified account.
AIS API Endpoints
Endpoint | Supported HTTP Methods |
---|---|
/accounts | GET |
/accounts/<ACCOUNT_ID> | GET |
/accounts/<ACCOUNT_ID>/transactions | GET |
Note that the /transactions
response is a paginated list of transactions, with a continuation key.
AIS API not supported parameters
In the AIS calls, some attributes are supported only in certain countries. In the table below, you can see the not-supported countries for some attributes:
Country | Not Supported Attribute |
---|---|
DK | counterparty_account |
DK | reference |
DK | card_number |
FI | own_message |
NO | account_name |
AIS API examples
Here you can find examples how to use the AIS API endpoints.
Note that in all of the example cURL commands you must change the
X-IBM-Client-Id
,X-IBM-Client-Secret
andAuthorization: Bearer
header values to the correct ones.
You can find the Client ID, and Client Secret from your app console and the Bearer is generated when you log in.
All of these examples can also be tried out in the API portals API Console easily, here we show cURL examples how to make the same API calls which can be performed by the API Console.
Remember to replace the <ACCOUNT-ID>
URL parameter by correct values in the cURL examples below.
You can get a list of available account ACCOUNT-IDs by issuing the list accounts example below. The ACCOUNT-IDs is not the same thing as accountNumber because the latter can not be used as a unique identifier.
cURL examples
Example: list accounts
Following cURL command can be used to fetch the account list after correct Application ID, Client Secret and Access Token are substituted in it:
This endpoint URL has the following form:
GET /accounts HTTP/1.1
This endpoint supports GET HTTP method.
The following cURL can be used to fetch account list from this endpoint.
$ curl 'https://api.nordeaopenbanking.com/personal/v5/accounts' -i \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Signature: keyId="clientId",algorithm="rsa-sha256",headers="<signature headers>",signature="V1Bj3XSByNnYE1FTfIAEkg1DPH0coRTLC0Y0HxsZAgY4wtYNSl+KNny3Vj70wmLPLxGUwpT+LS+3Xl5zG+uaC1/et9c8bv4nSumn+/IcrFnmhkNFrBrJwxoyFmwx57XJWK5zGRuBfj2H1bxCfnGS0oJuKLWoZk/IEIfuWoqjxK5FEJCLaB/INQpUX2+NjULlO6EQGomSqBUzZFSAjXYiqxiIZCg56KLk+V+qWHmc76ff8HzoNZ0kXU89/pyq3nk1uthKUP8z/fLAG59sYqm6Ir6GveV7dwWYS8viFjlAKennvknJbruiG7p3uL5/S5u8SM9IpkfC9gH+BZN81m8CKw=="' \
-H 'Date: Wed, 03 Mar 2021 13:34:16 CEST' \
-H 'X-IBM-Client-Id: <Client ID>' \
-H 'X-IBM-Client-Secret: <Client Secret>'
Here is the response for the query above:
{
"group_header": {
"message_identification": "o6t4ADdAxWM",
"creation_date_time": "2021-03-03T06:50:52.313Z",
"http_code": 200
},
"response": {
"accounts": [
{
"_id": "DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ",
"country": "DK",
"account_numbers": [
{
"value": "DK8620001545437569",
"_type": "BBAN_DK"
}
],
"currency": "DKK",
"account_name": "Anders Madsen",
"product": "Grundkonto",
"account_type": "Current",
"available_balance": "21822.04",
"booked_balance": "21822.04",
"value_dated_balance": "21668.61",
"bank": {
"name": "Nordea",
"bic": "NDEADKKK",
"country": "DK"
},
"status": "OPEN",
"credit_limit": "10000.00",
"latest_transaction_booking_date": "2021-03-08",
"nickname": "My name for the account",
"registration_number": "2650",
"_links": [
{
"rel": "details",
"href": "/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ"
},
{
"rel": "transactions",
"href": "/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ/transactions"
}
]
},
{
"_id": "DKviZXHo1ucPF7YKN3wBji3e3dBpKR2-rW93x1lEyucxvFlfjcFqd-JKjHUTdEBw",
"country": "DK",
"account_numbers": [
{
"value": "DK3320001545457438",
"_type": "BBAN_DK"
}
],
"currency": "DKK",
"account_name": "Anders Madsen",
"product": "Private Banking konto",
"account_type": "Current",
"available_balance": "1123.60",
"booked_balance": "1111.50",
"value_dated_balance": "1111.50",
"bank": {
"name": "Nordea",
"bic": "NDEADKKK",
"country": "DK"
},
"status": "OPEN",
"credit_limit": "10000.00",
"nickname": "Customers own name for the account",
"registration_number": "2650",
"_links": [
{
"rel": "details",
"href": "/personal/v5/accounts/DKviZXHo1ucPF7YKN3wBji3e3dBpKR2-rW93x1lEyucxvFlfjcFqd-JKjHUTdEBw"
},
{
"rel": "transactions",
"href": "/personal/v5/accounts/DKviZXHo1ucPF7YKN3wBji3e3dBpKR2-rW93x1lEyucxvFlfjcFqd-JKjHUTdEBw/transactions"
}
]
}
],
"_links": [
{
"rel": "self",
"href": "/personal/v5/accounts"
}
]
}
}
Example: fetch account details
In this example, we fetch account details by ACCOUNT-ID which can be found by listing the accounts. The endpoint URL has the following form:
GET /personal/v5/accounts/<ACCOUNT-ID> HTTP/1.1
This endpoint supports GET HTTP method.
Here is cURL command to fetch the account information:
$ curl 'https://api.nordeaopenbanking.com/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ' -i \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Signature: keyId="clientId",algorithm="rsa-sha256",headers="<signature headers>",signature="<signature code>"\
-H 'Date: Wed, 03 Mar 2021 13:34:16 CEST' \
-H 'X-IBM-Client-Id: <Client ID>' \
-H 'X-IBM-Client-Secret: <Client Secret>'
Response:
{
"group_header": {
"message_identification": "DqwsOZYND9c",
"creation_date_time": "2021-03-03T06:56:01.169Z",
"http_code": 200
},
"response": {
"_id": "DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ",
"country": "DK",
"account_numbers": [
{
"value": "DK8620001545437569",
"_type": "BBAN_DK"
}
],
"currency": "DKK",
"account_name": "Anders Madsen",
"product": "Grundkonto",
"account_type": "Current",
"available_balance": "21822.04",
"booked_balance": "21822.04",
"value_dated_balance": "21668.61",
"bank": {
"name": "Nordea",
"bic": "NDEADKKK",
"country": "DK"
},
"status": "OPEN",
"credit_limit": "10000.00",
"latest_transaction_booking_date": "2021-03-08",
"_links": [
{
"rel": "self",
"href": "/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ"
},
{
"rel": "transactions",
"href": "/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ/transactions"
}
]
}
Example: fetch transactions
The following request will fetch transactions from the account by ACCOUNT-ID.
Note that this query can also take parameter
from_date
andto_date
as well ascontinuation_key
.
Note You will receive an access token from Nordea for a period defined by you up to 180 days. You are only entitled to access the payment transactions executed in the last 90 days when using this access token, unless strong customer authentication is performed. These parameters, mentioned above, control the date range from between which to fetch the transactions, and they are optional. They are sent as query parameters. The
continuation_key
parameter controls the pagination, that can be read from the response and used to fetch next part of a long response.
The date parameters, from_date
, and to_date
have to be formatted correctly, namely yyyy-MM-dd
, so for instance, 2021-03-31
would be in correct format. Note that if date parameters are omitted then last 2 month’s transactions are returned.
The data returned by the transactions endpoint in the sandbox environment is not static, transactions are generated automatically over time.
The endpoint URL has the following form:
GET /personal/v5/accounts/<ACCOUNT-ID>/transactions HTTP/1.1
The <ACCOUNT-ID>
URL parameter(s) can be found from account listing request above.
$ curl 'https://api.nordeaopenbanking.com/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ/transactions?from_date=2021-01-08&to_date=2021-03-08&language=da' -i \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Signature: keyId="clientId",algorithm="rsa-sha256",headers="<signature headers>",signature="<signature code>"\
-H 'Date: Wed, 03 Mar 2021 13:34:16 CEST' \
-H 'X-IBM-Client-Id: <Client ID>' \
-H 'X-IBM-Client-Secret: <Client Secret>'
And here’s how the response looks like
{
"group_header": {
"message_identification": "SC1whey-jNs",
"creation_date_time": "2021-03-03T09:55:52.12Z",
"http_code": 200
},
"response": {
"continuation_key": "01544515720202389398-2",
"account_number": {
"value": "DK8620001545437569",
"_type": "BBAN_DK"
},
"transactions": [
{
"transaction_id": "01544515720202389399",
"currency": "DKK",
"booking_date": "2021-03-05",
"value_date": "2021-03-05",
"type_description": "Salary",
"narrative": "Salary from Company A/S",
"status": "billed",
"transaction_date": "2021-03-05",
"payment_date": "2021-03-05",
"amount": "12345.67"
},
{
"transaction_id": "01544515720202389398",
"currency": "DKK",
"booking_date": "2021-03-04",
"value_date": "2021-03-04",
"type_description": "BGS",
"narrative": "Bgs Test NemID",
"status": "billed",
"transaction_date": "2021-03-03",
"payment_date": "2021-03-04",
"amount": "-290.00"
},
{
"transaction_id": "01544515720202389274",
"currency": "DKK",
"booking_date": "2021-03-03",
"value_date": "2021-03-03",
"type_description": "MobilePay",
"narrative": "MobilePay: Sanne Sondersen 1670018411450212",
"status": "billed",
"transaction_date": "2021-03-03",
"payment_date": "2021-03-03",
"amount": "-230.00"
},
{
"transaction_id": "01544515720202389150",
"currency": "DKK",
"booking_date": "2021-03-03",
"value_date": "2021-03-03",
"type_description": "some description",
"narrative": "Bs betalning FITGYM A/S",
"status": "billed",
"transaction_date": "2021-03-03",
"payment_date": "2021-03-03",
"amount": "-306.95"
},
{
"transaction_id": "01544515720202388809",
"currency": "DKK",
"booking_date": "2021-03-02",
"value_date": "2021-03-02",
"type_description": "some description",
"narrative": "Visa køb 90.00 MURRES CAFE STOCKHOLM Den 04.06",
"status": "billed",
"transaction_date": "2021-03-02",
"payment_date": "2021-03-02",
"amount": "-90.00"
},
{
"transaction_id": "01544515720202388747",
"currency": "DKK",
"booking_date": "2021-03-01",
"value_date": "2021-03-01",
"type_description": "MobilePay",
"narrative": "MobilePay: Sanne Sondersen 1670018411450212",
"status": "billed",
"transaction_date": "2021-03-01",
"payment_date": "2021-03-01",
"amount": "-230.00"
},
],
"_links": [
{
"rel": "self",
"href": "/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ/transactions?from_date=2021-01-08&to_date=2021-03-08&language=da"
},
{
"rel": "next",
"href": "/personal/v5/accounts/DKJuymDVpE7Knpx1a6axe_JKQtY-5-rPFrxUmKrVfute1blN6SVE5KJ_rN5L5_ZQ/transactions?from_date=2021-01-08&to_date=2021-03-08&language=da&continuation_key=01544515720202389398-2"
}
]
}
}