/pé nɛ́kst/

Quick Start

Click on this link:  Open Sandbox. Click the "Authorize" button (top right) and choose AIS, PIS or both. Click "Authorize" again and then "Close"   ​​

Account Information Service and Consents
  1. Obtain a Consent by opening the Consent API and choosing  POST to /external/psd2/v1/consents
  2. Click "Try it out"
  3. Enter required data (TPP-Redirect-URI and validUntil must be filled in )
  4. Click "Execute" and if all is OK you should receive back a 201 response with the JSON elements:
    "consentId": "99bd81d5-1d41-41d9-af6a-a3848df831c2"
    "scaRedirect": { "href": "http://99.80.138.27:8080/ui/consents/sign/99bd81d5-1d41-41d9-af6a-a3848df831c2" }
  5. Extract the href and paste it into a browser (the consentId will be needed later). 
  6. You will see a simulated PAY-NXT login page. Choose either User1 (one account) or User2 (two accounts)
  7.  You are then redirected to the simulated consent signing page. Choose "Sign Consent"  
  8. You will then be redirected back to the TPP-Redirect-URI you entered earlier. You need to implement this webpage but for now you can use anything like https:\\www.google.com
  9. Go back to the Swagger-UI page and choose one of the AIS GET items and choose "Try it out"
  10. The Consent-ID to use is the one saved earlier: 99bd81d5-1d41-41d9-af6a-a3848df831c2 
  11. Click "Execute" and if all is OK you should receive back a 200 response with the  Account Information requested.

Payment Intitiation Service
  1. Initiate a payment opening one of the Payment Initiation POST requests
  2. Click "Try it out"
  3. Optionally modify the default data for example the:  TPP-Redirect-URI
  4. Press  Execute and if all is OK you should receive back a 201 response with the JSON elements: 
    "scaRedirect":{"href":"http://99.80.138.27:8080/ui/payments/a3bd7cd8-c14b-45e0-8a4b-5bfb9eadd4b8"},
    "status":{"href":"http://99.80.138.27:8080/external/psd2/v1/payments/sepa-credit-transfers/a3bd7cd8-c14b-45e0-8a4b-5bfb9eadd4b8/status"}


  5. Extract the scaRedirect href and paste it into a browser. It is also possible to call the status URL but you must provide an Authorization header with a Bearer Token (it is easier to use the Swagger-UI for this).
  6. This URL is the Sandbox PSU payment authorization screen, click the "Its me" logo to authorize the payment (at this point the PSU will be identified using "Itsme" or another SCA).
  7. You will then be redirected back to the TPP-Redirect-URI you entered earlier. You need to implement this webpage but for now you can use anything like https:\\www.google.com
  8. From this webpage you can query the status of the payment (whether the PSU Authorized or Cancelled) 

Payment Initiation Status Service
Once a payment has been initiated it is possible to query the status using the status href returned in the response of the Payment Initiation request. This is possible with the Swagger-UI using the GET under the Payment Initiation Service. You need to use the PaymentId provided in the response above.
Response will be a simple JSON with the status {"transactionStatus":"ACSP"}. Only a limited number of Statuses are supported, See details below.

Sandbox Details

Sandbox API

The  PAY-NXT sandbox is based on the Berlin Group API with some small modifications that are detailed in this document. It is generated from the Open-API YAML file provided by the Berlin Group using the OPEN-API generator. Swagger-UI is used to provide a convenient GUI to the sandbox environment. 

TPP Registration

Currrently PAY-NXT does not require TPP registration. This may change in future

TPP Authentication/Authorization

Sandbox TPP authentication uses a username/password based login integrated in Swagger UI.  The credentials are not checked and the response delivers a JWT containing claims based on the authorizations requested (AIS PIS). 
The AIS claim is required to access Account Information and Consent Services. The PIS claim is required for Payment Initiation and Status services.

Sandbox Fixed Data

The Sandbox contains 2 PSUs: User 1 and User 2. PSU authentication is simulated by clicking on the button User 1 or User 2 ( during the Consent process for example). User 1 and User 2 have the following IBANS. The data is fixed: i t is not changed by making Payments or anything else. 

PSU John IBANs
     BE52504001001109
     BE52504001001339

PSU Emma IBAN
     BE52504001001556


          

Sandbox Consent  Data

Consents are saved and can be used to retrieve Account Information. They can also be revoked. To update a consent it is sufficient for the PSU to grant a new consent. The existing consent is automatically revoked. Consents are based on the Consent-Id and should be provided when accessing Account Information.

Note Consent data may or may not be stored long term. This data is currently stored in memory and will be lost when the sandbox is restarted.

Sandbox Payment Initiation Data

Payment Initiation Requests are saved and the status is available for a  Payment Initiation Status request using the URI provided in the original Payment Initiation request.


Note Payment Initiation data may or may not be stored long term. This data is currently stored in memory and will be lost when the sandbox is restarted.

Sandbox Payment Initiation Status

The following statuses from the Berlin Group API spec a re supported: 

RCVD: 'Received'
Payment initiation has been received.

ACTC: 'AcceptedTechnicalValidation'
Authentication and syntactical and semantical validation are successful payment will be executed later

CANC: 'Cancelled' 
Payment initiation has been cancelled before execution.

ACFC: 'AcceptedFundsChecked'
Preceding check of technical validation and customer profile was successful and an automatic funds check was positive.


​​API Additional Information, Limitations and Notes​​

IBAN required

Consent creation and Payment Initiation Requests require the IBAN to be provided when making the initial request.
We do not yet support issuing consents without specifying the IBAN. This may change in future.


Payment Services  Supported
For Payment Intiation  we support two payment services from the Berlin Group: payments and bulk-payments. (periodic-payments are not supported).

Payment Products  Supported
For Payment Intiation  we support only the sepa-credit-transfers  payment product.

Address
We have adopted a simplified Address Strucutre that aligns well with SEPA file exchange.  for example
"creditorAddress": { "addressLine1": "Rue de Bruxelles, 60", "addressLine2": "1040 Etterbeek", "country": "BE" }

​​Swagger API specification

API Integration

Although we use the Berlin Group API we have removed some (not all)  of the optional features that we don't support to simplify the API for integration purposes. 

The modifiied (Swagger 2) API definition in JSON format can be found here: http://99.80.138.27:8080/v2/api-docs
It is possible to generate a client API using this definition. 

Relaxed API binding
When validating requests we ignore any  fields that we don't recognize so be careful with the request element names which are case sensitive.
We will add more functionality over time so you should also ignore fields in the response that you do not recognize.