Skip to main content
Premium

Payment Initiation API

Version

Introduction

The Premium Payment Initiation API provides you access to payment initiation from your Danske Bank corporate accounts. Ideal for any party who wants to integrate the creation of payments to any of their flows.

Markets

The API is being developed for all Danske Bank markets, but currently supports payments in these markets:

  • Denmark
  • Norway
  • Finland
  • Ireland
  • Foreign transfers

Use cases and features

  • Real-time payment creation - Create and process payments in real time.
  • Supports instant payments - Supports instant payments in Denmark, Finland, Ireland and SEPA cross border.
  • Integration to your own system - No need to login to the bank to create a payment, you can integrate this API in any of your applications.

Getting Started

External API Platform

To get started with the Premium Payment Initiation API, it is necessary to onboard to the Premium API Platform first. After onboarding to the platform, you will have access to all the Premium APIs that Danske Bank offers.

Link to External API Platform onboarding guidelines: Danske Bank Open Banking Developer Portal

Environment Description

As described in the API Platform onboarding guidelines, the Premium Payment Initiation API will be available in two environments:

  • Sandbox: This environment will be used for initial integration tests and will provide mocked data. The mocked data includes three accounts. Each account will have transactions with either NOK, SEK or DKK currencies.

  • Production will provide you access to create real payments.

Sandbox URLs

Token Endpoint: https://sandbox-api.danskebank.com/sandbox-corporate/api/dk/business/oauth2/token

Premium Payment Initiation endpoint: https://sandbox-api.danskebank.com/sandbox-corporate/api/v1/corporate-paymentorders

Premium Payment Status endpoint: https://sandbox-api.danskebank.com/sandbox-corporate/api/v1/corporate-paymentorders/{paymentorderid}/state

Production URLs

Token Endpoint: https://api.danskebank.com/corporate/api/dk/business/oauth2/token

Premium Payment Initiation endpoint: https://api.danskebank.com/corporate/api/v1/corporate-paymentorders

Premium Payment Status endpoint: https://api.danskebank.com/corporate/api/v1/corporate-paymentorders/{paymentorderid}/state

Authentication

To access a resource, the client must first request a Client Credentials Grant token by calling the token endpoint specified in the OpenId configuration (token_endpoint). The request should be an x-www-form-urlencoded POST with the following parameters:

  • grant_type - client_credentials (read more).

  • scope - should include a scope the client has access to; for the Account Transaction & Balance API, it MUST contain the “accounts” keyword (read more).

  • client_id - the ID received after onboarding (read more).

Example Request:

curl --location --request POST 'https://example.com/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=1233456' \
--data-urlencode 'scope=accounts'

Example Response:

{
  "token_type":"Bearer",
  "access_token":"A****",
  "metadata":"m:",
  "expires_in":3600,
  "consented_on":1588933990,
  "scope":"accounts"
}

Using the Access Token:

The access_token received is valid for 1 hour and must be included in the request header on all subsequent API requests:

Authorization: Bearer <access_token>

Implementation details

The payment type needs to be part of the url when calling POST. The following payment products are supported:

  • dk-domestic-credit-transfer
  • no-domestic-credit-transfer
  • fi-domestic-credit-transfer
  • ie-domestic-credit-transfer
  • cross-border-credit-transfer
  • cross-border-cheque
  • request-for-transfer
  • (Request for transfer from an account in a foreign bank. It requires a “MT101-agreement” with the account holding bank and might be subject to additional fees)

Later the following will be implemented:

  • se-domestic-credit-transfer
  • uk-domestic-credit-transfer
  • pl-domestic-credit-transfer

Each individual country has specific credit transfer types which is described in detail below.

Payload documentation Danish payment types

payment product:

  • dk-domestic-credit-transfer
