PIS options

To get the PIS options, you have to call the following endpoint of your docker:


In those options, you will find multiple informations.

See PIS API section > Get PIS options > HTTP 200 response for details.

Checking if payment product is available

You can check if the payment product (domestic, SEPA, instant SEPA, cross border) and type (single, periodic or bulk) you want to use is available by checking the following structure like domesticTransfers.singlePayments.supported.

SpecificPaymentDate let you know if you can provide a date or not

  "domesticTransfers": {
    "singlePayments": {
      "supported": false,
      "cancelSupported": false,
      "specificPaymentDate": 0
    "periodicPayments": {
      "supported": false,
      "cancelSupported": false,
      "specificPaymentDate": 0
    "bulkPayments": {
      "supported": false,
      "cancelSupported": false,
      "specificPaymentDate": 0


Each payment product has a paymentInitiationRequestOptions which is the heart of your request. From this structure, you will know what data is optional or required, the supported schemes (IBAN or BBAN)...

Country and currency

Country must be supplied as two letters string from the ISO 3166-1 alpha-2 list like "FR", "NL", "PT"...

Currency must be spplied as three letters string from the ISO 4217 list like "EUR", "SEK", "USD"...

Fields constrains

To prevent values to be rejected by the bank, you can use the fields for constraints definition in options on debtor name, creditor name and remittance information fields for each payment product. E.g.:

options.{payment_product}.PaymentInitiationRequestOptions.Debtor.NameConstrains.MinLength = 1;
options.{payment_product}.PaymentInitiationRequestOptions.Debtor.NameConstrains.MaxLength = 40;
options.{payment_product}.PaymentInitiationRequestOptions.Debtor.NameConstrains.Regex = "^[a-zA-Z0-9-/:().,? '+]{1,40}$";
options.{payment product}.PaymentInitiationRequestOptions.Debtor.NameConstrains.AcceptedChars = "a-zA-Z0-9-/:().,? '+";

options.{payment_product}.PaymentInitiationRequestOptions.Recipient.NameConstrains.MinLength = 1;
options.{payment_product}.PaymentInitiationRequestOptions.Recipient.NameConstrains.MaxLength = 40;
options.{payment_product}.PaymentInitiationRequestOptions.Recipient.NameConstrains.Regex = "^([a-zA-Z0-9?:'\\/\\()+, \\-\\.áâäàåãÄÅÁÂÀÃÇçêëèéÊËÈÉïîìíÍÎÏÌôöòõóÓÖÔÒÕûùúüÚÛÙÜñÑýÝÿ]{1,40})$";
options.{payment_product}.PaymentInitiationRequestOptions.Recipient.NameConstrains.AcceptedChars = "a-zA-Z0-9?:'\\/\\()+, \\-\\.áâäàåãÄÅÁÂÀÃÇçêëèéÊËÈÉïîìíÍÎÏÌôöòõóÓÖÔÒÕûùúüÚÛÙÜñÑýÝÿ";

options.{payment_product}.PaymentInitiationRequestOptions.RemittanceInformationUnstructuredConstrains.MinLength = 1;
options.{payment_product}.PaymentInitiationRequestOptions.RemittanceInformationUnstructuredConstrains.MaxLength = 140;
options.{payment_product}.PaymentInitiationRequestOptions.RemittanceInformationUnstructuredConstrains.Regex = "^([a-zA-Z0-9?:'\\/\\()+, \\-\\.áâäàåãÄÅÁÂÀÃÇçêëèéÊËÈÉïîìíÍÎÏÌôöòõóÓÖÔÒÕûùúüÚÛÙÜñÑýÝÿ]{1,140})$";
options.{payment_product}.PaymentInitiationRequestOptions.RemittanceInformationUnstructuredConstrains.AcceptedChars = "a-zA-Z0-9?:'\\/\\()+, \\-\\.áâäàåãÄÅÁÂÀÃÇçêëèéÊËÈÉïîìíÍÎÏÌôöòõóÓÖÔÒÕûùúüÚÛÙÜñÑýÝÿ";

MinLength, MaxLength and AcceptedChars could be used to display the constraints to the end-user. Keep in mind that the space character, if present, may not be so much visible in the displayed string.

We don't have constrains for all the connectors and, for the one we have, we don't have necessarily all the constrains. So be prepared to null valued fields.


see specific page


Let you know if you can get the list of payment accounts without obtaining a consent for later use for balances and transactions.

This can be useful to let the user select the account instead of manually typing the IBAN. The PSU will have to login to the bank to get the list and, if allowed by the bank, we reuse this login for the payment you may do just after to prevent the PSU to login again. He will only have to validate the payment.