PIS API specific documentation Own account transfers
Changes from the previous version
This is the change log of the PIS API (own transfers), allowing PSD2-regulated TPPs to initiate own transfers 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: The request model for own transfers is the same as for domestic payments and therefore has to follow the same (service) version number
Version 4.4
Support for scheduling transfers with a due date is now enabled for Norway.
Version 4.3
Support for different currencies in own transfer has been added to following endpoints. This functionality is available for Denmark & Sweden only, and is supported in both Sandbox and Production environments.
- /v4/payments/owntransfer
- /v5/payments/own-credit-transfers
Version 4.2
Support for different currencies in own transfer has been added to following endpoints. This is only available for DK & SE. (For now it is in Sandbox and it will be available in production soon)
- /v4/payments/owntransfer
- /v5/payments/own-credit-transfers
Version 4.1
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 4.0
Created
/v4/payments/owntransfer
Overview
The PIS API for own transfers can be used to initiate and confirm account transfers for the same legal entity, i.e. the (co-)owner of both accounts has to be the same. This API supports POST HTTP method only. Check status of payments, deletions etc. can be done via the /payments/domestic
and /payments/sepa
endpoints, but own transfers have to be initiated via this service, else they will be treated as normal payments that have to be signed.
This API reuses the same request model as domestic payments, which is also why the version number follow domestic payments, but does come with a set of deviations as these payments are for internal, account to account transfers only:
- no GIRO payments
- no reference information
Note: If the debtor and creditor account are not related to the same legal entity, the payment will not be accepted. Note: If debtor and creditor accounts are in different countries, it is not an own transfer, but a cross border payment even if they are the same legal entity.
In Sandbox: Note that sandbox accepts all creditor account numbers, i.e. we do not check the legal entity.
API endpoints
The PIS API contains the following endpoints:
Endpoint | Supported HTTP Methods |
---|---|
/payments/owntransfer | POST |
The /payments/domestic/{paymentId}
or /payments/sepa/{paymentId}
endpoints can be used to query payment details by payment id, and it supports only GET HTTP method. The payment id is returned when payment is initiated successfully, and it can be found from the response JSON by the name _id
. Moreover, the payment status can be seen in the response by the name payment_status
. Full response example of this endpoint can be seen on examples section below.
In Sandbox: Note that the `payment_status` of a payment will be automatically updated after some time from Pending to Confirmed to Paid.
PIS API scenarios
The same scenarios as for domestic payments apply.
PIS API own transfer examples
This example shows how to initiate a new own transfer.
This endpoint URL has the following form
https://api.nordeaopenbanking.com/personal/v4/payments/owntransfer
This endpoint supports POST HTTP Method only.
Here is an example request:
$ curl 'https://api.nordeaopenbanking.com/personal/v4/payments/owntransfer' -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 'Content-Type: application/json; charset=UTF-8' \
-d '{
"amount": "123.45",
"currency": "SEK",
"debtor": {
"account": {
"_type": "BBAN_SE",
"currency": "SEK",
"value": "18102357371"
},
"message": "Own message"
},
"creditor": {
"account": {
"_type": "BBAN_SE",
"currency": "SEK",
"value": "41770042136"
},
"message": "Creditor msg",
}
}
And the response looks like this:
{
"group_header":
{
"message_identification": "m3-1v7i7FiM",
"creation_date_time": "2022-01-09T10:11:12.134Z",
"http_code": 201
},
"response":
{
"_id": "fab483a9-af20-4640-8372-1dac317ef994",
"entry_date_time": "2022-01-09T10:11:12.134Z",
"debtor":
{
"account":
{
"value": "18102357371",
"_type": "BBAN_SE",
"currency": "SEK"
},
"message": "Own message"
},
"creditor":
{
"account":
{
"value": "41770042136",
"_type": "BBAN_SE",
"currency": "SEK"
},
"message": "Creditor msg"
},
"amount": "123.45",
"currency": "SEK",
"payment_status": "Paid",
"tpp_messages": [],
"_links": [
{
"rel": "self",
"href": "/personal/v4/payments/domestic/fab483a9-af20-4640-8372-1dac317ef994"
}
],
"planned_execution_date": "2022-01-09",
"requested_execution_date": "2022-01-09"
}
}
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.