VoP Account Data Management

Account Data Management

API Reference

This API specification is a draft, pending the publication of the EPC rulebook first definitive version in September to incorporate minor necessary changes.

This API based service is provided to responding PSPs participating in the Worldline VoP Hub ecosystem. It allows responding PSPs to manage account holder identification data via the Worldline VoP Hub. It allows the Hub to use this locally stored data to provide answers to requesting PSPs, verifying the identity of payee for their payer user (Requester).

The data of the responding PSP is maintained and secured by Worldline on a mutualized infrastructure in the public cloud. Logical segregation and at rest data encryption is in place.

Features

The service, offers a CRUD real time interface to manage account holder identification data for the responding PSP.

The API supports storing multiple names, as well as additional identifiers when supported by the responding bank.

File based account data management

For clients wanting to avoid API integration, Worldline can put in place file based daily upload and updates of account holder identification data via CSV or JSON formats (see API format for bulk creation), transferred via dedicated SFTP channels, and via manual upload in our Backoffice in the future.  

API Security

  • Authentication: The Worldline VoP Hub uses an authentication service that adheres to the OIDC standard protocol. 
    For enhanced security, the client must present a (qualified) SSL certificate to authenticate and sign token requests with a (qualified) seal certificate.
  • Secure Communication: All communications utilize MTLS with TLS 1.2 or higher, ensuring that data in transit is secure.
  • Data Integrity: Each API request and response is signed using a detached JWS signature, ensuring the integrity and authenticity of the data exchanged. 
Enable "on this page" menu on doc section
Off

REST API V2 - 2.21.0

REST API V2 - 2.21.0

Version 2.19.0 to 2.21.0

What's New

POST /issuers/{issuerId}/cards/{cardReference}/validate-cvv

Validate the CVV

POST /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/validate-cvv

Validate the CVV by external reference

GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/turnovers

Retrieve list of turnover for an account by external reference (beta)

The API returns current and historical turnover list of an account (for a monthly or annual turnover) according to turnover typ

GET /issuers/{issuerId}/accounts/{accountReference}/turnovers

Retrieve list of turnover for an account (beta)

The API returns current and historical turnover list of an account (for a monthly or annual turnover) according to turnover type

What's Changed

GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/balance
Response:
  • Changed property data (object AccountBalance)
    • Added property previousCycleBalance (object)
    • Added property remainingAmountDue (object)
GET /issuers/{issuerId}/accounts/{accountReference}/balance

Response:

  • Changed property data (object AccountBalance)
    • Added property previousCycleBalance (object)
    • Added property remainingAmountDue (object)
GET /issuers/{issuerId}/accounts/{accountReference}/reserves
Response:
  • Changed property data (object -> array)
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/reserves
Response:
  • Changed property data (object -> array)
PATCH /issuers/{issuerId}/cards/{cardReference}/blocking-information
Request body :
  • Added property fraudProcess (string)
PATCH /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/blocking-information
Request body :
  • Added property fraudProcess (string)
POST /issuers/{issuerId}/cards/update-all-blocking-information
Request body :
  • Added property fraudProcess (string)
POST /issuers/{issuerId}/cards/update-all-blocking-information
Response:
  • Changed property data (array -> object)
POST /issuers/{issuerId}/credit-transfers
Request body :
  • Added property dueDate (string)
PATCH /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}
Request body :
  • Added property dunningCaseStatus (string)
  • Added property collectionCaseStatus (string)
PATCH /issuers/{issuerId}/accounts/{accountReference}
Request body :
  • Added property dunningCaseStatus (string)
  • Added property collectionCaseStatus (string)
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/statements/last/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/statements/next/operations

Response:

  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/statements/{cycleClosureDate}/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/{accountReference}/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/{accountReference}/statements/last/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/{accountReference}/statements/next/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
GET /issuers/{issuerId}/accounts/{accountReference}/statements/{cycleClosureDate}/operations
Response:
  • Changed property data (array)
    • Changed items (object Operation)
      • Changed property acquisitionMaterial (string)
        Added enum value:
        • MOBILE
POST /issuers/{issuerId}/cards/block-all
Request body :
  • New optional properties:
    • blockingReason
