Initiate bulk payment(s)
curl --request POST \ --url https://api.ztlpay.io/api/v2/payments/bulk \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'PSU-IP-Address: 192.158.1.38' \ --header 'PSU-User-Agent: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0' \ --header 'consent-id: 3a797348-ef0c-4f52-b821-fdfcdb98c4d9' \ --data '{ "payments": [ { "type": "domestic", "metadata": { "endToEndId": "73300aefd8494872b0c6f44e07a841f3" }, "from": { "account": { "type": "bban", "bban": 97105048304 }, "contactInformation": { "name": "ZTL Payment Solution AS", "telephoneNumber": "+4740000858", "address": { "streetName": "Akersgata", "buildingNumber": "32", "city": "Oslo", "postCode": "0180", "country": "NO" } }, "currency": "NOK", "organizationNumber": 920970931 }, "to": { "account": { "type": "bban", "bban": 97105048304 }, "contactInformation": { "name": "ZTL Payment Solution AS", "telephoneNumber": "+4740000858", "address": { "streetName": "Akersgata", "buildingNumber": "32", "city": "Oslo", "postCode": "0180", "country": "NO" } } }, "amount": { "amount": "1000.50", "currency": "NOK" }, "dueDate": "2024-01-15", "remittanceInformation": { "type": "fik", "paymentType": "TYPE_01", "message": "Message for receiver", "ocr": 0, "debtorReference": "example" }, "purposeCode": "SUPP" } ], "callbackUrl": "https://www.google.com" }'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 an 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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Example
3a797348-ef0c-4f52-b821-fdfcdb98c4d9A valid consentId
Example
192.158.1.38AAA 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.
The forwarded Agent header field of the HTTP request between PSU and TPP.
Example
Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/63.0Request Body
Section titled “Request Body”object
object
Metadata for the payment
object
An ID that can be used to identify the payment
Example
73300aefd8494872b0c6f44e07a841f3Account information for debtor
object
object
The name of the organization
Example
ZTL Payment Solution ASPhone number for the organization
Example
+4740000858Address information for payee
object
Street name
Example
AkersgataBuilding number
Example
32City or town name
Example
OsloPost code
Example
0180Country
Example
NOCurrency on from account
Example
NOKOrganization number for the company
Example
920970931Account information for creditor
object
object
Account number
Example
97105048304object
Example
SE7250000000012341212345object
Example
12345678Swedish giro, used for either BankGiro or PlusGiro. Requires RemittanceInformation of either message (invoiceRef) or ocr (giroOcrReference)
object
Reference to a Swedish BankGiro or PlusGiro account
Example
123-4567object
The name of the organization
Example
ZTL Payment Solution ASPhone number for the organization
Example
+4740000858Address information for payee
object
Street name
Example
AkersgataBuilding number
Example
32City or town name
Example
OsloPost code
Example
0180Country
Example
NOAmount and currency to be paid
object
Amount to be paid
Example
1000.50The currency the amount is specified in
Example
NOKThe due date for the payment
Example
2024-01-15Remittance information, either OCR or Text message
RemittanceInformationMessageText message, will be visible to receiver. Typically order number or description for paymentRemittanceInformationOcrOCR must be used if the receiving account is OCR account.RemittanceInformationFikFIK, only used in Denmark
object
Message for receiver
Example
Payment for invoice 12345Reference text or message intended for display to the debtor only. It can be used to provide debtor-facing payment details or context. Availability depends on bank support and is included only when accepted by the receiving institution.
Remittance information, either OCR or Text message
RemittanceInformationMessageText message, will be visible to receiver. Typically order number or description for paymentRemittanceInformationOcrOCR must be used if the receiving account is OCR account.RemittanceInformationFikFIK, only used in Denmark
object
Please use ‘ocr’, ‘kid’ are deprecated
Example
24646Reference text or message intended for display to the debtor only. It can be used to provide debtor-facing payment details or context. Availability depends on bank support and is included only when accepted by the receiving institution.
Remittance information, either OCR or Text message
RemittanceInformationMessageText message, will be visible to receiver. Typically order number or description for paymentRemittanceInformationOcrOCR must be used if the receiving account is OCR account.RemittanceInformationFikFIK, only used in Denmark
object
Example
Message for receiverExample
0Reference text or message intended for display to the debtor only. It can be used to provide debtor-facing payment details or context. Availability depends on bank support and is included only when accepted by the receiving institution.
Purposecode for payment
object
object
External EndToEndId for the payment
object
object
Bank Identification Code
Example
ESSESESSBank Account number in Bban format
Example
12341212345object
The name of the organization.
Maximum length depends on whether the payment includes currency exchange:
- Without currency exchange: check debtor bank maxInformationFieldLength requirements
- With currency exchange: 70 characters
Example
ZTL Payment Solution ASAddress information for payee
object
Street name
Example
AkersgataBuilding number
Example
32City or town name
Example
OsloPost code
Example
0180Country
Example
NOPhone number for the organization
Example
+4740000858Sender accounts Currency
Example
NOKOrganization number for the company
Example
920970931object
object
Bank Identification Code
Example
ESSESESSBank Account number in Bban format
Example
12341212345Code required for payments to certain countries
Example
1234object
Bank Identification Code
Example
ESSESESSBank account number in Iban format.
Example
SE7250000000012341212345object
The name of the organization.
Maximum length depends on whether the payment includes currency exchange:
- Without currency exchange: check debtor bank maxInformationFieldLength requirements
- With currency exchange: 70 characters
Example
ZTL Payment Solution ASAddress information for payee
object
Street name
Example
AkersgataBuilding number
Example
32City or town name
Example
OsloPost code
Example
0180Country
Example
NOAmount and currency to be paid
object
Amount to be paid
Example
1000.50The currency the amount is specified in
Example
NOKThe due date for the psd2 transaction from user account to ZTL client account. Payout to creditor account are usually 2 business days later
object
object
Type of additional information. Must be compliant with receiving country rules
ReasonText to describe the reason for paymentPurposeA valid PurposeCode of the paymentTaxCodeReceiver Tax code
Example
ReasonValue of the property
Reference text or message intended for display to the debtor only. It can be used to provide debtor-facing payment details or context. Availability depends on bank support and is included only when accepted by the receiving institution.
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.
object
Code used for regulatory reporting
Example
14Information for regulatory reporting, only applicable in Norway
Sca callback url for redirect authentication
Example
https://www.google.comResponses
Section titled “Responses”Bulk created successfully
object
ID of bulk
There is no guarantee that the used sca approach used by bank matches the preferred sca approach from request.
redirectFor redirect, the end user must use the redirect url to start the authentication processqrThe QR image has to be presented to the end user, who has to scan the image with bank authentication app. The qr image needs to be refreshed every second, see approval status for refreshed QR image. Only used in Sweden
object
object
Redirect link to redirect authorization flow. After the redirect, the url will contain the query parameter status, with the possible values [success, rejected, cancelled]
Url to start authorization redirect flow
object
Qr image, used with bank app to scan image for authentication
Qr code which can be used to generate Qr image. Can be used to customize image. Might not be available for all banks.
Qr code as image, base64 encoded
DynamicDynamic image, valid for 1 sec. Must be refreshed by fetching updated approval status.StaticStatic image, valid for a longer period dependent on bank. Usually 30 seconds.
object
Id of the transaction
EndToEndId as used in initial request
Cost amount
object
Amount to be paid
The currency the amount is specified in
The exchange rate
Expiry time for quote
The Client account for the funding domestic psd2 transaction related to the payment. Account owned by ZTL.
object
Account information for creditor. Required fields depend on creditorCountry, but bban or iban should always be present.
object
International Bank Account Number
Basic Bank Account Number
Bank Identification Code
Code required for payments to certain countries
Creditor contact information
object
The name of the organization making the payment
The address of the organization making the payment
object
Street name
Building number
City or town name
Post code
Country
Example
{ "sca": { "type": "redirect", "url": "https://api.ztlpay.io/api/v2/consents/sca/redirect/start/6212d401-1785-4739-8843-55fe4eb9dad4" }, "transactions": [ { "costAmount": { "amount": "1000.50", "currency": "NOK" }, "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" } } } } ]}Bad Request
object
INVALID_CONSENTConsent is invalidAUTHENTICATION_TEMPORARY_UNAVAILABLEAuthentication service is temporary unavailable, most likely due to user already has started another concurrent authentication processUNSUPPORTED_PRODUCT_BY_BANKProduct is not supported by bankINVALID_OCROCR is either missing or invalid, or invalid OCR agreementACCESS_DENIEDPSU does not have access to resource. Ensure debtorAccount is correct and user have payment access to account.
Unique RequestId, please provide this Id in case of support requests
The underlying reason for the error
Example
{ "failure": "INVALID_CONSENT", "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9", "message": "Invalid Bban"}Forbidden
object
Unique RequestId, please provide this Id in case of support requests
The underlying reason for the error
Example
{ "failure": "COMPANY_DISABLED_FOR_INTERNATIONAL_PAYMENTS", "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9", "message": "Invalid account"}Not found
object
Unique RequestId, please provide this Id in case of support requests
The underlying reason for the error
Example
{ "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9", "message": "Invalid account"}Headers
Section titled “Headers”Unique RequestId, please provide this Id in case of support requests
Example
3a797348-ef0c-4f52-b821-fdfcdb98c4d9Conflict
object
Unique RequestId, please provide this Id in case of support requests
The underlying reason for the error
Example
{ "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9", "message": "Invalid account"}Headers
Section titled “Headers”Unique RequestId, please provide this Id in case of support requests
Example
3a797348-ef0c-4f52-b821-fdfcdb98c4d9Bulk input validation fails
object
The error code
The underlying reason for the error
Path for the error
End-to-end identifier of the payment that failed validation, when available
Example
[ { "code": "InvalidBBAN", "reason": "EndToEndId must be unique within the same bulk", "path": ".payments", "endToEndId": "197102754228134604603270233998" }]Internal server error
object
Unique RequestId, please provide this Id in case of support requests
The underlying reason for the error
Example
{ "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9", "message": "Invalid account"}Headers
Section titled “Headers”Unique RequestId, please provide this Id in case of support requests
Example
3a797348-ef0c-4f52-b821-fdfcdb98c4d9Service unavailable
object
Unique RequestId, please provide this Id in case of support requests
The underlying reason for the error
Example
{ "ztlRequestId": "3a797348-ef0c-4f52-b821-fdfcdb98c4d9", "message": "Invalid account"}Headers
Section titled “Headers”Unique RequestId, please provide this Id in case of support requests
Example
3a797348-ef0c-4f52-b821-fdfcdb98c4d9