openapi: 3.1.1
info:
  title: Terminal API
  version: 5.1-WL1.5.1
  description: |
    Terminal API is a standard for communication between a payment terminal (also know as point of interaction, POI, POS) and a ECR (Electronic Cash Register) or other sale system.

    The protocol is based on Nexo Retailer version 5.1 and is used to send payment requests, pre-authorisations, refunds, and other payment related operations to the terminal. It may contain additional features not covered in the standard Nexo Retailer protocol, which are marked as Worldline extensions in their descriptions.

servers:
  - url: https://api.terminal.iacc.global.worldline-solutions.com
    description: Integration

  - url: https://api.terminal.global.worldline-solutions.com
    description: Production

tags:
  - name: Payments
    description: >
      Payments related requests few examples are: payments, pre-authorisations, and refunds.

  - name: Device
    description: >
      Device and UI related requests (dynamic UI, capture, image, signature, etc.).

  - name: Reconciliation
    description: >
      Reconciliation related requests (day-end, acquirer reconciliation, synchronisation).

  - name: Status
    description: >
      Message status requests to query or obtain the status of previous messages.

  - name: Admin
    description: >
      Administration requests

  - name: Deprecated
    description: >
      Deprecated endpoints are no longer recommended for use and will be removed in future versions.

paths:
  "/api/v1/merchants/{umid}/terminals/{utid}/payments":
    post:
      operationId: post_async_payment_service
      tags:
        - Payments
      summary: Send async service requests to terminal (payments/reversals/pre-auth)
      description: |
        The asynchronous service request is sent to the terminal identified by utid. The API will return a 202 Accepted response if the message was successfully received.

        

        The request must include the "NumberOfRetries" and "WebhookUrl" properties in the "Header" block.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIServiceRequest'
            examples:
              SimplePaymentRequest:
                $ref: '#/components/examples/SimplePaymentRequest'
              PaymentRequestWithTipRequest:
                $ref: '#/components/examples/PaymentRequestWithTipRequest'
              PaymentWithReceiptDelegationRequest:
                $ref: '#/components/examples/PaymentWithReceiptDelegationRequest'
              PreAuthorisationRequest:
                $ref: '#/components/examples/PreAuthorisationRequest'
              PreAuthorisationUpdateRequest:
                $ref: '#/components/examples/PreAuthorisationUpdateRequest'
              CancelPreAuthorizationRequest:
                $ref: '#/components/examples/CancelPreAuthorizationRequest'
              PreAuthorisationCompletionRequest:
                $ref: '#/components/examples/PreAuthorisationCompletionRequest'
              CancelPaymentCompletionRequest:
                $ref: '#/components/examples/CancelPaymentCompletionRequest'
              RefundReferencedRequest:
                $ref: '#/components/examples/RefundReferencedRequest'
              RefundUnreferencedRequest:
                $ref: '#/components/examples/RefundUnreferencedRequest'
              DccRefundRequest:
                $ref: '#/components/examples/DccRefundRequest'
              ReversalRequest:
                $ref: '#/components/examples/ReversalRequest'
              AdministrativeInitRequest:
                $ref: '#/components/examples/AdministrativeInitRequest'
              AdministrativeConfigRequest:
                $ref: '#/components/examples/AdministrativeConfigRequest'
              AdministrativePaymentMenuRequest:
                $ref: '#/components/examples/AdministrativePaymentMenuRequest'
              AdministrativeLastDayEndRequest:
                $ref: '#/components/examples/AdministrativeLastDayEndRequest'
              AdministrativePaymentInformationRequest:
                $ref: '#/components/examples/AdministrativePaymentInformationRequest'
              ReferencedPaymentRequest:
                $ref: '#/components/examples/ReferencedPaymentRequest'
              CardAcquisitionRequest:
                $ref: '#/components/examples/CardAcquisitionRequest'
              PaymentAfterCardAcquisitionRequest:
                $ref: '#/components/examples/PaymentAfterCardAcquisitionRequest'

      responses:
        '200':
          description: |
            The service request is sent to the terminal identified by utid, the API will return a 200 response if the message was delivered to the terminal.

            The response will be 200 even in case of failure; the response body will contain the result of the request.

          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SaleToPOIServiceResponse'
                  - $ref: '#/components/schemas/SaleToPOIMessageRejection'

              examples:
                SimplePaymentResponse:
                  $ref: '#/components/examples/SimplePaymentResponse'
                SimplePaymentErrorResponse:
                  $ref: '#/components/examples/SimplePaymentErrorResponse'
                PreAuthorisationResponse:
                  $ref: '#/components/examples/PreAuthorisationResponse'
                ReversalResponse:
                  $ref: '#/components/examples/ReversalResponse'
                CancelPreAuthorizationResponse:
                  $ref: '#/components/examples/CancelPreAuthorizationResponse'
                CancelPaymentCompletionResponse:
                  $ref: '#/components/examples/CancelPaymentCompletionResponse'
                AdministrativeInitResponse:
                  $ref: '#/components/examples/AdministrativeInitResponse'
                AdministrativeConfigResponse:
                  $ref: '#/components/examples/AdministrativeConfigResponse'
                AdministrativePaymentInformationResponse:
                  $ref: '#/components/examples/AdministrativePaymentInformationResponse'
                ReferencedPaymentResponse:
                  $ref: '#/components/examples/ReferencedPaymentResponse'
                CardAcquisitionResponse:
                  $ref: '#/components/examples/CardAcquisitionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/payments/sync":
    post:
      operationId: post_sync_payment
      tags:
        - Payments
      summary: Send sync requests to terminal
      description: |
        The request is sent to the terminal identified by utid, the API will return a 200 response if the message was delivered to the terminal.
        
        The response will be 200 even in case of payment failure, the response body will contain the result of the request.
        
        

        **Important:** The connection will be kept open until the terminal sends the response or the timeout of 4 mins is reached.

        The value of the fields "NumberOfRetries" and "WebhookUrl" in the "Header" block will be ignored.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string
      
      security:
        - JWT: [ ]
      
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIServiceRequest'
            examples:
              SimplePaymentRequest:
                $ref: '#/components/examples/SimplePaymentRequest'
              PaymentRequestWithTipRequest:
                $ref: '#/components/examples/PaymentRequestWithTipRequest'
              PaymentWithReceiptDelegationRequest:
                $ref: '#/components/examples/PaymentWithReceiptDelegationRequest'
              PreAuthorisationRequest:
                $ref: '#/components/examples/PreAuthorisationRequest'
              PreAuthorisationUpdateRequest:
                $ref: '#/components/examples/PreAuthorisationUpdateRequest'
              CancelPreAuthorizationRequest:
                $ref: '#/components/examples/CancelPreAuthorizationRequest'
              PreAuthorisationCompletionRequest:
                $ref: '#/components/examples/PreAuthorisationCompletionRequest'
              CancelPaymentCompletionRequest:
                $ref: '#/components/examples/CancelPaymentCompletionRequest'
              RefundReferencedRequest:
                $ref: '#/components/examples/RefundReferencedRequest'
              RefundUnreferencedRequest:
                $ref: '#/components/examples/RefundUnreferencedRequest'
              DccRefundRequest:
                $ref: '#/components/examples/DccRefundRequest'
              ReversalRequest:
                $ref: '#/components/examples/ReversalRequest'
              ReferencedPaymentRequest:
                $ref: '#/components/examples/ReferencedPaymentRequest'
              CardAcquisitionRequest:
                $ref: '#/components/examples/CardAcquisitionRequest'
              PaymentAfterCardAcquisitionRequest:
                $ref: '#/components/examples/PaymentAfterCardAcquisitionRequest'

      responses:
        '200':
          description: |
            The request is sent to the terminal identified by utid, the API will return a 200 response if the message was delivered to the terminal.

            The response will be 200 even in case of payment failure, the response body will contain the result of the request.

          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SaleToPOIServiceResponse'
                  - $ref: '#/components/schemas/SaleToPOIMessageRejection'

              examples:
                SimplePaymentResponse:
                  $ref: '#/components/examples/SimplePaymentResponse'
                SimplePaymentErrorResponse:
                  $ref: '#/components/examples/SimplePaymentErrorResponse'
                PreAuthorisationResponse:
                  $ref: '#/components/examples/PreAuthorisationResponse'
                ReversalResponse:
                  $ref: '#/components/examples/ReversalResponse'
                CancelPreAuthorizationResponse:
                  $ref: '#/components/examples/CancelPreAuthorizationResponse'
                CancelPaymentCompletionResponse:
                  $ref: '#/components/examples/CancelPaymentCompletionResponse'
                ReferencedPaymentResponse:
                  $ref: '#/components/examples/ReferencedPaymentResponse'
                CardAcquisitionResponse:
                  $ref: '#/components/examples/CardAcquisitionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/device":
    post:
      operationId: post_async_device
      tags:
        - Device
      summary: Send async device requests to terminal (UI/Device control)
      description: |
        The asynchronous device request is sent to the terminal identified by utid. Use this endpoint to send SaleToPOIDeviceRequest messages (UI, capture, image, signature, etc.).

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIDeviceRequest'
            examples:
              UIInfoRequest:
                $ref: '#/components/examples/UIInfoRequest'
              UICaptureDataRequest:
                $ref: '#/components/examples/UICaptureDataRequest'
              UISingleSelectionRequest:
                $ref: '#/components/examples/UISingleSelectionRequest'
              UIMultiSelectionRequest:
                $ref: '#/components/examples/UIMultiSelectionRequest'
              UIQRRequest:
                $ref: '#/components/examples/UIQRRequest'
              UIImageRequest:
                $ref: '#/components/examples/UIImageRequest'
              UISignatureRequest:
                $ref: '#/components/examples/UISignatureRequest'
              UITableRequest:
                $ref: '#/components/examples/UITableRequest'
              UICaptureRatingScreenRequest:
                $ref: '#/components/examples/UICaptureRatingScreenRequest'
              PrintSimpleTextRequest:
                $ref: '#/components/examples/PrintSimpleTextRequest'
              PrintQRCodeRequest:
                $ref: '#/components/examples/PrintQRCodeRequest'
              PrintImageRequest:
                $ref: '#/components/examples/PrintImageRequest'
              PrintJSONReceiptRequest:
                $ref: '#/components/examples/PrintJSONReceiptRequest'
              PrintMultiFormatRequest:
                $ref: '#/components/examples/PrintMultiFormatRequest'

      responses:
        '200':
          description: The device request was delivered to the terminal.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SaleToPOIDeviceResponse'
                  - $ref: '#/components/schemas/SaleToPOIMessageRejection'
              examples:
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/device/sync":
    post:
      operationId: post_sync_device
      tags:
        - Device
      summary: Send sync device requests to terminal
      description: |
        The request is sent to the terminal identified by utid. The connection will be kept open until the terminal sends the response or the timeout is reached.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIDeviceRequest'
            examples:
              UIInfoRequest:
                $ref: '#/components/examples/UIInfoRequest'
              UICaptureDataRequest:
                $ref: '#/components/examples/UICaptureDataRequest'
              UISingleSelectionRequest:
                $ref: '#/components/examples/UISingleSelectionRequest'
              UIMultiSelectionRequest:
                $ref: '#/components/examples/UIMultiSelectionRequest'
              UIQRRequest:
                $ref: '#/components/examples/UIQRRequest'
              UIImageRequest:
                $ref: '#/components/examples/UIImageRequest'
              UISignatureRequest:
                $ref: '#/components/examples/UISignatureRequest'
              UITableRequest:
                $ref: '#/components/examples/UITableRequest'
              UICaptureRatingScreenRequest:
                $ref: '#/components/examples/UICaptureRatingScreenRequest'
              PrintSimpleTextRequest:
                $ref: '#/components/examples/PrintSimpleTextRequest'
              PrintQRCodeRequest:
                $ref: '#/components/examples/PrintQRCodeRequest'
              PrintImageRequest:
                $ref: '#/components/examples/PrintImageRequest'
              PrintJSONReceiptRequest:
                $ref: '#/components/examples/PrintJSONReceiptRequest'
              PrintMultiFormatRequest:
                $ref: '#/components/examples/PrintMultiFormatRequest'

      responses:
        '200':
          description: The device request was delivered to the terminal and a response was received.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaleToPOIDeviceResponse'
              examples:
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/status":
    post:
      operationId: post_async_status
      tags:
        - Status
      summary: Send async status messages to terminal (MessageStatus)
      description: |
        The asynchronous message status request is sent to the terminal identified by utid. Use this endpoint for SaleToPOIMessageStatusRequest messages.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIMessageStatusRequest'
            examples:
              MessageStatusRequest:
                $ref: '#/components/examples/MessageStatusRequest'
              ReferencedPaymentStatusRequest:
                $ref: '#/components/examples/ReferencedPaymentStatusRequest'

      responses:
        '200':
          description: The status request was delivered to the terminal.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SaleToPOIMessageStatusResponse'
                  - $ref: '#/components/schemas/SaleToPOIMessageRejection'
              examples:
                MessageStatusResponse:
                  $ref: '#/components/examples/MessageStatusResponse'
                ReferencedPaymentStatusResponse:
                  $ref: '#/components/examples/ReferencedPaymentStatusResponse'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/status/sync":
    post:
      operationId: post_sync_status
      tags:
        - Status
      summary: Send sync status messages to terminal
      description: |
        The request is sent to the terminal identified by utid. The connection will be kept open until the terminal sends the response or the timeout is reached.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIMessageStatusRequest'
            examples:
              MessageStatusRequest:
                $ref: '#/components/examples/MessageStatusRequest'
              ReferencedPaymentStatusRequest:
                $ref: '#/components/examples/ReferencedPaymentStatusRequest'

      responses:
        '200':
          description: The status request was delivered to the terminal and a response was received.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaleToPOIMessageStatusResponse'
              examples:
                MessageStatusResponse:
                  $ref: '#/components/examples/MessageStatusResponse'
                ReferencedPaymentStatusResponse:
                  $ref: '#/components/examples/ReferencedPaymentStatusResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/reconciliation":
    post:
      operationId: post_async_reconciliation
      tags:
        - Reconciliation
      summary: Send async reconciliation requests to terminal
      description: |
        The asynchronous reconciliation request is sent to the terminal identified by utid. Use this endpoint for SaleToPOIReconciliationRequest messages.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIReconciliationRequest'
            examples:
              ReconciliationRequest:
                $ref: '#/components/examples/ReconciliationRequest'

      responses:
        '200':
          description: The reconciliation request was delivered to the terminal.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SaleToPOIReconciliationResponse'
                  - $ref: '#/components/schemas/SaleToPOIMessageRejection'
              examples:
                ReconciliationResponse:
                  $ref: '#/components/examples/ReconciliationResponse'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/reconciliation/sync":
    post:
      operationId: post_sync_reconciliation
      tags:
        - Reconciliation
      summary: Send sync reconciliation requests to terminal
      description: |
        The request is sent to the terminal identified by utid. The connection will be kept open until the terminal sends the response or the timeout is reached.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string

      security:
        - JWT: [ ]

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIReconciliationRequest'
            examples:
              ReconciliationRequest:
                $ref: '#/components/examples/ReconciliationRequest'

      responses:
        '200':
          description: The reconciliation request was delivered to the terminal and a response was received.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaleToPOIReconciliationResponse'
              examples:
                ReconciliationResponse:
                  $ref: '#/components/examples/ReconciliationResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}":
    get:
      operationId: get_merchant
      tags:
        - Admin
      summary: Get merchant details
      description: |
        The endpoint can be used by integrators to verify with a terminal is connected before sending requests.
      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
      security:
        - JWT: []
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MerchantResponse"
              examples:
                MerchantResponseExample:
                  $ref: '#/components/examples/MerchantResponseExample'
        '4xx':
          description: Error connecting to the terminal or sending the request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/tapi":
    post:
      operationId: post_tapi
      tags:
        - Deprecated
      summary: Send sync requests to terminal
      description: |
        The request is sent to the terminal identified by utid, the API will return a 200 response if the message was delivered to the terminal.
        
        The response will be 200 even in case of payment failure, the response body will contain the result of the request.
        
        **Important:** The connection will be kept open until the terminal sends the response or the timeout of 4 mins is reached.

        The value of the fields "NumberOfRetries" and "WebhookUrl" in the "Header" block will be ignored.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string
      
      security:
        - JWT: [ ]
      
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/SaleToPOIServiceRequest'
                - $ref: '#/components/schemas/SaleToPOIDeviceRequest'
                
            examples:
              SimplePaymentRequest:
                $ref: '#/components/examples/SimplePaymentRequest'
              PaymentRequestWithTipRequest:
                $ref: '#/components/examples/PaymentRequestWithTipRequest'
              PaymentWithReceiptDelegationRequest:
                $ref: '#/components/examples/PaymentWithReceiptDelegationRequest'
              PreAuthorisationRequest:
                $ref: '#/components/examples/PreAuthorisationRequest'
              PreAuthorisationUpdateRequest:
                $ref: '#/components/examples/PreAuthorisationUpdateRequest'
              CancelPreAuthorizationRequest:
                $ref: '#/components/examples/CancelPreAuthorizationRequest'
              PreAuthorisationCompletionRequest:
                $ref: '#/components/examples/PreAuthorisationCompletionRequest'
              CancelPaymentCompletionRequest:
                $ref: '#/components/examples/CancelPaymentCompletionRequest'
              RefundReferencedRequest:
                $ref: '#/components/examples/RefundReferencedRequest'
              RefundUnreferencedRequest:
                $ref: '#/components/examples/RefundUnreferencedRequest'
              DccRefundRequest:
                $ref: '#/components/examples/DccRefundRequest'
              CardAcquisitionRequest:
                $ref: '#/components/examples/CardAcquisitionRequest'
              ReversalRequest:
                $ref: '#/components/examples/ReversalRequest'


      responses:
        '200':
          description: |
            The request is sent to the terminal identified by utid, the API will return a 200 response if the message was delivered to the terminal.
            
            The response will be 200 even in case of payment failure, the response body will contain the result of the request.

          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SaleToPOIServiceResponse'
                  - $ref: '#/components/schemas/SaleToPOIDeviceResponse'
                  - $ref: '#/components/schemas/SaleToPOIMessageRejection'

              examples:
                SimplePaymentResponse:
                  $ref: '#/components/examples/SimplePaymentResponse'
                SimplePaymentErrorResponse:
                  $ref: '#/components/examples/SimplePaymentErrorResponse'
                PreAuthorisationResponse:
                  $ref: '#/components/examples/PreAuthorisationResponse'
                ReversalResponse:
                  $ref: '#/components/examples/ReversalResponse'
                CancelPreAuthorizationResponse:
                  $ref: '#/components/examples/CancelPreAuthorizationResponse'
                CancelPaymentCompletionResponse:
                  $ref: '#/components/examples/CancelPaymentCompletionResponse'

        '4xx':
          description: Error connecting to the terminal or sending the request. 
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"

  "/api/v1/merchants/{umid}/terminals/{utid}/payments/abort":
    post:
      operationId: post_abort
      tags:
        - Payments
      description: |
        The request signals the terminal to abort the **ongoing** transaction, if no transaction is in progress the request is ignored.
        
        The request is sent to the terminal identified by utid, the API will return a 200 response if the message was delivered to the terminal.
      summary: Abort ongoing transaction
      
      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: utid
          required: true
          schema:
            type: string
      
      security:
        - JWT: [ ]
      
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaleToPOIAbort'

            examples:
              AbortPaymentRequest:
                $ref: '#/components/examples/AbortPaymentRequest'
      
      responses:
        '200': #The response will always be 200 even in case of failure
          description: Successful connection to the terminal. 
          content: {}
        
        '4xx':
          description: Error connecting to the terminal or sending the request. 
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"