POST /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/block
Request body :
  • New optional properties:
    • blockingReason
POST /issuers/{issuerId}/cards/{cardReference}/block
Request body :
  • New optional properties:
    • blockingReason
PATCH /issuers/{issuerId}/cards/{cardReference}/blocking-information
Request body :
  • New optional properties:
    • blockingReason
PATCH /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/blocking-information
Request body :
  • New optional properties:
    • blockingReason
GET /issuers/{issuerId}/transactions/{transactionId}
Response:
  • Changed property data (object Transaction)
    • Added property virtualServiceCardNumber (string)
    • Added property multipleClearingSequenceCount (integer)
    • Added property processorId (string)
PATCH /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}
Request body :
  • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}
Response:
  • Changed property data (object Account)
    • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/account-guarantor
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/account-owner
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
PATCH /issuers/{issuerId}/accounts/{accountReference}
Request body :
  • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/accounts/{accountReference}
Response:
  • Changed property data (object Account)
    • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/accounts/{accountReference}/account-guarantor
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
GET /issuers/{issuerId}/accounts/{accountReference}/account-owner
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
GET /issuers/{issuerId}/card-contracts/external-card-contracts/{issuerCardContractExternalReference}/cardholder
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
GET /issuers/{issuerId}/card-contracts/{cardContractReference}/cardholder
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
GET /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/card-events
Parameters:

Changed: eventType in query

GET /issuers/{issuerId}/cards/{cardReference}/card-events
Parameters:

Changed: eventType in query

GET /issuers/{issuerId}/contracts/external-contracts/{issuerContractExternalReference}/contract-owner
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
GET /issuers/{issuerId}/contracts/{contractReference}/contract-owner
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
PUT /issuers/{issuerId}/customers/external-customers/{issuerCustomerExternalReference}
Request body :
  • Added property correspondenceName (string)
PATCH /issuers/{issuerId}/customers/external-customers/{issuerCustomerExternalReference}
Request body :
  • Added property correspondenceName (string)
GET /issuers/{issuerId}/customers/external-customers/{issuerCustomerExternalReference}
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
PUT /issuers/{issuerId}/customers/{customerReference}
Request body :
  • Added property correspondenceName (string)
PATCH /issuers/{issuerId}/customers/{customerReference}
Request body :
  • Added property correspondenceName (string)
GET /issuers/{issuerId}/customers/{customerReference}
Response:
  • Changed property data (object Customer)
    • Added property correspondenceName (string)
POST /search-transactions
Request body :
  • Added property virtualServiceCardNumber (string)
Response:
  • Changed property data (array)
    • Changed items (object Transaction)
      • Added property virtualServiceCardNumber (string)
POST /issuers/{issuerId}/contracts/{contractReference}/replace-customer
Request body :
  • New required properties:

    • previousCustomerIdentifier
    • targetCustomer
  • Changed property targetCustomer (object ReplaceCustomerInContractRequest.TargetCustomer)

    • Changed property newCustomer (object ReplaceCustomerInContractRequest.Customer)
      • New required properties:

        • addresses
        • firstName
        • lastName
      • Changed property addresses (array)

        • Changed items (object ReplaceCustomerInContractRequest.Address)
          • New required properties:
            • addressLabel
            • addressType
POST /issuers/{issuerId}/contracts/external-contracts/{issuerContractExternalReference}/replace-customer
Request body :
  • New required properties:

    • previousCustomerIdentifier
    • targetCustomer
  • Changed property targetCustomer (object ReplaceCustomerInContractRequest.TargetCustomer)

    • Changed property newCustomer (object ReplaceCustomerInContractRequest.Customer)
      • New required properties:

        • addresses
        • firstName
        • lastName
      • Changed property addresses (array)

        • Changed items (object ReplaceCustomerInContractRequest.Address)
          • New required properties:
            • addressLabel
            • addressType
POST /issuers/{issuerId}/companies
Request body :
  • Changed property addresses (array)
    • Changed items (object CreateConsumerContractRequest.Address)
      • Changed property addressUsages (array)
        • Changed items (object CreateConsumerContractRequest.AddressUsage)
          • Added property entityRequestCorrelationId (string)
          • Added property entityType (string)
