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.
Note: Norway deployment will follow later.
Version 5.3
PIS endpoints for Norway were added:
/v5/payments/cross-border-credit-transfers
Also added possiblity for customers to release payments stuck in fraud check by performing Second channel confirmation for Norwegian Cross Border payments. These payments will have status OnHold
and additional text specifying SECOND_CHANNEL_CONFIRMATION
sent to TPP’s. An SMS will be sent to customer’s mobile phone for releasing such payments. Customer need to reply via SMS - ‘JA’ if he/she want to release the payment or reply ‘NEI’ otherwise. Payment will be rejected if No reply to SMS is provided by customer. (Second channel confirmation is only applicable to Production)
One new optional field has been added is_own_account_transfer
. Field can have only True/False values. Attribute value can be True only if both debtor’s and creditor’s accounts are owned by same person and both accounts are Nordea accounts. If attribute is missing, payment will be handled same way than if attribute value is False. Remark: This option is available in Sweden, Denmark and Norway but not in Finland.
Version 5.2
Confirmation of Availability of Funds has been added to following endpoints
- / payments / domestic
- / payments / sepa
- / payments / cross-border-credit-transfers
- / payments / owntransfer
Two new optional fields have been added
- request_availability_of_funds
- availability_of_funds
Confirmation of Availability is available for version 5
Version 5.1
This is the second version of PIS Cross Border payments API.
PIS endpoints for Denmark were added:
/v5/payments/cross-border-credit-transfers
PIS endpoints for Finland were added:
/v5/payments/cross-border-credit-transfers
Added IBAN for Swedish cross border payments debtor.
Version 5.0
This is the first version of PIS Cross Border payments API. PIS endpoints for Sweden were added:
/v5/payments/cross-border-credit-transfers
Note: In the header of requests to v5
X-Nordea-Originating-User-Ip
is mandatory. More v4 payment types coming later to v5.
All payment types are listed in version 5 payments endpoints.
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, GET |
The /payments/cross-border-credit-transfers
endpoint has two uses, it can be used to initiate payment and to get payments. It supports GET and POST methods. If POST method is used, new payment will be initialized, and the request body must contain the payment details to be initiated. If GET method is used, it will return list of pending
cross border payments. This endpoint returns HTTP Code 201 on success, and the response contains the payment details which include, e.g., payment receiver details among other things.
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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "Hungary"
},
"country": "HU",
"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"
}'
After the payment is initiated by POST request to this endpoint, it will be available by doing GET request to this endpoint which returns a list of pending payments.
Further details
Generic payment services are listed in Household PIS Common API -document. 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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "Hungary"
}
},
"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": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "123456789012345678901234567890213",
"line2": "123456789012345678901234567890"
},
"country": "HU"
},
"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": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": "2024-11-14T06:56:55.419913638Z",
"http_code": 200
},
"errors": [],
"_links": [],
"response": {
"payments": [
{
"_id": "e7b28f5d-d21f-4a64-9c3e-4011bf6aeb4e",
"entry_date_time": "2024-11-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"
}
},
"instructed_amount": {
"amount": "211",
"currency": "NOK"
},
"payment_status": "OnHold",
"requested_execution_date": "2024-11-15",
"planned_execution_date": "2024-11-15",
"tpp_messages": [
{
"category": "INFO",
"code": "NARR",
"text": "SECOND_CHANNEL_CONFIRMATION"
}
],
"_links": [
{
"rel": "self",
"href": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "123456789012345678901234567890213",
"line2": "123456789012345678901234567890"
},
"country": "HU"
},
"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": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "Hungary"
},
"country": "HU",
"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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "Hungary"
}
},
"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": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "123456789012345678901234567890213",
"line2": "123456789012345678901234567890"
},
"country": "HU",
"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": {
"line1": "123456789012345678901234567890213",
"line2": "123456789012345678901234567890"
},
"country": "HU"
},
"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": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "Hungary"
},
"country": "HU",
"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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "Hungary"
},
"country": "HU"
},
"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": "/v5/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/v5/payments/cross-border-credit-transfers
This 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/v5/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": {
"line1": "Budapest Street",
"line2": "Budapest 1234",
"line3": "HU"
},
"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": "2024-11-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": "2024-11-14T06:56:55.419913638Z",
"http_code": 200
},
"errors": [],
"_links": [],
"response": {
"payments": [
{
"_id": "e7b28f5d-d21f-4a64-9c3e-4011bf6aeb4e",
"entry_date_time": "2024-11-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"
}
},
"instructed_amount": {
"amount": "211",
"currency": "NOK"
},
"payment_status": "Confirmed",
"requested_execution_date": "2024-11-15",
"planned_execution_date": "2024-11-15",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/v5/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 - v5.5” in Denmark examples.