Data elementData sub elementTypeComments/ExampleDanish Account transferDanish SalaryDanish Slip payment/ Giro
metadata
authoriseboolean"true" if the payment is authorised by the user, else "false". Default is false.The subsequent handling of the payment in Danske Banks system is dependent on the payment mandates allocated to the user of which the ClientId is associated with. Utilizing a “false” value will, even though the user has an “Alone mandate”, result in payments awaiting approval in District. Payments will thereby not be executed automatically.mandatorymandatorymandatory
localInstrumentMax4Text• INST - instant clearing
• SDCL - sameday clearing
• ONCL - overnight clearing
mandatorynana
requestedExecutionDateISODateYYYY-MM-DD. If not filled, the execution date will be first possible execution date.
example "2026-02-23"
optionaloptionaloptional
debtorAccountAccount Referencemandatorymandatorymandatory
iban
bban
Max34TextAccount number in the type stated
Examples:
“iban”: "DK02100100109307118603"
“bban”: "30010930711860"
Please note: if both IBAN and BBAN is given, IBAN will be used. We suggest only to use one representation.
mandatorymandatorymandatory
entryTextMax20TextShort text on sender's account statementoptionaloptionaloptional
endToEndIdMax35TextUnique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end to-end chain if support by the clearing. It only applies to account to account transfers.optionaloptionaloptional
creditorAccountAccount Referencemandatorymandatorymandatory
bban
iban
other.schemeNameProprietary
other.identification
Max34TextExamples of usage cross multiple elements:
"iban": "DK02100100109307118603"
or
"bban": "30010930711860"

or (NemKonto/Easy account)
“other”: {
"schemeNameProprietary" : "DanishEasyAccount”,
"identification" : "cvr12345678”
}
or Danish Slip Payment/Giro
“other”: {
"schemeNameProprietary" : "DanishSlip",
"identification" : "71123456789012345612345678"
}
Please note: if both IBAN and BBAN is given, IBAN will be used, next will be BBAN and thirdly Nemkonto and lastly Inpayment Card.
We suggest only to use one representation.
Account number in the type stated
Exceptions:
Danish Easy Account (Nemkonto): Please write the type of identification before the identification e.g. cpr2211691234
accepted types:
cpr = social security number (NKC in old system)
cvr = cvr number for companies (NKV)
cvrp = cvr and production number (NKP)
se = VAT-number (NKS)
cvrse = cvr and VAT-number (NKR)
Danish slip payment/giro: The form type is also stated as a prefix, followed by 15 or 16 digits of paymentId and 8 digits of creditor number.
The following form types are supported:
01: doesn't support payment ID
04: 16 digits
15: 16 digits
71: 15 digits
73: doesn't support payment ID
75: 16 digits
e.g.
71123456789012345612345678
where 71 is the form type,
1234567890123456 is the reference,
and 12345678 is the creditor number.
If the creditor number is only 7 characters long, then add a leading zero.
If paymentId is not supported, then simply write form type and creditor number: e.g.
0112345678
mandatorymandatorymandatory
entryTextMax20TextText on creditor’s account statement.
Please note: It is not supported when initiating Danish Instant Account Transfers.
Please use remittanceInformationUnstructured instead.
optionaln.an.a
creditorNameMax70TextPlease note: only 35 characters are currently supportedoptional but mandatory for instant(INST)n.an.a
instructedAmount
amountDecimalAmount to be sent to the creditor stated in the currency of the debtorAccount. Use a dot (.) as decimal separatormandatorymandatorymandatory
currencyISOCurrency CodeCurrency of the amount to be transferredmandatorymandatorymandatory
CategoryPurposeMax4TextAccepted values:
• SALA
For Danish salary transfers, categoryPurpose needs to be SALA; other types are ignored.
The use of SALA will also control the entry text (salary) on the creditor’s account.
n.a.mandatoryn.a.
remittanceInformationUnstructuredMax140Text140 characters of free text to creditor.
Danish Slip payment/giro: Lines of 35 characters are supported - please use remittanceInformationUnstructuredArray to specify one or multiple lines of 35 characters.
optionaln.a.n.a.
remittanceInformationUnstructuredArrayArray of Max35TextNote:
For form types 01, unstructured.
Remittance information needs to be populated: up to 27 lines of 35 characters.
For form types 73 and 75, the unstructured remittance information may be populated: up to 41 lines of 35 characters.
Not supported for form types 04, 15, and 71.
n.an.amandatory for form type 01, optional for 73 and 75 and n.a. for 04, 15 and 71
remittanceInformationStructured"remittanceInformationStructured": {"reference": "RF34567"}
referenceMax25Textreference number e.g. RF34567optionaln.an.a
ultimateDebtorMax70 TextPlease note: only 35 characters are supported for nowoptionaln.aoptional for 01, 73 and 75
ultimateDebtorAddress
StreeNameMax35Textoptionaln.a.Optional for 01, 73 and 75
BuildingNumberMax16TextOptionaln.a.Optional for 01, 73 and 75
TownNameMax28TextOptionaln.a.Optional for 01, 73 and 75
PostCodeMax9TextOptionaln.a.Optional for 01, 73 and 75
CountryISO Country Coden.a.n.a.n.a.