components:
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT

  schemas:
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
        code:
          type: string

    Header:
      description: Common element that is present in requests and responses
      type: object
      required:
        - ProtocolVersion
        - ExchangeIdentification
        - CreationDateTime
        - InitiatingParty
      properties:
        ProtocolVersion:
          description: Must be set to the current API version (currently "5.1-WL1.5.1")
          type: string
          const: "5.1-WL1.5.1"
        CreationDateTime:
          type: string
          format: date-time
        ExchangeIdentification:
          $ref: "#/components/schemas/ExchangeIdentification"
        InitiatingParty:
          $ref: "#/components/schemas/InitiatingParty"
        NumberOfRetries:
          description: "**Worldline extension** \u2014 not part of the Nexo Retailer standard. The number of times to retry the request if the WebhookUrl server is unavailable or returns an error message. This URL should be specified when using asynchronous processing"
          type: integer
          minimum: 1
          maximum: 1
        WebhookUrl:
          description: "**Worldline extension** \u2014 not part of the Nexo Retailer standard. This URL is used as the destination endpoint for webhook callbacks. This URL should be specified when using asynchronous processing."
          type: string
          format: uri


    ExchangeIdentification:
      description: >
        Unique identification of an exchange between the Sale System and the POI system.
        Must be a UUID (v4 or v7). This value serves as the idempotency key — if the same
        ExchangeIdentification is sent again, the system will return the cached response
        instead of processing a new transaction.
      type: string
      format: uuid
      minLength: 1
      maxLength: 36
    
    InitiatingParty:
      type: object
      required:
        - Identification
      properties:
        Identification:
          type: string
          minLength: 1
          maxLength: 35
        Type:
          type: string
          enum:
            - Merchant
          description: >
            - Merchant: Merchant providing goods or services.

    Environment:
      description: Environment of the transaction.
      type: object
      properties:
        Acquirer:
          type: object
          required:
            - Identification
          properties:
            Identification:
              type: object
              required:
                - Identification
              properties:
                Identification:
                  type: string
                  minLength: 1
                  maxLength: 35
              
        Merchant:
          type: object
          required:
            - Identification
          properties:
            Identification:
              type: object
              required:
                - Identification
              properties:
                Identification:
                  type: string
                  minLength: 1
                  maxLength: 35
              
        POI:
          type: object
          required:
            - Identification
          properties:
            Identification:
              type: object
              required:
                - Identification
              properties:
                Identification:
                  type: string

            Capabilities:
              type: object
              properties:
                MessageCapabilities:
                  description: >
                    Use this field to configure the receipt return capabilities.

                    By default, the POI system is configured to return the customer receipt and the merchant receipt.
                  type: array
                  items:
                    type: object
                    properties:
                      Destination:
                        type: array
                        items:
                          type: string
                          enum:
                            - MerchantReceipt
                            - CardholderReceipt
                          description: >
                            - MerchantReceipt: Merchant Receipt.

                            - CardholderReceipt: Cardholder Receipt.
                      LineWidth:
                        type: number
                        format: int32
                      AvailableFormat:
                        type: array
                        description: |
                          Specifies which receipt formats the Sale System supports. When set, the terminal will return receipts in the requested formats.
                          If omitted, the terminal returns receipts in its default format (SimpleText).
                        items:
                          type: string
                          enum:
                            - SimpleText
                            - JSON
                          description: >
                            - SimpleText: Plain text receipt format.

                            - JSON: Structured JSON receipt format with line-by-line styling control (character style, alignment, font size).
            
        Card:
          type: object
          properties:
            CardBrand:
              type: string
              minLength: 1
              maxLength: 35
            ApplicationIdentifier:
              type: string
              description: Brand specific identifier, also known as AID (Application Identifier). This is scheme specific e.g. A0000000031010 is Visa, A0000000041010 is Mastercard
              minLength: 1
              maxLength: 35
            MaskedPAN:
              type: string
              minLength: 1
              maxLength: 30
            PlainCardData:
              type: object
              required:
                - Track1
                - Track2
                - Track3
              properties:
                Track1:
                  type: string
                  minLength: 1
                  maxLength: 76
                Track2:
                  type: string
                  minLength: 1
                  maxLength: 76
                Track3:
                  type: string
                  minLength: 1
                  maxLength: 76
                ExpiryDate:
                  description: Card expiry date in YYMM format.
                  type: string
                  minLength: 4
                  maxLength: 4
                  pattern: '^\d{4}$'
                
        
        Cardholder:
          type: object
          properties:
            Language:
              type: string
              description: ISO 639-1 (alpha-2) and ISO 639-2 (alpha-3)
              minLength: 2
              maxLength: 3
            Authentication:
              type: array
              items:
                type: object
                required:
                  - AuthenticationMethod
                properties:
                  AuthenticationMethod:
                    type: string
                    enum:
                      - Signature
                      - PIN
                      - NoCardholderVerification
                      - NoCardholderVerificationPIN
                      - NoCardholderVerificationSignature
                      - NoCardholderVerificationNoCVM
                      - Unknown
                    description: >
                      - AuthenticationToken:  A token is used to verify an already performed authentication.
                      
                      - BillingAddressVerification: Cardholder billing address verification.
                      
                      - Bypass: Authentication bypassed by the merchant.
                      
                      - Biometry: Biometric authentication of the cardholder.
                      
                      - CardholderIdentificationData: Cardholder data provided for verification, for instance social security number, driver license number, passport number.
                      
                      - CryptogramVerification: Verification of a cryptogram generated by a chip card or another device, for instance ARQC (Authorisation Request Cryptogram).
                      
                      - CSCVerification:  Verification of Card Security Code.
                      
                      - ManualVerification: Manual verification, for example passport or drivers license.
                      
                      - MerchantAuthentication: Merchant-related authentication.
                      
                      - Mobile: Customer mobile device.
                      
                      - OfflinePIN: Off-line PIN authentication (Personal Identification Number).
                      
                      - OnLinePIN:  On-line PIN authentication (Personal Identification Number).
                      
                      - Other:  Other customer authentication.
                      
                      - PaperSignature: Handwritten paper signature.
                      
                      - PassiveAuthentication:  Authentication based on statistical cardholder behaviour.
                      
                      - Password: Authentication by a password.
                      
                      - PaymentToken: Verification or authentication related to the use of a payment token, for instance the validation of the authorised use of a token.
                      
                      - SecureCertificate:  Electronic commerce transaction secured with the X.509 certificate of a customer.
                      
                      - SecuredChannel: Channel-encrypted transaction.
                      
                      - SecureElectronicCommerce: Authentication performed during a secure electronic commerce transaction.
                      
                      - SecureNoCertificate:  Secure electronic transaction without cardholder certificate.
                      
                      - ShippingAddressVerification:  Cardholder shipping address verification.
                      
                      - SignatureCapture: Electronic signature capture (handwritten signature).
                      
                      - TokenAuthentication:  Cryptogram generated by the token requestor or a customer device to validate the authorised use of a token.
                      
                      - UnknownMethod:  Authentication method is performed unknown.

    Context:
      description:  Context in which the transaction is performed (payment and sale).
      type: object
      properties:
        PaymentContext:
          type: object
          properties:
            CardDataEntryMode:
              type: string
              enum:
                - Tag
                - Physical
                - MagneticStripe
                - ICC
                - QRCode
                - OpticalCode
                - Unknown
              description: >
                - Tag: Tag reading capabilities (RFID, etc.).

                - Physical: Keyboard entry or OCR reading of embossing or printed data, either at time of transaction or after the event.

                - MagneticStripe: Magnetic stripe.

                - ICC: ICC (Integrated Circuit Card) with contact containing software applications conform to ISO 7816.

                - QRCode: Quick response code.

                - OpticalCode: Optical coded reading capabilities (e.g. barcode, QR code, etc.)

                - Unknown: Unknown card reading capability.
            OnLineContext:
              type: boolean
            CardholderPresent:
              type: boolean
            CardPresent:
              type: boolean
        SaleContext:
          type: object
          properties:
            SaleIdentification:
              type: string
              minLength: 1
              maxLength: 35
            CashierIdentification:
              type: string
              minLength: 1
              maxLength: 35
            AllowedEntryMode:
              type: array
              items:
                type: string
                enum:
                  - Tag
                  - Physical
                  - MagneticStripe
                  - BarCode
                  - ICC
                  - QRCode
                  - OpticalCode
                  - Unknown
                  - AccountData
                  - ProximityReader
                  - CardOnFile
                description: >
                  - Tag: Tag reading capabilities (RFID, etc.).

                  - Physical: Keyboard entry or OCR reading of embossing or printed data, either at time of transaction or after the event.

                  - MagneticStripe: Magnetic stripe.

                  - ICC: ICC (Integrated Circuit Card) with contact containing software applications conform to ISO 7816.

                  - QRCode: Quick response code.

                  - OpticalCode: Optical coded reading capabilities (e.g. barcode, QR code, etc.)

                  - Unknown: Unknown card reading capability.

                  - AccountData: Account data on file.

                  - ProximityReader: Contactless proximity reader.

                  - CardOnFile: Card information are stored on a file.
        SaleTerminalData:
          type: object
          description: |
            Describes the capabilities of the Sale System terminal. Use this to inform the POI system about what the Sale System can handle on its own, such as printing receipts.
          properties:
            SaleCapabilities:
              type: array
              description: |
                List of capabilities supported by the Sale System. When `PrinterReceipt` is included, the terminal will not print the receipt itself — the receipt data is still returned in the response for the Sale System to handle.

                Use this when the ECR or Sale System manages its own receipt printing and you want to prevent duplicate receipts from the terminal.
              items:
                type: string
                enum:
                  - PrinterReceipt
                description: >
                  - PrinterReceipt: The Sale System has receipt printing capability. When present, the terminal delegates receipt printing to the Sale System and will not print on its own.

    Response:
      type: object
      required:
        - Response
        - ResponseReason
      properties:
        Response:
          type: string
          enum:
            - Failed
            - Successful
          description: >
            - Failed: Failure, processing of the request fails for various reasons. Some further processing according to the type of requested service, the context of the process, and some additional precision about the failure notified in the ErrorCondition data element.

            - Successful: Successful, processing OK. Information related to the result of the processing is contained in other parts of the response message.
        ResponseReason:
          type: string
          enum:
            - Aborted
            - Busy
            - Cancelled
            - DeviceOut
            - WrongPIN
            - UnreachableHost
            - UnavailableService
            - UnavailableDevice
            - Refusal
            - PaymentRestriction
            - NotFound
            - NotAllowed
            - LoggedOut
            - InvalidCard
            - InsertedCard
            - InProgress
          description: >
            - Aborted: The initiator of the request has sent an Abort message request, which was accepted and processed.

            - Busy: The system is busy, try later.

            - Cancelled: The user has aborted the transaction on the PED keyboard, for instance during PIN entering.

            - DeviceOut: Device out of order.

            - WrongPIN: The user has entered the PIN on the PED keyboard and the verification fails.

            - UnreachableHost: Acquirer or any host is unreachable or has not answered to an online request, so is considered as temporarily unavailable. Depending on the Sale context, the request could be repeated (to be compared with "Refusal").

            - UnavailableService: The service is not available (not implemented, not configured, protocol version too old, etc.).

            - UnavailableDevice: The hardware is not available (absent, not configured, etc.).

            - Refusal: The transaction is refused by the host or by the local rules associated with the card or the POI.

            - PaymentRestriction: Some sale items are not payable by the card proposed by the Customer.

            - NotFound: The transaction is not found (e.g., for a reversal or a repeat).

            - NotAllowed: A service request is sent during a Service dialogue. A combination of services not possible to provide. During the DeviceInitialisationCardReader message processing, the user has entered a card which has to be protected by the POI, and cannot be processed with this device request from the external, and then the Sale System.

            - LoggedOut: Not logged in.

            - InvalidCard: The card entered by the Customer cannot be processed by the POI because this card is not configured in the system.

            - InsertedCard: If the Input Device requests a NotifyCardInputFlag and the Customer enters a card in the card reader without answers to the Input command, the POI aborts the Input command processing, and answers with a dedicated ErrorCondition value in the Input response message.

            - InProgress: The transaction is still in progress and then the command cannot be processed.
        AdditionalResponseInformation:
          description: >
            Used in case of Failure. The content of this field is not defined in the Nexo standard. 
            It is used to provide additional information about the response and will be different based on Acquirer, Payment App, or others.

            Often the error code returned is a combination of the error code and a error message (or remark) separated by ":". 
            Per example: "WPI_ERR_COND_MISSING_MANDATORY_PARAMETER:EFT_E_PARAMETER_AMOUNT_MISSING".

            Possible values are (not exhaustive):
            
            - WPI_ERR_COND_SERVICE_NOT_SUPPORTED: The requested service type is not supported by the Payment Application/Service

            - WPI_ERR_COND_ABORTED: The initiator of the request has sent an abort request, which was accepted and processed.

            - WPI_ERR_COND_BUSY: The Payment Application/Service is busy. Try later.

            - WPI_ERR_COND_CARD_READ_ERR: The payment application was not able to read the card. Either due to inconsistent data or wrong card handling.

            - WPI_ERR_COND_USER_CANCEL: The user has aborted the transaction

            - WPI_ERR_COND_USER_TIMEOUT: A timeout occurred while waiting for user interaction.

            - WPI_ERR_COND_HOST_REFUSAL: The Acquirer/Issuer refused the transaction.

            - WPI_ERR_COND_NETWORK_ISSUE: Network issue occurred (host not reachable, network down, … )

            - WPI_ERR_COND_TRANSACTION_TIMEOUT: Timeout occurred during transaction (other than with user interaction ).

            - WPI_ERR_COND_ENCRYPTION_ISSUE: Encryption issue (PAN, PIN …) caused the transaction to be aborted.

            - WPI_ERR_COND_INVALID_KEY: The secure component of the terminal is missing a key it needs to perform the transaction.

            - WPI_ERR_COND_INVALID_TRANSACTION_REQ: Invalid transaction request received. One of the fields in the transaction request object was invalid.

            - WPI_ERR_COND_INTERNAL: Internal error within payment service

            - WPI_ERR_COND_INVALID_AMOUNT: Entered invalid amount

            - WPI_ERR_COND_INVALID_CURRENCY: Transaction started with invalid currency. The currency is a global attribute of the underlying payment service.

            - WPI_ERR_COND_APP_NOT_SUPPORTED: None of the applications on the EMV NFC/IC chip card are accepted or the ISO/PAN on the magnetic stripe track didn’t result in a brand being accepted

            - WPI_ERR_COND_MISSING_MANDATORY_PARAMETER: A mandatory parameter is missing in the request.

            - WPI_ERR_COND_GENERIC: A generic error that is not specified in detail

            - WPI_ERR_COND_NOT_INITIALIZED: The payment solution is not configured and cannot process the request.

            - WPI_ERR_COND_WPI_VERSION_NOT_SUPPORTED: The request contains a WPI version which is not supported by the payment solution.

            - WPI_ERR_COND_SESSION_ID_ALREADY_IN_USE: In case of the SESSION ID was already used and the payment solution would not be able to identify the last transaction for recovery then this error code is returned.

            - WPI_ERR_COND_INVALID_PASSWORD: For password protected transactions, this error code is returned if the password entered in the payment solution, by the merchant, is incorrect.

            - WPI_ERR_COND_RECEIPT_DELEGATION_NOT_SUPPORTED: If a transaction was started with receipt delegation and receipt delegation is not supported this error code is returned

            - WPI_ERR_COND_MANUAL_PAN_KEY_ENTRY_NOT_SUPPORTED: In case of manual PAN key entry is not possible but requested.

            - WPI_ERR_COND_CASHBACK_NOT_SUPPORTED: If a transaction was started with cashback and cashback is not supported

            - WPI_ERR_COND_TIP_NOT_SUPPORTED_BY_PAYMENT_SOLUTION: If tipAmount is present in the transaction request but not supported by the payment solution

            - WPI_ERR_COND_TIP_NOT_SUPPORTED_BY_SERVICE_TYPE: If tipAmount is present in the transaction request but not supported for the specific service type

            - WPI_ERR_COND_TIP_NOT_SUPPORTED_BY_BRAND: If tipAmount is present in the transaction request but not supported by cardholder card brand

            - WPI_ERR_COND_TIP_AMOUNT_EXCEEDS_MAXIMUM: If tipAmount is higher than the maximum allowed tipAmount configured for the payment solution
          type: string
          minLength: 1
          maxLength: 140

    SupplementaryData:
      description: >
        Supplementary data is used to provide additional information to the POI system or to the merchant. 

        The data is not used for the transaction processing, but it can be used for other purposes.       
      type: object
      properties:
        Envelope:
          type: object
          properties:
            receipt:
              type: object
              description: >
                Only for ReconciliationResponse. Receipt content formatted for the merchant.
              properties:
                formatted:
                  type: object
                  properties: 
                    merchant: 
                      type: string
                      
    #== Payments
    PaymentRequest:
      title: Payment Request
      type: object
      properties:
        PaymentTransaction:
          title: Payment Transaction
          type: object
          required:
            - TransactionType
            - TransactionIdentification
            - TransactionDetails
          properties:
            TransactionType:
              $ref: "#/components/schemas/TransactionType"
            ServiceAttribute:
              $ref: "#/components/schemas/ServiceAttribute"
            AdditionalService:
              type: array
              items:
                $ref: "#/components/schemas/AdditionalService"
            TransactionIdentification:
              $ref: "#/components/schemas/TransactionIdentification"
            TransactionDetails:
              $ref: "#/components/schemas/TransactionDetails"
            OriginalTransaction:
              description: >
                Reference to a previous transaction. Required for referenced refunds, pre-authorisation updates,
                pre-authorisation completions, and follow-on purchases (referenced payments). Populate with the
                POITransactionIdentification from the original transaction response. For follow-on purchases,
                this links the new transaction to the original card data without requiring the customer to present
                their card again.
              $ref: "#/components/schemas/OriginalTransaction"
            DCCRefund:
              description: >
                DCC refund data. When present on a Refund transaction, both fields must be provided.
              $ref: "#/components/schemas/DCCRefund"

    DCCRefund:
      title: DCC Refund
      type: object
      required:
        - RateReferenceIdentifier
        - OriginalTransactionDate
      properties:
        RateReferenceIdentifier:
          description: DCC rate reference identifier for the original transaction.
          type: string
          minLength: 1
        OriginalTransactionDate:
          description: Original transaction date in YYYYMMDD format.
          type: string
          minLength: 8
          maxLength: 8
          pattern: '^\d{8}$'

    CardAcquisitionResponse:
      title: Card Acquisition Response
      description: |
        Response to a card acquisition request containing the acquired card data.
      type: object
      properties:
        SaleTransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        POITransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        PaymentBrand:
          type: string
          description: Brand of the payment card (e.g., VISA, MasterCard).
        CustomerLanguage:
          type: string
          description: Language of the customer (ISO 639-1).
    AuthorisationResult:
      title: Authorisation Result
      type: object
      properties:
        ResponseToAuthorisation:
          title: Response to Authorisation
          type: object
          properties:
            Response:
              type: string
              enum:
                - Approved
                - Declined
                - PartialApproved
                - Suspended
                - TechnicalError
              description: >
                - Approved: Service has been successfuly provided.

                - Declined: Service is declined.

                - PartialApproved: Service has been partialy provided.

                - Suspended: Transaction has been received but hasn't been processed.

                - TechnicalError: Service cannot be provided for technical reason (eg timeout contacting the Issuer, security problem).
        AuthorisationCode:
          title: Authorisation Code
          description: Value assigned by the authorising party.
          type: string
          minLength: 6
          maxLength: 8

    PaymentReceipt:
      title: Payment Receipt
      description: Customer or Merchant payment receipt
      type: array
      items:
        type: object
        required:
          - DocumentQualifier
          - OutputContent
        properties:
          DocumentQualifier:
            type: string
            enum:
              - CustomerReceipt
              - CashierReceipt
            description: >
              - CustomerReceipt: Receipt intended for the customer.

              - CashierReceipt: Receipt intended for the cashier.
          RequiredSignatureFlag:
            type: boolean
            description: Flag to indicate that the cardholder payment receipt requires a signature by the customer.
          OutputContent:
            type: object
            required:
              - MessageDestination
              - MessageContent
            properties:
              MessageDestination:
                type: string
                enum:
                  - CardholderDisplay
                  - CardholderReceipt
                  - MerchantDisplay
                  - MerchantReceipt
                  - OtherCardholderInterface
                description: >
                  - CardholderDisplay: Cardholder display or interface.

                  - CardholderReceipt: Cardholder receipt.

                  - MerchantDisplay: Merchant display or interface.

                  - MerchantReceipt: Merchant receipt.

                  - OtherCardholderInterface: Other interface of the cardholder, for instance e-mail or smartphone message.
              Format:
                type: string
                description: "Message format: text without format attributes."
                const: SimpleText
              MessageContent:
                type: string
                description: >
                  Message content to be displayed or printed. The content is a text string, which can contain any printable character (including control characters). 
                  The length of the string is limited by the size of the message buffer in the POI system. 
                  The maximum length of the message is 20000 characters.
                minLength: 1
                maxLength: 20000

    PaymentResponse:
      title: Payment Response
      type: object
      required:
        - SaleTransactionIdentification
        - POITransactionIdentification
        - RetailerPaymentResult
      properties:
        SaleTransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        POITransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        RetailerPaymentResult:
          title: Retailer Payment Result
          type: object
          required:
            - TransactionType
          properties:
            TransactionType:
              $ref: "#/components/schemas/TransactionType"
            AdditionalService:
              title: Additional Services
              type: array
              items:
                $ref: "#/components/schemas/AdditionalService"
            RequestedTransaction:
              type: object
              properties:
                TransactionType:
                  $ref: "#/components/schemas/TransactionType"
                ServiceAttribute:
                  $ref: "#/components/schemas/ServiceAttribute"
                TransactionIdentification:
                  $ref: "#/components/schemas/TransactionIdentification"
                TransactionDetails:
                  $ref: "#/components/schemas/TransactionDetails"
            TransactionResponse:
              type: object
              properties:
                AuthorisationResult:
                  $ref: "#/components/schemas/AuthorisationResult"
            CustomerLanguage:
              title: Customer Language
              description: Language used to display messages to the customer
              type: string
        PaymentReceipt:
          $ref: "#/components/schemas/PaymentReceipt"

    #== Reversal
    OriginalPaymentTransaction:
      title: Original Payment Transaction
      description: >
        Original payment transaction details used for referencing a previous transaction.
        Required for reversals (to identify the transaction to reverse), referenced refunds
        (to link the refund to the original purchase), follow-on debits/credits (to chain a
        new transaction to a previous one), and pre-authorisation updates/completions (to
        reference the initial reservation). Use the POITransactionIdentification from the
        original transaction response to populate the TransactionIdentification field.
      type: object
      required:
        - TransactionIdentification
      properties:
        TransactionType:
          $ref: "#/components/schemas/TransactionType"
        ServiceAttribute:
          $ref: "#/components/schemas/ServiceAttribute"
        AdditionalService:
          type: array
          items:
            $ref: "#/components/schemas/AdditionalService"
        TransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        TransactionDetails:
          $ref: "#/components/schemas/TransactionDetails"
    
    ReversalRequest:
      title: Reversal Request
      description: |
        A Reversal is a **technical** process to cancel a transaction *before* it has been settled (finalized).
        It's used to void a pending transaction, for example, in case of an error like a duplicate charge or if the customer cancels immediately.
        From an accounting perspective, the funds are not transferred from the customer's account.

        *See also: `Refund` in `TransactionType`.*
      type: object
      properties:
        ReversalReason:
          type: string
          enum:
            - CustomerCancellation
            - Malfuntion
            - MerchantCancellation
            - UnableToComplete
          description: >
            - CustomerCancellation: Customer cancels the transaction.
            
            - Malfuntion: Reversal after a suspection of malfunction of the POI system.
            
            - MerchantCancellation: Merchant or Cashier cancels the transaction.
            
            - UnableToComplete: POI System unable to complete transaction.
        ReversalTransaction:
          type: object
          required:
            - TransactionType
            - OriginalTransaction
          properties:
            TransactionType:
              $ref: "#/components/schemas/TransactionType"
            OriginalTransaction:
              description: >
                Transaction to be reversed. 
                
                Use the original POITransactionIdentification value to fill this field.
              $ref: "#/components/schemas/OriginalTransaction"

    ReversalResponse:
      title: Reversal Response
      type: object
      required:
        - SaleTransactionIdentification
        - POITransactionIdentification
        - ReversalTransactionResult
      properties:
        SaleTransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        POITransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"
        ReversalTransactionResult:
          type: object
          properties:
            OriginalPaymentTransaction:
              $ref: "#/components/schemas/OriginalPaymentTransaction"
        ReversedAmount:
          type: number
          format: double
        Receipt:
          type: array
          items:
            $ref: "#/components/schemas/PaymentReceipt"

    CardAcquisitionRequest:
      title: Card Acquisition Request
      description: >
        Request to recognise a payment instrument. If a subsequent payment is expected,
        provide PaymentType together with TransactionDetails including TotalAmount and Currency.
        Tip and cashback amounts are provided in TransactionDetails.DetailedAmount.
      type: object
      properties:
        PaymentType:
          description: Type of subsequent payment transaction expected after card recognition.
          type: string
          enum:
            - CardPayment
            - Refund
        TransactionDetails:
          $ref: "#/components/schemas/TransactionDetails"
        AllowedPaymentBrand:
          type: array
          items:
            type: string
        AllowedLoyaltyBrand:
          type: array
          items:
            type: string
                    
    #== SaleToPOIServiceRequest and SaleToPOIServiceResponse
    TransactionIdentification:
      title: Transaction Identification
      type: object
      required:
        - TransactionDateTime
        - TransactionReference
      properties:
        TransactionDateTime:
          type: string
          format: date-time
        TransactionReference:
          type: string

    TransactionType:
      title: Transaction Type
      type: string
      enum:
        - CardPayment
        - Refund
        - Reservation
      description: >
        - CardPayment: Card payment.

        - Refund: Refund transaction. A Refund is a **commercial** process to return funds to a customer *after* a transaction has been settled. It's a new, separate transaction that sends money back to the customer. This is typically used for customer service reasons, such as a product return or a complaint. *See also: `ReversalRequest`.*

        - Reservation: Reservation (pre-authorisation). 
    
    FinancialServiceContent:
      description: >
        Define the type of service requested:

        - FinancialPaymentRequest: The Sale System requests to the POI System to perform a payment (Purchase/Refund/PWCB/MOTO Payment/...).

        - FinancialReversalRequest: The Sale System requests to the POI System to perform a reversal partial or complete to cancel a former payment service.

        - FinancialReconciliationRequest: The Sale System request to the POI System different kinds of transaction reconciliation.

        - FinancialCardAcquisitionRequest: The Sale System requests the POI System to acquire card data without initiating a payment.

        Or the type of the response:

        - FinancialPaymentResponse: The POI System sends a response to a payment request (Purchase/refund/PWCB/MOTO Payment/...).

        - FinancialReversalResponse: The POI System sends a response to a reversal request.

        - FinancialReconciliationResponse: The POI System sends a response to a reconciliation request.

        - FinancialCardAcquisitionResponse: The POI System sends a response to a card acquisition request.
      type: string
      enum:
        - FinancialPaymentRequest
        - FinancialCardAcquisitionRequest
        - FinancialReversalRequest
        - FinancialReconciliationRequest
        - FinancialPaymentResponse
        - FinancialReversalResponse
        - FinancialReconciliationResponse
        - FinancialCardAcquisitionResponse

    TransactionDetails:
      title: Transaction Details
      type: object
      required:
        - TotalAmount
        - Currency
      properties:
        TotalAmount:
          title: Total Amount
          type: number
          format: double
        Currency:
          description: ISO 4217 currency code.
          type: string
          minLength: 3
          maxLength: 3
        DetailedAmount:
          title: Detailed Amount
          type: object
          properties:
            CashBack:
              title: Cash Back
              type: number
              format: double
            Gratuity:
              type: number
              format: double
              description: |
                Most commonly referred to as "Tip".
                A value of 0 in the gratuity will disable the tip choice in the terminal.

    OriginalTransaction:
      title: Original Transaction
      description: >
        Reference to a previous transaction. Required for referenced refunds, pre-authorisation updates, pre-authorisation completions, and follow-on purchases (referenced payments). Populate with the POITransactionIdentification from the original transaction response. For follow-on purchases, this links the new transaction to the original card data without requiring the customer to present their card again.
      type: object
      required:
        - TransactionIdentification
      properties:
        TransactionIdentification:
          $ref: "#/components/schemas/TransactionIdentification"

    ServiceAttribute:
      title: Service Attribute
      type: string
      enum:
        - InitialReservation
        - UpdateReservation
        - PaymentReservation
      description: >
        - InitialReservation: Initial reservation.

        - UpdateReservation: Update reservation.

        - PaymentReservation: Payment after reservation.

    AdditionalService:
      title: Service in addition to the main service.
      type: string
      enum:
        - CashBack
        - Gratuity
      description: >
        - CashBack: Cash back.

        - Gratuity: Gratuity.

    SaleToPOIServiceRequest:
      title: Payment Services Request
      description: >
        Message is sent by the ECR to start a financial service on POI system.

        Example of financial services are: Payment, Refund, Pre-Authorisation, and etc.

        Check the examples for more details.
      type: object
      required:
        - SaleToPOIServiceRequest
      properties:
        SaleToPOIServiceRequest:
          type: object
          required:
            - Header
            - ServiceRequest
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Financial Service Request
                      type: string
                      const: SaleFinancialServiceRequest
            ServiceRequest:
              type: object
              required:
                - Environment
                - ServiceContent
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                ServiceContent:
                  $ref: "#/components/schemas/FinancialServiceContent"
                PaymentRequest:
                  $ref:  "#/components/schemas/PaymentRequest"
                CardAcquisitionRequest:
                  $ref: "#/components/schemas/CardAcquisitionRequest"
                ReversalRequest:
                  $ref:  "#/components/schemas/ReversalRequest"

    SaleToPOIServiceResponse:
      title: Payment Services Response
      type: object
      required:
        - SaleToPOIServiceResponse
      properties:
        SaleToPOIServiceResponse:
          type: object
          required:
            - Header
            - ServiceResponse
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                - properties:
                    MessageFunction:
                      type: string
                      const: SaleFinancialServiceResponse
            ServiceResponse:
              type: object
              required:
                - Environment
                - Context
                - ServiceContent
                - Response
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                ServiceContent:
                  $ref: "#/components/schemas/FinancialServiceContent"
                Response:
                  $ref:  "#/components/schemas/Response"
                SupplementaryData:
                  $ref: "#/components/schemas/SupplementaryData"
                PaymentResponse:
                  $ref:  "#/components/schemas/PaymentResponse"
                ReversalResponse:
                  $ref:  "#/components/schemas/ReversalResponse"
                CardAcquisitionResponse:
                  $ref:  "#/components/schemas/CardAcquisitionResponse"

    #== Reconciliation
    ReconciliationType:
      type: string
      enum:
        - AcquirerReconciliation
      description: >
        - AcquirerReconciliation: Reconciliation between the POI and one or several Acquirers only. 
        There is no reconciliation between the Sale System and the POI System.

    SaleToPOIReconciliationRequest:
      title: Reconciliation Request
      description: >
        Message is sent by the ECR to start a reconciliation (also know as "Day End") process on POI system.
      type: object
      required:
        - SaleToPOIReconciliationRequest
      properties:
        SaleToPOIReconciliationRequest:
          type: object
          required:
            - Header
            - ReconciliationRequest
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Financial Reconciliation Request
                      type: string
                      const: SaleFinancialReconciliationRequest
            ReconciliationRequest:
              type: object
              required:
                - Environment
                - ReconciliationRequestData
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                ReconciliationRequestData:
                  title: Reconciliation Request Data
                  type: object
                  required:
                    - ReconciliationType
                  properties:
                    ReconciliationType:
                      $ref: "#/components/schemas/ReconciliationType"

    SaleToPOIReconciliationResponse:
      title: Reconciliation Response
      type: object
      required:
        - SaleToPOIReconciliationResponse
      properties:
        SaleToPOIReconciliationResponse:
          type: object
          required:
            - Header
            - ReconciliationResponse
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Financial Reconciliation Request
                      type: string
                      const: SaleFinancialReconciliationResponse
            ReconciliationResponse:
              type: object
              required:
                - Environment
                - ReconciliationRequestData
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                SupplementaryData:
                  $ref: "#/components/schemas/SupplementaryData"
                Response:
                  $ref: "#/components/schemas/Response"
                ReconciliationResponseData:
                  title: Reconciliation Response Data
                  type: object
                  required:
                    - ReconciliationType
                  properties:
                    ReconciliationType:
                      $ref: "#/components/schemas/ReconciliationType"

    #== SaleToPOIAdministrativeRequest and SaleToPOIAdministrativeResponse
    SaleToPOIAdministrativeRequest:
      title: Administrative Request
      description: >
        Message is sent by the ECR to start administrative services on POI system.
        
        Administrative services include terminal configuration and acquirer initialization.
      type: object
      required:
        - SaleToPOIAdministrativeRequest
      properties:
        SaleToPOIAdministrativeRequest:
          type: object
          required:
            - Header
            - AdministrativeRequest
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Administrative Request
                      type: string
                      const: AdminRequest
            AdministrativeRequest:
              type: object
              required:
                - Environment
                - AdministrativeServiceIdentification
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                AdministrativeServiceIdentification:
                  $ref: "#/components/schemas/AdministrativeServiceIdentification"

    SaleToPOIAdministrativeResponse:
      title: Administrative Response
      description: Response to administrative request
      type: object
      required:
        - SaleToPOIAdministrativeResponse
      properties:
        SaleToPOIAdministrativeResponse:
          type: object
          required:
            - Header
            - AdministrativeResponse
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Administrative Response
                      type: string
                      const: AdminResponse
            AdministrativeResponse:
              type: object
              required:
                - Environment
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                Response:
                  $ref: "#/components/schemas/Response"
                PaymentReceipt:
                  $ref: "#/components/schemas/PaymentReceipt"
                PaymentInformation:
                  $ref: "#/components/schemas/PaymentInformationResponse"

    PaymentInformationResponse:
      title: Payment Information Response
      description: Extended payment information returned by the terminal.
      type: object
      properties:
        TerminalIdentifierLong:
          description: Extended terminal identifier in platform-merchant-terminal format.
          type: string
          example: EP2-473573-26106670

    AdministrativeServiceIdentification:
      title: Administrative Service Identification
      description: >
        Identifies the type of administrative service requested

        - AcquirerInitialization: Initialize and configure acquirer parameters

        - TerminalConfiguration: Request Terminal Management System to push new configuration to the POI

        - PaymentMenu: Open the payment application menu on the POI

        - LastDayEnd: Trigger the last day-end report/closing operation on the POI

        - PaymentInformation: Request payment information from the POI
      type: string
      enum:
        - AcquirerInitialization
        - TerminalConfiguration
        - PaymentMenu
        - LastDayEnd
        - PaymentInformation

    #== SaleToPOIDeviceRequest and SaleToPOIDeviceResponse

    InputRequest:
      title: Input Request
      type: object
      required:
        - DisplayOutput
        - InputData
      properties:
        DisplayOutput:
          type: object
          properties:
            MessageContent:
              type: object
              properties:
                InfoScreen:
                  $ref: "#/components/schemas/InfoScreen"
                MultiOptionsSingleSelectionScreen:
                  $ref: "#/components/schemas/MultiOptionsSingleSelectionScreen"
                MultiOptionsMultiSelectionScreen:
                  $ref: "#/components/schemas/MultiOptionsMultiSelectionScreen"
                ImageInfoScreen:
                  $ref: "#/components/schemas/ImageInfoScreen"
                QRScreen:
                  $ref: "#/components/schemas/QRScreen"
                InfoTableScreen:
                  $ref: "#/components/schemas/InfoTableScreen"
                SignatureScreen:
                  $ref: "#/components/schemas/SignatureScreen"
                ImageScreen:
                  $ref: "#/components/schemas/ImageScreen"
                CaptureDataScreen:
                  $ref: "#/components/schemas/CaptureDataScreen"
        InputData:
          $ref: "#/components/schemas/InputData"

    MultiOptionsMultiSelectionScreen:
      title: Multi Options with Multi Selection Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to present a set of options to the user, allowing them to select multiple options from a list, with optional action buttons."
      type: object
      required:
        - Title
        - OptionElements
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title/question to display
        OptionElements:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/OptionElement"
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    ImageInfoScreen:
      title: Image Info Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to display information with an image with optional text, and action buttons."
      type: object
      required:
        - Title
        - Icon
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title of the screen, displayed in the top of the screen with large font below the subtitle
        Subtitle:
          type: string
          description: Subtitle of the screen, displayed above the title with smaller font
        Icon:
          $ref: "#/components/schemas/IconSpecification"
        IconColor:
          type: string
          description: Hex color code for the icon with format "#6200EE"
          minLength: 7
          maxLength: 9
        Text:
          type: string
          description: Text displayed below the icon
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    QRScreen:
      title: QR Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to display a QR code with optional text, and action buttons."
      type: object
      required:
        - Title
        - QRCode
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title of the screen, displayed in the top of the screen with large font below the subtitle
        Subtitle:
          type: string
          description: Subtitle of the screen, displayed above the title with smaller font
        Text:
          type: string
          description: Text displayed below the QRCode
        QRCode:
          type: string
          format: uri
          description: URL to be encoded in the QR code, should be a valid URL starting with "http://" or "https://"
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    InfoTableScreen:
      title: Info Table Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to display a formatted string (e.g. receipt or table) with optional title and action button"
      type: object
      required:
        - Title
        - FormattedString
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title of the screen, displayed in the top of the screen
        FormattedString:
          type: string
          description: Formatted string to display (e.g. receipt or table)
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    MultiOptionsSingleSelectionScreen:
      title: Multi Options with Single Selection Screen
      description: |
        **Worldline extension** — this screen type extends the standard Nexo DeviceRequest with rich UI capabilities.
        Screen to present a set of options to the user, allowing them to select a single option from multiple choices.

        The OptionId of the selected option will be returned in the response as InputResultData.InputMessage.
      type: object
      required:
        - Title
        - OptionElements
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title/question to display
        OptionElements:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/OptionElement"

    OptionElement:
      title: Option Element
      type: object
      required:
        - OptionId
        - OptionTitle
      properties:
        OptionId:
          type: string
          description: Unique identifier for the option will be used in the response
        OptionTitle:
          type: string
          description: Description of the option
        OptionContent:
          type: string
          description: Additional text displayed below the title
        OptionIconColor:
          type: string
          description: Color in hex format with format "#6200EE"
        OptionIcon:
          $ref: "#/components/schemas/IconSpecification"

    InfoScreen:
      title: Info Screen
      description: >
        **Worldline extension** — this screen type extends the standard Nexo DeviceRequest with rich UI capabilities.
        Info screen is used to display information to the user, with a mandatory title, and subtitle, and optional buttons.

        If the buttons are provided, the value of the clicked ButtonId will be send in the response as InputResultData.InputMessage.
      type: object
      required:
        - Title
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          description: Title of the screen, displayed in the top of the screen with large font below the subtile
          type: string
        Subtitle:
          description: Subtitle of the screen, displayed above the title with smaller font
          type: string
        Text:
          type: string
          description: Description text displayed below the title and subtitle
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    SignatureScreen:
      title: Signature Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to capture a signature from the user, with optional buttons."
      type: object
      required:
        - Title
        - PrimaryButton
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title of the screen, displayed in the top of the screen
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    ImageScreen:
      title: Image Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to display an image with optional action buttons."
      type: object
      required:
        - ImageBase64
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        ImageBase64:
          type: string
          description: Base64 encoded image
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"

    CaptureDataScreen:
      title: Capture Data Screen
      description: "**Worldline extension** \u2014 this screen type extends the standard Nexo DeviceRequest with rich UI capabilities. Screen to capture a data value (e.g. email) from the user, with optional buttons."
      type: object
      required:
        - Title
        - CapturingDataType
        - PrimaryButton
      properties:
        ShowLogo:
          type: boolean
          description: Flag to indicate whether to show the logo at the top of the screen
        BackgroundColor:
          type: string
          description: Hex color code for background with format "#6200EE"
          minLength: 7
          maxLength: 9
        ButtonColor:
          type: string
          description: Hex color code for button with format "#3700B3"
          minLength: 7
          maxLength: 9
        Title:
          type: string
          description: Title of the screen, displayed in the top of the screen
        CapturingDataType:
          type: string
          description: |
            Type of data to capture options are: 

            - AMOUNT

            - PHONE_NUMBER
            
            - EMAIL
            
            - ZIP_CODE
        Hint: 
          type: string
          description: Text field placeholder, per example "0.00", "john@email.com" or "EUR"
        Currency:
          type: string
          description: Currency code from ISO4217, only used when CapturingDataType is AMOUNT
        PrimaryButton:
          $ref: "#/components/schemas/ScreenButton"
        SecondaryButton:
          $ref: "#/components/schemas/ScreenButton"


    IconSpecification:
      title: Icon Specification
      description: >
        Should be prefixed with the icon type, per example "icon.payment" or "emoji.U+1F600".
        
        Supported icon types are:

        - icon: you can find our icons in the following page https://docs.terminal.worldline-solutions.com/build-your-integration/custom-ui-guide

        - emoji: display the specified emoji, which can be represented by its [Unicode code](https://unicode.org/emoji/charts/full-emoji-list.html#1f603) or the actual emoji character.

        - material: icons of the material design icons library, check the full list [here](https://marella.github.io/material-design-icons/demo/font).
      type: string

    ScreenButton:
      title: Button to be used in the dynamic UIs
      type: object
      properties:
        ButtonId:
          description: Identifier for the button, used to identify the button in the response
          type: string
        ButtonContent:
          description: Text of the button
          type: string

    InputCommand:
      title: Input Command
      type: string
      description: >
        Type of input command to be requested from the user, will change the expected response.
      enum:
        - GetAnyKey
        - TextString
        - Signature
      example: GetAnyKey

    InputData:
      title: Input Data
      description: >
        Defines the type of input data to be requested from the user, will change the expected response.

        Use the MaximumInputTime to dismiss the screen automatically after the given time in milliseconds, use 0 for no limit.
      type: object
      required:
        - MaximumInputTime
      properties:
        MaximumInputTime:
          type: integer
          description: Maximum input time in milliseconds use 0 for no limit.

    InputResponse:
      title: Input Response
      type: object
      required:
        - InputResult
      properties:
        InputResult:
          type: object
          required:
            - InputResultData
          properties:
            InputResultData:
              type: object
              required:
                - InputCommand
              properties:
                InputCommand:
                  $ref: "#/components/schemas/InputCommand"
                InputMessage:
                  type: string
                  description: >
                    Data collected from the user, based on the InputCommand type:

                    - GetAnyKey: the ButtonId for buttons or OptionId for option, 
                    in case of multiple options the ids will be separated by comma, for example "option1,option2"

                    - TextString: the text entered by the user
                    
                    - Signature: the signature captured from the user as a image in base64

    SaleToPOIDeviceRequest:
      title: Device Request
      type: object
      required:
        - SaleToPOIDeviceRequest
      properties:
        SaleToPOIDeviceRequest:
          type: object
          required:
            - Header
            - DeviceRequest
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                - properties:
                    MessageFunction:
                      description: Request one or several functions of the device, from user Interface or payment peripherals on the POI system or on the Sale system. 
                      type: string
                      const: DeviceRequest
            DeviceRequest:
              type: object
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                InputRequest:
                  $ref: "#/components/schemas/InputRequest"
                PrintRequest:
                  type: object
                  description: Request to print content on the terminal's printer.
                  properties:
                    OutputContent:
                      $ref: "#/components/schemas/OutputContent"
                    OutputContentList:
                      description: "**Worldline extension** \u2014 allows combining multiple output formats in a single print request."
                      type: array
                      items:
                        type: object
                        properties:
                          OutputContent:
                            $ref: "#/components/schemas/OutputContent"


    SaleToPOIDeviceResponse:
      title: Device Response
      type: object
      required:
        - SaleToPOIDeviceResponse
      properties:
        SaleToPOIDeviceResponse:
          type: object
          required:
            - Header
            - DeviceResponse
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                - properties:
                    MessageFunction:
                      description: Request one or several functions of the device, from user Interface or payment peripherals on the POI system or on the Sale system. 
                      type: string
                      const: DeviceResponse
            DeviceResponse:
              type: object
              required:
                - Environment
                - Response
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                InputResponse:
                  $ref: "#/components/schemas/InputResponse"
                Response:
                  $ref: "#/components/schemas/Response"
    
    #== SaleToPOIMessageStatusRequest and SaleToPOIMessageStatusResponse
    SaleToPOIMessageStatusRequest:
      title: Message Status Request
      description: >
        The SaleToPOIMessageStatusRequest message is sent by a sale system when the sale system wants
        to know the status of previous messages that has not been answered.
      type: object
      required:
        - SaleToPOIMessageStatusRequest
      properties:
        SaleToPOIMessageStatusRequest:
          type: object
          required:
            - Header
            - StatusRequest
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                - properties:
                    MessageFunction:
                      description: Request the status of a previous message for which the Sale system has no response. 
                      type: string
                      const: MessageStatusRequest
            StatusRequest:
              type: object
              required:
                - Environment
                - MessageStatusRequestData
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                MessageStatusRequestData:
                  type: object
                  required:
                    - ExchangeIdentification
                    - InitiatingParty
                  properties:
                    ExchangeIdentification:
                      $ref: "#/components/schemas/ExchangeIdentification"
                    InitiatingParty:
                      $ref: "#/components/schemas/InitiatingParty"

    SaleToPOIMessageStatusResponse:
      title: Message Status Response
      description: >
        The SaleToPOIMessageStatusResponse message is sent by a POI System to respond to the sale
        system at a previous message status request.

        Based on the original request type the response will have one of: 

          - RepeatedPaymentResponse: for previous PaymentRequest
          
          - RepeatedReversalResponse: for previous ReversalRequest
      type: object
      required:
        - SaleToPOIMessageStatusResponse
      properties:
        SaleToPOIMessageStatusResponse:
          type: object
          required:
            - Header
            - StatusResponse
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                - properties:
                    MessageFunction:
                      description: Request one or several functions of the device, from user Interface or payment peripherals on the POI system or on the Sale system. 
                      type: string
                      const: MessageStatusResponse
            StatusResponse:
              type: object
              required:
                - Environment
                - MessageStatusResponseData
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                MessageStatusResponseData:
                  type: object
                  required:
                    - ExchangeIdentification
                    - InitiatingParty
                  properties:
                    ExchangeIdentification:
                      $ref: "#/components/schemas/ExchangeIdentification"
                    InitiatingParty:
                      $ref: "#/components/schemas/InitiatingParty"
                    TransactionResponse:
                      $ref: "#/components/schemas/Response"
                    RepeatedPaymentResponse:
                      $ref: "#/components/schemas/PaymentResponse"
                    RepeatedReversalResponse:
                      $ref: "#/components/schemas/ReversalResponse"
                Response:
                  $ref: "#/components/schemas/Response"

    #== SaleToPOIMessageRejection               
    SaleToPOIMessageRejection:
      title: Message Rejection
      description: >
        The SaleToPOIMessageRejection message is sent by a POI System to reject a message that has been received.
        The rejection is sent in the same way as the original message.
      type: object
      required:
        - SaleToPOIMessageRejection
      properties:
        SaleToPOIMessageRejection:
          type: object
          required:
            - Header
            - Reject
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Request one or several functions of the device, from user Interface or payment peripherals on the POI system or on the Sale system. 
                      type: string
                      const: Rejection
            Reject:
              type: object
              required:
                - Response
              properties:
                RejectReason:
                  title: Rejection Reason
                  type: string
                  enum:
                    - UnableToProcess
                    - InvalidMessage
                    - ParsingError
                    - Security
                    - InitiatingParty
                    - RecipientParty
                    - DuplicateMessage
                    - ProtocolVersion
                    - MessageType
                  description: >
                    Possible values are:
                    
                    - UnableToProcess: Not possible to process the message, for instance the security module is unavailable, the hardware is unavailable, or there is a problem of resource.
                    
                    - InvalidMessage: Invalid envelope of the message.
                    
                    - ParsingError: Invalid message: At least one of the data element or data structure is not present, the format, or the content of one data element or one data structure is not correct.
                    
                    - Security: Security error (for example an invalid key or an incorrect MAC value).
                    
                    - InitiatingParty: Invalid identification data for the sender.
                    
                    - RecipientParty: Invalid identification data for the the receiver.
                    
                    - DuplicateMessage: Duplicate message, the identification of the exchange is the same than a previous message.
                    
                    - ProtocolVersion: Version of the protocol couldn't be supported by the recipient.
                    
                    - MessageType: Type of message the recipient receives is unknow or unsupported.
                AdditionalInformation:
                  type: string
                  description: >
                    Additional information about the rejection. The content of this field is not defined in the standard.

                    Check the AdditionalResponseInformation field in the Response object for possible values.
                  minLength: 1
                  maxLength: 140
  
    SaleToPOIAbort:
      title: Abort request
      description: The SaleToPOIAbort message is sent by a sale system to abort process on POI.
      type: object
      required:
        - SaleToPOIAbort
      properties:
        SaleToPOIAbort:
          type: object
          required:
            - Header
            - Abort
          properties:
            Header:
              allOf:
                - $ref: "#/components/schemas/Header"
                - type: object
                  properties:
                    MessageFunction:
                      description: Abort the current process or the last request.
                      type: string
                      const: Abort
            Abort:
              type: object
              required:
                - Environment
                - SystemAbort
              properties:
                Environment:
                  $ref: "#/components/schemas/Environment"
                Context:
                  $ref: "#/components/schemas/Context"
                SystemAbort:
                  type: object
                  required:
                    - ExchangeIdentification
                    - AbortReason
                  properties:
                    ExchangeIdentification:
                      $ref: "#/components/schemas/ExchangeIdentification"
                    AbortReason:
                      type: string
                      minLength: 1
                      maxLength: 140
    
    MerchantResponse:
      type: object
      properties:
        umid:
          type: string
        connectedTerminals:
          type: array
          items:
            type: string

    OutputContent:
      type: object
      description: Content to be printed. Format determines which sub-fields are used.
      required:
        - Format
      properties:
        Format:
          type: string
          enum: [SimpleText, Barcode, Image, JSON]
          description: The format of the output content.
        MessageContent:
          type: string
          description: Text content for SimpleText format.
        OutputJSON:
          type: array
          description: "**Worldline extension** \u2014 not part of the Nexo Retailer standard. Structured text lines for JSON format."
          items:
            type: object
            properties:
              CharacterStyle:
                type: string
                enum: [Normal, Bold]
              Alignment:
                type: string
                enum: [Left, Right, Centred]
              EndOfLineFlag:
                type: boolean
              Text:
                type: string
              FontSize:
                type: integer
        OutputBarcode:
          type: object
          description: "**Worldline extension** \u2014 not part of the Nexo Retailer standard."
          properties:
            BarcodeType:
              type: string
              enum: [QRCode, Code128]
            BarcodeValue:
              type: string
        OutputImage:
          type: object
          description: "**Worldline extension** \u2014 not part of the Nexo Retailer standard."
          properties:
            ImageBase64:
              type: string
              description: Base64-encoded image data.
            ImageWidth:
              type: integer
            ImageHeight:
              type: integer

  examples:
    SimplePaymentRequest:
      summary: Simple Payment
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 104.11

    SimplePaymentResponse:
      summary: Simple Payment
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00999100022"
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: "26197214"
              Card:
                CardBrand: VISA
                MaskedPin: XXXXXXXXXXXX0119
                PlainCardData:
                  ExpiryDate: "2912"
              CardHolder:
                Language: FR
                Authentication:
                  - AuthenticationMethod: OfflinePIN
                  - AuthenticationMethod: SignatureCapture
            Context:
              PaymentContext:
                OnLineContext: false
                CardDataEntryMode: Physical
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            PaymentResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: R26197055
              POITransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
              RetailerPaymentResult:
                TransactionType: CardPayment
                RequestedTransaction:
                  TransactionType: CardPayment
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: "579"
                  TransactionDetails:
                    TotalAmount: 104.11
                    Currency: EUR
                TransactionResponse:
                  AuthorisationResult:
                    ResponseToAuthorisation:
                      Response: Approved
                    AuthorisationCode: "00"
                CustomerLanguage: FR
              PaymentReceipt:
                - DocumentQualifier: CustomerReceipt
                  OutputContent:
                    MessageDestination: CardholderReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                                ***Cardholder Receipt***
                                
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            
                            
                            Total-EFT EUR:             104.11
                            
                            Transaction OK
                - DocumentQualifier: CashierReceipt
                  OutputContent:
                    MessageDestination: MerchantReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            Act-Id:                       40
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            E4B00E9F1B979BCEF016662BF9C201D5
                                                                02/10
                                                                
                            
                            Total-EFT EUR:             104.11
                            
                            Transaction OK
            Response:
              Response: Success

    SimplePaymentErrorResponse:
      summary: Simple Payment with Error
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failure
              ResponseReason: NotAllowed
              AdditionalResponseInformation: WPI_ERR_COND_MISSING_MANDATORY_PARAMETER:EFT_E_PARAMETER_AMOUNT_MISSING

    PaymentRequestWithTipRequest:
      summary: Payment Request with Tip
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                AdditionalService:
                  - Gratuity
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 104.11
                  DetailedAmount:
                    Gratuity: 3.00
                
    

    

    PaymentRequestWithTipResponse:
      summary: Payment Request with Tip
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00999100022"
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: "26197214"
              Card:
                CardBrand: VISA
                MaskedPin: XXXXXXXXXXXX0119
                PlainCardData:
                  ExpiryDate: "2912"
              CardHolder:
                Language: FR
                Authentication:
                  - AuthenticationMethod: OfflinePIN
                  - AuthenticationMethod: SignatureCapture
            Context:
              PaymentContext:
                OnLineContext: false
                CardDataEntryMode: Physical
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            PaymentResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: R26197055
              POITransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
              RetailerPaymentResult:
                TransactionType: CardPayment
                RequestedTransaction:
                  TransactionType: CardPayment
                  AdditionalService:
                    - Gratuity
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: "579"
                  TransactionDetails:
                    TotalAmount: 104.11
                    Currency: EUR
                    DetailedAmount:
                      Gratuity: 3.00
                TransactionResponse:
                  AuthorisationResult:
                    ResponseToAuthorisation:
                      Response: Approved
                    AuthorisationCode: "00"
                CustomerLanguage: FR
              PaymentReceipt:
                - DocumentQualifier: CustomerReceipt
                  OutputContent:
                    MessageDestination: CardholderReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                                ***Cardholder Receipt***
                                
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            
                            
                            Total-EFT EUR:             104.11
                            
                            Transaction OK
                - DocumentQualifier: CashierReceipt
                  OutputContent:
                    MessageDestination: MerchantReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            Act-Id:                       40
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            E4B00E9F1B979BCEF016662BF9C201D5
                                                                02/10
                                                                
                            
                            Total-EFT EUR:             104.11
                            
                            Transaction OK
            Response:
              Response: Success

    PaymentWithReceiptDelegationRequest:
      summary: Payment with Receipt Delegation (disable terminal printing)
      description: |
        Demonstrates how to prevent the terminal from printing the receipt. By including `SaleTerminalData.SaleCapabilities`
        with `PrinterReceipt` in the Context, the ECR signals that it handles receipt printing. The terminal will skip
        printing but still return the receipt data in the response. Use this when your system manages its own receipt
        printing and you want to avoid duplicate receipts.
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "0d1e2f3a-4b5c-4d6e-7f8a-9b0c1d2e3f4a"
            CreationDateTime: "2026-03-31T10:30:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            Context:
              SaleTerminalData:
                SaleCapabilities:
                  - PrinterReceipt
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2026-03-31T10:30:00.0+01:00"
                  TransactionReference: R-NO-PRINT-001
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 42.50

    PreAuthorisationRequest:
      summary: Pre-Authorisation
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: Reservation
                ServiceAttribute: InitialReservation
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 15.00

    PreAuthorisationResponse:
      summary: Pre-Authorisation
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00999100022"
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: "26197214"
              Card:
                CardBrand: VISA
                MaskedPin: XXXXXXXXXXXX0119
                PlainCardData:
                  ExpiryDate: "2912"
              CardHolder:
                Language: FR
                Authentication:
                  - AuthenticationMethod: OfflinePIN
                  - AuthenticationMethod: SignatureCapture
            Context:
              PaymentContext:
                OnLineContext: false
                CardDataEntryMode: Physical
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            PaymentResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: R26197055
              POITransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
              RetailerPaymentResult:
                TransactionType: Reservation
                RequestedTransaction:
                  TransactionType: Reservation
                  ServiceAttribute: InitialReservation
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: R26197055
                  TransactionDetails:
                    Currency: EUR
                    TotalAmount: 15.00
                TransactionResponse:
                  AuthorisationResult:
                    ResponseToAuthorisation:
                      Response: Approved
                    AuthorisationCode: "00"
                CustomerLanguage: FR
              PaymentReceipt:
                - DocumentQualifier: CustomerReceipt
                  OutputContent:
                    MessageDestination: CardholderReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                                ***Cardholder Receipt***
                                
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            
                            
                            Total-EFT EUR:             15.00
                            
                            Transaction OK
                - DocumentQualifier: CashierReceipt
                  OutputContent:
                    MessageDestination: MerchantReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            Act-Id:                       40
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            E4B00E9F1B979BCEF016662BF9C201D5
                                                                02/10
                                                                
                            
                            Total-EFT EUR:             15.00
                            
                            Transaction OK
            Response:
              Response: Success

    PreAuthorisationUpdateRequest:
      summary: Pre-Authorisation Update
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: Reservation
                ServiceAttribute: UpdateReservation
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197056
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 5.00

    PreAuthorisationCompletionRequest:
      summary: Pre-Authorisation Completion
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: Reservation
                ServiceAttribute: PaymentReservation
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197056
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 20.00

    RefundReferencedRequest:
      summary: Referenced Refund
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: Refund
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 104.11
    
    RefundUnreferencedRequest:
      summary: Unreferenced Refund
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: Refund
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 104.11

    DccRefundRequest:
      summary: DCC Refund
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: Refund
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 104.11
                DCCRefund:
                  RateReferenceIdentifier: RATE-REF-001
                  OriginalTransactionDate: "20200501"

    ReconciliationRequest:
      summary: Reconciliation
      value:
        SaleToPOIReconciliationRequest:
          Header:
            MessageFunction: SaleFinancialReconciliationRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ReconciliationRequest:
            Environment: {}
            ReconciliationRequestData: 
              ReconciliationType: AcquirerReconciliation

    ReconciliationResponse:
      summary: Reconciliation
      value:
        SaleToPOIReconciliationResponse:
          Header:
            MessageFunction: SaleFinancialReconciliationResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ReconciliationResponse:
            Environment:           
              Merchant: 
                Identification: 
                  Identification: WL000D5T0000005  
              POI:
                Identification:
                  Identification: "26197214"
            ReconciliationResponseData: 
              ReconciliationType: AcquirerReconciliation
            Context:
              PaymentContext: {}
              SaleContext:
                SaleIdentification: SaleTermA
            Response:
              Response: Successful
            PaymentReceipt:
              DocumentQualifier: CashierReceipt
              OutputContent:
                MessageDestination: MerchantReceipt
                Format: SimpleText
                MessageContent: |
                  --------------------------------
                  Aravind QA
                  Hardturmstrasse 201
                  8021 Zürich
                  --------------------------------

                  *** Final Balance ***

                  Accounting period:             9

                  03.09.2024              18:46:01

                  Trm-Id:                 26257157

                  Sum of acc. period

                  Total (14):          CHF  224.42

                  --------------------------------

                  Total per brand

                  VISA

                  CHF
                  Purchase (17):            225.02
                  Credit (0):                 0.00
                  Reversal (3):              -0.60
                  Rev. credit (0):            0.00
                  --------------------------------
                  Total CHF Accounting period:
                  224.42



                  Daily closing
                  *** end ***

    AdministrativeInitRequest:
      summary: Administrative Init Request (Acquirer Initialization)
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: AcquirerInitialization

    AdministrativeConfigRequest:
      summary: Administrative Config Request (Terminal Configuration)
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: TerminalConfiguration

    AdministrativePaymentMenuRequest:
      summary: Administrative Payment Menu Request (Payment Menu)
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: PaymentMenu

    AdministrativeLastDayEndRequest:
      summary: Administrative Last Day End Request (Last Day End)
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: LastDayEnd

    AdministrativePaymentInformationRequest:
      summary: Administrative Payment Information Request
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: PaymentInformation

    AdministrativeInitResponse:
      summary: Administrative Init Response (Acquirer Initialization)
      value:
        SaleToPOIAdministrativeResponse:
          Header:
            MessageFunction: AdminResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          AdministrativeResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000005
              POI:
                Identification:
                  Identification: "26197214"
            Response:
              Response: Successful
            PaymentReceipt:
              DocumentQualifier: CashierReceipt
              OutputContent:
                MessageDestination: MerchantReceipt
                Format: SimpleText
                MessageContent: |
                  --------------------------------
                          Worldline Netherlands
                                  
                             2132JA Hoofddorp
                  --------------------------------

                       *** Init Complete ***

                  Terminal initialization successful

                  --------------------------------

    AdministrativeConfigResponse:
      summary: Administrative Config Response (Terminal Configuration)
      value:
        SaleToPOIAdministrativeResponse:
          Header:
            MessageFunction: AdminResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          AdministrativeResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000005
              POI:
                Identification:
                  Identification: "26197214"
            Response:
              Response: Successful
            PaymentReceipt:
              DocumentQualifier: CashierReceipt
              OutputContent:
                MessageDestination: MerchantReceipt
                Format: SimpleText
                MessageContent: |
                  --------------------------------
                          Worldline Netherlands
                                  
                             2132JA Hoofddorp
                  --------------------------------

                     *** Config Complete ***

                  Terminal configuration updated

                  --------------------------------

    AdministrativePaymentInformationResponse:
      summary: Administrative Payment Information Response
      value:
        SaleToPOIAdministrativeResponse:
          Header:
            MessageFunction: AdminResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          AdministrativeResponse:
            Environment: {}
            Response:
              Response: Successful
            PaymentInformation:
              TerminalIdentifierLong: EP2-473573-26106670

    MessageRejectionResponse:
      summary: Message Rejection
      value:
        SaleToPOIMessageRejection:
          Header:
            MessageFunction: Rejection
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          Reject:
              RejectReason: UnableToProcess

    AbortPaymentRequest:
      summary: Abort of Simple Payment request
      value:
        SaleToPOIAbort:
          Header:
            MessageFunction: Abort
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "f6a7b8c9-d0e1-4f2a-3b4c-5d6e7f8a9b0c"
            CreationDateTime: "2020-05-04T18:14:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          Abort:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            SystemAbort:
              ExchangeIdentification: "f6a7b8c9-d0e1-4f2a-3b4c-5d6e7f8a9b0c"
              AbortReason: Customer error

    ReversalRequest:
      summary: Reversal of Simple Payment
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialReversalRequest
            ReversalRequest:
              ReversalTransaction:
                TransactionType: CardPayment
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                    TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
              ReversalReason: MerchantCancellation

    ReversalResponse:
      summary: Reversal of Simple Payment
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00999100022"
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: "26197214"
              Card:
                CardBrand: VISA
                MaskedPin: XXXXXXXXXXXX0119
              CardHolder:
                Language: FR
                Authentication:
                  - AuthenticationMethod: OfflinePIN
                  - AuthenticationMethod: SignatureCapture
            Context:
              PaymentContext:
                OnLineContext: false
                CardDataEntryMode: Physical
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialReversalResponse
            FinancialReversalResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: R26197055
              POITransactionIdentification:
                TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                TransactionReference: "2;00999100022;19940829991;79429;010099910002219940829991;"
              OriginalPaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: "579"
                TransactionDetails:
                  TotalAmount: 104.11
                  Currency: EUR
              ReversedAmount: 104.11
              Receipt:
                - DocumentQualifier: CustomerReceipt
                  OutputContent:
                    MessageDestination: CardholderReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                                ***Cardholder Receipt***
                                
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            
                            
                            Total-EFT EUR:             104.11
                            
                            Transaction OK
                - DocumentQualifier: CashierReceipt
                  OutputContent:
                    MessageDestination: MerchantReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                                      QA NIEXP
                                Chau. de Haecht 1442
                                    1130 Brussels
                                    --------------------------------
                      
                            Purchase
                            VISA CREDIT contactless
                            XXXXXXXXXXXX0119
                            Account Type:             Credit
                            
                            03.07.2024              14:16:23
                            Trm-Id:                 26197214
                            Act-Id:                       40
                            AID:              A0000000031010
                            Trx. Seq-Cnt:              79429
                            Trx. Ref-No:         19940829991
                            Auth. Code:               057737
                            Acq-Id:                999100022
                            E4B00E9F1B979BCEF016662BF9C201D5
                                                                02/10
                                                                
                            
                            Total-EFT EUR:             104.11
                            
                            Transaction OK
            Response:
              Response: Success

    UIInfoRequest:
      summary: UI - Info Screen
      description: |
        Demonstrates a basic information screen with title, subtitle, descriptive text, and action buttons.
        This pattern is ideal for confirmation dialogs, promotional messages, or any scenario where you need
        to present information to users and capture their decision. Features customizable primary and secondary
        buttons with unique IDs for handling different user responses.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  InfoScreen:
                    Title: Do you want to redeem your loyalty card?
                    Subtitle: You currently have enough point for a 2.50 EUR discount
                    Text: This will apply the discount to your current transaction
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Yes
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: No
              InputData:
                MaximumInputTime: 30000

    UISingleSelectionRequest:
      summary: UI - Single Selection
      description: |
        Shows a single-choice selection interface with multiple options, each supporting custom icons.
        Perfect for menus, category selection, or any scenario requiring users to pick one option from a list.
        Demonstrates various icon types including custom Worldline icons, emoji (direct and Unicode),
        Material Design symbols, and options without icons. Each option has a unique ID for response handling.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  MultiOptionsSingleSelectionScreen:
                    Title: Icon System Demonstration
                    OptionElements:
                      - OptionId: option1
                        OptionTitle: Custom WL Icon
                        OptionContent: icon.ic_yes
                        OptionIcon: icon.ic_yes
                      - OptionId: option2
                        OptionTitle: Direct Emoji
                        OptionContent: emoji.🎉
                        OptionIcon: emoji.🎉
                      - OptionId: option3
                        OptionTitle: Unicode Emoji
                        OptionContent: emoji.U+1F680
                        OptionIcon: emoji.U+1F680
                      - OptionId: option4
                        OptionTitle: Material Symbol
                        OptionContent: material.celebration
                        OptionIcon: material.celebration
                      - OptionId: option5
                        OptionTitle: No Icon
                        OptionContent: (no icon specified)
              InputData:
                MaximumInputTime: 30000

    UIMultiSelectionRequest:
      summary: UI - Multi Selection
      description: |
        Presents a multiple-choice selection interface where users can select multiple options simultaneously.
        Ideal for surveys, feature selection, preferences, or any scenario where multiple choices are valid.
        Includes checkbox-style selection with icons and customizable action buttons. Users can submit their
        selections or navigate away, making it perfect for feedback collection and configuration screens.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  MultiOptionsMultiSelectionScreen:
                    Title: How was our service?
                    OptionElements:
                      - OptionId: option1
                        OptionTitle: Excellent
                        OptionIcon: icon.ic_cloud
                      - OptionId: option2
                        OptionTitle: Good
                        OptionIcon: icon.ic_cloud
                      - OptionId: option3
                        OptionTitle: Okay
                        OptionIcon: icon.ic_cloud
                      - OptionId: option4
                        OptionTitle: Bad
                        OptionIcon: icon.ic_cloud
                      - OptionId: option5
                        OptionTitle: Really Bad
                        OptionIcon: icon.ic_cloud
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Submit review
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: Return to Home
              InputData:
                MaximumInputTime: 0

    UIImageInfoRequest:
      summary: UI - Info Screen with Icon
      description: |
        Displays an information screen enhanced with a visual icon for better user experience and branding.
        Perfect for transaction confirmations, success/failure notifications, or status updates where visual
        cues improve comprehension. Features a prominent icon alongside title, subtitle, and descriptive text,
        plus action buttons for user interaction. Commonly used for payment confirmations and completion screens.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  ImageInfoScreen:
                    Title: Transaction Successful!
                    Subtitle: "Amount Charged: 5,00 EUR"
                    Text: Thank you for charging with us
                    Icon: icon.ic_yes
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Print Receipt
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: Close
              InputData:
                MaximumInputTime: 0

    UIImageInfoCustomColorsRequest:
      summary: UI - Info with Custom Colors
      description: |
        Demonstrates advanced theming capabilities with custom background colors, button colors, and icon colors.
        Shows how to create branded user interfaces that match your application's design system or specific
        campaign themes. Features automatic text contrast adjustment for accessibility and the ability to hide
        default logos. Perfect for seasonal promotions, brand-specific experiences, or A/B testing different
        visual themes while maintaining usability.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  ImageInfoScreen:
                    ShowLogo: false
                    Title: Custom Colors Test
                    Subtitle: This screen has custom background and button colors with smart text contrast
                    BackgroundColor: "#FF6B35"
                    ButtonColor: "#FFD23F"
                    Icon: material.house
                    IconColor: "#FF6B35"
                    Text: You can also change the material icons color
                    PrimaryButton:
                      ButtonId: confirm_button
                      ButtonContent: Confirm
                    SecondaryButton:
                      ButtonId: cancel_button
                      ButtonContent: Cancel
              InputData:
                MaximumInputTime: 30000

    UIQRRequest:
      summary: UI - QR Code
      description: |
        Displays a QR code for users to scan, enabling seamless integration with mobile apps or external services.
        Perfect for loyalty program enrollment, website links, contact sharing, or connecting users to digital
        resources. Features customizable title and subtitle to provide context about what the QR code does,
        plus action buttons for users who prefer alternative interaction methods.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  QRScreen:
                    Title: Scan
                    Subtitle: Join our loyalty program
                    Text: Thank you
                    QRCode: https://loyalty.example.com/join
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Close
              InputData:
                MaximumInputTime: 0

    UITableRequest:
      summary: UI - Table
      description: |
        Presents structured data in a table or formatted list format, ideal for receipts, itemized bills,
        transaction details, or any structured information display. Uses formatted strings to ensure proper
        alignment and readability of tabular data. Perfect for showing pricing breakdowns, order summaries,
        or detailed transaction information where users need to review multiple data points.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  InfoTableScreen:
                    Title: Pricing
                    FormattedString: Long formatted receipt...
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Close
              InputData:
                MaximumInputTime: 100000

    UISignatureRequest:
      summary: UI - Signature
      description: |
        Provides a digital signature capture interface for electronic document signing and transaction authorization.
        Essential for payment processing, contract agreements, delivery confirmations, or any legal/compliance
        requirement for user authorization. Features a drawing area for stylus or finger input with confirmation
        and cancellation options. Commonly used in point-of-sale systems and digital document workflows.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  SignatureScreen:
                    Title: Please sign
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Confirm
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: Close
              InputData:
                MaximumInputTime: 100000

    UIImageRequest:
      summary: UI - Image Display
      description: |
        Displays custom images from base64-encoded data, perfect for showing promotional content, product images,
        instructions, or branded visuals. Features customizable button colors to match your design theme and
        standard action buttons for user interaction. Ideal for marketing campaigns, product showcases, tutorial
        steps, or any scenario where visual content enhances the user experience.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  ImageScreen:
                    ButtonColor: "#3700B3"
                    ImageBase64: "iVBORw0KGgoAAAANSUhEUgAAAYAAAAA/AQAAAADBVyIGAAACZ0lEQVR42u2WMW7cMBBFH2nBZhWoTGHAPILLlDxSynSeDVKk9BF8FCKVS58g0AILBOlkIwXl0GQKipS0dpMqCLBT7FKr+Zo/fz6pVZm/C80JcAL8c8BegVIA7JS8SnyUCsiaMGTNHQ4w7AC+MsFhsmRRygKMPrtW4aeDLDwAsTxnogMYlwo9aQEwQoJfwMt8X9rnVR6AZzNEKQCVAXSEtGRyB8CHVuBHN66aHkgEyAAejsgAMAhTdmuVjjICAJft2n4LTytZAwwXESHLAHAz13m39Kw4pLmCFNrvz/Dgyv3ruC2YzBCJslCKnbcIYMu1SQBcVMBvRrmftpN2uKFddBt1IXwpGs4AX27ZV47pmiQ6uNunFwENzhNXDytRDkTta8+ebA9rSmYrrToag9lHi4nSAKHY5ThU62oUnJ9qBVUpwLBFfGwipJ7+qQDsIJWEqs5YxV458ufg5i41gE611Sx2k13d58l4e1iaHvu3d+wlXGVP2kdrMvdhlZHb/N4MARwRNPQjsui4HUd135j49J3bsVTI8+PHHs54Y37o4HoQDjOlbrFFtyVoVuCY7dLlAMKwHAKVYlcYqpjxwD1oMAEH4lnlp+OmrRkfcf1WR29bZpx/n903CnIeEouXBPeAgM7rLd3MFFJhbQvg2eAd4QWHQhDgttsycn03S6GrMHbq5hnsOnZitu7L89FVKVnoizLi68m45hZtcaVbNW3Kuu5ru3HKgEGhEtIA0hVu9shSl01l0+yp6ctitU2VzO+KxF71s8UCN5VSD0q4BvpC+ryOsK9furmmxrgsZVm+CnX6g3UC/DeAP/KQB/YlnYccAAAAAElFTkSuQmCC"
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Continue
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: Close
              InputData:
                MaximumInputTime: 30000

    UICaptureDataRequest:
      summary: UI - Data Capture
      description: |
        Provides a data input interface for collecting specific types of user information with built-in validation.
        Features typed input fields (like EMAIL) that automatically apply appropriate formatting and validation rules.
        Perfect for collecting customer contact information, registration data, or any structured user input.
        Includes clear labeling and standard action buttons for submission or cancellation.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  CaptureDataScreen:
                    Title: Please enter your email
                    CapturingDataType: EMAIL
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Submit
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: Close
              InputData:
                MaximumInputTime: 30000

    UICaptureRatingScreenRequest:
      summary: UI - Rating Capture (Single Selection with Smiley Icons)
      description: |
        Captures a customer satisfaction rating using a single-selection screen with smiley face icons.
        This is a MultiOptionsSingleSelectionScreen configured with rating-style icons (satisfied, medium, dissatisfied).
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  MultiOptionsSingleSelectionScreen:
                    Title: How was your experience with us?
                    OptionElements:
                      - OptionId: option1
                        OptionTitle: Excellent
                        OptionIcon: icon.ic_smiley_satisfied
                      - OptionId: option2
                        OptionTitle: Okay
                        OptionIcon: icon.ic_smiley_medium
                      - OptionId: option3
                        OptionTitle: Bad
                        OptionIcon: icon.ic_smiley_dissatisfied
              InputData:
                MaximumInputTime: 30000

    CancelPreAuthorizationRequest:
      summary: Cancel Pre-Authorization (Initial Reservation)
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialReversalRequest
            ReversalRequest:
              ReversalTransaction:
                TransactionType: "InitialReservation"
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionReference: "2;00000000002;61479390592;169869;010000000000261479390592;"
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
              ReversalReason: Merchant

    CancelPaymentCompletionRequest:
      summary: Cancel Payment Completion (Payment Reservation)
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialReversalRequest
            ReversalRequest:
              ReversalTransaction:
                TransactionType: "PaymentReservation"
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionReference: "2;00000000002;61479390593;169870;010000000000261479390593;"
                    TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
              ReversalReason: Merchant

    CancelPreAuthorizationResponse:
      summary: Cancel Pre-Authorization Response
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2025-08-12T16:55:45+02:00"
            InitiatingParty:
              Identification: YourInitiatingPartyID
              Type: Merchant
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00999100022"
              Merchant:
                Identification:
                  Identification: "WL0015W90000001"
              Cardholder:
                Authentication:
                  - AuthenticationMethod: Bypass
              Card:
                MaskedPAN: "XXXXXXXXXXXX1017"
              POI:
                Identification:
                  Identification: "26197006"
            Context:
              PaymentContext:
                OnLineContext: true
              SaleContext: {}
            ServiceContent: FinancialReversalResponse
            Response:
              Response: Successful
            ReversalResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2025-08-12T16:55:45+02:00"
              POITransactionIdentification:
                TransactionDateTime: "2025-08-12T16:55:45+02:00"
                TransactionReference: "2;00999100022;61479390592;169869;010099910002261479390592;"
              ReversalTransactionResult:
                OriginalPaymentTransaction:
                  TransactionType: "InitialReservation"
                  TransactionIdentification:
                    TransactionDateTime: "2025-08-12T16:55:45+02:00"
                  TransactionDetails:
                    TotalAmount: 15
                    Currency: "EUR"
              ReversedAmount: 15
              Receipt:
                - DocumentQualifier: "CustomerReceipt"
                  OutputContent:
                    MessageDestination: "CardholderReceipt"
                    Format: "SimpleText"
                    MessageContent: |
                      --------------------------------
                           Worldline Netherlands
                                      
                              2132JA Hoofddorp
                      --------------------------------

                          ***Cardholder Receipt***

                      Reversal - Pre-Authorization Cancel
                      MasterCard

                      12.08.2025              16:55:45
                      Trm-Id:                 26197006
                      Trx. Seq-Cnt:             169869
                      Rev. Seq-Cnt:             169868
                      Trx. Ref-No:         61479390592
                      Acq-Id:                999100022

                      Total-EFT EUR:             15.00

                      --------------------------------
                      Transaction OK

    CancelPaymentCompletionResponse:
      summary: Cancel Payment Completion Response  
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b"
            CreationDateTime: "2025-08-12T16:55:45+02:00"
            InitiatingParty:
              Identification: YourInitiatingPartyID
              Type: Merchant
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00999100022"
              Merchant:
                Identification:
                  Identification: "WL0015W90000001"
              Cardholder:
                Authentication:
                  - AuthenticationMethod: Bypass
              Card:
                MaskedPAN: "XXXXXXXXXXXX1017"
              POI:
                Identification:
                  Identification: "26197006"
            Context:
              PaymentContext:
                OnLineContext: true
              SaleContext: {}
            ServiceContent: FinancialReversalResponse
            Response:
              Response: Successful
            ReversalResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2025-08-12T16:55:45+02:00"
              POITransactionIdentification:
                TransactionDateTime: "2025-08-12T16:55:45+02:00"
                TransactionReference: "2;00999100022;61479390593;169870;010099910002261479390593;"
              ReversalTransactionResult:
                OriginalPaymentTransaction:
                  TransactionType: "PaymentReservation"
                  TransactionIdentification:
                    TransactionDateTime: "2025-08-12T16:55:45+02:00"
                  TransactionDetails:
                    TotalAmount: 20
                    Currency: "EUR"
              ReversedAmount: 20
              Receipt:
                - DocumentQualifier: "CustomerReceipt"
                  OutputContent:
                    MessageDestination: "CardholderReceipt"
                    Format: "SimpleText"
                    MessageContent: |
                      --------------------------------
                           Worldline Netherlands
                                      
                              2132JA Hoofddorp
                      --------------------------------

                          ***Cardholder Receipt***

                      Reversal - Payment Completion Cancel
                      MasterCard

                      12.08.2025              16:55:45
                      Trm-Id:                 26197006
                      Trx. Seq-Cnt:             169870
                      Rev. Seq-Cnt:             169869
                      Trx. Ref-No:         61479390593
                      Acq-Id:                999100022

                      Total-EFT EUR:             20.00

                      --------------------------------
                      Transaction OK

    MessageStatusRequest:
      summary: Message Status Request
      value:
        SaleToPOIMessageStatusRequest:
          Header:
            MessageFunction: MessageStatusRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
            CreationDateTime: "2025-12-12T16:56:27.200+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a
            NumberOfRetries: 3
          StatusRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            Context:
              PaymentContext:
                OnLineContext: false
              SaleContext: {}
            MessageStatusRequestData:
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant

    MessageStatusResponse:
      summary: Message Status Response
      value:
        SaleToPOIMessageStatusResponse:
          Header:
            MessageFunction: MessageStatusResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
            CreationDateTime: "2025-12-12T17:00:43.809+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a
            NumberOfRetries: 3
          StatusResponse:
            Environment:
              Cardholder:
                Language: FR
              Card:
                CardBrand: MAESTRO
                ApplicationIdentifier: A0000000043060
            Context:
              PaymentContext: {}
              SaleContext: {}
            MessageStatusResponseData:
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              TransactionResponse:
                Response: Successful
              RepeatedPaymentResponse:
                SaleTransactionIdentification:
                  TransactionDateTime: "2025-12-12T16:44:40+01:00"
                POITransactionIdentification:
                  TransactionDateTime: "2025-12-12T16:44:40+01:00"
                  TransactionReference: "2;00999100022;92986866332;16249;010099910002292986866332;"
                RetailerPaymentResult:
                  TransactionType: CardPayment
                  RequestedTransaction:
                    TransactionType: CardPayment
                    TransactionIdentification:
                      TransactionDateTime: "2025-12-09T09:47:31+01:00"
                      TransactionReference: R26197055
                    TransactionDetails:
                      TotalAmount: 10.11
                      Currency: EUR
                  TransactionResponse:
                    AuthorisationResult:
                      ResponseToAuthorisation:
                        Response: Approved
                      AuthorisationCode: "678803"
                  PaymentReceipt:
                    - DocumentQualifier: CustomerReceipt
                      OutputContent:
                        MessageDestination: CustomerReceipt
                        Format: SimpleText
                        MessageContent: |
                          --------------------------------
                                    SaleTermA EUR
                               Haechtsesteenweg 1441
                                    1130 Brussel
                          --------------------------------

                              ***Cardholder Receipt***

                          Purchase
                          Maestro contactless
                          XXXXXXXXXXXXX5006
                          Account Type:             Credit

                          12.12.2025              16:44:40
                          Trm-Id:                 26197088
                          AID:              A0000000043060
                          Trx. Seq-Cnt:              16249
                          Trx. Ref-No:         92986866332
                          Auth. Code:               168953
                          Acq-Id:                999100022

                          Payment Solution Reference:
                          2;00999100022;92986866332;16249;
                          010099910002292986866332;
                          Total-EFT EUR:              0.20

                          --------------------------------
                    - DocumentQualifier: CashierReceipt
                      OutputContent:
                        MessageDestination: MerchantReceipt
                        Format: SimpleText
                        MessageContent: |
                          --------------------------------
                                    SaleTermA EUR
                               Haechtsesteenweg 1441
                                    1130 Brussel
                          --------------------------------

                          Purchase
                          Maestro contactless
                          XXXXXXXXXXXXX5006
                          Account Type:             Credit

                          12.12.2025              16:44:40
                          Trm-Id:                 26197088
                          Act-Id:                      151
                          AID:              A0000000043060
                          Trx. Seq-Cnt:              16249
                          Trx. Ref-No:         92986866332
                          Auth. Code:               168953
                          Acq-Id:                999100022
                          4DFB78D8CB08370CEDA0D526006DD29A
                                                     02/10


                          Total-EFT EUR:              0.20

                          --------------------------------

    ReferencedPaymentRequest:
      summary: Referenced Payment (Follow on Purchase)
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2020-05-04T18:13:51.0+01:00"
                  TransactionReference: R26197055
                OriginalTransaction:
                  TransactionIdentification:
                    TransactionDateTime: "2024-12-12T16:30:17+01:00"
                    TransactionReference: "2;00000000002;22863174332;13125;010000000000222863174332;"
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 10.11

    ReferencedPaymentResponse:
      summary: Referenced Payment (Follow on Purchase)
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          ServiceResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00000000002"
              Merchant:
                Identification:
                  Identification: WL0015W90000001
              Cardholder:
                Authentication:
                  - AuthenticationMethod: Bypass
              Card:
                MaskedPAN: XXXXXXXXXXXX1017
              POI:
                Identification:
                  Identification: "26197006"
            Context:
              PaymentContext:
                OnLineContext: true
              SaleContext: {}
            ServiceContent: FinancialPaymentResponse
            PaymentResponse:
              SaleTransactionIdentification:
                TransactionDateTime: "2025-12-09T09:47:31+01:00"
                TransactionReference: R26197055
              POITransactionIdentification:
                TransactionDateTime: "2025-12-09T09:47:31+01:00"
                TransactionReference: "2;00000000002;24863174332;13126;010000000000224863174332;"
              RetailerPaymentResult:
                TransactionType: CardPayment
                RequestedTransaction:
                  TransactionType: CardPayment
                  TransactionIdentification:
                    TransactionDateTime: "2025-12-09T09:47:31+01:00"
                    TransactionReference: R26197055
                  TransactionDetails:
                    TotalAmount: 10.11
                    Currency: EUR
                TransactionResponse:
                  AuthorisationResult:
                    ResponseToAuthorisation:
                      Response: Approved
                    AuthorisationCode: "678803"
              PaymentReceipt:
                - DocumentQualifier: CustomerReceipt
                  OutputContent:
                    MessageDestination: CustomerReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                           Worldline Netherlands

                              2132JA Hoofddorp
                      --------------------------------

                          ***Cardholder Receipt***

                      Purchase
                      MasterCard
                      XXXXXXXXXXXX1017

                      09.12.2025              09:47:31
                      Trm-Id:                 26197006
                      Trx. Seq-Cnt:              13126
                      Trx. Ref-No:         24863174332
                      Orig. Trx. Ref-No:   22863174332
                      Auth. Code:               678803
                      Acq-Id:                        2

                      Payment Solution Reference:
                      [Image]

                      Total-EFT EUR:             10.11

                      --------------------------------
                      Transaction OK

                      --------------------------------
                - DocumentQualifier: CashierReceipt
                  OutputContent:
                    MessageDestination: MerchantReceipt
                    Format: SimpleText
                    MessageContent: |
                      --------------------------------
                           Worldline Netherlands

                              2132JA Hoofddorp
                      --------------------------------

                      Purchase
                      MasterCard
                      XXXXXXXXXXXX1017

                      09.12.2025              09:47:31
                      Trm-Id:                 26197006
                      Act-Id:                        1
                      Trx. Seq-Cnt:              13126
                      Trx. Ref-No:         24863174332
                      Orig. Trx. Ref-No:   22863174332
                      Auth. Code:               678803
                      Acq-Id:                        2


                      Total-EFT EUR:             10.11

                      --------------------------------
                      Transaction OK

                      --------------------------------
            Response:
              Response: Successful

    ReferencedPaymentStatusRequest:
      summary: Status Request for Referenced Payment
      value:
        SaleToPOIMessageStatusRequest:
          Header:
            MessageFunction: MessageStatusRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2025-12-09T09:50:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a
            NumberOfRetries: 3
          StatusRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            MessageStatusRequestData:
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant

    ReferencedPaymentStatusResponse:
      summary: Status Response for Referenced Payment
      value:
        SaleToPOIMessageStatusResponse:
          Header:
            MessageFunction: MessageStatusResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2025-12-09T09:50:00.0+01:00"
            InitiatingParty:
              Identification: WL0015W90000001
              Type: Merchant
            WebhookUrl: https://example.com/webhook?transactionId=d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a
            NumberOfRetries: 3
          StatusResponse:
            Environment:
              Acquirer:
                Identification:
                  Identification: "00000000002"
              Merchant:
                Identification:
                  Identification: WL0015W90000001
              POI:
                Identification:
                  Identification: "26197006"
            MessageStatusResponseData:
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              TransactionResponse:
                Response: Successful
              RepeatedPaymentResponse:
                SaleTransactionIdentification:
                  TransactionDateTime: "2025-12-09T09:47:31+01:00"
                  TransactionReference: R26197055
                POITransactionIdentification:
                  TransactionDateTime: "2025-12-09T09:47:31+01:00"
                  TransactionReference: "2;00000000002;24863174332;13126;010000000000224863174332;"
                RetailerPaymentResult:
                  TransactionType: CardPayment
                  RequestedTransaction:
                    TransactionType: CardPayment
                    TransactionIdentification:
                      TransactionDateTime: "2025-12-09T09:47:31+01:00"
                      TransactionReference: R26197055
                    TransactionDetails:
                      TotalAmount: 10.11
                      Currency: EUR
                  TransactionResponse:
                    AuthorisationResult:
                      ResponseToAuthorisation:
                        Response: Approved
                      AuthorisationCode: "678803"

    MerchantResponseExample:
      summary: Merchant Response Example
      value:
        umid: SCS-280505
        connectedTerminals:
          - '26197214'

    CardAcquisitionRequest:
      summary: Card Acquisition
      description: |
        Reads the card data from the terminal without starting a payment. The customer taps or inserts their card once.
        After receiving the response, send a PaymentRequest with the same amount and currency to complete the payment
        without requiring the customer to present their card again.
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "8b9c0d1e-2f3a-4b4c-5d6e-7f8a9b0c1d2e"
            CreationDateTime: "2026-03-31T10:00:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialCardAcquisitionRequest
            CardAcquisitionRequest:
              CardAcquisitionTransaction:
                TransactionIdentification:
                  TransactionDateTime: "2026-03-31T10:00:00.0+01:00"
                  TransactionReference: CA-001
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 25.00

    CardAcquisitionResponse:
      summary: Card Acquisition
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "8b9c0d1e-2f3a-4b4c-5d6e-7f8a9b0c1d2e"
            CreationDateTime: "2026-03-31T10:00:01.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
          ServiceResponse:
            Environment:
              Card:
                CardBrand: VISA CREDIT
                MaskedPAN: XXXXXXXXXXXX0119
                ApplicationIdentifier: A0000000031010
              POI:
                Identification:
                  Identification: "26197214"
            ServiceContent: FinancialCardAcquisitionResponse
            CardAcquisitionResponse:
              POITransactionIdentification:
                TransactionDateTime: "2026-03-31T10:00:01.0+01:00"
                TransactionReference: "2;00999100022;19940829991;79430;010099910002219940829991;"
              PaymentBrand: VISA CREDIT
              CustomerLanguage: EN
            Response:
              Response: Successful

    PaymentAfterCardAcquisitionRequest:
      summary: Payment after Card Acquisition (no second tap)
      description: |
        Follows a Card Acquisition request. Uses the same amount and currency as the Card Acquisition
        to complete the payment using the retained card data — the customer does not need to tap again.
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "9c0d1e2f-3a4b-4c5d-6e7f-8a9b0c1d2e3f"
            CreationDateTime: "2026-03-31T10:00:05.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2026-03-31T10:00:05.0+01:00"
                  TransactionReference: PAY-AFTER-CA-001
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 25.00

    PrintSimpleTextRequest:
      summary: Print - Simple Text
      description: |
        Prints a simple text string on the terminal's printer. Uses the SimpleText format
        with a plain text message in the MessageContent field. This is the simplest print
        request format, ideal for quick text output like receipts or status messages.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "3c4d5e6f-7a8b-4c9d-0e1f-2a3b4c5d6e7f"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: SimpleText
                MessageContent: "Hello World - Simple Print Test"

    PrintQRCodeRequest:
      summary: Print - QR Code
      description: |
        Prints a QR code on the terminal's printer. Uses the Barcode format with BarcodeType
        set to QRCode. The BarcodeValue contains the data to encode (typically a URL or
        reference string). Supported barcode types are QRCode and Code128.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "4d5e6f7a-8b9c-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: Barcode
                OutputBarcode:
                  BarcodeType: QRCode
                  BarcodeValue: "https://example.com/receipt/12345"

    PrintImageRequest:
      summary: Print - Image
      description: |
        Prints a base64-encoded image on the terminal's printer. Uses the Image format with
        the image data provided as a base64 string in OutputImage.ImageBase64. Optional
        ImageWidth and ImageHeight fields control the printed dimensions in pixels.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "5e6f7a8b-9c0d-4e1f-2a3b-4c5d6e7f8a9b"
            CreationDateTime: "2026-02-26T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: Image
                OutputImage:
                  ImageBase64: "iVBORw0KGgoAAAANSUhEUgAAAYAAAAA/AQAAAADBVyIGAAACZ0lEQVR42u2WMW7cMBBFH2nBZhWoTGHAPILLlDxSynSeDVKk9BF8FCKVS58g0AILBOlkIwXl0GQKipS0dpMqCLBT7FKr+Zo/fz6pVZm/C80JcAL8c8BegVIA7JS8SnyUCsiaMGTNHQ4w7AC+MsFhsmRRygKMPrtW4aeDLDwAsTxnogMYlwo9aQEwQoJfwMt8X9rnVR6AZzNEKQCVAXSEtGRyB8CHVuBHN66aHkgEyAAejsgAMAhTdmuVjjICAJft2n4LTytZAwwXESHLAHAz13m39Kw4pLmCFNrvz/Dgyv3ruC2YzBCJslCKnbcIYMu1SQBcVMBvRrmftpN2uKFddBt1IXwpGs4AX27ZV47pmiQ6uNunFwENzhNXDytRDkTta8+ebA9rSmYrrToag9lHi4nSAKHY5ThU62oUnJ9qBVUpwLBFfGwipJ7+qQDsIJWEqs5YxV458ufg5i41gE611Sx2k13d58l4e1iaHvu3d+wlXGVP2kdrMvdhlZHb/N4MARwRNPQjsui4HUd135j49J3bsVTI8+PHHs54Y37o4HoQDjOlbrFFtyVoVuCY7dLlAMKwHAKVYlcYqpjxwD1oMAEH4lnlp+OmrRkfcf1WR29bZpx/n903CnIeEouXBPeAgM7rLd3MFFJhbQvg2eAd4QWHQhDgttsycn03S6GrMHbq5hnsOnZitu7L89FVKVnoizLi68m45hZtcaVbNW3Kuu5ru3HKgEGhEtIA0hVu9shSl01l0+yp6ctitU2VzO+KxF71s8UCN5VSD0q4BvpC+ryOsK9furmmxrgsZVm+CnX6g3UC/DeAP/KQB/YlnYccAAAAAElFTkSuQmCC"
                  ImageWidth: 384
                  ImageHeight: 63

    PrintJSONReceiptRequest:
      summary: Print - JSON Formatted Receipt
      description: |
        Prints a structured receipt using the JSON format with OutputJSON. Each TextLine
        specifies character style (Normal/Bold), alignment (Left/Right/Centred), end-of-line
        behavior, and text content. This format gives precise control over receipt layout,
        supporting multi-column layouts via alignment and line grouping via EndOfLineFlag.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "6f7a8b9c-0d1e-4f2a-3b4c-5d6e7f8a9b0c"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: JSON
                OutputJSON:
                  - CharacterStyle: Bold
                    Alignment: Centred
                    EndOfLineFlag: true
                    Text: "STORE NAME"
                  - CharacterStyle: Normal
                    Alignment: Left
                    EndOfLineFlag: false
                    Text: "Item 1"
                  - CharacterStyle: Normal
                    Alignment: Right
                    EndOfLineFlag: true
                    Text: "EUR 5.00"

    PrintMultiFormatRequest:
      summary: Print - Multi-Format (OutputContent + OutputContentList)
      description: |
        Demonstrates a complex print request combining OutputContent (single item) with
        OutputContentList (multiple items). The OutputContent is processed first, followed
        by each item in OutputContentList in order. This example prints a logo image,
        then a plain-text receipt, then a JSON-formatted receipt, a QR code, and a
        closing text message — all in a single request.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL1.5.1"
            ExchangeIdentification: "7a8b9c0d-1e2f-4a3b-4c5d-6e7f8a9b0c1d"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: Image
                OutputImage:
                  ImageBase64: "iVBORw0KGgoAAAANSUhEUgAAAYAAAAA/AQAAAADBVyIGAAACZ0lEQVR42u2WMW7cMBBFH2nBZhWoTGHAPILLlDxSynSeDVKk9BF8FCKVS58g0AILBOlkIwXl0GQKipS0dpMqCLBT7FKr+Zo/fz6pVZm/C80JcAL8c8BegVIA7JS8SnyUCsiaMGTNHQ4w7AC+MsFhsmRRygKMPrtW4aeDLDwAsTxnogMYlwo9aQEwQoJfwMt8X9rnVR6AZzNEKQCVAXSEtGRyB8CHVuBHN66aHkgEyAAejsgAMAhTdmuVjjICAJft2n4LTytZAwwXESHLAHAz13m39Kw4pLmCFNrvz/Dgyv3ruC2YzBCJslCKnbcIYMu1SQBcVMBvRrmftpN2uKFddBt1IXwpGs4AX27ZV47pmiQ6uNunFwENzhNXDytRDkTta8+ebA9rSmYrrToag9lHi4nSAKHY5ThU62oUnJ9qBVUpwLBFfGwipJ7+qQDsIJWEqs5YxV458ufg5i41gE611Sx2k13d58l4e1iaHvu3d+wlXGVP2kdrMvdhlZHb/N4MARwRNPQjsui4HUd135j49J3bsVTI8+PHHs54Y37o4HoQDjOlbrFFtyVoVuCY7dLlAMKwHAKVYlcYqpjxwD1oMAEH4lnlp+OmrRkfcf1WR29bZpx/n903CnIeEouXBPeAgM7rLd3MFFJhbQvg2eAd4QWHQhDgttsycn03S6GrMHbq5hnsOnZitu7L89FVKVnoizLi68m45hZtcaVbNW3Kuu5ru3HKgEGhEtIA0hVu9shSl01l0+yp6ctitU2VzO+KxF71s8UCN5VSD0q4BvpC+ryOsK9furmmxrgsZVm+CnX6g3UC/DeAP/KQB/YlnYccAAAAAElFTkSuQmCC"
                  ImageWidth: 384
                  ImageHeight: 63
              OutputContentList:
                - OutputContent:
                    Format: SimpleText
                    MessageContent: "--------------------------------\nQA NIEXP\nChau. de Haecht 1442\n1130 Brussels\n--------------------------------\n\n***Cardholder Receipt***\n\nPurchase\nVISA CREDIT contactless\nXXXXXXXXXXXX0119\nAccount Type:             Credit\n\n03.07.2024              14:16:23\nTrm-Id:                 26197214\nAID:              A0000000031010\nTrx. Seq-Cnt:              79429\nTrx. Ref-No:         19940829991\nAuth. Code:               057737\nAcq-Id:                999100022\n\n\nTotal-EFT EUR:          104.11\n\nTransaction OK"
                - OutputContent:
                    Format: JSON
                    OutputJSON:
                      - CharacterStyle: Bold
                        Alignment: Centred
                        EndOfLineFlag: true
                        Text: "STORE NAME"
                      - CharacterStyle: Normal
                        Alignment: Centred
                        EndOfLineFlag: true
                        Text: "123 Main Street"
                      - CharacterStyle: Normal
                        Alignment: Centred
                        EndOfLineFlag: true
                        Text: ""
                      - CharacterStyle: Normal
                        Alignment: Left
                        EndOfLineFlag: false
                        Text: "Item 1"
                      - CharacterStyle: Normal
                        Alignment: Right
                        EndOfLineFlag: true
                        Text: "EUR 5.00"
                      - CharacterStyle: Normal
                        Alignment: Left
                        EndOfLineFlag: false
                        Text: "Item 2"
                      - CharacterStyle: Normal
                        Alignment: Right
                        EndOfLineFlag: true
                        Text: "EUR 3.50"
                      - CharacterStyle: Bold
                        Alignment: Left
                        EndOfLineFlag: false
                        Text: "TOTAL"
                      - CharacterStyle: Bold
                        Alignment: Right
                        EndOfLineFlag: true
                        Text: "EUR 8.50"
                - OutputContent:
                    Format: Barcode
                    OutputBarcode:
                      BarcodeType: QRCode
                      BarcodeValue: "https://example.com/receipt/12345"
                - OutputContent:
                    Format: SimpleText
                    MessageContent: "    Thank you for visiting!"