POST /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/block-and-replace
Request body :
  • Changed property blockCardRequest (object BlockCardRequest)

    • New optional properties:
      • blockingReason
  • Changed property replaceCardRequest (object ReplaceCardRequest)

    • Changed property cardContract (object ReplaceCardRequest.CardContract)
      • Changed property cardHolder (object ModifyCustomerRequest)
        • Added property correspondenceName (string)
POST /issuers/{issuerId}/cards/external-cards/{issuerCardExternalReference}/replace
Request body :
  • Changed property cardContract (object ReplaceCardRequest.CardContract)
    • Changed property cardHolder (object ModifyCustomerRequest)
      • Added property correspondenceName (string)
POST /issuers/{issuerId}/cards/{cardReference}/block-and-replace
Request body :
  • Changed property blockCardRequest (object BlockCardRequest)

    • New optional properties:
      • blockingReason
  • Changed property replaceCardRequest (object ReplaceCardRequest)

    • Changed property cardContract (object ReplaceCardRequest.CardContract)
      • Changed property cardHolder (object ModifyCustomerRequest)
        • Added property correspondenceName (string)
POST /issuers/{issuerId}/cards/{cardReference}/replace
Request body :
  • Changed property cardContract (object ReplaceCardRequest.CardContract)
    • Changed property cardHolder (object ModifyCustomerRequest)
      • Added property correspondenceName (string)