Payload documentation - Finnish payment types

payment product:

  • fi-domestic-credit-transfer
Data elementData sub elementTypeComments/ExampleFinnish account transferFinnish Salary
metadata
authoriseboolean"True" if the payment is authorised by the userElse "False"
localInstrumentcode• INST - instant clearing
• ONCL - overnight clearing
• EXPR - express payment (POPS)
mandatoryn.a
requestedExecutionDateISODateyyyy-mm-dd. If not filled, the execution date will be the first possible execution date. Example: "2025-10-23"optionaloptional
debtorAccountAccountReferencemandatorymandatory
ibanMax34TextExample: “iban”: "FI6934499400001701"mandatorymandatory
entryTextMax20TextShort text on sender's account statementoptionaloptional
endToEndIdMax35TextUnique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end to-end chain.optionaloptional
creditorAccountAccountReference
ibanMax34TextExample “iban”: "FI7016603001174526"mandatorymandatory
creditorNameMax70Textmandatorymandatory
instructedAmountmandatorymandatory
amountDecimalAmount to be sent to the creditor stated in the currency of the debtorAccount. Use a dot (.) as decimal seperatormandatorymandatory
currencyISOCurrency Codecurrency ISOCurrency Code only EUR is supported mandatory mandatorymandatorymandatory
categoryPurposecategoryPurposeAccepted values:
• SALA
n.a.mandatory
purposeCodeMax4TextAccepted values:
• SALA
• STDY
• BENE
• PENS
• SSBE
• AGRT
• BECH
• TAXS
n.a.mandatory
remittanceInformationUnstructuredMax140Text140 characters of free text to creditoroptionaln.a
remittanceInformationStructured"remittanceInformationStructured": {"reference": "34567",optionaln.a
referenceMax25Textreference number e.g. RF12345678optionaln.a
referredDocumentInformationFor now, only one occurrence is valid. Please note: use either reference or referredDocumentInformation when using structured information—if both are given, the reference will be preferred.
Example:
"referredDocumentInformation": {
"type": "CINV",
"issuer": "885588",
"number": "123456789",
"relatedDate": "2025-10-23"
}
optionaln.a
typeMax4Text"CINV"optionaln.a.
issuerMax10Textcustomer numberoptionaln.a.
numberMax15TextInvoice numberInvoice numberoptional
relatedDateISODateyyyy-mm-dd
Example: "2025-10-23"
optionaln.a.
ultimateDebtorMax70TextUsed to state the ultimateDebtor name onlyoptionaln.a.
ultimateCreditorMax70TextUsed to state the ultimateCreditor name onlyoptionaln.a.

Payload documentation - Foreign payment types

payment product:

  • cross-border-credit-transfer
  • cross-border-cheque
  • request-for-transfer
Data elementData sub elementTypeExampleCross-borderCross-border chequeRequest for transfer
metadata
authoriseboolean"true" if the payment is authorised by the user, else "false". Default is false.
The subsequent handling of the payment in Danske Bank's system is dependent on the payment mandates allocated to the user of which the ClientId is associated with.
Utilizing a “false” value will, even though the user has an “Alone mandate”, result in payments awaiting approval in District.
Payments will thereby not be executed automatically.
optionaloptionaloptional
serviceLevelcodeValues:
• URGP
• SDVA (used for Capital transfers from Finnish accounts)
• INST - instant SEPA clearing - only supported as instrument for IE and FI debit accounts, for other countries please provide NURG and then the payment will be processed as SEPA Instant if all the terms for Instant are fulfilled
• NURG - non urgent - also used as default if no ServiceLevel is given
optionaln.a.n.a.
requestedExecutionDateISODateYYYY-MM-DD.
If not filled, the execution date will be the first possible execution date.
(Mandatory to be stated for the Request for transfer payment type)
example "2026-02-23"
optionaloptionalmandatory
requestedTransmissionDateISODateYYYY-MM-DD.
Example "2026-02-29".
The date stating when Danske Bank should send the payment request to the foreign bank. This must be the same date or a date before the requestedExecutionDate.
n.a.n.a.Mandatory
debtorAccountAccountReferencemandatorymandatoryMandatory
bban
iban
Max34Text"iban": "DK02100100109307118603"
or
"bban": "30010930711860"
Please note: if both IBAN and BBAN are given, IBAN will be used. We suggest only using one representation.
mandatorymandatoryMandatory
entryTextMax20TextShort text on sender's account statementoptionaloptionalOptional
debtorAgentAddressoptionaloptionaln.a.
countryISOCountryCodeIf debtor account is BBAN, either BIC or "countryCode" must be supplied.
Else not required.
optionaloptionaln.a.
debtorAgentBICFIFor cross-border and cross-border-cheque:
If debtor account is BBAN,
either debtorAgent or "debtorAgentAddress":{"countryCode"...} must be supplied.
Else not required.
In a request-for-transfer: mandatory
optionaloptionalmandatory
creditorAccountAccountReferenceoptionaln.a.mandatory (n.a. for IC or UC)
bban
iban
Max34TextExamples:
“iban”: "DK02100100109307118603"
or
“bban”: "30010930711860"
Please note: if both IBAN and BBAN are given, IBAN will be used.
We suggest only using one representation.
optionaln.a.mandatory
creditorAgentMax11TextWFBIUS6S
must be 8 or 11 characters
If beneficiary account is BBAN, either creditorAgent BIC or Country must be supplied.
Else not required.
optionaln.a.optional
creditorAgentOther
clearingSystemIdMax5TextExample: FWoptionaln.a.optional
memberIdMax9TextExample: 325081403optionaln.a.optional
creditorAgentAddressArray of 4 lines of Max35TextMax 4 lines of 35 characters.optionaln.a.Optional
countryISOCountryCodeCountry where the account is held.
If beneficiary account is BBAN, either creditorAgent BIC or Country must be supplied.
Else not required.
optionaln.a.n.a.
creditorAddress
countryISOCountryCoden.a.mandatoryn.a.
addressLinesArray of 4 lines of Max35TextUnstructured address
Cross-border and request-for-transfer: 4 lines of 35 characters are supported.
First line (interpreted as creditor name) is mandatory.
Cross-border-cheque: State the address of the company or person, who is the beneficiary.
The following number of lines are available:
• 4 lines of 35 characters, when the cheque is to be sent directly to the beneficiary.
At least 3 lines must be filled out.
• 2 lines of 35 characters, when the cheque is to be sent to the account holder.
These lines must be filled out.
mandatory (creditor name)mandatory (creditor name)mandatory (creditor name)
instructedAmountmandatorymandatorymandatory
amountDecimalAmount to be sent to the creditor stated in the currency of the debtorAccount.
Use a dot (.) as decimal separator.
mandatorymandatorymandatory
currencyISOCurrency CodeCurrency of the amount to be transferred.
If an equivalent amount is needed, please state the original currency here and the actual currency that needs to be sent to the receiver in the "currencyOfTransfer".
A currency conversion will take place.
mandatorymandatorymandatory
currencyOfTransferISOCurrencyCodeUsed in an "equivalent amount scenario" to specify the currency that needs to be transferred to the creditor.
A currency conversion will take place.
optionaloptionaln.a.
exchangeRateInformationPayment Exchange Rateoptionaloptionaloptional
typecodeSpecify the exchange rate type.
If no exchange type is stated, the bank will decide based on the receiver country - most countries use SPOT.

Accepted values:
• SPOT
• SALE
• AGRO (only supported for foreign payments, not foreign cheques)

Note: If AGRO is used, then contractIdentification is mandatory.
optionaloptionaln.a.
contractIdentificationMax14TextThe agreed rate contract identification number.
This field is only used when AGRO is chosen in exchange rate type.
optional (mandatory for type = AGRO)n.a.optional
chargeBearercodeFor cross-border and request-for-transfer, the following values are supported:
• DEBT (debtor pays costs)
• CRED (creditor pays costs)
• SHAR (debtor and creditor share the costs)

For cross-border-cheques:
• DEBT (the amount excludes bank’s costs)
• CRED (the amount includes bank’s costs)
optional (default option is SHAR)optional (default option is DEBT)optional (default option is SHAR)
categoryPurposecodeAccepted values:
• INTC
Other types are ignored.
optionaln.a.n.a.
remittanceInformationUnstructuredMax140Text140 characters of free text to creditor.optionaln.a.n.a.
remittanceInformationUnstructuredArrayArray of Max35TextFor request-for-transfer:
Only 4 lines of 35 characters are supported.

For cross-border-cheque:
14 lines are supported if deliveryMethod = MLCD (Cheque will be sent to the creditor).
If MLDB (Cheque will be sent to debtor) is used, it is not supported.
n.aoptionaloptional
ultimateDebtorMax70TextNote: Only 35 characters are supported for now.optionaln.a.n.a.
instructionForDebtorAgentMax105TextNote: Usage will invoke an extra fee as the payment will be manually handled by the bank.
3 lines are supported.
Not supported if serviceLevel is INST.
optionaln.a.n.a.
regulatoryReportingMandatory for transfers from accounts in Norway above NOK 100,000 and transfers from accounts in Sweden above SEK 150,000.
optionaloptionaloptional
detailsCodeMax3TextExample: "code": 76, 2-digit codes in Norway and 3-digit codes in Sweden.
The list of possible values can be found here:
pdf-d01-4_001-d_001-4_02_appendix.pdf.
optionaloptionaln.a.
detailsInformationArray of Max35TextUsed for payments from Norway.
Example: {"detailsInformation": ["Rent for ski-apartment", "in 2026"]}.

2 lines can be used for cross-border and request-for-transfer.
4 lines can be used for cross-border-cheque.
optionaloptionaloptional
detailsCountryISOCountryCodeUsed for payments from accounts in Sweden.optionaloptionaloptional
chequeInstruction
deliveryMethodcodeMLDB - Cheque will be sent to debtor.
This is the default value for cross-border-cheque if not populated.

MLCD - Cheque will be sent to creditor.
If cheque is to be sent to creditor, then creditor name and address is mandatory
n.a.optionaln.a.
formsCodeCodeValid code: CROSSED - The cheque is crossed (applies only to cross-border-cheques). If not filled, the cheque will not be crossed.n.a.optionaln.a.
senderInformationMax35Text2 lines of 35 characters are supported. The message will appear on the note to the sender.n.a.optionaln.a.
requestForTransferInstruction
paymentTypePlease use the following codes: IC = domestic cheque, IE = domestic transfer to a third party, II = domestic transfer to own account, IS = domestic salary transfer, IU = domestic transfer express, UC = foreign cheque, UE = foreign transfer to a third party, UI = foreign transfer to own account, UU = foreign transfer express. If creditorAccount is not specified, the transferType must be IC or UC (domestic cheque or foreign cheque).n.a.n.a.mandatory
separateFeeAccountMax34TextAbility to key in fee account. Only supported if allowed for the specific BIC address and payment type.n.a.n.a.optional

Payload documentation - Irish payment types

payment product:

  • ie-domestic-credit-transfer
Data elementData sub elementTypeComments/ExampleFinnish account transferFinnish Salary
metadata
authoriseboolean"true" if the payment is authorised by the user, else "false". Default is false.The subsequent handling of the payment in Danske Banks system is dependent on the payment mandates allocated to the user of which the ClientId is associated with. Utilizing a “false” value will, even though the user has an “Alone mandate”, result in payments awaiting approval in District. Payments will thereby not be executed automatically.optionaloptional
localInstrumentcode• INST
• ONCL
• SDCL
mandatorymandatory
requestedExecutionDateISODateYYYY-MM-DD. If not filled, the execution date will be the first possible execution date.
Example: "2026-02-23"
optionaloptional
debtorAccountAccountReferencemandatorymandatory
ibanMax34TextExample:
"iban": "IE42DABA100100931718603"
mandatorymandatory
entityTextMax20TextShort text on sender’s account statementoptionaloptional
creditorAccountAccountReferencemandatorymandatory
ibanMax34TextExample:
"iban": "IE42DABA100100931718603"
mandatorymandatory
entityTextMax18TextUsed as creditor reference. This value will be copied and delivered as EndToEndId to the receiver. Please note only 18 characters of text is supported.optionaln.a.
creditorNameMax70TextPlease note: Only 35 characters are supported for nowmandatorymandatory
instructedAmountmandatory
amountDecimalAmount to be sent to the creditor stated in the currency of the debtorAccount. Use a dot (.) as the decimal separator.mandatorymandatory
currencyISOCurrencyCodeOnly EUR is supportedmandatorymandatory
remittanceInformationUnstructuredMax140Text140 characters of free text to creditor.optionaloptional

Payload documentation - Norwegian payment types

payment product:

  • no-domestic-credit-transfer
Data elementData sub elementTypeComments/ExampleFinnish account transferFinnish SalaryFinnish Salary
metadata
authoriseboolean"true" if the payment is authorised by the user, else "false". Default is false. The subsequent handling of the payment in Danske Bank’s system is dependent on the payment mandates allocated to the user of which the ClientId is associated with. Utilising a “false” value will, even though the user has an “Alone mandate”, result in payments awaiting approval in District. Payments will thereby not be executed automatically.optionaloptionaloptional
requestedExecutionDateYYYY-MM-DD. If not filled, the execution date will be the first possible execution date.
Example: "2026-03-01"
optionaloptionaloptional
debtorAccountAccountReferencemandatorymandatorymandatory
ibanMax34TextExamples:
"iban": "NO6112345678901"
or
"bban": "98765432189"
Please note: if both IBAN and BBAN are given, IBAN will be used. We suggest using only one representation.
mandatorymandatorymandatory
entityTextMax20TextShort text on sender’s account statementoptionaloptionaloptional
creditorAccountAccountReferencemandatorymandatorymandatory
bban
iban
Max34TextExamples:
"iban": "NO9912345678901"
or
"bban": "98765432109"
Please note: if both IBAN and BBAN are given, IBAN will be used. We suggest using only one representation.
mandatorymandatorymandatory
entityTextMax27TextText on creditor account statement.
Note: If you use structured remittance information, entryText is not allowed. It is only allowed in account transfers.
n.a.optionaln.a.
creditorNameMax70Textoptionaloptionaloptional
instructedAmountamountDecimalAmount to be sent to the creditor stated in the currency of the debtor account. A dot (.) as a decimal separator.mandatorymandatory
currencyISOCurrencyCodeCurrency of the amount to be transferred.mandatorymandatorymandatory
categoryPurposeAccepted values: SALA.
For Norwegian salary payments, categoryPurpose needs to be SALA; other types are ignored.
n.a.n.a.optional
purposeCodePurpose CodeAccepted values for Norwegian payments:
• PENS (Pension)
• AGRI (Agriculture payment)
• PAYR (Payroll/Trekk)

Note: If SALA is used in categoryPurpose, then purposeCode will be ignored even if given.
n.a.n.a.optional
remittanceInformationUnstructuredArrayArray of Max35TextUp to 50 lines of 35 characters are supported.
Used for remittance information to the creditor.
n.a.optionaln.a.
remittanceInformationStructuredRemittance
referenceMax25TextReference number, e.g., "2023128154".mandatoryn.a.n.a.
referredDocumentInformationCurrently, only one occurrence is supported.
Example:
{
"type": "CINV",
"issuer": "12345",
"relatedDocumentNumber": "123456789",
"relatedDate": "2025-05-14"
}
Please note: Use either reference or referredDocumentInformation when using structured information; if both are given, the reference will be used.
n.a.optionaln.a.
typecodeOnly CINV supported.n.a.optionaln.a.
issuerMax15TextCustomer number.n.a.optionaln.a.
numberMax 20 TextInvoice numbern.a.optionaln.a.
relatedDateISODateyyyy-mm-dd and Example "2026-02-23"n.a.optionaln.a.

Responses

The immediate response received when initiating a payment of the Corporate Payment API will follow the structure below:

Data elementData sub elementTypeDescription and Example
stateCodeSee list of codes belowDanske Bank list of states
transactionStatusExternalPaymentTransactionStatusSOcode e.g. RJCT
paymentIdMax128TextExample: "urn:ttid:corporate:v1:premium:833d8439-d524-43da-8fd0-1ddd948b30dd".
This id is used when calling the Payment Status Endpoint (Get state) in order to get a payment status of the payment.
error
errorKCode /Text(4)Danske Bank detailed error code (K-code).Example: "urn:ttid:corporate:v1:premium:833d8439-d524-43da-8fd0-1ddd948b30dd".
This id is used when calling the Payment Status Endpoint (Get state) in order to get a payment status of the payment.
errorISOCodeISOExternalStatusReason1CodeISO code related to the error e.g. AC01
errorTextText(100)Detailed error text in English

List of State codes used in the immediate response and in the response to the payment Status Endpoint (GET State)::

stateCodetransactionStatus (ExternalPaymentTransactionStatus)Description
PendingValidationACTC
RejectedRJCT
PendingAcceptancePDNGOnly relevant if the user, which the ClientId is associated to, doesn’t have automatic payment acceptance of payments on the user profile.. Payment is awaiting acceptance in the District user interface
PendingAcceptanceAndApprovalPDNGOnly relevant if the user, which the ClientId is associated to, doesn’t have alone mandate and automatic acceptance of payments on the user profile. Payment is awaiting acceptance and payment approval in the District user interface
PendingApprovalPDNGOnly relevant if the user, which the ClientId is associated to, doesn’t have alone mandate Payment is awaiting payment approval in the District user interface
ReadyPDNGAwaiting payment execution. E.g. when payments have execution date in the future.
PendingLimitPDNGOnly relevant if the user, which the ClientId is associated to, has payment, account or user limits (offered via Danske Bank selfservice solution)
LackingFundsPDNGUsed Iif the debtor account is lacking sufficient funds
PendingSettlementACSPAll preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been accepted for execution.
ExecutedExecutedPayment is debited from customer’s account. For non-instant payments, no settlement state will be provided.
SettledACCCFor instant payments only: A settlement state will be provided when the payment has reached the creditors’ account
CancelledCANCOnly used in a GET State response.Payment initiation has been canceled before execution.

Error Codes

Our API uses standardized HTTP status codes to indicate the success or failure of API requests. Below is a summary of the error codes you may encounter

Error CodeDescriptionResolution Steps
201 OKThe request was successful.No action needed – unless in a setup where payments need to be approved in District after initiation
400 Bad RequestThe request could not be understood or was missing required parameters.Check the request syntax and ensure all required parameters are included.
401 UnauthorizedAuthentication credentials were missing or incorrect.Verify that authentication credentials are correct and included in the request.
403 ForbiddenThe request was understood, but it has been refused, or access is not allowed.Ensure that you have the necessary permissions to access the requested resource.
404 Not FoundThe requested resource could not be found.Verify the resource URL and ensure that the resource exists.
500 Internal Server ErrorAn error occurred on the server.Try the request again later and contact support if the issue persists.

Code 201 - Created

Example Response:

{
  "stateCode": "pendingApproval",
  "transactionStatus": "PDNG",
  "paymentId": "urn:ttid:corporate:v1:cpr:43cc372a-ca6b-4f76-a33e-0bac4005e03a",
  "error": null,
  "secondaryPaymentId": "1021739698"

}

Code 400 - Bad request

Schema validation errors

This type of bad request happens if the caller of the APIpayment initiator is not providing a correct payload. These errors cannot be shown to the payment initiator since there is no errorKCode or errorIsoCode.

Example Response:

{
  "stateCode": "rejected",
  "transactionStatus": "RJCT",
  "paymentId": "",
  "error": {
    "errorKCode": "",
    "errorIsoCode": "",
    "errorText": "'Currency' must be equal to 'SEK'."
  }
}

In some cases the response structure can also be:

Example Response:

{
  "errorMessage": "creditTransferTransactionInformation.Amount.EquivalentAmount.Currency: [EquivalentAmount.Currency must be 3 characters in the range [A-Z].]",
  "errorCode": "ERROR"
}

Functional validation errors

Example of an immediate response with Danske Bank detailed error codes and error text.

Example Response:

{
  "stateCode": "rejected",
  "transactionStatus": "RJCT",
  "paymentId": "",
  "error": {
    "errorKCode": "K0589",
    "errorIsoCode": "DT04",
    "errorText": "Express payments can only be executed on today's date."
  }
}

Code 401 - Unauthorized

If tokens are not valid this will be returned:

Example Response:

{
  "error": "unauthorized"
}

Get Payment status

Endpoint: GET https://api.danskebank.com/corporate/api/v1/corporate-paymentorders/{paymentorderid}/state

Description

In order to get payment status information after receiving the immediate response of the Payment Initiation request, it is possible to get the real time status of a payment as it is in Danske Bank’s system. The unique paymentId received in the immediate response must be utilized to get the status of a payment.

Example : Immediate response after initiating the Payment:

{
  "stateCode": "pendingApproval",
  "transactionStatus": "PDNG",
  "paymentId": "urn:ttid:corporate:v1:cpr:43cc372a-ca6b-4f76-a33e-0bac4005e03a",
  "error": null,
  "secondaryPaymentId": "1021739698"
}

GET https://api.danskebank.com/corporate/api/v1/corporate-paymentorders/urn:ttid:corporate:v1:cpr:43cc372a-ca6b-4f76-a33e-0bac4005e03a/state

The response of the “GET state” will have the below structure:

Data elementData Sub elementTypeDescription and example
stateCodeSee list of codes on page 24.Danske Bank list of states
transactionStatusExternalPaymentTransactionStatusISOcode e.g. ACSC
error
errorKCode /Text(4)Danske Bank detailed error code (K-code).More detailed error code. Complete list of error codes can be found here: pain,-d-,002,-d-,001,-d-,03-cgi-mp-v2,-d-,8.pdf Page 16 - 26
errorISOCodeerrorISOCode ISOExternalStatusReason1Code ISO code related to the error e.g. AC01ISO code related to the error e.g. AC01
errorTextText(100)Detailed error text in English

Examples of responses from the GET State endpoint:

  • Payment waiting for execution:
{
    "stateCode": "sentForExecution",
    "transactionStatus": "PDNG",
    "error": null
}
  • Rejected payment inititation:
{
    "stateCode": "rejected",
    "transactionStatus": "RJCT",
    "error": {
        "errorKCode": "K0051",
        "errorIsoCode": "NARR",
        "errorText": "'To-account' cannot be credited"
    }
}

Architectural constraints

State
Active

Technical constraints

Static URL
/premium-apis/payment-initiation-api
Environment(s)
PROD, SANDBOX