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.7
- Added ‘OWNER’ and ‘CO_OWNER’ account role types along with respective name to
account_rolefield/element for Account Details/List endpoint response.
Version 5.6
There are changes in the account information service (AIS) response model. (Only applicable to Norwegian transactions)
- New
kid_numberelement/field added in transaction list response - New
end_to_end_identificationelement/field added in transaction list response - New
sending_bank_fx_rateelement/field added in transaction list response - New
foreign_bank_feeelement/field added in transaction list response - New
received_amountelement/field added in transaction list response - New
merchant_nameelement/field added in transaction list response
Above mentioned fields are only available in Production and not Sandbox.
Version 5.5
There are changes in the account information service (AIS) response model.
- New
merchant_countryelement/field added in transaction list response - New
merchant_cityelement/field added in transaction list response
Version 5.4
There are changes in the account information service (AIS) response model.
- New
rate_markupelement/field added in transaction list response - New
currency_conversion_fee_currencyelement/field added in transaction list response - New
transaction_typeelement/field added in transaction list response - New
exchange_rateelement/field added in transaction list response - New
currency_conversion_feeelement/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_numberelement/fields in transaction response - new
balance_after_transactionfield in transaction response for Finland - new
counterparty_namefield in transaction response for Denmark - new
messagefield in transaction response for Denmark - new
own_messagefield in transaction response for Denmark - new
payment_datefield in transaction response for Denmark - new
nicknamefield 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-SecretandAuthorization: Bearerheader 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.1This 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.1This 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_dateandto_dateas 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_keyparameter 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.1The <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"
}
]
}
}