Compliance APIsPersonalAccountsAccounts API v5

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.

EndpointField
/v5/accountsBank, Country
/v5/accounts/<ACCOUNT_ID>Bank, Country
/v5/accounts/<ACCOUNT_ID>/transactionsCurrency
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

EndpointSupported HTTP Methods
/accountsGET
/accounts/<ACCOUNT_ID>GET
/accounts/<ACCOUNT_ID>/transactionsGET

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:

CountryNot Supported Attribute
DKcounterparty_account
DKreference
DKcard_number
FIown_message
NOaccount_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 and Authorization: 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 and to_date as well as continuation_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"
            }
        ]
    }
}