PIS API specific documentation Denmark, Finland, Sweden and Norway.
Changes from the previous version
This is the change log of the PIS Cross Border payments API, allowing PSD2-regulated TPPs to initiate payments on behalf of the PSU. The top most item is the latest change and the API changes described in it are relative to the version directly below.
Version 6.1
New version of endpoints made due to these Cross border breaking changes
- Structured creditor address, replacing the unstructured creditor address
- Own transfers now has its own endpoint and is no longer a flag on cross border payments
- BIC is now mandatory for all cross border payments
International payment rules apply to Cross Border payments, and additional information likely has to be submitted in the creditor.message field as per the creditor bank country code.
Overview
Payment Initiation Services (PIS) Cross Border payments API consists of one endpoint. The PIS API can be used to initiate payments and to retrieve a list of Cross Border payments. This API supports GET and POST HTTP methods. PIS API supports Cross Border payments, and the API endpoint URLs have cross-border-credit-transfers in it.
API Endpoints
The PIS Common API endpoints are documented in separate document.
The PIS Cross Border payments API contains following endpoints:
| Endpoint | Supported HTTP Methods |
|---|---|
/payments/cross-border-credit-transfers | POST |
/payments/cross-border-own-credit-transfers | POST |
/payments/cross-border | GET |
The /payments/cross-border-credit-transfers is be used to initiate payment and /payments/cross-border to get cross border payments.
Here is an example of the JSON payload format which can be posted to this endpoint, “_type” is an internal defined representation of the account or reference type.
{
"central_bank_reporting_code": "101",
"charge_bearer": "shar",
"creditor": {
"account": {
"_type": "IBAN",
"value": "HU42117730161111101800000000"
},
"bank": {
"address": {
"line1": "NADOR STREET 16",
"line2": "Budapest, 1051",
"line3": "Hungary"
},
"country": "HU",
"bank_code": null,
"bic": "OTPVHUHB",
"name": "OTP BANK PLC."
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
"message": "Invoice 5071",
"name": "Creditor Name"
},
"debtor": {
"account": {
"_type": "BBAN_SE",
"currency": "SEK",
"value": "41351300039"
},
"message": "Debtor Msg"
},
"external_id": "d630b00a-227c-474e-8d20-1fc2b7141fdc",
"instructed_amount": {
"amount": 534.45,
"currency": "USD"
},
"requested_execution_date": "2021-07-29",
"urgency": "standard"
}'Further details
Generic payment services are listed in Household PIS Common API -document. Also, have a look at the Help Center contents.
For further details on payment type field combinations, please refer to the domestic API documentation as well. Also, have a look at the Help Center contents.
PIS API examples Cross Border Credit Transfers
Cross Border payments: get list of payments for Sweden
This example shows how to get list of pending payments.
This endpoint URL has the following form:
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use GET since we want to get list of payments.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X GET \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' And here is the response:
{
"group_header": {
"message_identification": "ktGb1vWmo-I-FBR_",
"creation_date_time": "2021-06-28T12:32:57.2372768Z",
"http_code": 200
},
"errors": [],
"_links": [],
"group_header": {
"message_identification": "008360ce3c929e25",
"creation_date_time": "2024-06-07T06:57:32.956565116Z",
"http_code": 201
},
"response": {
"_id": "0358e9b8-6471-44e2-b326-37ea7124737d",
"external_id": "ab123",
"entry_date_time": "2024-06-07T00:00:00Z",
"debtor": {
"account": {
"currency": "SEK",
"value": "32521054097",
"_type": "BBAN_SE"
},
"message": "Debtor Msg"
},
"creditor": {
"account": {
"currency": "USD",
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "Creditor Name",
"message": "Invoice 5071",
"bank": {
"bank_code": "",
"name": "",
"address": {
"line1": "",
"line2": "",
"line3": ""
},
"country": "HU"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "10.00",
"currency": "USD"
},
"transaction_fee": {
"total_fee_amount": {
"amount": "50.0",
"currency": "SEK"
},
"fees": [
{
"amount": {
"amount": "50.0",
"currency": "SEK"
},
"description": "standard fee for Normal crossborder payment",
"excluded_from_total_fee": false,
"percentage": false,
"type": "STANDARD"
},
{
"amount": {
"amount": "50.0",
"currency": "SEK"
},
"description": "Additional charges for payment in currency other than Swedish kronor or recipient country's currency",
"excluded_from_total_fee": true,
"percentage": false,
"type": "ADDITIONAL"
}
]
},
"indicative_exchange_rate": {
"rate": "10.36455",
"base_currency": "SEK",
"exchange_currency": "USD",
"timestamp": "2024-06-07T05:12:23.126045Z"
},
"payment_status": "PendingConfirmation",
"urgency": "standard",
"requested_execution_date": "2024-06-07",
"planned_execution_date": "2024-06-07",
"charge_bearer": "shar",
"central_bank_reporting_code": "101",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/0358e9b8-6471-44e2-b326-37ea7124737d"
}
]
}
}Cross Border payments: get list of payments for Denmark
This example shows how to get list of pending payments.
This endpoint URL has the following form:
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use GET since we want to get list of payments.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X GET \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' And here is the response:
{
"group_header": {
"message_identification": "_YU7CuTc2XV-l1Dz",
"creation_date_time": "2024-06-07T10:26:22.6657258Z",
"http_code": 200
},
"errors": [],
"_links": [], "response": {
"_id": "55c071e9-2677-4e42-8942-a644a26025c4",
"external_id": "abv12",
"entry_date_time": "2024-06-07T07:09:14.449067953Z",
"debtor": {
"account": {
"currency": "DKK",
"value": "23001545939513",
"_type": "BBAN_DK"
},
"message": "own message"
},
"creditor": {
"account": {
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "Team Bravos",
"message": "message to receiver",
"bank": {
"name": "Hungarian Bank",
"address": {
"line1": "some street",
"line2": "somewhere",
"line3": "Budapest"
},
"country": "HU"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "35.00",
"currency": "DKK"
},
"transfer_currency": "USD",
"transaction_fee": {
"total_fee_amount": {
"amount": "50.0",
"currency": "DKK"
},
"fees": [
{
"amount": {
"amount": "50.0",
"currency": "DKK"
},
"description": "standard fee for Normal crossborder payment",
"excluded_from_total_fee": false,
"percentage": false,
"type": "STANDARD"
}
]
},
"indicative_exchange_rate": {
"rate": "6.8339",
"base_currency": "DKK",
"exchange_currency": "USD",
"timestamp": "2024-06-07T05:21:01.650101Z"
},
"payment_status": "PendingConfirmation",
"urgency": "standard",
"requested_execution_date": "2024-06-07",
"planned_execution_date": "2024-06-07",
"charge_bearer": "shar",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/55c071e9-2677-4e42-8942-a644a26025c4"
}
]
}
} ```
#### Cross Border payments: get list of payments for Norway
This example shows how to get list of pending payments.
This endpoint URL has the following form:
``` bash
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use GET since we want to get list of payments.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X GET \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' And here is the response:
{
"group_header": {
"message_identification": "bc4984827fa0e355",
"creation_date_time": "2026-08-14T06:56:55.419913638Z",
"http_code": 200
},
"errors": [],
"_links": [],
"response": {
"payments": [
{
"_id": "e7b28f5d-d21f-4a64-9c3e-4011bf6aeb4e",
"entry_date_time": "2026-08-14T06:54:41.47983Z",
"debtor": {
"account": {
"currency": "NOK",
"value": "NO3560391604994",
"_type": "IBAN"
}
},
"creditor": {
"account": {
"currency": "NOK",
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "SSK CR",
"message": "PMTS-2",
"bank": {
"bic": "CHASUS33"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "211",
"currency": "NOK"
},
"payment_status": "OnHold",
"requested_execution_date": "2026-08-15",
"planned_execution_date": "2026-08-15",
"tpp_messages": [
{
"category": "INFO",
"code": "NARR",
"text": "SECOND_CHANNEL_CONFIRMATION"
}
],
"_links": [
{
"rel": "self",
"href": "/v6/payments/e7b28f5d-d21f-4a64-9c3e-4011bf6aeb4e"
}
]
}
]
}
} ```
#### Cross Border payments: get list of payments for Finland
This example shows how to get list of pending payments.
This endpoint URL has the following form:
``` bash
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use GET since we want to get list of payments.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X GET \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' And here is the response:
{
"group_header": {
"message_identification": "DtnQ6UYYE1Sf-csa",
"creation_date_time": "2022-05-10T11:16:27.6842203Z",
"http_code": 200
},
"errors": [],
"_links": [],
"response": {
"_id": "55c071e9-2677-4e42-8942-a644a26025c4",
"external_id": "abv12",
"entry_date_time": "2024-06-07T07:09:14.449067953Z",
"debtor": {
"account": {
"currency": "EUR",
"value": "FI6715723500036603",
"_type": "IBAN"
},
"message": "own message"
},
"creditor": {
"account": {
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "Team Bravos",
"message": "message to receiver",
"bank": {
"name": "Hungarian Bank",
"address": {
"line1": "some street",
"line2": "somewhere",
"line3": "Budapest"
},
"country": "HU"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "35.00",
"currency": "DKK"
},
"transfer_currency": "USD",
"transaction_fee": {
"total_fee_amount": {
"amount": "50.0",
"currency": "EUR"
},
"fees": [
{
"amount": {
"amount": "50.0",
"currency": "EUR"
},
"description": "standard fee for Normal crossborder payment",
"excluded_from_total_fee": false,
"percentage": false,
"type": "STANDARD"
}
]
},
"indicative_exchange_rate": {
"rate": "",
"base_currency": "EUR",
"exchange_currency": "USD",
"timestamp": "2024-06-07T05:21:01.650101Z"
},
"payment_status": "PendingConfirmation",
"urgency": "standard",
"requested_execution_date": "2024-06-07",
"planned_execution_date": "2024-06-07",
"charge_bearer": "shar",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/55c071e9-2677-4e42-8942-a644a26025c4"
}
]
}
} ```
#### Cross Border payments: initiate a new payment for Sweden
In this example, we initiate a new payment for Sweden.
This endpoint URL has the following form:
``` bash
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use POST since we create a new payment.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X POST \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'digest: <generated_digest>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{
"central_bank_reporting_code": "101",
"charge_bearer": "shar",
"requested_execution_date": "2024-06-07",
"creditor": {
"account": {
"_type": "IBAN",
"value": "HU42117730161111101800000000"
},
"bank": {
"address": {
"line1": "NADOR STREET 16",
"line2": "Budapest, 1051",
"line3": "Hungary"
},
"country": "HU",
"bank_code": null,
"bic": null,
"name": "OTP BANK PLC."
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
"message": "Invoice 5071",
"name": "Creditor Name"
},
"debtor": {
"account": {
"_type": "BBAN_SE",
"currency": "SEK",
"value": "32521054097"
},
"message": "Debtor Msg"
},
"external_id": "ab123",
"instructed_amount": {
"amount": 10,
"currency": "USD"
},
"urgency": "standard"
}
```
And the response looks like this:
``` json {
"group_header": {
"message_identification": "008360ce3c929e25",
"creation_date_time": "2024-06-07T06:57:32.956565116Z",
"http_code": 201
},
"response": {
"_id": "0358e9b8-6471-44e2-b326-37ea7124737d",
"external_id": "ab123",
"entry_date_time": "2024-06-07T00:00:00Z",
"debtor": {
"account": {
"currency": "SEK",
"value": "32521054097",
"_type": "BBAN_SE"
},
"message": "Debtor Msg"
},
"creditor": {
"account": {
"currency": "USD",
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "Creditor Name",
"message": "Invoice 5071",
"bank": {
"bank_code": "",
"name": "",
"address": {
"line1": "",
"line2": "",
"line3": ""
},
"country": "HU"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "10.00",
"currency": "USD"
},
"transaction_fee": {
"total_fee_amount": {
"amount": "50.0",
"currency": "SEK"
},
"fees": [
{
"amount": {
"amount": "50.0",
"currency": "SEK"
},
"description": "standard fee for Normal crossborder payment",
"excluded_from_total_fee": false,
"percentage": false,
"type": "STANDARD"
},
{
"amount": {
"amount": "50.0",
"currency": "SEK"
},
"description": "Additional charges for payment in currency other than Swedish kronor or recipient country's currency",
"excluded_from_total_fee": true,
"percentage": false,
"type": "ADDITIONAL"
}
]
},
"indicative_exchange_rate": {
"rate": "10.36455",
"base_currency": "SEK",
"exchange_currency": "USD",
"timestamp": "2024-06-07T05:12:23.126045Z"
},
"payment_status": "PendingConfirmation",
"urgency": "standard",
"requested_execution_date": "2024-06-07",
"planned_execution_date": "2024-06-07",
"charge_bearer": "shar",
"central_bank_reporting_code": "101",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/0358e9b8-6471-44e2-b326-37ea7124737d"
}
]
}
} Note that the ‘payment_status’ is ‘PendingConfirmation’, it means the payment confirming(signing) process has to be started by you the TPP.
Cross Border payments: initiate a new payment for Denmark
In this example, we initiate a new payment for Denmark. In the example transfer_currency is used as a base for the payment currency.
This endpoint URL has the following form:
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use POST since we create a new payment.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X POST \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'digest: <generated_digest>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{
"charge_bearer": "shar",
"creditor": {
"account": {
"_type": "IBAN",
"value": "HU42117730161111101800000000"
},
"bank": {
"address": {
"line1": "some street",
"line2": "somewhere",
"line3": "Budapest"
},
"country": "HU",
"name": "Hungarian Bank"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
"message": "message to receiver",
"name": "Team Bravos"
},
"debtor": {
"account": {
"_type": "BBAN_DK",
"currency": "DKK",
"value": "23001545939513"
},
"message": "own message"
},
"external_id": "abv12",
"instructed_amount": {
"amount": "35.00",
"currency": "DKK"
},
"transfer_currency": "USD",
"urgency": "standard"
}And the response looks like this:
"group_header": {
"message_identification": "5cf1215b333f4c35",
"creation_date_time": "2024-06-07T07:09:14.4667426Z",
"http_code": 201
},
"response": {
"_id": "55c071e9-2677-4e42-8942-a644a26025c4",
"external_id": "abv12",
"entry_date_time": "2024-06-07T07:09:14.449067953Z",
"debtor": {
"account": {
"currency": "DKK",
"value": "23001545939513",
"_type": "BBAN_DK"
},
"message": "own message"
},
"creditor": {
"account": {
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "Team Bravos",
"message": "message to receiver",
"bank": {
"name": "Hungarian Bank",
"address": {
"line1": "some street",
"line2": "somewhere",
"line3": "Budapest"
},
"country": "HU"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "35.00",
"currency": "DKK"
},
"transfer_currency": "USD",
"transaction_fee": {
"total_fee_amount": {
"amount": "50.0",
"currency": "DKK"
},
"fees": [
{
"amount": {
"amount": "50.0",
"currency": "DKK"
},
"description": "standard fee for Normal crossborder payment",
"excluded_from_total_fee": false,
"percentage": false,
"type": "STANDARD"
}
]
},
"indicative_exchange_rate": {
"rate": "6.8339",
"base_currency": "DKK",
"exchange_currency": "USD",
"timestamp": "2024-06-07T05:21:01.650101Z"
},
"payment_status": "PendingConfirmation",
"urgency": "standard",
"requested_execution_date": "2024-06-07",
"planned_execution_date": "2024-06-07",
"charge_bearer": "shar",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/55c071e9-2677-4e42-8942-a644a26025c4"
}
]
}
}
```
> Note that the 'payment_status' is 'PendingConfirmation', it means the payment confirming(signing) process has to be started by you the TPP.
#### Cross Border payments: initiate a new payment for Finland
In this example, we initiate a new payment for Finland.
This endpoint URL has the following form:
``` bash
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use POST since we create a new payment.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X POST \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'digest: <generated_digest>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{
"charge_bearer": "shar",
"creditor": {
"account": {
"_type": "IBAN",
"value": "HU42117730161111101800000000"
},
"bank": {
"bic": "OTPVHUHB"
"address": {
"line1": "NADOR STREET 16",
"line2": "Budapest, 1051",
"line3": "Hungary"
},
"country": "HU",
"name": "OTP BANK PLC."
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
"message": "Invoice mobile",
"name": "Creditor Name"
},
"debtor": {
"account": {
"_type": "IBAN",
"currency": "EUR",
"value": "FI6593857450293555"
},
"message": "Debtor Msg"
},
"external_id": "d630b00a-227c-474e-8d20-1fc2b7141fdc",
"instructed_amount": {
"amount": 100.00,
"currency": "USD"
},
"requested_execution_date": "2022-05-10",
"urgency": "standard"
}'
And the response looks like this:
{
"group_header": {
"message_identification": "DtnQ6UYYE1Sf-csa",
"creation_date_time": "2022-05-10T11:16:27.6842203Z",
"http_code": 201
},
"response": {
"_id": "79dcc4ed-06e3-4d92-800a-d0ba75f0506f",
"external_id": "d630b00a-227c-474e-8d20-1fc2b7141fdc",
"entry_date_time": "2022-05-10T11:16:27.6775657Z",
"debtor": {
"account": {
"currency": "EUR",
"value": "FI6593857450293555",
"_type": "IBAN"
},
"message": "Debtor Msg"
},
"creditor": {
"account": {
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "Creditor Name",
"message": "Invoice mobile",
"bank": {
"bic": "OTPVHUHB"
"name": "OTP BANK PLC.",
"address": {
"line1": "NADOR STREET 16",
"line2": "Budapest, 1051",
"line3": "Hungary"
},
"country": "HU"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
},
"instructed_amount": {
"amount": "100.00",
"currency": "USD"
},
"payment_status": "PendingConfirmation",
"urgency": "standard",
"requested_execution_date": "2022-05-10",
"planned_execution_date": "2022-05-10",
"charge_bearer": "shar",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/79dcc4ed-06e3-4d92-800a-d0ba75f0506f"
}
]
}
}
Cross Border payments: initiate a new payment for Norway
In this example, we initiate a new payment for Norway.
This endpoint URL has the following form:
https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfersThis endpoint supports GET and POST HTTP Methods. Here we use POST since we create a new payment.
Here is an example request.
$ curl 'https://api.nordeaopenbanking.com/personal/v6/payments/cross-border-credit-transfers' -i -X POST \
-H 'X-Nordea-Originating-Host: <host>' \
-H 'X-Nordea-Originating-Date: <now>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'digest: <generated_digest>' \
-H 'signature: keyId=\"<your_clientapp_keyid>\",algorithm=\"rsa-sha256\",headers=\"(request-target) x-nordea-originating-host x-nordea-originating-date\",signature=\"<generated_signature>"' \
-H 'X-IBM-Client-Id: <your_client_id>' \
-H 'X-IBM-Client-Secret: <your_client_secret>' \
-H 'X-Nordea-Originating-User-Ip: <psu-ip-address>' \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{
"charge_bearer": "shar",
"creditor": {
"account": {
"_type": "IBAN",
"currency": "HUF",
"value": "HU42117730161111101800000000"
},
"bank": {
"address": {},
"bic": "CHASUS33",
"country": "HU"
},
"country": "HU",
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
"message": "PMTS-2",
"name": "SSK CR"
},
"transfer_currency": "HUF",
"central_bank_reporting_code": 26,
"central_bank_reporting_supplementary_text": "Sample text",
"debtor": {
"account": {
"_type": "IBAN",
"currency": "NOK",
"value": "NO3560391604994"
},
"message": "QA Testing",
"name": "SSK DR"
},
"instructed_amount": {
"amount": "211",
"currency": "NOK"
},
"requested_execution_date": "2026-08-15",
"end_to_end_identification": "End to end identification",
"urgency": "standard"
}
And the response looks like this:
{
"group_header": {
"message_identification": "bc4984827fa0e355",
"creation_date_time": "2026-08-14T06:56:55.419913638Z",
"http_code": 200
},
"errors": [],
"_links": [],
"response": {
"payments": [
{
"_id": "e7b28f5d-d21f-4a64-9c3e-4011bf6aeb4e",
"entry_date_time": "2026-08-14T06:54:41.47983Z",
"debtor": {
"account": {
"currency": "NOK",
"value": "NO3560391604994",
"_type": "IBAN"
}
},
"creditor": {
"account": {
"currency": "NOK",
"value": "HU42117730161111101800000000",
"_type": "IBAN"
},
"name": "SSK CR",
"message": "PMTS-2",
"bank": {
"bic": "CHASUS33"
},
"creditor_address": {
"street_name": "HU Street Name",
"post_code": "1000",
"town_name": "Budapest",
"country_code": "HU",
"building_number": "123",
"building_name": "HU Building Name",
"post_box": "HU Post Box 123",
"country_sub_division": "Budapest"
},
"instructed_amount": {
"amount": "211",
"currency": "NOK"
},
"payment_status": "Confirmed",
"requested_execution_date": "2026-08-15",
"planned_execution_date": "2026-08-15",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v6/payments/e7b28f5d-d21f-4a64-9c3e-4011bf6aeb4e"
}
]
}
]
}
}
Confirmation of Availability of Funds
Confirmation of Availability of Funds has been added to this endpoint.
Two new optional fields have been added
- request_availability_of_funds
- availability_of_funds
Confirmation of Availability is available for version 5.
Payment initiation
If 2SCA initiation payment endpoint is available and the request contains the new field, request_availability_of_funds set to true and SBX scenario specified “FundsNotAvalable” in request header when the endpoint is invoked, then the payment initiation response is returned with new field availability_of_funds is set false.
If 2SCA initiation payment endpoint is available and the request contains the new field, request_availability_of_funds set to true and SBX scenario is not specified when the endpoint is invoked, then the payment initiation response returned with new field availability_of_funds is set true.
Get payment details
If 2SCA get payment details endpoint is available and SBX scenario is specified FundsNotAvailable and payment status is not Rejected or Executed, when the endpoint is invoked with query parameter request_availability_of_funds true, then the response of Get Payment Details is returned with funds info availability_of_funds set false.
If 2SCA get payment details endpoint is available and SBX scenario is not specified and payment status is not Rejected or Executed, when the endpoint is invoked with query parameter request_availability_of_funds true, then the response of Get Payment Details is returned with funds info availability_of_funds set true.
The examples for Payment initiation and Get payment details of Confirmation of Availability of Funds are updated in documentation called “Household PIS API specific documentation Sweden, Denmark and Norway - v6.5” in Denmark examples.