Download OpenAPI specification:
****Ztl Payment solution api
You can download the full spec by clicking on the button above, or at https://docs.ztlpay.io/ztl-api-v2.full.yaml
Below is a very short description of the main categories of services.
The first step to use the API is to have an onboarded company. The onboarding is initiated through the API, which returns an url which the user has to use to complete the onboarding process (KYC questions etc). The user can start to use the services once the user has completed the onboarding, and the onboarding status has been updated to 'Approved'.
To use ZTL open banking services, the user has to give consent which needs to be signed by the user. The consent is personal per user, and is linked to an organization. The consent gives ZTL access to retrieve account information and start payment initiation. Note that the user consent only gives access to start payment initiation, the user still needs to sign(authorize) payments before they are executed by the bank. The consent services has API to initiate the consent creation, and the consentId is used for Accounts and Payments services.
After the user has given consent, the next step is to retrieve available bank accounts the user has access to. Note that this service is only available right after the consent has been created, so it's recommended to fetch and store the account list right after the consent has been created. It's possible to fetch balance and account entries for the accounts.
Payment initiation can be started with consent, but requires an additional signing from the user.
The banks, currencies and country APIs can be used to get useful information like supported banks, products, countries etc.
ztl-request-id
. This is a unique id for each request, and should be used if you need to contact ZTL support regarding problems with a specific API call.Error messages body format has been standardized, with some differences of available failure codes related to each endpoint - see description for available return values for each endpoint. ZTL may add more enums for error codes, so it's recommended to have general parser for the enum values that can handle unknown values. The following http error codes are recommended to handle:
{
"failure": "Invalid_BBAN",
"ztlRequestId": "350eb968-f4cf-474c-8cf2-f8068294d364 ",
"message": "The provided BBAN was invalid"
}
409 - Conflict. This error indicates that there are some problems with simultaneous usage of consent. There is a very low chance for this situation to occur, and would normally be resolved by retrying the request.
422 - Input validation failed. This error indicates that there are issues with some of the input values. We provide a specific error code that is defined for each endpoint and error reason in English along with the path for the value that is invalid.
[
{
"code": "InvalidBBAN",
"reason": "Invalid BBAN",
"path": ".from.account"
},
{
"code": "InvalidDueDate",
"reason": "Due date cannot be in the past",
"path": ".dueDate"
}
]
{
"ztlRequestId": "ENUM",
"message": "The underlying reason for the error"
}
The following is a list of environments available when developing against or using our API:
Resource | Sandbox | Prod |
---|---|---|
API Endpoint | https://api.sandbox.ztlpay-test.io | https://api.ztlpay.io |
Authentication endpoint | https://oidc.sandbox.ztlpay-test.io | https://oidc.ztlpay.io |
Onboarding endpoint | https://welcome.sandbox.ztlpay-test.io/onboarding | https://welcome.ztlpay.io/onboarding |
Here is a table listing the banks available for use in Sandbox. While other banks may function, they are not officially supported.
Bank | Country | BIC | organizationNumber | userId | Notes |
---|---|---|---|---|---|
DNB | Norway | DNBANOKK | No requirements | TX99999 or TX99998 | Account 12095221031 and 12024833710 requires 2 approvers |
Nordea | Norway | NDEANOKK | Must be 9 digits | Any valid norwegian SSN | After completing signing for payments you are always redirected to example.com |
Nordea | Sweden | NDEASESS | Must be 10 or 12 digits | Non empty value | Issues showing completed status on payments. After completing signing for payments you are always redirected to example.com |
Nordea | Denmark | NDEADKKK | Must be 8 digits | Non empty value | After completing signing for payments you are always redirected to example.com |
Most endpoints requires an access-token, which are used in the 'Authorization' header. Please contact ZTL support if you need to create new credentials or change existing secret.
The created token is valid for 60 minutes (could be invalidated before), and should be reused until it is invalidated.
To use the token, set the header Authorization
to Bearer ACCESS_TOKEN
.
Expired token will result in 401 - Unauthorized, indicating that the partner needs to renew their token.
client_id required | string Client id as provided by ZTL |
client_secret required | string Client secret as provided by ZTL |
grant_type required | string Should be 'client_credentials' |
scope required | string Should be 'payments' |
{- "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg",
- "expires_in": 3600,
- "token_type": "Bearer",
- "scope": "payments"
}
The first step a user must do to use the ZTL API is to onboard its company.
The Version 2 of onboarding API are only implemented for Sweden and Denmark. For Norwegian company onboarding, please use the version 1 of the Onboarding API.
Things to consider in your implementation:
Testing signing in Sweden
To test the whole onboarding flow including signing the agreement in SANDBOX you need to follow these steps:
Test organization numbers:
Testing signing in Denmark
To test the whole onboarding flow including signing the agreement in SANDBOX you need to follow these steps:
Test organization numbers:
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
country required | string Countrycode for the company being onboarded |
organizationNumber required | string Organization number for the company being onboarding |
{- "country": "SE",
- "organizationNumber": "5569994600"
}
{- "id": "941d1877-73b8-45bf-8c65-47233b58926a",
}
onboardingId required | string <uuid> |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "status": "Approved"
}
Simple registration for companies. Provides access exclusively to account information services. Supported countries are NO, SE and DK.
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
country required | string Country code for the company being registered |
organizationNumber required | string Organization number for the company being registered |
{- "country": "SE",
- "organizationNumber": "5569994600"
}
{- "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9",
- "message": "Invalid account"
}
Services for all bank-related information. Gives list of all banks ZTL supports, which products support each bank and bank-specific restrictions like max data length for fields.
List of supported banks, with known constraints. Due to variations in the PSD2 APIs of the different banks, initiating a payment with certain banks may be subject to some limitations
countryCode required | string <ISO-3166> Example: NO Country code, ISO-3166 |
[- {
- "bic": "DNBANOKK",
- "constraints": {
- "maxBasketSize": 20,
- "maxInformationFieldLength": 35,
- "maxUnstructuredRemittanceInfoLength": 108,
- "aisMaxDateRangeMonths": 12,
- "cancelSCARequired": true,
- "validInformationFieldCharactersPattern": "[A-ZÆØÅa-zæøå0-9\\\\D]",
- "aisMaxDateRangeNote": "Supports up to 24 months if consent age < 1h",
- "maxBulkSize": 20
}, - "countryCode": "NO",
- "name": "DNB BANK ASA",
- "platform": "EVRY",
- "bankAlliance": "SPAREBANK_1",
- "supportedProducts": [
- "PAYMENT_DOMESTIC"
], - "branches": [
- {
- "name": "District",
- "branch": "DISTRICT",
- "constraints": {
- "maxBasketSize": 20,
- "maxInformationFieldLength": 35,
- "maxUnstructuredRemittanceInfoLength": 108,
- "aisMaxDateRangeMonths": 12,
- "cancelSCARequired": true,
- "validInformationFieldCharactersPattern": "[A-ZÆØÅa-zæøå0-9\\\\D]",
- "aisMaxDateRangeNote": "Supports up to 24 months if consent age < 1h",
- "maxBulkSize": 20
}
}
]
}
]
A valid Consent is required to use the Accounts and Payments services. A consent has to be signed by a user to be valid, and is personal for that user and limited to bank services for the bank the consent was created with. A newly created consent is normally valid for 180 days, but note that it may be invalidated at any time. Consents created by V1 API are not compatible for V2 endpoints, and V2 consents can neither be used for V1 endpoints.
Create consent and starts authentication process automatically (SCA details is available in response body). For banks having different branches, please refer to the banks api for available branches. Note that the existing consents from V1 are not compatible for V2 endpoints, so all users needs to create new consent before using V2 endpoints. V2 consents can neither be used for V1 endpoints.
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
userId required | string The userId of the account owner providing consent. Different banks use different userId schema, Could be SSN or a userId provided by the bank. |
bic required | string The bank's international code/address. Also know as Swift code. |
callbackUrl required | string Sca callback url for Redirect authentication |
organizationNumber required | string The organization number |
preferredScaMethod | string Enum: "Qr" "Redirect" The preferred way to perform authorization. There is no guarantee that bank supports the preferred method.
|
bankBranch | string Which branch of the bank if multiple. Can be fetched from supported banks endpoint. |
{- "userId": "string",
- "bic": "ESSESESS",
- "organizationNumber": "1234567890",
- "preferredScaMethod": "Qr",
- "bankBranch": "string"
}
{- "id": "B44E9297-934D-4975-8951-7843B16DF63F",
- "status": "AWAITING_AUTHORIZATION",
- "sca": {
- "type": "qr",
- "qrImage": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
- "qrType": "Dynamic"
}
}
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "id": "B44E9297-934D-4975-8951-7843B16DF63F",
- "status": "AWAITING_AUTHORIZATION",
- "sca": {
- "type": "qr",
- "qrImage": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
- "qrType": "Dynamic"
}, - "validUntil": "2022-01-01"
}
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9",
- "message": "Invalid account"
}
API for getting account information. We try to provide a failure enum when possible, you should expect us to add more values here continuously.
The banks make a VERY IMPORTANT distinction between if the user is present or not through the PSU-IP-Address
and PSU-User-Agent
headers. Numbers of account information calls without the user present may be restricted by banks to up to max 4 usages per day. As long as a user is present, there is no limits. Under no circumstances should the IP address of the user be sent if it can not be fetched from the actual user and browser using your system.
Banks may respond respond slow, and sometimes with errors if bank entries are retrieved in batches - therefore it's strongly recommend to spread account entries usages out over time. One easy way of doing this is to create a loop that runs often but checks any accounts that has not been updated since X hours ago.
Retrieve a list and general information about the account or accounts specified in the authorized account query.
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "accounts": [
- {
- "id": "11ab5740-f8f5-1234-abcd-b90e4253b7b8",
- "name": "Main savings account",
- "bic": "DNBANOKK",
- "bban": "12043175449",
- "iban": "NO0812043175449",
- "country": "NO",
- "type": "Debit",
- "currency": "NOK",
- "ownerName": "string"
}
]
}
Retrieve the current available and booked balance for the account specified.
accountId required | string The ID of the account, as retrieved from the list of accounts. The account ID is sometimes the same as the account bban, but this is not always the case. Also, the account ID may change each time a consent is created/refreshed. |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "id": "11ab5740-f8f5-1234-abcd-b90e4253b7b8",
- "balance": {
- "booked": {
- "amount": "150.00",
- "currency": "NOK"
}, - "available": {
- "amount": "100.00",
- "currency": "NOK"
}
}
}
Retrieve the latest transaction entries on the account. The maximum date range supported varies with banks, see Supported Banks-endpoint to retrieve the specific banks max date range.
accountId required | string The ID of the account, as retrieved from the list of accounts. The account ID is sometimes the same as the account bban, but this is not always the case. Also, the account ID may change each time a consent is created/refreshed. |
fromDate | string <date, ISO-8601> Example: fromDate=2025-01-01 Entries start date, inclusive |
toDate | string <date, ISO-8601> Example: toDate=2025-01-02 Entries end date, inclusive |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "accountEntries": [
- {
- "transactionId": "d1f669f2-1234-abcd-aabb-ff0cc229b485",
- "postedAmount": {
- "amount": "99.50",
- "currency": "NOK"
}, - "type": "Debit",
- "status": "Pending",
- "bookingDateTime": "2025-01-02",
- "valueDateTime": "2025-01-01",
- "purposeText": "Overføring Innland",
- "remittanceInformation": {
- "reference": 75025049,
- "unstructured": "Transfer of funds"
}, - "creditor": {
- "name": "string",
- "bban": 12043175449,
- "iban": "NO0812043175449"
}, - "debtor": {
- "name": "string",
- "bban": 12043175449,
- "iban": "NO0812043175449"
}, - "endToEndId": "string"
}
]
}
Retrieve the transaction details. Support varies per bank.
accountId required | string The ID of the account, as retrieved from the list of accounts. The account ID is sometimes the same as the account bban, but this is not always the case. Also, the account ID may change each time a consent is created/refreshed. |
entryId required | string The ID of the entry, as retrieved from the list of entries. |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "transactionId": "d1f669f2-1234-abcd-aabb-ff0cc229b485",
- "postedAmount": {
- "amount": "99.50",
- "currency": "NOK"
}, - "type": "Debit",
- "status": "Pending",
- "bookingDateTime": "2025-01-02",
- "valueDateTime": "2025-01-01",
- "purposeText": "Overføring Innland",
- "remittanceInformation": {
- "reference": 75025049,
- "unstructured": "Transfer of funds"
}, - "creditor": {
- "name": "string",
- "bban": 12043175449,
- "iban": "NO0812043175449"
}, - "debtor": {
- "name": "string",
- "bban": 12043175449,
- "iban": "NO0812043175449"
}, - "endToEndId": "string"
}
Payroll V2 only supports NOK to NOK transactions within Norway. International payrolls (going to recipients outside Norway) should be handled as cross-border payments.
Sandbox environment does not work at the payroll provider. Only testing in production environment is possible
Payroll is similar to Payments, but with some simplicity to accommodate the end user. All salaries can be made in a single request. These salaries will accumulate to a single payment at the user's bank. The money will arrive in a client account with ZTL, where the salaries will be paid out to the recipients.
Each transaction in the payroll will have their own individual status and should be treated as individual payments.
Until the money has left the user's account, they will effectively all share the same status. After being removed from
the user's account, they will potentially have different statuses like InProgress
, Completed
, or Rejected
.
If you are familiar with Payroll V1 you will see that the statuses are simplified to ultimately represent what is important.
A singular payroll can contain many recipients and the amount will be drawn from a single account. When creating the
payroll, a payrollId
will be returned, which needs to be saved.
We request that when a payroll is initiated and due date is today or tomorrow (if initiated after 16:00) that you give user a warning if balance is less than value of the payment. Reason for this warning is to remind those who are lacking funds that they do not have funds and to avoid the salary being delayed or in worst case cancelled.
When a payroll has been created, it has only been initiated but not approved. The user then needs to approve this by
performing an SCA with the user's bank. The payrollId
is sent in the request body, created in the previous step, and a
link for approving the SCA will be in the response body.
Use the payrollId
in the path parameter to get the status of a payroll.
More info on CustomerActionRequired
will come.
Status | Is in a final state | Short description |
---|---|---|
Unsigned |
No | It has been created, but the user's bank requires approval before accepting |
InProgress |
No | The user's bank has approved the payment and is on its way to the recipients |
CustomerActionRequired |
No | Requires further action from the user |
Completed |
Yes | The end user has received the payment |
Rejected |
Yes | Something did not go as expected, and the payroll has been rejected |
Cancelled |
Yes | The user has chosen to cancel the payroll |
Note that the status InPogress
can mean different things, including
Canceling a payroll can only be done in a non-final state, i.e. Unsigned
, InProgress
, or CustomerActionRequired
,
but also only if the money has not been drawn out of the user's account, which can occur in the InProgress
state until
it has been paid out to the recipients.
If the payroll has been approved, cancelling a payroll requires an SCA like when approving. This is usually the case, but is up to the banks to decide when it requires an SCA or not.
Initiates a new payroll, and returns a status for successful requests.
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
required | object Account information for debtor | ||||||||
| |||||||||
required | Array of objects A List of transactions for each individual payout in the payroll | ||||||||
Array
| |||||||||
dueDate required | string <date, ISO-8601> The due date for the payroll | ||||||||
purposeCode required | string Value: "SALA" Purpose code for payroll |
{- "from": {
- "account": {
- "bban": 12341212345
}, - "name": "ZTL Payment Solution AS"
}, - "transactions": [
- {
- "metadata": {
- "endToEndId": "71a2e752-8b71-446f-b9e9-b19bfb70becb"
}, - "account": {
- "bban": 12341212345
}, - "amount": {
- "amount": 1000,
- "currency": "NOK"
}, - "remittanceInformation": {
- "type": "message",
- "value": "Payment for invoice 12345"
}
}
], - "dueDate": "2024-01-15",
- "purposeCode": "SALA"
}
{- "payrollId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "transactions": [
- {
- "endToEndId": "71a2e752-8b71-446f-b9e9-b19bfb70becb",
- "payrollStatus": "Unsigned"
}
]
}
Start approval/signing process of a payroll
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
payrollId required | string The id returned from the initiation process |
callbackUrl required | string Sca callback url for redirect authentication |
{- "payrollId": "71a2e752-8b71-446f-b9e9-b19bfb70becb",
}
{- "id": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "status": "STARTED",
- "sca": {
- "type": "redirect",
}
}
Retrieves latest payroll status.
payrollId required | string Example: 7c628b2e-9094-4bf8-af23-1d517c6fc4f5 Id received when creating the payroll |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "transactions": [
- {
- "endToEndId": "string",
- "payrollStatus": "Unsigned"
}
]
}
Cancels a payroll. May require approval.
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
payrollId required | string Payroll id to be cancelled |
callbackUrl required | string Callback url for redirect authentication |
{- "payrollId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "sca": {
- "type": "redirect",
}, - "cancellationRequestStatus": "ACCEPTED",
- "currentPayrollStatus": "Cancelled",
- "reason": null
}
Normally payments are initiated one at a time. The payment status is immediately returned, in most cases the payment needs to be signed before it will be executed. There are different endpoints for domestic and cross-border payments, resulting in a payment reference including an unsigned bank transaction to ZTL client account. The approval/signing endpoint starts signing process of a list of unsigned payments, where the user has to perform SCA before the payment execution are accepted by the bank. If an approval for some reason is rejected, it's possible to start a new approval with the same payment(s).
Bulk payment is a special case implement to be able to support a few banks which does not support single payment/approve functionality. The supported products for each bank is available in bank services.
Initiates a new domestic payment, and returns status. Normally the status will be Unsigned
, indicating that the payment needs to be approved before executed. Some payments do not require signing, this is dependent on the bank account configuration.
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
required | object Metadata for the payment | ||||||||||||||||||||
| |||||||||||||||||||||
required | object Account information for debtor | ||||||||||||||||||||
| |||||||||||||||||||||
required | object Account information for creditor | ||||||||||||||||||||
| |||||||||||||||||||||
required | object (AmountAndCurrency) Amount and currency to be paid | ||||||||||||||||||||
| |||||||||||||||||||||
dueDate required | string <date, ISO-8601> The due date for the payment | ||||||||||||||||||||
RemittanceInformationMessage (object) or RemittanceInformationOcr (object) or RemittanceInformationFik (object) Remittance information, either OCR or Text message
| |||||||||||||||||||||
Any of
| |||||||||||||||||||||
purposeCode | string Enum: "SUPP" "TAXS" "SALA" "VATX" "OTHR" Purposecode for payment |
{- "metadata": {
- "endToEndId": "73300aef-d849-4872-b0c6-f44e07a841f3"
}, - "from": {
- "account": {
- "type": "bban",
- "bban": 12341212345
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "telephoneNumber": "+4740000858",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}, - "currency": "NOK"
}, - "to": {
- "account": {
- "type": "bban",
- "bban": 12341212345
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "telephoneNumber": "+4740000858",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}
}, - "amount": {
- "amount": 1000,
- "currency": "NOK"
}, - "dueDate": "2024-01-15",
- "remittanceInformation": {
- "type": "message",
- "value": "Payment for invoice 12345"
}, - "purposeCode": "SUPP"
}
{- "paymentId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "paymentStatus": {
- "status": "Unsigned",
- "statusReason": "PartlySigned",
- "statusReasonText": "string",
- "timestamp": "2024-03-19T09:34:57.657733682+01:00"
}
}
Start approval/signing process of a list of unsigned or partlySigned transactions. Can be both domestic and cross-border transactions.
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
payments required | Array of strings <uuid> non-empty unique [ items <uuid > ] |
callbackUrl required | string Sca callback url for redirect authentication |
preferredScaMethod | string Enum: "Redirect" "Qr" The preferred way to perform authorization. There is no guarantee that bank supports the preferred method. |
{- "payments": [
- "175be5fc-4185-4cf1-af70-df34ead1a9ec",
- "4b24e1e8-f2ba-4d84-86a4-f5d5e4ae9af7"
], - "preferredScaMethod": "Redirect"
}
{- "id": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "status": "STARTED",
- "sca": {
- "type": "qr",
- "qrImage": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
- "qrType": "Dynamic"
}
}
Retrieves latest payments status.
paymentId required | string <uuid> Example: 7c628b2e-9094-4bf8-af23-1d517c6fc4f5 Id received when creating the payment |
{- "status": "Unsigned",
- "statusReason": "PartlySigned",
- "statusReasonText": "string",
- "timestamp": "2024-03-19T09:34:57.657733682+01:00"
}
Approval status indicates the status of a started payment approval. If the QR Sca approach are used, this endpoint gives updated QR picture. This picture is only valid for a short time, so a new picture has to be fetched every 1 second. QR is only available in Sweden.
id required | string <uuid> Example: 7c628b2e-9094-4bf8-af23-1d517c6fc4f5 Id received when creating an approval for payments |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "id": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "status": "STARTED",
- "sca": {
- "type": "qr",
- "qrImage": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
- "qrType": "Dynamic"
}
}
Cancels a payment. May required approval (dependent on bank and payment status).
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
paymentId required | string Payment id to be cancelled |
callbackUrl required | string Callback url for redirect authentication |
preferredScaMethod | string Enum: "Redirect" "Qr" Prefered sca method. Qr only supported in Sweden. |
{- "paymentId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "preferredScaMethod": "Redirect"
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "sca": {
- "type": "qr",
- "qrImage": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
- "qrType": "Dynamic"
}, - "cancellationRequestStatus": "ACCEPTED",
- "currentPaymentStatus": {
- "status": "Cancelled",
- "statusReason": "PartlySigned",
- "statusReasonText": "string",
- "timestamp": "2024-03-19T09:34:57.657733682+01:00"
}, - "reason": null
}
Create a funding transaction for FX. This functionality is deprecated, use cross-border payment instead.
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
fxPaymentId required | string Id of the FX payment |
{- "fxPaymentId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5"
}
{- "paymentId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "paymentStatus": {
- "status": "Unsigned",
- "statusReason": "PartlySigned",
- "statusReasonText": "string",
- "timestamp": "2024-03-19T09:34:57.657733682+01:00"
}
}
Initiates a cross-border payment, this includes all transactions involving currency accounts. If the transaction requires exchange it will result in a psd2 domestic payment to ZTL's client account, these payment must be signed within deadline (2 or 5 minutes), if not it get automatically cancelled. Payments that do not require exchange will go through the bank as cross-border payments.
We request that when a cross-border is initiated and due date is today or tomorrow (if initiated after 16:00) that you give user a warning if balance is less than value of the payment. Reason for this warning is to remind those who are lacking funds that they do not have funds and to avoid the payment being delayed or in worst case cancelled.
See Country and Currencies endpoint supported countries, currencies and constraints.
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
required | object (PaymentMetadata) | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object (From) | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object (To) | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object (AmountAndCurrency) Amount and currency to be paid | ||||||||||||||||||||||
| |||||||||||||||||||||||
dueDate required | string <date> The due date for the psd2 transaction from user account to ZTL client account. Payout to creditor account are usually 2 business days later | ||||||||||||||||||||||
required | object | ||||||||||||||||||||||
| |||||||||||||||||||||||
object Information used for regulatory reporting, only applicable in Norway and Sweden. Required for payments above 100 000 NOK in Norway, and 150 000 SEK in Sweden. | |||||||||||||||||||||||
|
{- "metadata": {
- "endToEndId": "string"
}, - "from": {
- "account": {
- "type": "bban",
- "bic": "ESSESESS",
- "bban": 12341212345
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}, - "telephoneNumber": "+4740000858"
}, - "currency": "NOK"
}, - "to": {
- "account": {
- "type": "bban",
- "bic": "ESSESESS",
- "bban": 12341212345,
- "clearingCode": 1234
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}
}, - "amount": {
- "amount": 1000,
- "currency": "NOK"
}, - "dueDate": "2019-08-24",
- "remittanceInformation": {
- "message": "string",
- "additionalInformation": [
- {
- "type": "Reason",
- "value": "string"
}
]
}, - "regulatoryReporting": {
- "code": "14",
- "information": "string"
}
}
{- "paymentId": "string",
- "costAmount": {
- "amount": 1000,
- "currency": "NOK"
}, - "exchangeRate": 1.0346,
- "quoteExpiryTime": "2023-01-15T09:32:00+01:00",
- "intermediaryAccount": {
- "account": {
- "iban": "SE7250000000012341212345",
- "bban": 12341212345,
- "bic": "ESSESESS",
- "clearingCode": 1234
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Eriksbergsgatan",
- "buildingNumber": 10,
- "city": "Sweden",
- "postCode": 11430,
- "country": "SE"
}
}
}
}
Initiates a list of payments with started approval/signing. This endpoint is exclusively supported for banks that do not support single payments/approval - see banks supported products (PAYMENT_BULK). This is currently only supported by Danske Bank and Handelsbanken Sweden. The response gives a Id for the bulk status, which must be used in fetch status for bulk endpoint. This endpoint gives Id for the payments, which again can be used to fetch payment status. In some cases, the payment Ids are only available after the approval/signing process has completed.
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address required | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent required | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
required | Array of objects (CreatePayment) non-empty | ||||||||||||||
Array (non-empty)
| |||||||||||||||
callbackUrl required | string Sca callback url for redirect authentication |
{- "payments": [
- {
- "metadata": {
- "endToEndId": "73300aef-d849-4872-b0c6-f44e07a841f3"
}, - "from": {
- "account": {
- "type": "bban",
- "bban": 12341212345
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "telephoneNumber": "+4740000858",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}, - "currency": "NOK"
}, - "to": {
- "account": {
- "type": "bban",
- "bban": 12341212345
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "telephoneNumber": "+4740000858",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}
}, - "amount": {
- "amount": 1000,
- "currency": "NOK"
}, - "dueDate": "2024-01-15",
- "remittanceInformation": {
- "type": "message",
- "value": "Payment for invoice 12345"
}, - "purposeCode": "SUPP"
}
],
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "sca": {
- "type": "qr",
- "qrImage": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
- "qrType": "Dynamic"
}
}
Fetches the status of a bulk along with the individual payments.
bulkId required | string <uuid> Example: 7c628b2e-9094-4bf8-af23-1d517c6fc4f5 Id received when creating bulk payment |
consent-id required | string <uuid> Example: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9 A valid consentId |
PSU-IP-Address | string Example: 192.158.1.38 AAA IP Address of the end-user initiating the payment. DO NOT use any other IP address than what you can collect from the current user session that uses your system (don't use something stored in your DB). This information is used by the banks to manage traffic and handle security. |
PSU-User-Agent | string Example: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0 The forwarded Agent header field of the HTTP request between PSU and TPP. |
{- "bulkStatus": "CREATED",
- "transactions": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "endToEndId": "string"
}
]
}
Services related to companies. Retrieve information about onboarded companies, enable/disable compay and list supported company types.
Get list of all companies onboarded by the partner
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
[- {
- "organizationNumber": "string",
- "activeSubscription": true
}
]
Get list of supported company types
countryCode required | string Example: NO |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
[- {
- "code": "AS",
- "description": "Aksjeselskap"
}
]
Activate the subscription for the given company
countryCode required | string Example: NO |
organizationNumber required | string |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "type": "urn:quote-failed",
- "title": "Payment rejected",
- "detail": null,
- "instance": "/api/payments/56563af2-a199-44ec-92a1-d77eed2d8562/status"
}
Cancel the subscription for the given company
countryCode required | string Example: NO |
organizationNumber required | string |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "type": "urn:quote-failed",
- "title": "Payment rejected",
- "detail": null,
- "instance": "/api/payments/56563af2-a199-44ec-92a1-d77eed2d8562/status"
}
FX can either be used with or without bank integration. For bank integration, please see Flow for cross-border payment with bank integration
The partner is responsible to handle the domestic bank integration, or present the required payment instructions for domestic transaction to the user.
International payment validation request.
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
required | object Metadata for quote request | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object Information about the debtor | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object Information about the creditor | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object The amount and currency for the quote | ||||||||||||||||||||||
| |||||||||||||||||||||||
dueDate required | string <date, ISO-8601> The due date for the payment. NOTE: there are limitations on due date in the further | ||||||||||||||||||||||
required | object Remittance information | ||||||||||||||||||||||
| |||||||||||||||||||||||
purposeCode | string Deprecated A code stating the purpose of the payment. (Required by some countries). Deprecated - use Information.RemittanceInformation.AdditionalInformation (type - Purpose) instead |
{- "metadata": {
- "organizationCountryCode": "NO",
- "organizationNumber": 920970931,
- "endToEndId": "73300aef-d849-4872-b0c6-f44e07a841f3"
}, - "from": {
- "bban": 12341212345,
- "bic": "DNBANOKK",
- "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}, - "currency": "NOK",
- "country": "NO"
}, - "to": {
- "account": {
- "iban": "SE7250000000012341212345",
- "bban": 12341212345,
- "bic": "ESSESESS",
- "clearingCode": 1234
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Eriksbergsgatan",
- "buildingNumber": 10,
- "city": "Sweden",
- "postCode": 11430,
- "country": "SE"
}
}, - "currency": "SEK"
}, - "amount": {
- "amount": 1000,
- "currency": "SEK"
}, - "dueDate": "2023-01-15",
- "remittanceInformation": {
- "unstructured": "Payment for consulting services",
- "additionalInformation": [
- {
- "type": "Reason",
- "value": "string"
}
]
}, - "purposeCode": "S1008"
}
[- {
- "code": "InvalidFromAccount",
- "reason": "Invalid from account. From and to accounts must be different.",
- "path": ".from.bban"
}
]
International payment quote request
We request that when a fx payment is initiated and due date is today or tomorrow (if initiated after 16:00) that you give user a warning if balance is less than value of the payment before calling confirm. Reason for this warning is to remind those who are lacking funds that they do not have funds and to avoid the payment being delayed or in worst case cancelled.
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
required | object Metadata for quote request | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object Information about the debtor | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object Information about the creditor | ||||||||||||||||||||||
| |||||||||||||||||||||||
required | object The amount and currency for the quote | ||||||||||||||||||||||
| |||||||||||||||||||||||
dueDate required | string <date, ISO-8601> The due date for the payment. NOTE: there are limitations on due date in the further | ||||||||||||||||||||||
required | object Remittance information | ||||||||||||||||||||||
| |||||||||||||||||||||||
purposeCode | string Deprecated A code stating the purpose of the payment. (Required by some countries). Deprecated - use Information.RemittanceInformation.AdditionalInformation (type - Purpose) instead |
{- "metadata": {
- "organizationCountryCode": "NO",
- "organizationNumber": 920970931,
- "endToEndId": "73300aef-d849-4872-b0c6-f44e07a841f3"
}, - "from": {
- "bban": 12341212345,
- "bic": "DNBANOKK",
- "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Kristian IVs gate",
- "buildingNumber": 15,
- "city": "Oslo",
- "postCode": "0164",
- "country": "NO"
}
}, - "currency": "NOK",
- "country": "NO"
}, - "to": {
- "account": {
- "iban": "SE7250000000012341212345",
- "bban": 12341212345,
- "bic": "ESSESESS",
- "clearingCode": 1234
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Eriksbergsgatan",
- "buildingNumber": 10,
- "city": "Sweden",
- "postCode": 11430,
- "country": "SE"
}
}, - "currency": "SEK"
}, - "amount": {
- "amount": 1000,
- "currency": "SEK"
}, - "dueDate": "2023-01-15",
- "remittanceInformation": {
- "unstructured": "Payment for consulting services",
- "additionalInformation": [
- {
- "type": "Reason",
- "value": "string"
}
]
}, - "purposeCode": "S1008"
}
{- "quoteId": "d6f06bfe-4830-4358-b483-c24c66cfb431",
- "endToEndId": "7c628b2e-9094-4bf8-af23-1d517c6fc4f5",
- "requestedAmount": {
- "amount": 1000,
- "currency": "SEK"
}, - "costAmount": {
- "amount": 1034.62,
- "currency": "NOK"
}, - "exchangeRate": 1.0346,
- "quoteExpiryTime": "2023-01-15T09:32:00+01:00",
- "referenceCode": "ZTL-d6f06bfe",
- "intermediaryAccount": {
- "account": {
- "iban": "SE7250000000012341212345",
- "bban": 12341212345,
- "bic": "CITIXXXX"
}, - "contactInformation": {
- "name": "ZTL Payment Solution AS",
- "address": {
- "streetName": "Eriksbergsgatan",
- "buildingNumber": 10,
- "city": "Sweden",
- "postCode": 11430,
- "country": "SE"
}
}
}
}
International payment confirmation.
quoteId required | string quote id as for payment |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "paymentId": "0db94e47-858c-4486-a0e9-a453e4da025d",
}
Cross-border payment funding confirmation.
paymentId required | string paymentId for the payment to be confirmedPaid |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "paymentId": "0db94e47-858c-4486-a0e9-a453e4da025d",
}
International payment status inquiry.
paymentId required | string paymentId for the payment |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "status": "PaymentFailed",
- "message": "Technical error."
}
International payment funding payment confirmation.
paymentId required | string paymentId for the payment to cancel |
Authorization | string <Bearer JWT> Example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkE1NEZCQjFGRjgzRTZFRUFEQUI1MTg4QTJBMkVGRDhGNTUzMEUzNDkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJwVS03SF9nLWJ1cmF0UmlLS2k3OWoxVXc0MGsifQ.eyJuYmYiOjE1NjI4MzE1OTIsImV4cCI6MTU2MjgzNTE5MiwiaXNzIjoiaHR0cHM6Ly9vaWRjLnp0bC5zdGFjY2Zsb3cubmV0IiwiYXVkIjpbImh0dHBzOi8vb2lkYy56dGwuc3RhY2NmbG93Lm5ldC9yZXNvdXJjZXMiLCJ6dGwtYXBpIiwicG9ydGFsLWFwaSJdLCJjbGllbnRfaWQiOiJkZXZjbGllbnQiLCJzY29wZSI6WyJwYXltZW50cyIsInBvcnRhbC1hcGkiXX0.dJuDJNTsSBhQ_xmN3ruqbBZvJdyn2nUkUW3NEwbgXw_l-UA3_XRmtp16rWWdhMLbh-D_HywwG2a0h-MK2tX17C-ggsfp_pDxj8iy8aLleI3dY1qt0VkQY8rOw5_YtWa40HWwIBK9Ll8MqovwBK4lg9Pkq_KLGdkoz87n63QezS5u0JeWYJJnHFuY5ojX_M5szAdSYoVYOyvL0tr30ynxb3joglKrVWlkeawRZztRV4chFN00tlv_Tn54vDYOyDPtBWK6JpMVqhHla8a5JnslJu5dUP82qtgms_lFYOiR1oD2jaa-t0QTE6MVwspG3kwQBSSSZawe-9G4yEBg-nFSGg Bearer Authorization token - A JWT token used to authenticate the request. Please refer to the Authorization section of our docs. |
{- "message": "Payment not found.",
- "correlationId": "7757cdcb-128f-41ba-b3a6-58722e56b0f8"
}
Helper methods for cross-border payment support. This API can be used to give user interface for bank account format input, supported currencies and additional payment remittance information requirements.
Gives additional payment requirements per country. If the country additional remittance information, this information is mandatory.
country required | string 2-letters country code |
{- "countryCode": "SE",
- "countryName": "Sweden",
- "localCurrency": "NOK",
- "acceptedCurrencies": [
- "EUR"
], - "supportedBankAccountFormats": [
- {
- "type": "iban"
}
], - "paymentRequirements": [
- {
- "type": "additionalRemittanceInformationRequired",
- "description": "string",
- "requirementType": "PurposeCode",
- "pattern": "string",
- "validCodes": [
- {
- "code": "string",
- "description": "string"
}
], - "painArrayIndex": 0
}
]
}