GET /issuers/{issuerId}/contracts/external-contracts/{issuerContractExternalReference}/accounts
Response:
  • Changed property data (array)
    • Changed items (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/contracts/{contractReference}/accounts
Response:
  • Changed property data (array)
    • Changed items (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/customers
Response:
  • Changed property data (array)
    • Changed items (object Customer)
      • Added property correspondenceName (string)
GET /issuers/{issuerId}/customers/external-customers/{issuerCustomerExternalReference}/accounts
Response:
  • Changed property data (array)
    • Changed items (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/customers/{customerReference}/accounts
Response:
  • Changed property data (array)
    • Changed items (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/contract
Response:
  • Changed property data (object Contract)
    • Changed property accounts (array)
      • Changed items (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
GET /issuers/{issuerId}/accounts/{accountReference}/contract
Response:
  • Changed property data (object Contract)
    • Changed property accounts (array)
      • Changed items (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
GET /issuers/{issuerId}/card-contracts/external-card-contracts/{issuerCardContractExternalReference}/contract
Response:
  • Changed property data (object Contract)
    • Changed property accounts (array)
      • Changed items (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
GET /issuers/{issuerId}/card-contracts/{cardContractReference}/contract
Response:
  • Changed property data (object Contract)
    • Changed property accounts (array)
      • Changed items (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
GET /issuers/{issuerId}/corporate-contracts/{contractReference}/corporate-employee-accounts/{accountReference}
Response:
  • Changed property data (object CorporateEmployeeAccount)
    • Changed property account (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/corporate-contracts/{contractReference}/corporate-employee-accounts/external-accounts/{issuerAccountExternalReference}
Response:
  • Changed property data (object CorporateEmployeeAccount)
    • Changed property account (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/corporate-contracts/external-contracts/{issuerContractExternalReference}/corporate-employee-accounts/external-accounts/{issuerAccountExternalReference}
Response:
  • Changed property data (object CorporateEmployeeAccount)
    • Changed property account (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/corporate-contracts/external-contracts/{issuerContractExternalReference}/corporate-employee-accounts/{accountReference}
Response:
  • Changed property data (object CorporateEmployeeAccount)
    • Changed property account (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/contracts/external-contracts/{issuerContractExternalReference}
Response:
  • Changed property data (object Contract)
    • Changed property accounts (array)
      • Changed items (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
GET /issuers/{issuerId}/contracts/{contractReference}
Response:
  • Changed property data (object Contract)
    • Changed property accounts (array)
      • Changed items (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
GET /issuers/{issuerId}/corporate-contracts/{contractReference}
Response:
  • Changed property data (object CorporateContract)
    • Changed property rootAccount (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
    • Changed property corporateContractEntities (array)
      • Changed items (object CorporateContractEntity)
        • Changed property account (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property corporateEmployeeAccounts (array)
      • Changed items (object CorporateEmployeeAccount)
        • Changed property account (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/corporate-contracts/external-contracts/{issuerContractExternalReference}
Response:
  • Changed property data (object CorporateContract)
    • Changed property rootAccount (object Account)
      • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property contractCustomers (array)
      • Changed items (object Customer)
        • Added property correspondenceName (string)
    • Changed property corporateContractEntities (array)
      • Changed items (object CorporateContractEntity)
        • Changed property account (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property corporateEmployeeAccounts (array)
      • Changed items (object CorporateEmployeeAccount)
        • Changed property account (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
POST /issuers/{issuerId}/contracts/create-consumer-contract
Request body :
  • Changed property customers (array)
    • Changed items (object CreateConsumerContractRequest.Customer)
      • Added property correspondenceName (string)
      • Changed property addresses (array)
        • Changed items (object CreateConsumerContractRequest.Address)
          • Changed property addressUsages (array)
            • Changed items (object CreateConsumerContractRequest.AddressUsage)
              • Added property entityRequestCorrelationId (string)
              • Added property entityType (string)
  • Changed property addCardsAccounts (object CreateConsumerContractRequest.AddCardsAccounts)
    • Changed property accounts (array)
      • Changed items (object CreateConsumerContractRequest.Account)
        • Added property accountOutgoingCreditTransferFeature (object)
    • Changed property cardContracts (array)
      • Changed items (object CreateConsumerContractRequest.CardContract)
        • Added property requestCorrelationId (string)
POST /issuers/{issuerId}/contracts/external-contracts/{issuerContractExternalReference}/add-cards-accounts
Request body :
  • Changed property customers (array)
    • Changed items (object CreateConsumerContractRequest.Customer)
      • Added property correspondenceName (string)
      • Changed property addresses (array)
        • Changed items (object CreateConsumerContractRequest.Address)
          • Changed property addressUsages (array)
            • Changed items (object CreateConsumerContractRequest.AddressUsage)
              • Added property entityRequestCorrelationId (string)
              • Added property entityType (string)
  • Changed property accountHierarchy (object AddCardsAccountsRequest.AccountHierarchy)
    • Changed property accounts (array)
      • Changed items (object CreateConsumerContractRequest.Account)
        • Added property accountOutgoingCreditTransferFeature (object)
  • Changed property cardContracts (array)
    • Changed items (object CreateConsumerContractRequest.CardContract)
      • Added property requestCorrelationId (string)
POST /issuers/{issuerId}/contracts/search
Response:
  • Changed property data (array)
    • Changed items (object Contract)
      • Changed property accounts (array)
        • Changed items (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property contractCustomers (array)
        • Changed items (object Customer)
          • Added property correspondenceName (string)
POST /issuers/{issuerId}/contracts/{contractReference}/add-cards-accounts
Request body :
  • Changed property customers (array)
    • Changed items (object CreateConsumerContractRequest.Customer)
      • Added property correspondenceName (string)
      • Changed property addresses (array)
        • Changed items (object CreateConsumerContractRequest.Address)
          • Changed property addressUsages (array)
            • Changed items (object CreateConsumerContractRequest.AddressUsage)
              • Added property entityRequestCorrelationId (string)
              • Added property entityType (string)
  • Changed property accountHierarchy (object AddCardsAccountsRequest.AccountHierarchy)
    • Changed property accounts (array)
      • Changed items (object CreateConsumerContractRequest.Account)
        • Added property accountOutgoingCreditTransferFeature (object)
  • Changed property cardContracts (array)
    • Changed items (object CreateConsumerContractRequest.CardContract)
      • Added property requestCorrelationId (string)
GET /issuers/{issuerId}/customers/external-customers/{issuerCustomerExternalReference}/contracts
Response:
  • Changed property data (array)
    • Changed items (object Contract)
      • Changed property accounts (array)
        • Changed items (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property contractCustomers (array)
        • Changed items (object Customer)
          • Added property correspondenceName (string)
GET /issuers/{issuerId}/customers/{customerReference}/contracts
Response:
  • Changed property data (array)
    • Changed items (object Contract)
      • Changed property accounts (array)
        • Changed items (object Account)
          • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property contractCustomers (array)
        • Changed items (object Customer)
          • Added property correspondenceName (string)
GET /issuers/{issuerId}/companies/{customerReference}/corporate-contracts
Response:
  • Changed property data (array)
    • Changed items (object CorporateContract)
      • Changed property rootAccount (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property contractCustomers (array)
        • Changed items (object Customer)
          • Added property correspondenceName (string)
      • Changed property corporateContractEntities (array)
        • Changed items (object CorporateContractEntity)
          • Changed property account (object Account)
            • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property corporateEmployeeAccounts (array)
        • Changed items (object CorporateEmployeeAccount)
          • Changed property account (object Account)
            • Added property accountOutgoingCreditTransferFeature (object)
GET /issuers/{issuerId}/companies/external-customers/{issuerCustomerExternalReference}/corporate-contracts
Response:
  • Changed property data (array)
    • Changed items (object CorporateContract)
      • Changed property rootAccount (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property contractCustomers (array)
        • Changed items (object Customer)
          • Added property correspondenceName (string)
      • Changed property corporateContractEntities (array)
        • Changed items (object CorporateContractEntity)
          • Changed property account (object Account)
            • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property corporateEmployeeAccounts (array)
        • Changed items (object CorporateEmployeeAccount)
          • Changed property account (object Account)
            • Added property accountOutgoingCreditTransferFeature (object)
POST /search-corporate-contracts
Response:
  • Changed property data (array)
    • Changed items (object CorporateContract)
      • Changed property rootAccount (object Account)
        • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property contractCustomers (array)
        • Changed items (object Customer)
          • Added property correspondenceName (string)
      • Changed property corporateContractEntities (array)
        • Changed items (object CorporateContractEntity)
          • Changed property account (object Account)
            • Added property accountOutgoingCreditTransferFeature (object)
      • Changed property corporateEmployeeAccounts (array)
        • Changed items (object CorporateEmployeeAccount)
          • Changed property account (object Account)
            • Added property accountOutgoingCreditTransferFeature (object)

What's Deleted

No API deleted.

What's Deprecated

GET /issuers/{issuerId}/accounts/external-accounts/{issuerAccountExternalReference}/turnover-information

Retrieve turnover information for an account by external reference (beta)

The API returns current and historical turnover information of an account (for a monthly or annual turnover).

GET /issuers/{issuerId}/accounts/{accountReference}/turnover-information

Retrieve turnover information for an account (beta)

The API returns current and historical turnover information of an account (for a monthly or annual turnover).

Enable "on this page" menu on doc section
On

VoP Responding PSP API

Responding PSP API

API Reference

This API specification is a draft, pending the publication of the EPC rulebook first definitive version in September to incorporate minor necessary changes.

This API definition is provided for responding PSPs participating in the Worldline VoP Hub ecosystem and EPC scheme. It allows the Hub to dynamically retrieve account holder identification data to provide answers to requesting PSPs, verifying the identity of payee for their payer user (Requester).

The data of the responding PSP can remain under its control and in the desired infrastructure.

Diagram of VoP processing steps for Responding PSP role

Features

The service, exposed by the responding PSP, will receive an account identifier and information about the requesting PSP performing the VoP request, and return account holder identification data to the Worldline VoP Hub, which will in turn compute a matching result to answer the VoP request.

The API supports returning multiple names, as well as additional identifiers when supported by the responding bank.

API Security

  • Authentication: The Worldline VoP Hub uses an authentication service that adheres to the OIDC standard protocol. 
    For enhanced security, the client must present an (qualified) SSL certificate to authenticate and sign token requests with a (qualified) seal certificate.
  • Secure Communication: All communications utilize MTLS with TLS 1.2 or higher, ensuring that data in transit is secure.
  • Data Integrity: Each API request and response is signed using a detached JWS signature, ensuring the integrity and authenticity of the data exchanged.
Enable "on this page" menu on doc section
Off

VoP Requesting PSP Role

Requesting PSP

In the EPC VoP scheme

According to the EPC Document 218-23, "Verification Of Payee Scheme Rulebook" first version for public consultation :

The Requesting PSP is the Participant with whom or through whom the Requester intends to make its Account-based Payment. The Requesting PSP receives a Payment Account Number, a Name of the Payment Counterparty and potentially in addition an unambiguous identification code about a Payment Counterparty from the Requester.
The Requesting PSP may also be the Requester.
Upon explicit request by the Requester or due to the laws applicable to the Requesting PSP, this Participant must initiate the request to verify these details about the Payment Counterparty as provided by the Requester.
The Requesting PSP Instantly sends a VOP Request to the PSP managing the Payment Account of the indicated Payment Counterparty.

Worldline provides API based services for scheme participants who need to fulfil this role and intend to comply with all the scheme rules. 

The following processing diagram represents the interactions of the Requesting PSP with the Requester and the WL VoP Services :

Services

To let Requesting PSPs send requests to other EPC scheme participants, the Worldline VoP solution offers API and file based services, which are detailed at the following location in the developer portal :

Enable "on this page" menu on doc section
Off

VoP Overview

Verification Of Payee

Overview

The newly introduced Instant Payment regulation mandates that Account Servicing PSPs need to perform a Verification of the Payee for any credit transfer initiated by their payment service users. The EPC has edited a rulebook to organize a scheme called VoP, to standardize the needed interactions between the participants.

The diagram below shows a generic VoP processing flow and the different involved actors, as the rulebook defines it. 
A glossary defining the scheme specific terms used below can be found at the bottom of this page.

Instant Payment Regulation & VoP compliance timeline

A final publication of the Worldline VoP APIs will be made available after the publication of the EPC rulebook first definitive version, in October 2024. 

Timeline of IPR-VoP compliance steps

Verification of Payee by Worldline

Discover Verification of Payee by Worldline on our website ! 

The Worldline Verification of Payee services allow banks to comply with the new Instant Payment regulation and its Verification of Payee requirement, as requesting and responding PSP, and compliant participant of the EPC VoP scheme.

In this documentation you will find detailed information and draft specifications on how Worldline facilitates VoP processing in this context, letting PSPs fulfill both scheme roles, with the products highlighted in the diagram below :

Diagram of VoP processing steps with the WL VoP hub.

Glossary

  • EPC : European Payments Council
  • VoP : Verification Of Payee, process of verifying the identity of a payer prior to a payment initiation via SEPA Credit Transfer, as mandated by the Instant Payment Regulation.
  • IPR : Instant Payment Regulation
  • RVM : Routing and verification mechanism. In the EPC VoP rulebook defined actors, an intermediate service provider for the requesting or responding PSP, acting on behalf of the PSP in the scheme.
  • PSP : Payment Service Provider. In this context, an Account Servicing PSP (Bank).
  • Requesting PSP : In the VoP ecosystem, the party (bank) performing a verification of Payee, for the Payer.
  • Responding PSP : In the VoP ecosystem, the party (bank) responding to a request of verification of Payee.
  • Requester : Payer / Payment Service User (PSU)
  • Worldline VoP Hub : The SaaS offering of Worldline that will route VoP requests between the necessary systems and provide matching results in accordance with the EPC scheme rules.
  • JWS & Detached JWS : “JSON Web Signature”, market standard security mechanism used to guarantee the integrity and authenticity of a request in the Worldline VoP solution.
    Detached when the body of the signature is omitted, in the context of an HTTP request signature. See API specifications for more details.

  • OIDC : OpenId Connect standard, based on Oauth2, used by the WL VoP Hub authentication service. See here and API specifications for more details.

  • CRUD : Create, Read, Update, and Delete operations.
Enable "on this page" menu on doc section
On

ob-data-ad-revoke consent

Revoke Consent

API Reference

DELETE Consents

Endpoint: DELETE /psus/{psuId}/consents/{consentId}

Base URL: /xs2a/routingservice/services/ob/ais/v3

This endpoint is used to revoke a consent. When this endpoint is called, the Open Banking Service will also try to revoke the consent at bank's side. If this is successful, the status of the consent will be changed to ‘Revoked’. If it’s not possible to revoke the consent at the bank's side, the status of the consent will be set to ‘RevokedAtTpp’, The consent might still be active on the bank's side bit will no longer be used by the Open Banking Service.

Data model

The response is an HTTP response with the HTTP code 204

RequestResponse
Delete consent requestDelete consent response
Enable "on this page" menu on doc section
On

ob-data-ad-retrieve transactions

Retrieve Transactions

API Reference

GET Transactions

Endpoint: GET /psus/{psuId}/aspsps/{aspspId}/accounts/{accountId}/transactions

Base URL: /xs2a/routingservice/services/ob/ais/v3

This endpoint is used to retrieve the balances of an account of a PSU.

Data model

RequestResponse (click to enlarge)
Get transactions requestGet transactions response

GET Download Transactions

Endpoint: GET /download/psus/{psuId}/aspsps/{aspspId}/accounts/{accountId}/transactions

Base URL: /xs2a/routingservice/services/ob/ais/v3

Some banks do not provide paginated transactions response. In those cases it isn’t possible to predict the number of transactions to be received in response of a GET transactions request. Even if the bank is supporting paginated responses it might be possible that response of the GET transactions request contains a download link only and no transactions, if the number of transactions is considered too high. In this cases or if the bank isn’t giving the response (instead of JSON in CAMT format for example), the Open Banking Service response on the GET transactions will have a download link instead of a set of transactions.

By calling that download link, the response will be given in a streamed JSON structure starting the stream of transactions already before all transactions are downloaded from the ASPSP. If the bank provides the transactions in a non-JSON format the transactions are converted to JSON on the fly.

Data model

RequestResponse
Get download transactions requestThe JSON structure of the response to this request is the same as it is for GET transactions. The only difference is that there will be no MetaData and no links like First, Prev, Next, Last or Download be contained.
Enable "on this page" menu on doc section
On

ob-data-as-consent status

Consent Status

API Reference

Consent status reflects the current state of the account holder's approval to access their financial data. The consent can be valid for at most 180 days. The Open Banking Service will provide an http 401 response with error code 123 ‘The PSU consent is expired’ if AIS data is requested after the validity of the consent is expired. You should then request a new consent.

In case of multiple consents for the same bank account, Open Banking Services will choose the consent that will be used to retrieve account data, so you do not need to maintain consent selection logic.

Consent status life cycle

Consent status

Figure: Consent Status when GET consent/status API is called (click on the picture to enlarge).

Below you can find an explanation of each one of the statuses:

StatusDescription
OpenThis is the initial consent state, for example in case of a redirect scenario, where additional steps to get the consent are required, like redirecting the account holder towards the bank.
PendingThe consent is not yet finalised or rejected. You should call the GET consent status endpoint to get an update.
RejectedThe consent was rejected by account holder or their bank.
PartiallyAuthorisedThe consent is due to a multi-level authorisation, some but not all mandated authorisations have been performed yet.
AuthorisedConsent was granted, and is active. You can now retrieve the account data.
ExpiredThe time the consent was active has been expired. You need to obtain a new consent if you wish to access account data.
RevokedConsent was revoked by account holder or by their bank. You need to obtain a new consent if you wish to access account data.
RevokedAtTppConsent was revoked by account holder or by their bank. You need to obtain a new consent if you wish to access account data. 
ErrorAn error occurred.  You need to obtain a new consent if you wish to access account data. 
InactiveIndicates that a consent is inactive because it has been replaced by a newer authorized consent (only 1 consent per account holder / bank combination is allowed.

GET Consent Status

Endpoint: GET /psus/{psuId}/consents/{consentId}/status

Base URL: /xs2a/routingservice/services/ob/ais/v3

This endpoint is used to retrieve the status of a consent.  Alternatively, you may use Push notifications functionality.

Data model

RequestResponse (Click to enlarge)
Get consent status requestGet consent status response
Enable "on this page" menu on doc section
On