openapi: 3.1.1
info:
  title: Terminal API (v2)
  version: 5.1-WL2.1.1
  description: |
    Terminal API is a standard for communication between a payment terminal (also known as point of interaction, POI, POS) and an ECR (Electronic Cash Register) or other sale system. The protocol is based on Nexos Retailer version 5.1.

    The set of endpoints in v2 is identical to v1; only the response shape, error format, and validation rules have changed. The v1 specification is published separately for clients that have not yet migrated.

    ## What changed compared to v1

    - Every success response is wrapped in `{ "data": ..., "requestId": "<uuid>" }`. In v1 the payload was returned at the root.
    - Every error response is `{ "message": "...", "requestId": "<uuid>" }`. The v1 `code` field is gone.
    - Async requests are acknowledged with `202 Accepted` carrying `transactionId`, `status` and `requestId`. The Nexo response is delivered later to the configured `WebhookUrl`, wrapped in the same `{ "data": ..., "requestId": "<uuid>" }` envelope as the synchronous responses.
    - An `ExchangeIdentification` now names one transaction per merchant. Sending an async request with one already in use does not start a second transaction: the API answers `200 OK` with that transaction's current `status`, and replays its recorded response to the webhook if it already has one.
    - `GET /merchants/{umid}/transactions/{transactionId}/status` is new. It reports the state of a transaction, and returns the terminal's recorded Nexo response once there is one.
    - Nexo responses are parsed JSON nested under `data` instead of raw JSON text, for both synchronous responses and the asynchronous payloads delivered to the `WebhookUrl`.
    - `Header.ExchangeIdentification` must be a valid UUID. Non-UUID values are rejected with `400`.
    - `Header.SalesSystemInfo` is now mandatory. It must carry an `IntegratorId` (string, max 140 characters) and at least one `SaleSoftware` entry, each with a non-blank `Type` and a `Status.VersionNumber`. Missing or incomplete blocks are rejected with `400`.
    - `GET /merchants/{umid}` additionally returns `umid` and `connectedTerminals`.

    ## Response envelope

    Success (`2xx`) - synchronous requests that return a payload wrap the Nexo message in `data`:

    ```json
    {
      "data": { },
      "requestId": "550e8400-e29b-41d4-a716-446655440000"
    }
    ```

    Async acknowledgement - an async request is answered immediately with the transaction it landed on and how far that transaction has got. `202 Accepted` means the request is new and now queued for the terminal; `200 OK` means the `ExchangeIdentification` was already in use and names an existing transaction, whose current state is reported instead:

    ```json
    {
      "transactionId": "550e8400-e29b-41d4-a716-446655440000",
      "status": "ACCEPTED",
      "requestId": "550e8400-e29b-41d4-a716-446655440001"
    }
    ```

    `status` is a delivery state, not a payment outcome. It says where the request has got to between this API and the terminal, never whether the payment was approved. The outcome arrives separately, in the Nexo response posted to your `WebhookUrl` - or, later, from `GET /merchants/{umid}/transactions/{transactionId}/status`. Note in particular that `PROCESSED` means only that the terminal answered and the answer was recorded, and that `NO_RESPONSE_FROM_TERMINAL` leaves the outcome unknown rather than failed, because a late answer still moves the transaction to `PROCESSED`. See the `TransactionStatus` schema for the full set.

    Synchronous requests that reach their timeout before the terminal answers are acknowledged without a payload. The request is not cancelled - the terminal may still answer, and the transaction can still reach `PROCESSED`:

    ```json
    {
      "requestId": "550e8400-e29b-41d4-a716-446655440000"
    }
    ```

    Error (`4xx` / `5xx`):

    ```json
    {
      "message": "ExchangeIdentification must be a valid UUID",
      "requestId": "550e8400-e29b-41d4-a716-446655440000"
    }
    ```

    ## Migrating from v1

    1. Switch the URL prefix from `/api/v1/...` to `/api/v2/...`.
    2. Generate a UUID for `Header.ExchangeIdentification` on every request.
    3. Add a `Header.SalesSystemInfo` block with an `IntegratorId` (string, max 140 characters) and at least one `SaleSoftware` entry (`Type` + `Status.VersionNumber`) to every request.
    4. Read the payload from `body.data` instead of `body`.
    5. Read errors from `body.message`; drop any `body.code` lookup.
    6. Use `ProtocolVersion: "5.1-WL2.1.1"` in every request Header.
    7. For async requests, read `body.transactionId` and `body.status` from the acknowledgement, and treat `200 OK` as "this identifier already names a transaction" rather than as a second one being started.
    8. Keep reading the payment outcome from the Nexo response, not from `status`. If you branch on the acknowledgement today, make sure nothing treats `PROCESSED` as approved or `NO_RESPONSE_FROM_TERMINAL` as declined - poll `GET /merchants/{umid}/transactions/{transactionId}/status` instead of re-charging.

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: Administrative
    description: >
      Administrative requests (acquirer initialization, terminal configuration).

  - 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: Integration
    description: >
      Integration and merchant management requests.

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

paths:
  "/api/v2/merchants/{umid}":
    get:
      operationId: get_merchant
      tags:
        - Integration
      summary: Get merchant details
      description: |
        Returns the merchant and the terminals currently connected to the cloud for it. Integrators can use this to verify a terminal is connected before sending requests to it.

        Unlike v1, the response carries `umid` alongside `connectedTerminals`.

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

      security:
        - JWT: [ ]

      responses:
        '200':
          description: The merchant exists. Returns its currently connected terminals.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/MerchantConnectionsResponse'
              examples:
                MerchantConnectionsResponseExample:
                  $ref: '#/components/examples/MerchantConnectionsResponseExample'

        '4xx':
          description: Validation or routing error. Wrapped in the error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

  "/api/v2/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: |
        Asynchronous service request. The API immediately returns `202 Accepted`; the actual Nexo response is delivered to the `WebhookUrl` configured in the request `Header`.

      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/AsyncSaleToPOIServiceRequest'
            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'
              CardAcquisitionPaymentRequest:
                $ref: '#/components/examples/CardAcquisitionPaymentRequest'
              CardAcquisitionPaymentWithTipRequest:
                $ref: '#/components/examples/CardAcquisitionPaymentWithTipRequest'
              CardAcquisitionPaymentWithCashbackRequest:
                $ref: '#/components/examples/CardAcquisitionPaymentWithCashbackRequest'
              PaymentAfterCardAcquisitionRequest:
                $ref: '#/components/examples/PaymentAfterCardAcquisitionRequest'

      responses:
        '202':
          description: |
            The request has been accepted for asynchronous processing. Returns the transaction ID (echo of `ExchangeIdentification`), its current status, and the request ID. The actual Nexo response is delivered to the configured `WebhookUrl` - see the `nexoResponse` callback below.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgement:
                  $ref: '#/components/examples/AsyncAcknowledgement'

        '200':
          description: |
            The request is a duplicate of a transaction already in flight or completed. Returns the transaction ID, its current status, and the request ID.
            - Status `PROCESSED`: the original transaction completed; its recorded response is being replayed to the webhook.
            - Status `ACCEPTED|PROCESSING|...`: the original transaction is still in progress; the duplicate is being rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgementDuplicateProcessed:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateProcessed'
                AsyncAcknowledgementDuplicateInProgress:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateInProgress'

        '4xx':
          description: Validation or routing error. Wrapped in the error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
              examples:
                InvalidJsonError:
                  $ref: '#/components/examples/InvalidJsonError'
                InvalidExchangeIdentificationError:
                  $ref: '#/components/examples/InvalidExchangeIdentificationError'

      callbacks:
        nexoResponse:
          "{$request.body#/SaleToPOIServiceRequest/Header/WebhookUrl}":
            post:
              summary: Nexo response delivered to the caller's WebhookUrl
              description: |
                When the terminal completes the request, the API POSTs the Nexo response to the `WebhookUrl` supplied in the request `Header`. The Nexo payload is wrapped in the `data` field of the envelope, with `requestId` alongside it — the same structure as the synchronous responses.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      allOf:
                        - $ref: '#/components/schemas/ApiSuccessResponse'
                        - type: object
                          properties:
                            data:
                              oneOf:
                                - $ref: '#/components/schemas/SaleToPOIServiceResponse'
                                - $ref: '#/components/schemas/SaleToPOIMessageRejection'
                    examples:
                      SimplePaymentResponse:
                        $ref: '#/components/examples/SimplePaymentResponse'
                      PaymentRequestWithTipResponse:
                        $ref: '#/components/examples/PaymentRequestWithTipResponse'
                      CardAcquisitionResponse:
                        $ref: '#/components/examples/CardAcquisitionResponse'
                      PaymentAfterCardAcquisitionResponse:
                        $ref: '#/components/examples/PaymentAfterCardAcquisitionResponse'
                      SimplePaymentErrorResponse:
                        $ref: '#/components/examples/SimplePaymentErrorResponse'
                      ResponseReasonAbortedResponse:
                        $ref: '#/components/examples/ResponseReasonAbortedResponse'
                      ResponseReasonBusyResponse:
                        $ref: '#/components/examples/ResponseReasonBusyResponse'
                      ResponseReasonCancelledResponse:
                        $ref: '#/components/examples/ResponseReasonCancelledResponse'
                      ResponseReasonDeviceOutResponse:
                        $ref: '#/components/examples/ResponseReasonDeviceOutResponse'
                      ResponseReasonWrongPINResponse:
                        $ref: '#/components/examples/ResponseReasonWrongPINResponse'
                      ResponseReasonUnreachableHostResponse:
                        $ref: '#/components/examples/ResponseReasonUnreachableHostResponse'
                      ResponseReasonUnavailableServiceResponse:
                        $ref: '#/components/examples/ResponseReasonUnavailableServiceResponse'
                      ResponseReasonUnavailableDeviceResponse:
                        $ref: '#/components/examples/ResponseReasonUnavailableDeviceResponse'
                      ResponseReasonRefusalResponse:
                        $ref: '#/components/examples/ResponseReasonRefusalResponse'
                      ResponseReasonPaymentRestrictionResponse:
                        $ref: '#/components/examples/ResponseReasonPaymentRestrictionResponse'
                      ResponseReasonNotFoundResponse:
                        $ref: '#/components/examples/ResponseReasonNotFoundResponse'
                      ResponseReasonNotAllowedResponse:
                        $ref: '#/components/examples/ResponseReasonNotAllowedResponse'
                      ResponseReasonLoggedOutResponse:
                        $ref: '#/components/examples/ResponseReasonLoggedOutResponse'
                      ResponseReasonInvalidCardResponse:
                        $ref: '#/components/examples/ResponseReasonInvalidCardResponse'
                      ResponseReasonInsertedCardResponse:
                        $ref: '#/components/examples/ResponseReasonInsertedCardResponse'
                      ResponseReasonInProgressResponse:
                        $ref: '#/components/examples/ResponseReasonInProgressResponse'
                      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'
                      MessageRejectionResponse:
                        $ref: '#/components/examples/MessageRejectionResponse'
              responses:
                "200":
                  description: Returned by the caller's webhook endpoint to acknowledge receipt.

  "/api/v2/merchants/{umid}/terminals/{utid}/payments/sync":
    post:
      operationId: post_sync_payment
      tags:
        - Payments
      summary: Send sync requests to terminal
      description: |
        Synchronous service request. The connection is kept open until the terminal returns a response or the 4-minute 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/SaleToPOIServiceRequest'
            examples:
              SimplePaymentRequest:
                $ref: '#/components/examples/SimplePaymentRequest'
              PaymentRequestWithTipRequest:
                $ref: '#/components/examples/PaymentRequestWithTipRequest'
              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'
              CardAcquisitionPaymentRequest:
                $ref: '#/components/examples/CardAcquisitionPaymentRequest'
              CardAcquisitionPaymentWithTipRequest:
                $ref: '#/components/examples/CardAcquisitionPaymentWithTipRequest'
              CardAcquisitionPaymentWithCashbackRequest:
                $ref: '#/components/examples/CardAcquisitionPaymentWithCashbackRequest'
              PaymentAfterCardAcquisitionRequest:
                $ref: '#/components/examples/PaymentAfterCardAcquisitionRequest'

      responses:
        '200':
          description: |
            The terminal returned a response. The Nexo payload is wrapped in the `data` field of the envelope.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        oneOf:
                          - $ref: '#/components/schemas/SaleToPOIServiceResponse'
                          - $ref: '#/components/schemas/SaleToPOIMessageRejection'
              examples:
                SimplePaymentResponse:
                  $ref: '#/components/examples/SimplePaymentResponse'
                PaymentRequestWithTipResponse:
                  $ref: '#/components/examples/PaymentRequestWithTipResponse'
                CardAcquisitionResponse:
                  $ref: '#/components/examples/CardAcquisitionResponse'
                PaymentAfterCardAcquisitionResponse:
                  $ref: '#/components/examples/PaymentAfterCardAcquisitionResponse'
                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'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '202':
          description: The terminal accepted the request but did not return a payload before the timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedEnvelope'
              examples:
                AcceptedEnvelope:
                  $ref: '#/components/examples/AcceptedEnvelope'

        '4xx':
          description: Validation or routing error. Wrapped in the error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

  "/api/v2/merchants/{umid}/terminals/{utid}/device":
    post:
      operationId: post_async_device
      tags:
        - Device
      summary: Send async device requests to terminal (UI/Device control)
      description: |
        Asynchronous device request. The API immediately returns `202 Accepted`; the Nexo `SaleToPOIDeviceResponse` is delivered to the `WebhookUrl` configured in the request `Header`.

      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/AsyncSaleToPOIDeviceRequest'
            examples:
              UIInfoRequest:
                $ref: '#/components/examples/UIInfoRequest'
              UIScreenProcessingRequest:
                $ref: '#/components/examples/UIScreenProcessingRequest'
              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'
              UIImageInfoRequest:
                $ref: '#/components/examples/UIImageInfoRequest'
              UIImageInfoCustomColorsRequest:
                $ref: '#/components/examples/UIImageInfoCustomColorsRequest'
              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:
        '202':
          description: |
            The device request has been accepted for asynchronous processing. Returns the transaction ID (echo of `ExchangeIdentification`), its current status, and the request ID. The actual Nexo response is delivered to the configured `WebhookUrl` - see the `nexoResponse` callback below.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgement:
                  $ref: '#/components/examples/AsyncAcknowledgement'

        '200':
          description: |
            The request is a duplicate of a transaction already in flight or completed. Returns the transaction ID, its current status, and the request ID.
            - Status `PROCESSED`: the original transaction completed; its recorded response is being replayed to the webhook.
            - Status `ACCEPTED|PROCESSING|...`: the original transaction is still in progress; the duplicate is being rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgementDuplicateProcessed:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateProcessed'
                AsyncAcknowledgementDuplicateInProgress:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateInProgress'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

      callbacks:
        nexoResponse:
          "{$request.body#/SaleToPOIDeviceRequest/Header/WebhookUrl}":
            post:
              summary: Nexo response delivered to the caller's WebhookUrl
              description: |
                When the terminal completes the request, the API POSTs the Nexo response to the `WebhookUrl` supplied in the request `Header`. The Nexo payload is wrapped in the `data` field of the envelope, with `requestId` alongside it — the same structure as the synchronous responses.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      allOf:
                        - $ref: '#/components/schemas/ApiSuccessResponse'
                        - type: object
                          properties:
                            data:
                              oneOf:
                                - $ref: '#/components/schemas/SaleToPOIDeviceResponse'
                                - $ref: '#/components/schemas/SaleToPOIMessageRejection'
                    examples:
                      DeviceInputResponse:
                        $ref: '#/components/examples/DeviceInputResponse'
                      MessageRejectionResponse:
                        $ref: '#/components/examples/MessageRejectionResponse'
              responses:
                "200":
                  description: Returned by the caller's webhook endpoint to acknowledge receipt.

  "/api/v2/merchants/{umid}/terminals/{utid}/device/sync":
    post:
      operationId: post_sync_device
      tags:
        - Device
      summary: Send sync device requests to terminal
      description: |
        Synchronous device request. The connection is 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'
              UIScreenProcessingRequest:
                $ref: '#/components/examples/UIScreenProcessingRequest'
              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'
              UIImageInfoRequest:
                $ref: '#/components/examples/UIImageInfoRequest'
              UIImageInfoCustomColorsRequest:
                $ref: '#/components/examples/UIImageInfoCustomColorsRequest'
              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:
                allOf:
                  - $ref: '#/components/schemas/ApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/SaleToPOIDeviceResponse'
              examples:
                DeviceInputResponse:
                  $ref: '#/components/examples/DeviceInputResponse'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '202':
          description: The terminal accepted the request but did not return a payload before the timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedEnvelope'
              examples:
                AcceptedEnvelope:
                  $ref: '#/components/examples/AcceptedEnvelope'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

  "/api/v2/merchants/{umid}/terminals/{utid}/status":
    post:
      operationId: post_async_status
      tags:
        - Status
      summary: Send async status messages to terminal (MessageStatus)
      description: |
        Asynchronous message status request. The API immediately returns `202 Accepted`; the actual Nexo response is delivered to the `WebhookUrl` configured in the request `Header`.

      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/AsyncSaleToPOIMessageStatusRequest'
            examples:
              MessageStatusRequest:
                $ref: '#/components/examples/MessageStatusRequest'
              ReferencedPaymentStatusRequest:
                $ref: '#/components/examples/ReferencedPaymentStatusRequest'

      responses:
        '202':
          description: |
            The status request has been accepted for asynchronous processing. Returns the transaction ID (echo of `ExchangeIdentification`), its current status, and the request ID. The actual Nexo response is delivered to the configured `WebhookUrl` - see the `nexoResponse` callback below.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgement:
                  $ref: '#/components/examples/AsyncAcknowledgement'

        '200':
          description: |
            The request is a duplicate of a transaction already in flight or completed. Returns the transaction ID, its current status, and the request ID.
            - Status `PROCESSED`: the original transaction completed; its recorded response is being replayed to the webhook.
            - Status `ACCEPTED|PROCESSING|...`: the original transaction is still in progress; the duplicate is being rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgementDuplicateProcessed:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateProcessed'
                AsyncAcknowledgementDuplicateInProgress:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateInProgress'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

      callbacks:
        nexoResponse:
          "{$request.body#/SaleToPOIMessageStatusRequest/Header/WebhookUrl}":
            post:
              summary: Nexo response delivered to the caller's WebhookUrl
              description: |
                When the terminal completes the request, the API POSTs the Nexo response to the `WebhookUrl` supplied in the request `Header`. The Nexo payload is wrapped in the `data` field of the envelope, with `requestId` alongside it — the same structure as the synchronous responses.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      allOf:
                        - $ref: '#/components/schemas/ApiSuccessResponse'
                        - type: object
                          properties:
                            data:
                              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'
              responses:
                "200":
                  description: Returned by the caller's webhook endpoint to acknowledge receipt.

  "/api/v2/merchants/{umid}/terminals/{utid}/status/sync":
    post:
      operationId: post_sync_status
      tags:
        - Status
      summary: Send sync status messages to terminal
      description: |
        Synchronous message status request. The connection is 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:
                allOf:
                  - $ref: '#/components/schemas/ApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/SaleToPOIMessageStatusResponse'
              examples:
                MessageStatusResponse:
                  $ref: '#/components/examples/MessageStatusResponse'
                ReferencedPaymentStatusResponse:
                  $ref: '#/components/examples/ReferencedPaymentStatusResponse'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '202':
          description: The terminal accepted the request but did not return a payload before the timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedEnvelope'
              examples:
                AcceptedEnvelope:
                  $ref: '#/components/examples/AcceptedEnvelope'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

  "/api/v2/merchants/{umid}/terminals/{utid}/reconciliation":
    post:
      operationId: post_async_reconciliation
      tags:
        - Reconciliation
      summary: Send async reconciliation requests to terminal
      description: |
        Asynchronous reconciliation request. The API immediately returns `202 Accepted`; the actual Nexo response is delivered to the `WebhookUrl` configured in the request `Header`.

      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/AsyncSaleToPOIReconciliationRequest'
            examples:
              ReconciliationRequest:
                $ref: '#/components/examples/ReconciliationRequest'

      responses:
        '202':
          description: |
            The reconciliation request has been accepted for asynchronous processing. Returns the transaction ID (echo of `ExchangeIdentification`), its current status, and the request ID. The actual Nexo response is delivered to the configured `WebhookUrl` - see the `nexoResponse` callback below.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgement:
                  $ref: '#/components/examples/AsyncAcknowledgement'

        '200':
          description: |
            The request is a duplicate of a transaction already in flight or completed. Returns the transaction ID, its current status, and the request ID.
            - Status `PROCESSED`: the original transaction completed; its recorded response is being replayed to the webhook.
            - Status `ACCEPTED|PROCESSING|...`: the original transaction is still in progress; the duplicate is being rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgementDuplicateProcessed:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateProcessed'
                AsyncAcknowledgementDuplicateInProgress:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateInProgress'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

      callbacks:
        nexoResponse:
          "{$request.body#/SaleToPOIReconciliationRequest/Header/WebhookUrl}":
            post:
              summary: Nexo response delivered to the caller's WebhookUrl
              description: |
                When the terminal completes the request, the API POSTs the Nexo response to the `WebhookUrl` supplied in the request `Header`. The Nexo payload is wrapped in the `data` field of the envelope, with `requestId` alongside it — the same structure as the synchronous responses.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      allOf:
                        - $ref: '#/components/schemas/ApiSuccessResponse'
                        - type: object
                          properties:
                            data:
                              oneOf:
                                - $ref: '#/components/schemas/SaleToPOIReconciliationResponse'
                                - $ref: '#/components/schemas/SaleToPOIMessageRejection'
                    examples:
                      ReconciliationResponse:
                        $ref: '#/components/examples/ReconciliationResponse'
                      MessageRejectionResponse:
                        $ref: '#/components/examples/MessageRejectionResponse'
              responses:
                "200":
                  description: Returned by the caller's webhook endpoint to acknowledge receipt.

  "/api/v2/merchants/{umid}/terminals/{utid}/reconciliation/sync":
    post:
      operationId: post_sync_reconciliation
      tags:
        - Reconciliation
      summary: Send sync reconciliation requests to terminal
      description: |
        Synchronous reconciliation request. The connection is 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:
                allOf:
                  - $ref: '#/components/schemas/ApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/SaleToPOIReconciliationResponse'
              examples:
                ReconciliationResponse:
                  $ref: '#/components/examples/ReconciliationResponse'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '202':
          description: The terminal accepted the request but did not return a payload before the timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedEnvelope'
              examples:
                AcceptedEnvelope:
                  $ref: '#/components/examples/AcceptedEnvelope'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

  "/api/v2/merchants/{umid}/terminals/{utid}/admin":
    post:
      operationId: post_async_admin
      tags:
        - Administrative
      summary: Send async administrative requests to terminal
      description: |
        Asynchronous administrative request. The API immediately returns `202 Accepted`;
        the terminal response is delivered to the `WebhookUrl` configured in the request `Header`.

        Use this endpoint to send SaleToPOIAdministrativeRequest messages such as acquirer initialization,
        terminal configuration, payment menu, last day end operations, and payment information lookup.

      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/AsyncSaleToPOIAdministrativeRequest'
            examples:
              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'

      responses:
        '202':
          description: |
            The request has been accepted for asynchronous processing. Returns the transaction ID (echo of `ExchangeIdentification`), its current status, and the request ID. The actual Nexo response is delivered to the configured `WebhookUrl` - see the `nexoResponse` callback below.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgement:
                  $ref: '#/components/examples/AsyncAcknowledgement'

        '200':
          description: |
            The request is a duplicate of a transaction already in flight or completed. Returns the transaction ID, its current status, and the request ID.
            - Status `PROCESSED`: the original transaction completed; its recorded response is being replayed to the webhook.
            - Status `ACCEPTED|PROCESSING|...`: the original transaction is still in progress; the duplicate is being rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcknowledgement'
              examples:
                AsyncAcknowledgementDuplicateProcessed:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateProcessed'
                AsyncAcknowledgementDuplicateInProgress:
                  $ref: '#/components/examples/AsyncAcknowledgementDuplicateInProgress'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

      callbacks:
        nexoResponse:
          "{$request.body#/SaleToPOIAdministrativeRequest/Header/WebhookUrl}":
            post:
              summary: Nexo response delivered to the caller's WebhookUrl
              description: |
                When the terminal completes the request, the API POSTs the Nexo response to the `WebhookUrl` supplied in the request `Header`. The Nexo payload is wrapped in the `data` field of the envelope, with `requestId` alongside it — the same structure as the synchronous responses.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      allOf:
                        - $ref: '#/components/schemas/ApiSuccessResponse'
                        - type: object
                          properties:
                            data:
                              oneOf:
                                - $ref: '#/components/schemas/SaleToPOIAdministrativeResponse'
                                - $ref: '#/components/schemas/SaleToPOIMessageRejection'
                    examples:
                      AdministrativeInitResponse:
                        $ref: '#/components/examples/AdministrativeInitResponse'
                      AdministrativeConfigResponse:
                        $ref: '#/components/examples/AdministrativeConfigResponse'
                      AdministrativePaymentMenuResponse:
                        $ref: '#/components/examples/AdministrativePaymentMenuResponse'
                      AdministrativeLastDayEndResponse:
                        $ref: '#/components/examples/AdministrativeLastDayEndResponse'
                      AdministrativePaymentInformationResponse:
                        $ref: '#/components/examples/AdministrativePaymentInformationResponse'
                      MessageRejectionResponse:
                        $ref: '#/components/examples/MessageRejectionResponse'
              responses:
                "200":
                  description: Returned by the caller's webhook endpoint to acknowledge receipt.
              examples:
                InvalidJsonError:
                  $ref: '#/components/examples/InvalidJsonError'
                InvalidExchangeIdentificationError:
                  $ref: '#/components/examples/InvalidExchangeIdentificationError'

  "/api/v2/merchants/{umid}/terminals/{utid}/admin/sync":
    post:
      operationId: post_sync_admin
      tags:
        - Administrative
      summary: Send sync administrative requests to terminal
      description: |
        Synchronous administrative request. The connection is 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/SaleToPOIAdministrativeRequest'
            examples:
              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'

      responses:
        '200':
          description: The administrative request was delivered to the terminal and a response was received.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/SaleToPOIAdministrativeResponse'
              examples:
                AdministrativeInitResponse:
                  $ref: '#/components/examples/AdministrativeInitResponse'
                AdministrativeConfigResponse:
                  $ref: '#/components/examples/AdministrativeConfigResponse'
                AdministrativePaymentMenuResponse:
                  $ref: '#/components/examples/AdministrativePaymentMenuResponse'
                AdministrativeLastDayEndResponse:
                  $ref: '#/components/examples/AdministrativeLastDayEndResponse'
                AdministrativePaymentInformationResponse:
                  $ref: '#/components/examples/AdministrativePaymentInformationResponse'
                MessageRejectionResponse:
                  $ref: '#/components/examples/MessageRejectionResponse'

        '202':
          description: The terminal accepted the request but did not return a payload before the timeout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedEnvelope'
              examples:
                AcceptedEnvelope:
                  $ref: '#/components/examples/AcceptedEnvelope'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
              examples:
                InvalidJsonError:
                  $ref: '#/components/examples/InvalidJsonError'
                InvalidExchangeIdentificationError:
                  $ref: '#/components/examples/InvalidExchangeIdentificationError'

  "/api/v2/merchants/{umid}/terminals/{utid}/payments/abort":
    post:
      operationId: post_abort
      tags:
        - Payments
      summary: Abort ongoing transaction
      description: |
        Signals the terminal to abort the **ongoing** transaction. If no transaction is in progress, the request is ignored.

        The API will return a `200 OK` (wrapped in the envelope) if the message was delivered to the terminal.

      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':
          description: The abort signal was delivered to the terminal.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AbortAcknowledgement'
              examples:
                AbortAcknowledgement:
                  $ref: '#/components/examples/AbortAcknowledgement'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'

  "/api/v2/merchants/{umid}/transactions/{transactionId}/status":
    get:
      operationId: get_transaction_status
      tags:
        - Status
      summary: Get the status of a transaction
      description: |
        Returns the current state of a transaction, and the terminal's Nexo response once one has been recorded for it.

        `transactionId` is the `ExchangeIdentification` you sent on the original request, echoed back to you in its `202 Accepted` acknowledgement. Ask after a transaction by the identifier you gave it.

        An `ExchangeIdentification` names one transaction per merchant, across every terminal. Repeating a request with one already in use reports on - or replays - the original transaction rather than starting a new one, whichever terminal it is addressed to.

        `responsePayload` is present only once an answer has been recorded. Until then - and for a transaction that ended without one, such as `UNDELIVERED_TO_TERMINAL` - only the `status` is returned.

        `status` and the payment outcome are two different things. `status` says how far the request got between this API and the terminal; whether the payment was approved, declined or rejected is stated only in `responsePayload`. In particular, `PROCESSED` means the terminal answered and the answer was recorded - not that it approved, and not that your webhook was delivered.

        This endpoint is the one to poll after `NO_RESPONSE_FROM_TERMINAL`. That status means the request reached the terminal but no answer came back in time, which leaves the outcome unknown rather than failed: the payment may have completed. If the answer arrives late the transaction moves on to `PROCESSED` and its `responsePayload` appears here, so re-read it before concluding anything or retrying the payment.

      parameters:
        - in: path
          name: umid
          required: true
          schema:
            type: string
        - in: path
          name: transactionId
          required: true
          description: The `ExchangeIdentification` of the original asynchronous request, as echoed back in its acknowledgement.
          schema:
            type: string
            format: uuid

      security:
        - JWT: [ ]

      responses:
        '200':
          description: |
            The transaction was found. Returned unwrapped: unlike the Nexo-relaying endpoints, this body is a status report of our own making, so it is not placed in the `data` envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionStatusResponse'
              examples:
                TransactionStatusProcessed:
                  $ref: '#/components/examples/TransactionStatusProcessed'
                TransactionStatusPending:
                  $ref: '#/components/examples/TransactionStatusPending'
                TransactionStatusNoResponse:
                  $ref: '#/components/examples/TransactionStatusNoResponse'

        '404':
          description: No transaction exists for this `transactionId` under this merchant.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
              examples:
                TransactionNotFoundError:
                  $ref: '#/components/examples/TransactionNotFoundError'

        '4xx':
          description: Validation or routing error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'


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

  schemas:
    ApiSuccessResponse:
      description: |
        Standard success envelope carrying a Nexo payload. Used for synchronous responses and for the asynchronous payloads delivered to the `WebhookUrl`. The `data` field carries the endpoint-specific payload. `requestId` mirrors the `X-Request-ID` of the call and can be used for log correlation.
      type: object
      properties:
        data:
          description: Endpoint-specific payload. May be `null` for accepted async requests.
          nullable: true
        requestId:
          type: string
          format: uuid
          nullable: true

    ApiErrorResponse:
      description: Standard error envelope returned for all `4xx` and `5xx` responses.
      type: object
      properties:
        message:
          type: string
          description: Human-readable error description.
          nullable: true
        requestId:
          type: string
          format: uuid
          nullable: true

    AbortAcknowledgement:
      description: |
        Acknowledgement returned for the `200` response of the abort endpoint.
      type: object
      required:
        - requestId
      properties:
        requestId:
          type: string
          format: uuid

    TransactionStatus:
      description: |
        How far the transaction has got inside Terminal API.

        **This is a delivery state, not a payment outcome.** It tells you where the request is
        between this API and the terminal, and nothing about whether money moved. A transaction
        that reached `PROCESSED` may hold an approval, a decline, or a message rejection - read
        the Nexo response itself (`responsePayload` here, or the body delivered to your
        `WebhookUrl`) to find out which.

        * `ACCEPTED` - recorded by the API, not yet sent to the terminal.
        * `PROCESSING` - sent to the terminal; no acknowledgement or answer yet.
        * `UNDELIVERED_TO_TERMINAL` - the request could not be delivered. The cloud infers this, so
          it is superseded if the terminal later reports receipt.
        * `DELIVERED_TO_TERMINAL` - the terminal acknowledged receipt. The first state backed by a
          fact the terminal reported rather than one the cloud inferred.
        * `NO_RESPONSE_FROM_TERMINAL` - delivered, but no answer arrived within the response window.
          **The outcome is unknown, not failed.** The terminal may well have completed the payment
          and simply answered late or lost connectivity on the way back. A late answer promotes the
          transaction to `PROCESSED` and brings its payload with it, so this status can still
          change. Do not treat it as a decline, and do not re-charge the cardholder on the strength
          of it: poll
          `GET /api/v2/merchants/{umid}/transactions/{transactionId}/status`, or reconcile with the
          terminal, before deciding what happened.
        * `PROCESSED` - the terminal answered and the answer has been recorded. It does **not** mean
          the payment was approved, and it does **not** mean your webhook has been delivered;
          webhook delivery is retried independently and is not reflected in this field.

        States only move forward. A write is rejected unless it outranks the stored state, ordered
        `ACCEPTED` < `PROCESSING` < `UNDELIVERED_TO_TERMINAL` < `DELIVERED_TO_TERMINAL` <
        `NO_RESPONSE_FROM_TERMINAL` < `PROCESSED`. That ordering is why `UNDELIVERED_TO_TERMINAL`
        and `NO_RESPONSE_FROM_TERMINAL` are not terminal states: both are overtaken by any later
        fact the terminal reports. They are also the only two states from which repeating the
        request under the same `ExchangeIdentification` reopens the transaction instead of being
        refused as a duplicate.
      type: string
      enum:
        - ACCEPTED
        - PROCESSING
        - UNDELIVERED_TO_TERMINAL
        - DELIVERED_TO_TERMINAL
        - NO_RESPONSE_FROM_TERMINAL
        - PROCESSED

    AsyncAcknowledgement:
      description: |
        Acknowledgement returned for async requests, carrying the transaction ID (echo of `ExchangeIdentification`), its current status, and the request ID.
        - For new requests: status is `ACCEPTED` and HTTP code is `202 Accepted`.
        - For duplicates: status reflects the original transaction's state and HTTP code is `200 OK`.

        The status says where the request has got to, not how the payment ended. See
        `TransactionStatus`.
      type: object
      required:
        - transactionId
        - status
        - requestId
      properties:
        transactionId:
          type: string
          format: uuid
          description: Echo of the `ExchangeIdentification` from the request.
        status:
          $ref: '#/components/schemas/TransactionStatus'
        requestId:
          type: string
          format: uuid
          nullable: true
          description: The property of correlation.

    AcceptedEnvelope:
      description: |
        Acknowledgement returned for synchronous requests that timed out before the terminal responded.
      type: object
      required:
        - requestId
      properties:
        requestId:
          type: string
          format: uuid

    TransactionStatusResponse:
      description: |
        State of a single transaction, and the terminal's response to it once one has been recorded.

        `status` reports how far the request got; `responsePayload` is where the payment outcome
        lives. A transaction can be `PROCESSED` and still carry a decline.
      type: object
      required:
        - utid
        - status
      properties:
        utid:
          type: string
          description: Unique identifier of the terminal the request was sent to.
        status:
          $ref: '#/components/schemas/TransactionStatus'
        responsePayload:
          description: |
            The terminal's Nexo response, returned verbatim. This is the only place the payment
            outcome is stated - read `Response.Result` and the authorisation result inside it.

            Absent while no answer has been recorded, and for a transaction that ended without one
            (`UNDELIVERED_TO_TERMINAL`, or `NO_RESPONSE_FROM_TERMINAL` until a late answer arrives).
            An absent payload is not evidence that the payment did not happen - see
            `TransactionStatus`.
          type: object

    MerchantConnectionsResponse:
      description: Representation of a merchant and its currently connected terminals.
      type: object
      required:
        - umid
        - connectedTerminals
      properties:
        umid:
          type: string
          description: Unique Merchant Identifier.
        connectedTerminals:
          type: array
          description: List of terminal identifiers (`utid`) currently connected to the cloud.
          items:
            type: string

    Header:
      description: Common element that is present in requests and responses
      type: object
      required:
        - ProtocolVersion
        - ExchangeIdentification
        - CreationDateTime
        - InitiatingParty
        - SalesSystemInfo
      properties:
        ProtocolVersion:
          description: Must be set to the current API version (currently "5.1-WL2.1.1")
          type: string
          const: "5.1-WL2.1.1"
        CreationDateTime:
          type: string
          format: date-time
        ExchangeIdentification:
          $ref: "#/components/schemas/ExchangeIdentification"
        InitiatingParty:
          $ref: "#/components/schemas/InitiatingParty"
        SalesSystemInfo:
          $ref: "#/components/schemas/SalesSystemInfo"
        NumberOfRetries:
          $ref: "#/components/schemas/NumberOfRetries"
        WebhookUrl:
          $ref: "#/components/schemas/WebhookUrl"

    NumberOfRetries:
      description: "**Worldline extension** - not part of the Nexo Retailer standard. The number of times to retry delivering the response to the `WebhookUrl` server if it is unavailable or returns an error. **Mandatory for asynchronous requests; ignored for synchronous requests.**"
      type: integer
      minimum: 1
      maximum: 1

    WebhookUrl:
      description: "**Worldline extension** - not part of the Nexo Retailer standard. Destination endpoint for the webhook callback that delivers the terminal response. **Mandatory for asynchronous requests; ignored for synchronous requests.**"
      type: string
      format: uri

    SalesSystemInfo:
      description: >
        Information about the sale system issuing the request.
      type: object
      required:
        - IntegratorId
        - SaleSoftware
      properties:
        IntegratorId:
          description: Identifier of the integrator.
          type: string
          maxLength: 140
          example: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
        SaleSoftware:
          description: Sale software descriptors. Must contain at least one entry.
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/SaleSoftware"

    SaleSoftware:
      type: object
      required:
        - Type
        - Status
      properties:
        Type:
          description: Type of the sale software. Mandatory and non-blank.
          type: string
          minLength: 1
        SubTypeInformation:
          description: Additional information qualifying the software type.
          type: string
        Identification:
          $ref: "#/components/schemas/SaleSoftwareIdentification"
        Status:
          $ref: "#/components/schemas/SaleSoftwareStatus"

    SaleSoftwareIdentification:
      description: Identification details of the sale software.
      type: object
      properties:
        ProviderIdentification:
          type: string
        Identification:
          type: string
        SerialNumber:
          type: string

    SaleSoftwareStatus:
      type: object
      required:
        - VersionNumber
      properties:
        VersionNumber:
          description: Version number of the sale software. Mandatory and non-blank.
          type: string
          minLength: 1


    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.

                      **Important:** `PaperSignature` is the source of truth for signature-required transactions and downstream legal handling.
                      Do not infer signature obligation from `RetailerPaymentResult.TransactionResponse.AuthorisationResult.ResponseToAuthorisation.Response`.
                      
                      - 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:
      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:
              description: Sale terminal capabilities used for receipt delegation mapping.
              $ref: "#/components/schemas/SaleTerminalData"

    SaleTerminalData:
      type: object
      description: |
        Describes capabilities of the Sale System terminal.

        Receipt delegation mapping:
        - If `SaleCapabilities` contains printer capability [PrinterReceipt], `receiptDelegation` is explicitly set to `false`.
        - If printer capability is not present, `receiptDelegation` is omitted.
      properties:
        SaleCapabilities:
          type: array
          description: |
            Sale System capability tags used for receipt delegation behavior.

            Supported tags:
            - `PrinterReceipt`
          items:
            type: string
            enum:
              - PrinterReceipt
            description: |
              Printer capability tag.
              - `PrinterReceipt` 

    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
            - Cancel
            - DeviceOut
            - WrongPIN
            - UnreachableHost
            - UnavailableService
            - UnavailableDevice
            - Refusal
            - PaymentRestriction
            - NotFound
            - NotAllowed
            - LoggedOut
            - InvalidCard
            - InsertedCard
            - InProgress
          examples:
            - Aborted
            - Busy
            - Cancel
            - 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.

            - Cancel: 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/TransactionIdentification"
            DCCRefund:
              description: >
                DCC refund data. When present on a Refund transaction, both fields must be provided.
              $ref: "#/components/schemas/DCCRefund"
            MultiAccountIndex:
              type: integer
              description: >
                Index of the account to use when the card supports multiple accounts.
                Allows the POS to pre-select an account for the transaction.
            ProductSelection:
              type: string
              description: >
                Product selection identifier sent by the POS to pre-select a product
                on the terminal for the transaction.
            AccessibilitySettings:
              description: >
                Optional accessibility settings extension for payment-related requests.
                This object and all of its fields are optional.
                When omitted, terminal-side defaults apply.
              $ref: "#/components/schemas/AccessibilitySettings"

    AccessibilitySettings:
      title: Accessibility Settings
      description: >
        Accessibility configuration extension for payment-related requests.
        All properties are optional; provide only fields that should override terminal defaults.
      type: object
      additionalProperties: false
      properties:
        ContrastMode:
          type: integer
          description: Display contrast mode. 0=normal, 1=high contrast.
          enum: [0, 1]
        VoiceGuidance:
          type: integer
          description: Voice guidance state. 0=off, 1=on.
          enum: [0, 1]
        Volume:
          type: integer
          description: Voice guidance volume percentage.
          minimum: 0
          maximum: 100
        PlaybackSpeed:
          type: integer
          description: Voice guidance playback speed. 0=slow, 1=normal, 2=fast.
          enum: [0, 1, 2]
        DisplayFontSize:
          type: integer
          description: Display font size. 0=normal, 1=large, 2=extra large.
          enum: [0, 1, 2]

    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:
          title: Sale Transaction Identification
          $ref: "#/components/schemas/TransactionIdentification"
        POITransactionIdentification:
          title: POI Transaction Identification
          $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).

    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

    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 successfully provided. This value is also returned for signature transactions; check `Environment.Cardholder.Authentication[].AuthenticationMethod` for `PaperSignature` to identify if a signature is required.

                - Declined: Service is declined.

                - 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:
      type: object
      required:
        - SaleTransactionIdentification
        - POITransactionIdentification
        - RetailerPaymentResult
      properties:
        SaleTransactionIdentification:
          title: Sale Transaction Identification
          $ref: "#/components/schemas/TransactionIdentification"
        POITransactionIdentification:
          title: POI Transaction Identification
          $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
            VoiceReferralPhoneNumber:
              type: string
              description: Phone number for voice referral authorisation.
            PhoneAuthorized:
              type: boolean
              description: Whether the transaction was authorised via phone referral.
            ForcedAcceptance:
              type: boolean
              description: Whether the transaction was force-accepted by the merchant.
            AccountType:
              type: string
              description: Account type selected by the cardholder (e.g. checking, savings).
            SelectedProduct:
              type: string
              description: Product selected by the terminal for the transaction.
        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/OriginalPaymentTransaction"

    ReversalResponse:
      title: Reversal Response
      type: object
      required:
        - SaleTransactionIdentification
        - POITransactionIdentification
        - ReversalTransactionResult
      properties:
        SaleTransactionIdentification:
          title: Sale Transaction Identification
          $ref: "#/components/schemas/TransactionIdentification"
        POITransactionIdentification:
          title: POI Transaction Identification
          $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"
                    
    #== 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/...).

        - FinancialCardAcquisitionRequest: The Sale System requests the POI System to acquire card data without initiating a 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.


        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.
            Surcharge:
              type: number
              format: double
              description: Surcharge amount applied to the transaction.

    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.

    AsyncSaleToPOIServiceRequest:
      description: >
        Asynchronous variant of `SaleToPOIServiceRequest`. `Header.NumberOfRetries` and
        `Header.WebhookUrl` are required here, so the terminal response can be
        delivered to the configured webhook. They are optional on the synchronous request.
      allOf:
        - $ref: "#/components/schemas/SaleToPOIServiceRequest"
        - type: object
          properties:
            SaleToPOIServiceRequest:
              type: object
              properties:
                Header:
                  type: object
                  required:
                    - NumberOfRetries
                    - WebhookUrl
                  properties:
                    NumberOfRetries:
                      $ref: "#/components/schemas/NumberOfRetries"
                    WebhookUrl:
                      $ref: "#/components/schemas/WebhookUrl"

    AsyncSaleToPOIDeviceRequest:
      description: >
        Asynchronous variant of `SaleToPOIDeviceRequest`. `Header.NumberOfRetries` and
        `Header.WebhookUrl` are required here, so the terminal response can be
        delivered to the configured webhook. They are optional on the synchronous request.
      allOf:
        - $ref: "#/components/schemas/SaleToPOIDeviceRequest"
        - type: object
          properties:
            SaleToPOIDeviceRequest:
              type: object
              properties:
                Header:
                  type: object
                  required:
                    - NumberOfRetries
                    - WebhookUrl
                  properties:
                    NumberOfRetries:
                      $ref: "#/components/schemas/NumberOfRetries"
                    WebhookUrl:
                      $ref: "#/components/schemas/WebhookUrl"

    AsyncSaleToPOIMessageStatusRequest:
      description: >
        Asynchronous variant of `SaleToPOIMessageStatusRequest`. `Header.NumberOfRetries` and
        `Header.WebhookUrl` are required here, so the terminal response can be
        delivered to the configured webhook. They are optional on the synchronous request.
      allOf:
        - $ref: "#/components/schemas/SaleToPOIMessageStatusRequest"
        - type: object
          properties:
            SaleToPOIMessageStatusRequest:
              type: object
              properties:
                Header:
                  type: object
                  required:
                    - NumberOfRetries
                    - WebhookUrl
                  properties:
                    NumberOfRetries:
                      $ref: "#/components/schemas/NumberOfRetries"
                    WebhookUrl:
                      $ref: "#/components/schemas/WebhookUrl"

    AsyncSaleToPOIReconciliationRequest:
      description: >
        Asynchronous variant of `SaleToPOIReconciliationRequest`. `Header.NumberOfRetries` and
        `Header.WebhookUrl` are required here, so the terminal response can be
        delivered to the configured webhook. They are optional on the synchronous request.
      allOf:
        - $ref: "#/components/schemas/SaleToPOIReconciliationRequest"
        - type: object
          properties:
            SaleToPOIReconciliationRequest:
              type: object
              properties:
                Header:
                  type: object
                  required:
                    - NumberOfRetries
                    - WebhookUrl
                  properties:
                    NumberOfRetries:
                      $ref: "#/components/schemas/NumberOfRetries"
                    WebhookUrl:
                      $ref: "#/components/schemas/WebhookUrl"

    AsyncSaleToPOIAdministrativeRequest:
      description: >
        Asynchronous variant of `SaleToPOIAdministrativeRequest`. `Header.NumberOfRetries` and
        `Header.WebhookUrl` are required here, so the terminal response can be
        delivered to the configured webhook. They are optional on the synchronous request.
      allOf:
        - $ref: "#/components/schemas/SaleToPOIAdministrativeRequest"
        - type: object
          properties:
            SaleToPOIAdministrativeRequest:
              type: object
              properties:
                Header:
                  type: object
                  required:
                    - NumberOfRetries
                    - WebhookUrl
                  properties:
                    NumberOfRetries:
                      $ref: "#/components/schemas/NumberOfRetries"
                    WebhookUrl:
                      $ref: "#/components/schemas/WebhookUrl"

    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
        SoftwareVersion:
          type: string
          description: Software version running on the terminal.
        TerminalModel:
          type: string
          description: Model identifier of the terminal hardware.
        MacAddress:
          type: string
          description: MAC address of the terminal network interface.
        SupportedLanguages:
          type: array
          items:
            type: string
          description: List of languages supported by the terminal.
        CardholderDefaultLanguage:
          type: string
          description: Default language used for cardholder-facing prompts.
        MerchantLanguage:
          type: string
          description: Language used for merchant-facing prompts.
        CountryCode:
          type: string
          description: Country code configured on the terminal.
        DefaultCurrency:
          type: string
          description: Default currency configured on the terminal.
        SupportedCurrencies:
          type: array
          items:
            type: string
          description: List of currencies supported by the terminal.
        AcquirerProtocol:
          type: string
          description: Acquirer communication protocol used by the terminal.
        SupportedTicketFormats:
          type: array
          items:
            type: string
          description: List of ticket/receipt formats supported by the terminal.
        SupportReceiptDelegation:
          type: boolean
          description: Whether the terminal supports delegating receipt printing to the POS.
        SupportsReceiptWidth:
          type: boolean
          description: Whether the terminal supports configurable receipt width.
        ManualPanKeyEntrySupportedServiceTypes:
          type: array
          items:
            type: string
          description: Service types for which manual PAN key entry is supported.
        SupportsTip:
          type: boolean
          description: Whether the terminal supports tip/gratuity.
        SupportsCashback:
          type: boolean
          description: Whether the terminal supports cashback.

    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** - 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** - 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** - 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** - 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** - 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** - 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** - 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.
        ShowProcessingScreen:
          type: boolean
          description: Flag to display a processing screen while waiting for the next UI or payment request, for up to 30 seconds.

    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** - 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

    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** - 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** - not part of the Nexo Retailer standard."
          properties:
            BarcodeType:
              type: string
              enum: [QRCode, Code128]
            BarcodeValue:
              type: string
        OutputImage:
          type: object
          description: "**Worldline extension** - not part of the Nexo Retailer standard."
          properties:
            ImageBase64:
              type: string
              description: Base64-encoded image data.
            ImageWidth:
              type: integer
            ImageHeight:
              type: integer

  examples:
    DeviceInputResponse:
      summary: Device Input Response (option selected)
      value:
        data:
          SaleToPOIDeviceResponse:
            Header:
              MessageFunction: DeviceResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
              CreationDateTime: "2026-05-07T14:35:22.0+01:00"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
            DeviceResponse:
              Environment:
                Merchant:
                  Identification:
                    Identification: WL000D5T0000004
                POI:
                  Identification:
                    Identification: "26197214"
              InputResponse:
                InputResult:
                  InputResultData:
                    InputCommand: GetAnyKey
                    InputMessage: option1
              Response:
                Response: Successful
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    SimplePaymentRequest:
      summary: Simple Payment
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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
                AccessibilitySettings:
                  VoiceGuidance: 0
                  DisplayFontSize: 0

    SimplePaymentErrorResponse:
      summary: Simple Payment with Error
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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: Failed
              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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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 CREDIT
                MaskedPin: XXXXXXXXXXXX0119
              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

    PreAuthorisationRequest:
      summary: Pre-Authorisation
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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 CREDIT
                MaskedPin: XXXXXXXXXXXX0119
              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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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

    ReconciliationRequest:
      summary: Reconciliation
      value:
        SaleToPOIReconciliationRequest:
          Header:
            MessageFunction: SaleFinancialReconciliationRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          ReconciliationRequest:
            Environment: {}
            ReconciliationRequestData: 
              ReconciliationType: AcquirerReconciliation

    ReconciliationResponse:
      summary: Reconciliation
      value:
        data:
          SaleToPOIReconciliationResponse:
            Header:
              MessageFunction: SaleFinancialReconciliationResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              CreationDateTime: "2020-05-04T18:13:51.0+01:00"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
              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 ***
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AdministrativeInitRequest:
      summary: Administrative Init Request (Acquirer Initialization)
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: LastDayEnd

    AdministrativeInitResponse:
      summary: Administrative Init Response (Acquirer Initialization)
      value:
        data:
          SaleToPOIAdministrativeResponse:
            Header:
              MessageFunction: AdminResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              CreationDateTime: "2020-05-04T18:13:51.0+01:00"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            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

                    --------------------------------
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AdministrativeConfigResponse:
      summary: Administrative Config Response (Terminal Configuration)
      value:
        data:
          SaleToPOIAdministrativeResponse:
            Header:
              MessageFunction: AdminResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              CreationDateTime: "2020-05-04T18:13:51.0+01:00"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            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

                    --------------------------------
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AdministrativePaymentMenuResponse:
      summary: Administrative Payment Menu Response (Payment Menu)
      value:
        data:
          SaleToPOIAdministrativeResponse:
            Header:
              MessageFunction: AdminResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "7f3c8e21-9b44-4a6d-84c3-2d8f0b6e1a90"
              CreationDateTime: "2020-05-04T18:13:51.0+01:00"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    Status:
                      VersionNumber: "1.4.2"
            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
                    --------------------------------

                       *** Payment Menu Opened ***

                    Payment menu displayed on terminal

                    --------------------------------
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AdministrativeLastDayEndResponse:
      summary: Administrative Last Day End Response (Last Day End)
      value:
        data:
          SaleToPOIAdministrativeResponse:
            Header:
              MessageFunction: AdminResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "3a9d1c74-b5e2-4f98-8c16-6e2b7d4a1f35"
              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
                    --------------------------------

                      *** Last Day End Complete ***

                    Last day end report generated

                    --------------------------------
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    MessageRejectionResponse:
      summary: Message Rejection
      value:
        data:
          SaleToPOIMessageRejection:
            Header:
              MessageFunction: Rejection
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
              CreationDateTime: "2020-05-04T18:13:51.0+01:00"
              InitiatingParty:
                Identification: WL000D5T0000004
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
              WebhookUrl: https://example.com/webhook?transactionId=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
              NumberOfRetries: 3
            Reject:
                RejectReason: UnableToProcess

        requestId: "550e8400-e29b-41d4-a716-446655440000"
    AbortPaymentRequest:
      summary: Abort of Simple Payment request
      value:
        SaleToPOIAbort:
          Header:
            MessageFunction: Abort
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "4f49c4a7-ec12-5799-b562-8d7f5e04663b"
            CreationDateTime: "2020-05-04T18:14:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
          Abort:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            SystemAbort:
              ExchangeIdentification: "550e8400-e29b-41d4-a716-446655440000"
              AbortReason: Customer error

    ReversalRequest:
      summary: Reversal of Simple Payment
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "541023e2-c5bb-5e62-b673-d6af31202c0f"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "93583c0b-81e6-5936-a13d-24cb0b599a8b"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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 CREDIT
                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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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

    UIScreenProcessingRequest:
      summary: UI - Info Screen with Processing Screen
      description: |
        Demonstrates the `ShowProcessingScreen` flag on an information screen that is part of a chained flow.

        Set `ShowProcessingScreen: true` when the current UI request will be immediately followed by another
        request (a further UI request or a payment request). After the user acts on this screen, the device
        keeps a processing screen visible while it waits for the next request, instead of momentarily
        returning to the idle screen. This removes the "flashing" between screens that would otherwise
        occur on the request/response round-trip, giving the customer a smooth, uninterrupted experience.

        Usage guidance:
          - Set the flag to `true` on every intermediate request that is followed by another one.
          - Omit it (or set it to `false`) on the last or a standalone request so the device returns to idle.
          - The flag applies to UI requests only.
          - The processing screen is dismissed as soon as the next request arrives, or automatically after
            30 seconds if no further request is received.
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "7f3e2a1b-9c8d-4e6f-a1b2-c3d4e5f60718"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  InfoScreen:
                    Title: Confirming your loyalty discount
                    Subtitle: A 2.50 EUR discount will be applied
                    Text: Please continue to complete your payment
                    PrimaryButton:
                      ButtonId: first_button
                      ButtonContent: Continue
                    SecondaryButton:
                      ButtonId: second_button
                      ButtonContent: Cancel
              InputData:
                MaximumInputTime: 30000
                ShowProcessingScreen: true

    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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          DeviceRequest:
            InputRequest:
              DisplayOutput:
                MessageContent:
                  ImageScreen:
                    ButtonColor: "#3700B3"
                    ImageBase64: |
                      UklGRqQWAABXRUJQVlA4IJgWAACQlgCdASoAA14BPm02m0kkIyMhIlRYgIANiWdu9mquAK4AerwptR7ilP4eU/Mn+q9Khwz0sdUCcLqt/h/3P2h/4z/J+4zzAP1T/Yzrl+YD9yP2l94H/
                      Hf8z2F/sb7An84/1H//7C39zPYU8s/2dP7d/xP3IzIj6B/peym0L+2PPp2X8ALKTr/PF8wLvH50/1fmX9ota1oB+Ut/u+awebrNKNqyjHOLOxDM1oY3170OW+ylU7gIlrGPEaSMeIirr6
                      5yDuB3o5YCsYOXPgueIAhr4LU7ZPL/7gcz+tOoAcPCNn84HbU5j36Vvjy3SHSMWC7EMKyG8h55YjBAqHYHihemTxGlB26GkjHiNvIUuiHASn12nnmY8xvMF0TuoF0B196oUGQFq8qU2RO
                      o4EHat0n7obTot7Zx8k+kjHiNI/6x/upeYVDxnVIQmpEYCHNIx1/TOpA48Lk+HRUovp9I9OKNHoy2VtzORedz/OR35kxEUPApqkYs5/qQ0kY8+lOoJIzVlW6hMptXzZLyoA6w5HJ1y0bR
                      +DbLWK+/3KhupI3hXyFCHp2XB+GMr/AbMDeGfwE4Ogl/D/c/gUNJTEY7kmrWgHOjHPBb9Aj2VbN4QTEmhSt3jAx+67gO68yJLk2GmfmHwG6EmPPmgMqeeMe9HjYoVVf3ZdWtl1Q7wb+Kg
                      sl94lGizwZL0PQpiljbKlpQGw+LUJZPU2EMP/XROvU6HRLWHTBPMZokFonhMEeuFjLAiRCsZY/jiBgT1T39BOQLWXdXEnkf8BN9Z6XtAk58fDtDgzMYHVdmvo3uff7ZIP+8IuFqCsT9zs
                      O3BvwDFaSJVnhIK6E7B1lUGLPPZnxXzfi9dpgQbbbH1n3lRCmWVW5DhaoIgfyBTXPCvihTyGut/wXH+mssAurPW27lnfD2xIMShTe5TpU2bmMjcYys+XV/Ti15FqakXTiQUmECRkQnXjC
                      4WJC1kdg4RXnScrJKEzshewV8VGs8jA4zakSn+l7dJnLnTPW8qRVXUG8NRQbffwQ7z3zvyw2588RiumuijlilW/azYQcgmCMA8AZgT03rmXSJ2WJk9GQChKFvYRFXYkHxzG0ov2ndFKQ/
                      JssuOdg37rR7geG/mqKGS5K4eEpGqLuXT/uAQvQMgBPU9do/5wV41PZ1+EgwJjQ3AjXTmYueYFNfl9Md3nG6imT7YNWupSWGEHE77GQFrcuE2Owzo8IjXVUiWA+fCC/21ib7BkLz0vmQm
                      le52GNTnqgVxUD5hqrS6GKU95ug4zGbhso9R4MuubisIEEvhMG+EHv8CZxj5FxLxkAOIELNicpbtZQDt3CgIM04ox2AOR4UjuP/6dAi/FPJKoXDm0eFx0/U53IszL0OE1we3QuOKGwt8c
                      DzUw66C9C0o2QNpkERwYj7iqMeI0mGJekiwISXnlyweON5JOsnzRKn1W+PLc2aQlpV0KmjItgH6dp4jSPV4nWYLD34E+IC4/0zjzaJ4TrQ5Y8jHiWHf0W46Rjy9SC6vHCVvjy2pp2Gn/3
                      yyCKkky0GBjf32ergGQTAj7H+lb48tqP8SLymFyJU4AqshvlD073lgoSgZqFE0mNPaJ6O5HfIXYYhd4+IJcN8gFAXH+egAP76YMrlbEy8AzkNvJe6V4DRBogUhBKZWtiJY8vG3PP3N2wa
                      ZiMk6iUVh3kS6XIbtE32NKmmf7iLCGD4zc47PYF5PySA/sgxYTox7jvLj8Wj00rRJx//ulpKMcsQr3oInVE0AY8YPVt82CLNEBTQAynNVEFxlvpDgOq5w1ZHd4q5wrQ4WKigftPhP9oJq
                      AsvPBxlMV61YT/eIYPOlmYAAAlychIcq768Gv4uR9Jc/Q0Gf4PW/Q+LDdSQmF4FEjjgGiugI1/VAB2wtNkfxxuduHwSX4+3mHcAg34bpzArfdqMbYppEWAAAAGBJUz0xiL/A13MLdB4g4
                      LyqZvisCvk0NjUwGvAF1rU2OOILAy2wBH0HJ7ShlotvQAhiiQBB8liW3e8Yy6aDzk+0HsDDvN+aI2WhdwERY4h4lQKrZQlNfaUR98HI43UK+7fc4sV4BANXgCFRJBUGU+cRvunH/8qcBk
                      abudLmBlHQj6SYABORMPD6zSjYSjiADNAC/MGWA0+rM9/kYHqRGUcM9WzzDzxDXO4r44BY/Xz3xizgAXy0hdv3OS7Y+78Ie5+n51iMxSPqhAN/5DF4yrXfd/K3RKDjhG4XulepNrFA+no
                      mEZEArSUg7QU7jXWKNwYH8D5St3LGIxH39Z5HjBhYIurabTYZ3cFZelpm5ICK1/OiUmyjYVZFLMNUDRzpX7eOxFh8O6qkYJQ5H8/09/Qk2EcuuscEtwkMnMldk9wj7xEBDZCsLNOJLVgb
                      AId1COeqMgMK51hRWBMR3urSST0tCGhJK5huGuKmoJ7HUcLNh7CHvkRcnC0tU75HvxCR7czBxMvWJbvmiJ3dmk80Ds6JJSpAUkiWntbHZozAxotBaNNNZT7Lg48Z3n7chyKKPVEL/QDJq
                      3wQO94/uT4mR5jdbMGacki9hbskF8wS1fylYpUZXLh4RkbkNpGqX3kK7I5rTetpl450O+BSqtz+RI85CsHZC328CBZPIiSi4rtjvYkbQpGOnggeGAKOLZZom/qy88pNjcNVpVFTfX0Jt3
                      Rla08AFM++2+a8YSGa3I7Da/8MzVz7XPJuj7B3p2BAsf/nhZY1rXv32yPVjl1ziUZcOOKG8C05WGYm0dbc3CVC6PlMz2N1XmTjkzQnx46v1PuvaEZZZZdHsFKIDf7JGctWXbNUlvbOv6R
                      EyU4BBlMxgEvwuQ74O8GZr7pJgHASxEZPwjJEbnnmSabidIF6BIqIJIgPPA5ok23yYC+SX0os78NJpALP2puvtP+CtmbX2tU/tErK/1i8OiEnu15+DBeKFm8G9/sE2BPnEHLTJ8Ds30lP
                      BziaCDNcEkIaDvz9swSjXUuEW/fJonAe2Dx/2vV3yAIRQj5mg9+md+WTyiN7rpONjRsIRtDOF7R9onxqXCxh/hi1978QMw4W7ckZJ5z1h77NkMJ3ZpC4OBLjaQrRc5dSryAxBxwaYv7Ma
                      H/8/6n9dIQQFC8ZtWuhM+u1LjdkVkRQ6wI5WMnSpMqUgUolk9ES8wJIg+qzR/3BGmKVtWRCIenGq7m3RAWcNcHiO6LIp7Ss+PwD8MdDwZ/7l1F1YNoW3xmgDGmACopuMDt9PnAc1oMXGA
                      iblfZQHunv4yVzm4aVZeJVEu+XQ/f4SYtn4y/7TdAtMl94no0rvjxEssx7SMk0XTATNww6r4fvFdHwD4rGbU7outM/2DqukyUgOuM6Nv86mfw85+OWU4sUTNKWOe8E7JOcjdoQBv31PXC
                      z9fB/626WEyqlrcX/qkJt/BizMcBMyOceHpkRFs/Po8Aa9nrCYDQheiGZBzHfIHOaRdvc1bFyOonL5au32d8u2I662Y+dmvG0kjp4FhS0BArrQBZOykjg0IxboiB/eI6SfPqtxjrYe+DC
                      +ZEuXdeMT3r5enUppy4zYTd2QuhX2nPshJXxo2ac8HxfuV4FatJls6xeTr5fo8rivzJ0ouPokW/rEqgHBQADTy4DHWFOM49KAz//a3kVzJqAUTTJ0V0XWzbca/hA/O/v+B/hJ/xGwH0kn
                      ZCJ5utJAe2oKOW3NufhJUN3+vJchvjRsfm7U28LLsTikJTY7HYE/v1zhd22qACmTRNMnoEdskXJWxcn/6qMh128k8CrpBbRpLa8ha9ACraZy3x11FgauDgsKed/HRkKoMGEpGjr+uMbsh
                      j5ijyDmqJ8+k2WNn21JFC6ZH9PZrR488apiN1suowHdHO3ZnbaNYVMwBIfZzgyKzhyOry2c9kMySepiMLQ5SDv1AcuzLXEYi3xTQkX6SNAyQL7nd9t+kSBlcKL8GegQ5NvqA8007Q0ooF
                      ZzzmNitaVtlkMYZskI3YuuxD3LS2fnoaDSy6mVAjfqOWUTnjAJKDGqNNkdHbdM4iQMh2HrOjs50tKK2O8tyDluC+4MpIOZQZ7XnXIjYScYkdRFCrchiJpZhMiOMGUiwOsgeOmUwTr6T5x
                      Q1DL4slbQ4me9lEgLv/CoRmAFTFH8HLiee20kd7yiXBbUfMGF9n/xyDFIV6znJB495A5aj3Dsqnjgb0vNwHd8QxhVjuBp2SdIbSFtbjtm+MvZZVn6l/11nEy43vfeuA4jx4sz8kQI+pf/
                      4WaRwFSQ/YO2KZ4T3S2t8eESthfUMzrHjK66kOz6sCnCu6ZJRKZsHcfRsPp/0+F+IkTfJCjz+ASlJok45pT7BUIVkcLdcSVMC+1RGCm6lz+IYj4gLJT7CoH2sRJevNRyk+H9/ewgFO2TT
                      +s8+GmzsmtVTbvSeJ709jrFoeURaxMu/DFvBf+siR7YZvWtv77+qWL+qaEuct10iWJnejuUZ/KLxZ7371kCeegeprcByjKZvfWaI2kPC4fuoSUb4h7gF3FFdPnuHWsO+jGUhuZ6MDVGn5
                      upqk/V8SnnFmMbpi+eqp4XkFQFYQ2aD0nbVdNOaFCnwNu6KxZS+qgZJZLTCYSDsPEQcGjUjuq8fTqc4WkVY2clH6gSlomK6SIQvpdPJtQIMjJyrv+gsU3mp3NDYkgf2nRqZfPIIJ9NmMB
                      ThCP5/vQBgPrBm/8b1k14dcnCxOt66PBVW7Nr1K5PYcnJzeL950N4R2U8N2X4MhhGt/nU8QXEDSxc7zAfmxSYh38vLO7boiiA1Ys3DB5035nRNvRP2XdOXYpQjcBRNW8jZbNVDi7K8uDG
                      0maI2wmh2lq2dsSM3L/KD79G7Gw0seL90tf3ioIcLcBGtwNAnIEnk2b4+4LgYpgvzM3lI4CvDct7Z5YwTRQOVnlNMyPUoKpXhFPWONMTrcONwKqvFFN8dVD4OSWeq6f+USelZr7AVhw0L
                      ifZQwY4jebqPGp7nDOtIfyZyjyQIYnKaq+Uv0E9czHWAsKxfiWlT7/ahvQHq1AzKOlRdBHDBvSHQF64PsSqu9wCVnrigURgUhpnKoGEsEW1u0oHP9EHgKIRCQXXx3rK+HbZkPJImUwpFf
                      HtR67V00hnZQPstAaiuXdaVPcvDFkwDH7eStJsPMLvAg9oxJH3eH6F9Kot/lB3jpbxC4bJjlqmRZPa9jJ8KSlmw0TBqB1a/qiiGxdCx4B/uUAuKNyBoTbinwCx8rfB/TnCqYLfMPM8UNe
                      4IKHRSXZzqzBrJiKpaA0pXqbbWksqqafWjUWmeype8TI28PwFP0Qh2CqFHOZEMNZEDwdJ7veCr8EHe+Uhre/UgfB+QVjZSXYszlg716+czawHlGEQDMbOWIuWcaeAZoDoWGgHt5LnOdu4
                      YPkPRLji4a6fVKzO5J3ZPJuJ4RaModcizXguBhQHBa1WE/GW2Y5fenKFXQNWUcCHUxSVrZeyPkE6CYLMuVdhOt5ABOVmHdNK0gWvzOD2n88/gr8E4YKOxotXU9qnvmykfH9gvFCN3ntPU
                      Oa6C1aLG82sN/cxnmo40dg3uOMotWKVUNwdnFB/eUJdMSbt9/UTEu0HCQdbE2SuOPTr6ui1DKHZxLxI92Io5G0uCfjJE9ZHVcceAg7Fe9pBSVz3hNyWU6eH6J03jbpzZ/E7hQf8w6JqqW
                      /IbRnea6SF7FmVWiLyJl6JlW4EGby+gZPfIqdGo0cM0AvXpy1ae72nCxDXP3SLE9QNHe5kR8xjra1AlZ8FUOI8F72xwhPHDM4j8r2GBm8X9Pc+uRY49pYu/uVkJ/Xg1jGCmUwyn0gFWAH
                      sP4LvtulZlH7gUIuFOdcf9pY1DcdfmUP2W0BhmhsXKTVmQD73iZ0X91wFnzFFiuMZ1gU6TvQ+KtjObIUrrWQed+t/dCuq3rAsg/A1ObzogJhRCiho2kC40Kx7t9g4bjWCPyx4rxaEF1xR
                      XMoo1UoFu9IS/gV65991YC52WVxJpXpmRbGKNDvsMyukwMKRYLNIPLZEuFUUeepel6cs9+oPl3v7zFCTax8hkDyklnNy/Bbg6nHYkbBmJ7JUORWaqganZVPHq9hqN0iGfNCMiUFgFH63v
                      KxQwQiawhc1pA1wxaiblFo95z396bRHcHOtLVMP+JRtVsDpZ3/kdrs4BcmGO3Sa5kLK0g8k5q4ee+omr++JXFVD1Qw2ky0n0wq6oSR+cjg1EEmyXELfYuq7wSY+MCBof/jI4jEzOUZRkv
                      SHz3ddB4Itfp0+D5wwgLiXrQUhlEGXDRm7ZFAnY6bY4Mup/X6YTxhl3b40jnHNLlkTxt+twKvExGPx7qjtKNr+tcngpl5vWy5Rg+1fwpjb3t3e7q0SuEhqL3V7N63qHXHp2+C4Lv0P2Ap
                      Mc3Nw5heiGJ1aDFqtHfFxP6MMwoUf5hQE9Z02QJbfixFUEKFUpVD2HDwT6x1gF1pDAjpPZjMH4dak+MiZ8CM4UlRR3xt5+Rzwlk9bwsJVs4Vpwdy17vW9vtH25YjQvnR7ObC8k6ww9h2q
                      oIhzTFuUAQfb7b2SI1e0E6Jss0LGMwvr7CLG6gtUqoDvtNjj2hEcThG4SnwmeDhKKvaCwLHkQY8/Bt10OYR03Xah4uKL6H+Cz/KqQv/hrFOgMtScuR8uDvEjmyO1RNT0Qxx2jICXxbEqa
                      29thGogK9jVr+jCiziDoz5/GXt+ClgYnBPqWFwq2betM//5exPlt2DCxO0PZY2Dqxq39j1bIvuLzGsJ8VViS1KpxD8nJHph5IbflbklPn7sLIAwYS2CVUdhOwFCi8W6rKoaeoVJiJdtwy
                      MzhV5il8arhTy6wK6i59E9eMuys7SICp6COpcEW3JPRzTPPPpZ06YxMjgXORCVG+sgOOvC+v51G56DW8kRECM1iO7e1TS2UV+oCkXQn2f27M32k+BI7yVDa72c7vyyVbcDsneRYTr38NE
                      R08JpkV3jy5I3JAaku0230okY6AjFyDVzkAqLv638rLAoNexKnVyjVQP2/CYh7wIziaEeQYpCUfsKmkFWiEvX4mbLJT7w7upByIi5jws+fgxL+7mzz0lKmktKDjhz+IUbjfNDpyZyWktX
                      1YeabzqwRoMI5iEmSV+og1ic5lWjgGR2v3w/qoc3awG/rg/aC1ck4mWSFqjGvgNrzGMo3O9waEUOA215uDtNEHQcHLd81VY85Us26S64DgN5+fA41QsHYJrZJ7Q7v0V72iTgr/WBgMamQ
                      I6ZNxT+HVXvmbuXFbgWjeLho2I3rvZDa0+rui+Gwja39AqmU2hSxdSs49CbyZ8D8i0Z7Q0R7KnDDtnrDjbvBmFgqgzHXwJEnV7/95109yoKwGTAlB1xPsElZFp7Y1ew0Cxrgs+VOLud05
                      E0iov9zG50ewAXpLtlcbMoo3u5JjwDKyQZoYdmPpzl/+iNKE2ZPhyh2gbSAGtTfEqjQQoA8YTvuwy+2r5xnrsaHo9dybi6b7gqPKR6QHvLQGkaBE2GDXyM0eyM8VCz94SUmCczvfB+NUJ
                      jD55SnzGpZ9tUO/1At7hUrymoB9fbUSZZ7sBBZSkAq0NHi2w+RJRZ0DNRMBHGIMvQ/94E6KDvIEzb8djVD7biAkHT/2gBwlVo/4K19JAAG2tpZQiLat/3fuHNFUV1cfSR7PaWN0RzVvOM
                      RX5Ewmg6oBxNqxH6i1r7EQR9FBsfmOp4hpKBqD0TGPWDbQ9lDfezzQUcVw2An5KYWSOEFb48sFjkmH6WTpjZ1U6fPRMoeL3NoKFWlXL5ONGbVLLdIZUWTTSZmAAAA=
                    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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
            NumberOfRetries: 3
          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-WL2.1.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.1"
            ExchangeIdentification: "eb3013e9-8e84-5a72-b647-ca9085b6a3a6"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=644
            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-WL2.1.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2025-08-12T16:55:45+02:00"
            InitiatingParty:
              Identification: YourInitiatingPartyID
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
          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: "CRCP"
                  OutputContent:
                    MessageDestination: "CRCP"
                    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-WL2.1.1"
            ExchangeIdentification: "eb3013e9-8e84-5a72-b647-ca9085b6a3a6"
            CreationDateTime: "2025-08-12T16:55:45+02:00"
            InitiatingParty:
              Identification: YourInitiatingPartyID
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
          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: "CRCP"
                  OutputContent:
                    MessageDestination: "CRCP"
                    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-WL2.1.1"
            ExchangeIdentification: "d0edd90f-5797-5625-9de2-ee4187c9214b"
            CreationDateTime: "2025-12-12T16:56:27.200+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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: "550e8400-e29b-41d4-a716-446655440000"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant

    MessageStatusResponse:
      summary: Message Status Response
      value:
        data:
          SaleToPOIMessageStatusResponse:
            Header:
              MessageFunction: MessageStatusResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
              CreationDateTime: "2025-12-12T17:00:43.809+01:00"
              InitiatingParty:
                Identification: WL000D5T0000004
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
              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

                            --------------------------------
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    ReferencedPaymentRequest:
      summary: Referenced Payment (Follow on Purchase)
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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-WL2.1.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
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
          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-WL2.1.1"
            ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2025-12-09T09:50:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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:
        data:
          SaleToPOIMessageStatusResponse:
            Header:
              MessageFunction: MessageStatusResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a"
              CreationDateTime: "2025-12-09T09:50:00.0+01:00"
              InitiatingParty:
                Identification: WL0015W90000001
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
              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"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AbortAcknowledgement:
      summary: Abort acknowledged
      description: |
        Returned for the `200` response of the abort endpoint.
      value:
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AsyncAcknowledgement:
      summary: Async request accepted
      description: |
        Returned for `202 Accepted` on async endpoints when a new request is accepted for processing.
      value:
        transactionId: "550e8400-e29b-41d4-a716-446655440000"
        status: ACCEPTED
        requestId: "550e8400-e29b-41d4-a716-446655440001"

    AsyncAcknowledgementDuplicateProcessed:
      summary: Async request is a duplicate - original completed
      description: |
        Returned for `200 OK` when the transaction ID matches an already-completed transaction. The original response is being replayed to the webhook.
      value:
        transactionId: "550e8400-e29b-41d4-a716-446655440000"
        status: PROCESSED
        requestId: "550e8400-e29b-41d4-a716-446655440001"

    AsyncAcknowledgementDuplicateInProgress:
      summary: Async request is a duplicate - original in progress
      description: |
        Returned for `200 OK` when the transaction ID matches an already-in-progress transaction. The duplicate is rejected without opening a new transaction.
      value:
        transactionId: "550e8400-e29b-41d4-a716-446655440000"
        status: PROCESSING
        requestId: "550e8400-e29b-41d4-a716-446655440001"

    AcceptedEnvelope:
      summary: Sync request timeout (no response)
      description: |
        Returned for `202 Accepted` on sync requests that timed out before the terminal responded.
      value:
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    SimplePaymentResponse:
      summary: Simple Payment
      description: |
        Synchronous payment response, with the Nexo payload wrapped inside the envelope's `data` field.
      value:
        data:
          SaleToPOIServiceResponse:
            Header:
              MessageFunction: SaleFinancialServiceResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "550e8400-e29b-41d4-a716-446655440000"
              CreationDateTime: "2026-05-07T14:35:22.0+01:00"
              InitiatingParty:
                Identification: WL000D5T0000004
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            ServiceResponse:
              Response:
                Result: Success
              PaymentResponse:
                PaymentTransaction:
                  TransactionType: CardPayment
                  TransactionIdentification:
                    TransactionDateTime: "2026-05-07T14:35:22.0+01:00"
                    TransactionReference: R26197055
                  TransactionDetails:
                    Currency: EUR
                    TotalAmount: 104.11
                  TransactionResponse:
                    AuthorisationResult:
                      ResponseToAuthorisation:
                        Response: Approved
                      AuthorisationCode: "678803"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    MerchantConnectionsResponseExample:
      summary: Merchant connections
      value:
        data:
          umid: SCS-280505
          connectedTerminals:
            - "26197214"
            - "26197215"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    TransactionStatusProcessed:
      summary: Transaction status - answered by the terminal
      description: |
        The terminal answered, so the recorded Nexo response is returned alongside the status. `PROCESSED` says the answer was recorded; this particular answer happens to be an approval, which is stated by `Response.Result` and `ResponseToAuthorisation.Response` inside `responsePayload`, not by the status.
      value:
        utid: "26197214"
        status: PROCESSED
        responsePayload:
          SaleToPOIServiceResponse:
            Header:
              MessageFunction: SaleFinancialServiceResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "550e8400-e29b-41d4-a716-446655440000"
              CreationDateTime: "2026-05-07T14:35:22.0+01:00"
              InitiatingParty:
                Identification: WL000D5T0000004
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            ServiceResponse:
              Response:
                Result: Success
              PaymentResponse:
                PaymentTransaction:
                  TransactionType: CardPayment
                  TransactionIdentification:
                    TransactionDateTime: "2026-05-07T14:35:22.0+01:00"
                    TransactionReference: R26197055
                  TransactionDetails:
                    Currency: EUR
                    TotalAmount: 104.11
                  TransactionResponse:
                    AuthorisationResult:
                      ResponseToAuthorisation:
                        Response: Approved
                      AuthorisationCode: "678803"

    TransactionStatusPending:
      summary: Transaction status - no answer recorded
      description: |
        No answer has been recorded for the transaction, so `responsePayload` is absent and only the status is returned.
      value:
        utid: "26197214"
        status: DELIVERED_TO_TERMINAL

    TransactionStatusNoResponse:
      summary: Transaction status - outcome still unknown
      description: |
        The request reached the terminal but no answer came back within the response window, so `responsePayload` is absent. This is not a decline and not a failure: the payment may have completed. Poll again - if the terminal answers late the transaction moves to `PROCESSED` and the payload appears.
      value:
        utid: "26197214"
        status: NO_RESPONSE_FROM_TERMINAL

    TransactionNotFoundError:
      summary: Unknown transaction
      value:
        message: "The transaction does not exist"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    InvalidJsonError:
      summary: Invalid JSON body
      value:
        message: "Your request has invalid JSON format"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    InvalidExchangeIdentificationError:
      summary: ExchangeIdentification is not a UUID
      description: The API rejects requests where `Header.ExchangeIdentification` is not a valid UUID.
      value:
        message: "ExchangeIdentification must be a valid UUID"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    PaymentWithReceiptDelegationRequest:
      summary: Payment with Receipt Delegation (disable terminal printing)
      description: |
        Valid structure with printer capability.
        Mapping result: payload includes `"receiptDelegation": false`.

      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "0d1e2f3a-4b5c-4d6e-7f8a-9b0c1d2e3f4a"
            CreationDateTime: "2026-03-31T10:30:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=0d1e2f3a-4b5c-4d6e-7f8a-9b0c1d2e3f4a
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            Context:
              SaleContext:
                SaleTerminalData:
                  SaleCapabilities:
                    - PrinterReceipt
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2026-07-14T10:00:00+09:00"
                  TransactionReference: TXN-1001
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 12.34

    PaymentWithoutPrinterCapabilityRequest:
      summary: Payment without printer capability (receiptDelegation omitted)
      description: |
        Valid JSON-tags structure with no printer capability.
        Mapping result: `receiptDelegation` is omitted from the payload.

      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "0d1e2f3a-4b5c-4d6e-7f8a-9b0c1d2e3f4a"
            CreationDateTime: "2026-07-14T10:00:00+09:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            Context:
              SaleContext:
                SaleTerminalData:
                  SaleCapabilities: []
            ServiceContent: FinancialPaymentRequest
            PaymentRequest:
              PaymentTransaction:
                TransactionType: CardPayment
                TransactionIdentification:
                  TransactionDateTime: "2026-07-14T10:00:00+09:00"
                  TransactionReference: TXN-1002
                TransactionDetails:
                  Currency: EUR
                  TotalAmount: 12.34

    DccRefundRequest:
      summary: DCC Refund
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            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"

    CardAcquisitionRequest:
      summary: Card Acquisition - Card Verification
      description: |
        Reads card data from the terminal without starting a payment.
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "8b9c0d1e-2f3a-4b4c-8d6e-7f8a9b0c1d2e"
            CreationDateTime: "2026-03-31T10:00:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=8b9c0d1e-2f3a-4b4c-8d6e-7f8a9b0c1d2e
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialCardAcquisitionRequest
            CardAcquisitionRequest: {}

    CardAcquisitionPaymentRequest:
      summary: Card Acquisition - Following Payment
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1d29c6e-34bb-4e9f-85f1-a7db4d9d12d0"
            CreationDateTime: "2026-03-31T11:00:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=a1d29c6e-34bb-4e9f-85f1-a7db4d9d12d0
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialCardAcquisitionRequest
            CardAcquisitionRequest:
              PaymentType: CardPayment
              TransactionDetails:
                Currency: EUR
                TotalAmount: 3.56

    CardAcquisitionPaymentWithTipRequest:
      summary: Card Acquisition - Payment + Tip
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "c37d65ac-0d4b-45d7-90a2-863f16fb4a21"
            CreationDateTime: "2026-03-31T11:00:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=c37d65ac-0d4b-45d7-90a2-863f16fb4a21
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialCardAcquisitionRequest
            CardAcquisitionRequest:
              PaymentType: CardPayment
              TransactionDetails:
                Currency: EUR
                TotalAmount: 4.56
                DetailedAmount:
                  Gratuity: 1.00

    CardAcquisitionPaymentWithCashbackRequest:
      summary: Card Acquisition - Payment + Cashback
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "fda95484-2f61-4d89-8ea0-c610492f58f0"
            CreationDateTime: "2026-03-31T11:00:00.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=fda95484-2f61-4d89-8ea0-c610492f58f0
            NumberOfRetries: 3
          ServiceRequest:
            Environment:
              POI:
                Identification:
                  Identification: POITerm1
            ServiceContent: FinancialCardAcquisitionRequest
            CardAcquisitionRequest:
              PaymentType: CardPayment
              TransactionDetails:
                Currency: EUR
                TotalAmount: 31.56
                DetailedAmount:
                  CashBack: 10.00

    CardAcquisitionResponse:
      summary: Card Acquisition Response
      value:
        data:
          SaleToPOIServiceResponse:
            Header:
              MessageFunction: SaleFinancialServiceResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "8b9c0d1e-2f3a-4b4c-5d6e-7f8a9b0c1d2e"
              CreationDateTime: "2026-03-31T10:00:01.0+01:00"
              InitiatingParty:
                Identification: WL000D5T0000004
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            ServiceResponse:
              Environment:
                Card:
                  CardBrand: VISA
                  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
                CustomerLanguage: EN
              Response:
                Response: Successful
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    PaymentAfterCardAcquisitionRequest:
      summary: Payment after Card Acquisition (no second tap)
      description: |
        Follows a Card Acquisition request. The customer does not need to tap again.
      value:
        SaleToPOIServiceRequest:
          Header:
            MessageFunction: SaleFinancialServiceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "9c0d1e2f-3a4b-4c5d-6e7f-8a9b0c1d2e3f"
            CreationDateTime: "2026-03-31T10:00:05.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=9c0d1e2f-3a4b-4c5d-6e7f-8a9b0c1d2e3f
            NumberOfRetries: 3
          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

    PaymentAfterCardAcquisitionResponse:
      summary: Payment after Card Acquisition Response
      value:
        data:
          SaleToPOIServiceResponse:
            Header:
              MessageFunction: SaleFinancialServiceResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "9c0d1e2f-3a4b-4c5d-6e7f-8a9b0c1d2e3f"
              CreationDateTime: "2026-03-31T10:00:06.0+01:00"
              InitiatingParty:
                Identification: WL000D5T0000004
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            ServiceResponse:
              Response:
                Result: Success
              PaymentResponse:
                PaymentTransaction:
                  TransactionType: CardPayment
                  TransactionIdentification:
                    TransactionDateTime: "2026-03-31T10:00:06.0+01:00"
                    TransactionReference: PAY-AFTER-CA-001
                  TransactionDetails:
                    Currency: EUR
                    TotalAmount: 25.00
                  TransactionResponse:
                    AuthorisationResult:
                      ResponseToAuthorisation:
                        Response: Approved
                      AuthorisationCode: "678803"
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    AdministrativePaymentInformationRequest:
      summary: Administrative Payment Information Request
      value:
        SaleToPOIAdministrativeRequest:
          Header:
            MessageFunction: AdminRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: SaleTermA
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  SubTypeInformation: "Checkout"
                  Identification:
                    ProviderIdentification: "YourSoftware"
                    Identification: "YourPOS"
                    SerialNumber: "SN-0001"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f
            NumberOfRetries: 3
          AdministrativeRequest:
            Environment: {}
            AdministrativeServiceIdentification: PaymentInformation

    AdministrativePaymentInformationResponse:
      summary: Administrative Payment Information Response
      value:
        data:
          SaleToPOIAdministrativeResponse:
            Header:
              MessageFunction: AdminResponse
              ProtocolVersion: "5.1-WL2.1.1"
              ExchangeIdentification: "c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f"
              CreationDateTime: "2020-05-04T18:13:51.0+01:00"
              InitiatingParty:
                Identification: SaleTermA
                Type: Merchant
              SalesSystemInfo:
                IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
                SaleSoftware:
                  - Type: "ECR"
                    SubTypeInformation: "Checkout"
                    Identification:
                      ProviderIdentification: "YourSoftware"
                      Identification: "YourPOS"
                      SerialNumber: "SN-0001"
                    Status:
                      VersionNumber: "1.4.2"
            AdministrativeResponse:
              Environment: {}
              Response:
                Response: Successful
              PaymentInformation:
                TerminalIdentifierLong: EP2-473573-26106670
                SoftwareVersion: "3.12.1"
                TerminalModel: "YOMANI XR"
                MacAddress: "00:1A:2B:3C:4D:5E"
                SupportedLanguages:
                  - en
                  - fr
                  - de
                CardholderDefaultLanguage: en
                MerchantLanguage: en
                CountryCode: "756"
                DefaultCurrency: CHF
                SupportedCurrencies:
                  - CHF
                  - EUR
                AcquirerProtocol: "ep2"
                SupportedTicketFormats:
                  - Full
                  - Simplified
                SupportReceiptDelegation: true
                SupportsReceiptWidth: true
                ManualPanKeyEntrySupportedServiceTypes:
                  - Payment
                  - Refund
                SupportsTip: true
                SupportsCashback: false
        requestId: "550e8400-e29b-41d4-a716-446655440000"

    PrintSimpleTextRequest:
      summary: Print - Simple Text
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "3c4d5e6f-7a8b-4c9d-0e1f-2a3b4c5d6e7f"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=3c4d5e6f-7a8b-4c9d-0e1f-2a3b4c5d6e7f
            NumberOfRetries: 3
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: SimpleText
                MessageContent: "Hello World - Simple Print Test"

    PrintQRCodeRequest:
      summary: Print - QR Code
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "4d5e6f7a-8b9c-4d0e-1f2a-3b4c5d6e7f8a"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=4d5e6f7a-8b9c-4d0e-1f2a-3b4c5d6e7f8a
            NumberOfRetries: 3
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: Barcode
                OutputBarcode:
                  BarcodeType: QRCode
                  BarcodeValue: "https://example.com/receipt/12345"

    PrintImageRequest:
      summary: Print - Image
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "5e6f7a8b-9c0d-4e1f-2a3b-4c5d6e7f8a9b"
            CreationDateTime: "2026-02-26T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=5e6f7a8b-9c0d-4e1f-2a3b-4c5d6e7f8a9b
            NumberOfRetries: 3
          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
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "6f7a8b9c-0d1e-4f2a-3b4c-5d6e7f8a9b0c"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=6f7a8b9c-0d1e-4f2a-3b4c-5d6e7f8a9b0c
            NumberOfRetries: 3
          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)
      value:
        SaleToPOIDeviceRequest:
          Header:
            MessageFunction: DeviceRequest
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "7a8b9c0d-1e2f-4a3b-4c5d-6e7f8a9b0c1d"
            CreationDateTime: "2026-02-24T12:00:00Z"
            InitiatingParty:
              Identification: SaleTermA
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
            WebhookUrl: https://example.com/webhook?transactionId=7a8b9c0d-1e2f-4a3b-4c5d-6e7f8a9b0c1d
            NumberOfRetries: 3
          DeviceRequest:
            PrintRequest:
              OutputContent:
                Format: SimpleText
                MessageContent: "--- Header ---"
              OutputContentList:
                - OutputContent:
                    Format: JSON
                    OutputJSON:
                      - CharacterStyle: Bold
                        Alignment: Centred
                        EndOfLineFlag: true
                        Text: "STORE NAME"
                - OutputContent:
                    Format: Barcode
                    OutputBarcode:
                      BarcodeType: QRCode
                      BarcodeValue: "https://example.com/receipt/12345"
                - OutputContent:
                    Format: SimpleText
                    MessageContent: "    Thank you for visiting!"

    ResponseReasonAbortedResponse:
      summary: "ResponseReason example: Aborted"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: Aborted
              AdditionalResponseInformation: "WPI_ERR_COND_ABORTED:Payment aborted!"

    ResponseReasonBusyResponse:
      summary: "ResponseReason example: Busy"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: Busy
              AdditionalResponseInformation: "WPI_ERR_COND_BUSY:Busy, another request already running"

    ResponseReasonCancelledResponse:
      summary: "ResponseReason example: Cancelled"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: Cancel
              AdditionalResponseInformation: "WPI_ERR_COND_USER_CANCEL:EFT_E_CARDHOLDER_ABORT"

    ResponseReasonDeviceOutResponse:
      summary: "ResponseReason example: DeviceOut"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: DeviceOut
              AdditionalResponseInformation: "The payment terminal is out of order."

    ResponseReasonWrongPINResponse:
      summary: "ResponseReason example: WrongPIN"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: WrongPIN
              AdditionalResponseInformation: "WPI_ERR_COND_INVALID_PASSWORD:EFT_E_WRONG"

    ResponseReasonUnreachableHostResponse:
      summary: "ResponseReason example: UnreachableHost"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: UnreachableHost
              AdditionalResponseInformation: "The acquirer or host could not be reached."

    ResponseReasonUnavailableServiceResponse:
      summary: "ResponseReason example: UnavailableService"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: UnavailableService
              AdditionalResponseInformation: "The requested service is not available."

    ResponseReasonUnavailableDeviceResponse:
      summary: "ResponseReason example: UnavailableDevice"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: UnavailableDevice
              AdditionalResponseInformation: "The requested device is not available."

    ResponseReasonRefusalResponse:
      summary: "ResponseReason example: Refusal"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: Refusal
              AdditionalResponseInformation: "WPI_ERR_COND_USER_TIMEOUT:EFT_E_CARDHOLDER_TIMEOUT"

    ResponseReasonPaymentRestrictionResponse:
      summary: "ResponseReason example: PaymentRestriction"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: PaymentRestriction
              AdditionalResponseInformation: "The payment cannot be performed because of a restriction."

    ResponseReasonNotFoundResponse:
      summary: "ResponseReason example: NotFound"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: NotFound
              AdditionalResponseInformation: "The requested resource or transaction was not found."

    ResponseReasonNotAllowedResponse:
      summary: "ResponseReason example: NotAllowed"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: NotAllowed
              AdditionalResponseInformation: "WPI_ERR_COND_INVALID_CURRENCY:EP2_E_CURR_NOT_INITIALIZED"

    ResponseReasonLoggedOutResponse:
      summary: "ResponseReason example: LoggedOut"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: LoggedOut
              AdditionalResponseInformation: "The session or operator is logged out."

    ResponseReasonInvalidCardResponse:
      summary: "ResponseReason example: InvalidCard"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: InvalidCard
              AdditionalResponseInformation: "The card is invalid for the requested transaction."

    ResponseReasonInsertedCardResponse:
      summary: "ResponseReason example: InsertedCard"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: InsertedCard
              AdditionalResponseInformation: "A card is inserted and must be removed before continuing."

    ResponseReasonInProgressResponse:
      summary: "ResponseReason example: InProgress"
      value:
        SaleToPOIServiceResponse:
          Header:
            MessageFunction: SaleFinancialServiceResponse
            ProtocolVersion: "5.1-WL2.1.1"
            ExchangeIdentification: "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
            CreationDateTime: "2020-05-04T18:13:51.0+01:00"
            InitiatingParty:
              Identification: WL000D5T0000004
              Type: Merchant
            SalesSystemInfo:
              IntegratorId: "9b2e6f1a1c3d4e5f8a7b0c1d2e3f4a5b"
              SaleSoftware:
                - Type: "ECR"
                  Status:
                    VersionNumber: "1.4.2"
          ServiceResponse:
            Environment:
              Merchant:
                Identification:
                  Identification: WL000D5T0000004
              POI:
                Identification:
                  Identification: 26197214
            Context:
              SaleContext:
                SaleIdentification: SaleTermA
            ServiceContent: FinancialPaymentResponse
            Response:
              Response: Failed
              ResponseReason: InProgress
              AdditionalResponseInformation: "The transaction is still in progress."

