---
info:
  version: 2026-4
  contact: {}
  description: Platform payment service responsible for handling payment transactions.
  title: Platform Payment Service
paths:
  "/2026-4/onboardings":
    post:
      description: Creates a new onboarding process for a specific user.
      operationId: CreateOnboarding
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CreateOnboardingBodyDTO"
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CreateOnboardingResponseDTO"
          description: The onboarding was successfully created.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:onboardings:create:one
      - oauth2:
        - payment:onboardings:create:authenticated
      summary: Creates a new onboarding.
      tags:
      - Onboardings
      x-beta: true
  "/2026-4/payment-method-kinds":
    get:
      description: Get all payment method kinds that are enabled for the given authentication
        context. This endpoint is useful to check which payment method kinds a client
        is allowed to use.
      operationId: GetPaymentMethodKinds
      parameters:
      - explode: true
        in: query
        name: filter
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/GetPaymentMethodKindsQueryFilterDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentMethodKindsResponseDTO"
          description: Retrieved a list of payment method kinds successfully.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-method-kinds:read:all
      - oauth2:
        - payment:payment-method-kinds:read:authenticated
      summary: Get all payment method kinds.
      tags:
      - Payment Method Kinds
      x-beta: true
  "/2026-4/payment-methods":
    get:
      description: Get the payment methods for a specific user or onboarding.
      operationId: GetPaymentMethods
      parameters:
      - explode: true
        in: query
        name: filter
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentMethodsResponseDTO"
          description: The payment methods were successfully retrieved.
        '400':
          description: The request was malformed or missing required parameters.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The onboarding to be filtered by does not exist.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-methods:read:all
      - oauth2:
        - payment:payment-methods:read:authenticated
      summary: Get the payment methods.
      tags:
      - Payment Methods
      x-beta: true
  "/2026-4/payment-methods/{paymentMethodId}":
    delete:
      description: Delete a specific payment method. This will remove the payment
        method from the system making it unavailable for further transactions.
      operationId: DeletePaymentMethod
      parameters:
      - description: The unique identifier of the payment method to delete.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: e7b23b4b-3957-499f-98e9-7205b581d8ac
          format: uuid
          type: string
      responses:
        '204':
          description: The payment method was successfully deleted.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-methods:delete:one
      - oauth2:
        - payment:payment-methods:delete:authenticated
      summary: Delete a payment method.
      tags:
      - Payment Methods
      x-beta: true
    get:
      description: Get a specific payment method by ID.
      operationId: GetPaymentMethod
      parameters:
      - description: The unique identifier of the payment method to retrieve.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: e7b23b4b-3957-499f-98e9-7205b581d8ac
          format: uuid
          type: string
      - description: The unique identifier of the user to retrieve the payment method
          for.
        in: query
        name: userId
        required: false
        schema:
          example: c2d6741a-0301-4f7a-9156-a83b739ae880
          format: uuid
          nullable: false
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentMethodResponseDTO"
          description: The payment method was successfully retrieved.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment method was not found.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-methods:read:one
      - oauth2:
        - payment:payment-methods:read:authenticated
      summary: Get a payment method.
      tags:
      - Payment Methods
      x-beta: true
  "/2026-4/payment-methods/{paymentMethodId}/shares":
    delete:
      description: Deletes payment method shares for the given payment method. If
        a body with shareIds is provided, only those shares are revoked (1–100 IDs).
        If the body is omitted or shareIds is empty, all shares for this payment method
        are revoked.
      operationId: DeletePaymentMethodShares
      parameters:
      - description: The ID of the payment method to revoke shares for.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: ca1367ed-7e4f-4b1a-9c51-eb2cd14f577c
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/DeletePaymentMethodSharesBodyDTO"
        required: false
      responses:
        '204':
          description: The specified payment method shares were deleted.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-method-shares:delete:one
      - oauth2:
        - payment:payment-method-shares:delete:authenticated
      summary: Revokes payment method shares (bulk or all).
      tags:
      - Payment Method Shares
      x-beta: true
    get:
      description: Retrieves all payment method shares for the given payment method
        that the authenticated user has created.
      operationId: GetPaymentMethodShares
      parameters:
      - description: The ID of the payment method to list shares for.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: ca1367ed-7e4f-4b1a-9c51-eb2cd14f577c
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentMethodSharesResponseDTO"
          description: The list of payment method shares for this payment method.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment method was not found.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-method-shares:read:all
      - oauth2:
        - payment:payment-method-shares:read:authenticated
      summary: Lists payment method shares for a payment method.
      tags:
      - Payment Method Shares
      x-beta: true
    post:
      description: Creates one share per user in the request. Maximum 50 users per
        request. Can be called multiple times to add more users; existing shares for
        the same user are updated.
      operationId: CreatePaymentMethodShares
      parameters:
      - description: The ID of the payment method to share.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: 9ff485e6-b028-420e-91cb-4438e335d964
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/SharePaymentMethodBodyDTO"
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentMethodSharesResponseDTO"
          description: The created payment method shares.
        '400':
          description: The request body is invalid, the clientId is missing, or the
            payment method would be shared with its owner.
        '401':
          description: Client authentication failed.
        '403':
          description: |-
            The payment method may not be shared by the requesting user, or on behalf of another client.

            Missing one or more required scopes.
        '404':
          description: The payment method was not found.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-method-shares:create:one
      - oauth2:
        - payment:payment-method-shares:create:authenticated
      summary: Creates payment method shares (bulk).
      tags:
      - Payment Method Shares
      x-beta: true
  "/2026-4/payment-methods/{paymentMethodId}/shares/{shareId}":
    delete:
      description: Deletes a single payment method share by its ID. The share must
        belong to the given payment method.
      operationId: DeletePaymentMethodShare
      parameters:
      - description: The ID of the payment method the share belongs to.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: ca1367ed-7e4f-4b1a-9c51-eb2cd14f577c
          format: uuid
          type: string
      - description: The ID of the payment method share to revoke.
        in: path
        name: shareId
        required: true
        schema:
          example: 92e5ec38-2a2c-4040-8158-f053b1f45054
          format: uuid
          type: string
      responses:
        '204':
          description: The payment method share was deleted.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment method or share was not found.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-method-shares:delete:one
      - oauth2:
        - payment:payment-method-shares:delete:authenticated
      summary: Revokes one payment method share.
      tags:
      - Payment Method Shares
      x-beta: true
  "/2026-4/payment-methods/{paymentMethodId}/verify":
    post:
      description: Verify a specific payment method to ensure that it can be used
        for payments.
      operationId: VerifyPaymentMethod
      parameters:
      - description: The unique identifier of the payment method to verify.
        in: path
        name: paymentMethodId
        required: true
        schema:
          example: 95215313-0dde-4d1e-84a0-6c73072acd08
          format: uuid
          type: string
      responses:
        '204':
          description: The payment method was verified successfully.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-methods:verify:one
      - oauth2:
        - payment:payment-methods:verify:authenticated
      summary: Verify a payment method.
      tags:
      - Payment Methods
      x-beta: true
  "/2026-4/payment-transaction-imports":
    get:
      description: Paginate through the imports, newest first. Each entry carries
        the header and counts; request `include=items` for the per-record results
        of every import on the page. With the :authenticated scope the result is restricted
        to the imports of the authenticated user.
      operationId: PaginatePaymentTransactionImports
      parameters:
      - description: The filter(s) to apply to the imports.
        explode: true
        in: query
        name: filter
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionImportsQueryFilterDTO"
          - type: string
      - description: The pagination information for the request.
        explode: true
        in: query
        name: page
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionImportsQueryPageDTO"
          - type: string
      - description: Related resources to include in the response.
        in: query
        name: include
        required: false
        schema:
          example:
          - items
          items:
            enum:
            - items
            type: string
          nullable: false
          type: array
          uniqueItems: true
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PaginatePaymentTransactionImportsResponseDTO"
          description: Retrieved a page of imports successfully.
        '401':
          description: Client authentication failed.
        '403':
          description: |-
            The caller may only read its own imports and filtered for another user.

            Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transaction-imports:read:all
      - oauth2:
        - payment:payment-transaction-imports:read:authenticated
      summary: Paginate through all payment transaction imports
      tags:
      - Payment Transaction Imports
      x-beta: true
    post:
      description: 'Imports payment transactions that were settled outside the platform,
        so they appear in the transaction history next to platform transactions. The
        import never moves money: the records are stored as they are, as IMPORTED
        transactions that can neither be captured, cancelled nor documented. Every
        record is decided individually - imported, skipped because its external id
        was imported before, or failed with a reason - and `include=items` reports
        each result, so a partially failed batch is retried with the failed records
        only. A malformed record rejects the whole request instead.'
      operationId: CreatePaymentTransactionImport
      parameters:
      - description: Related resources to include in the response.
        in: query
        name: include
        required: false
        schema:
          example:
          - items
          items:
            enum:
            - items
            type: string
          nullable: false
          type: array
          uniqueItems: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CreatePaymentTransactionImportBodyDTO"
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CreatePaymentTransactionImportResponseDTO"
          description: The import was processed. Request `include=items` for the result
            of every record.
        '400':
          description: 'The request body is invalid: a missing client or user, a malformed
            record, a duplicate external id, an empty or too large batch, an authorization
            after its capture, a timestamp in the future, invalid product configurations,
            or totals that do not match the products. Nothing was imported.'
        '401':
          description: Client authentication failed.
        '403':
          description: |-
            The caller may only import its own transactions and named another client or another user.

            Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transaction-imports:create:one
      - oauth2:
        - payment:payment-transaction-imports:create:authenticated
      summary: Import a batch of payment transactions settled outside the platform
      tags:
      - Payment Transaction Imports
      x-beta: true
  "/2026-4/payment-transaction-imports/{paymentTransactionImportId}":
    delete:
      description: 'Deletes an import as a unit: the import itself, the result of
        every submitted record, and every payment transaction the import created,
        which disappear from the transaction history. A record that was skipped is
        not rolled back - its transaction was created by an earlier import and belongs
        to it. For a trusted caller deleting is idempotent, so an import that is already
        gone reports success rather than an error. The :authenticated scope may only
        roll back the imports of the authenticated user and is refused otherwise,
        which covers an import of another user and one that does not exist alike.'
      operationId: DeletePaymentTransactionImport
      parameters:
      - description: The unique identifier of the import to roll back.
        in: path
        name: paymentTransactionImportId
        required: true
        schema:
          example: 9b1c0f4e-2f3a-4c5d-8e6f-7a8b9c0d1e2f
          format: uuid
          type: string
      responses:
        '204':
          description: The import was rolled back, or did not exist.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: |-
            The caller may only roll back its own imports and named an import of another user, or one that does not exist.

            Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transaction-imports:delete:one
      - oauth2:
        - payment:payment-transaction-imports:delete:authenticated
      summary: Roll a payment transaction import back
      tags:
      - Payment Transaction Imports
      x-beta: true
    get:
      description: Retrieve a single import by its identifier. Request `include=items`
        for the result of every submitted record, ordered by position. With the :authenticated
        scope an import of another user is reported as not found rather than forbidden,
        so it does not reveal that it exists.
      operationId: GetPaymentTransactionImport
      parameters:
      - description: The unique identifier of the import to retrieve.
        in: path
        name: paymentTransactionImportId
        required: true
        schema:
          example: 9b1c0f4e-2f3a-4c5d-8e6f-7a8b9c0d1e2f
          format: uuid
          type: string
      - description: Related resources to include in the response.
        in: query
        name: include
        required: false
        schema:
          example:
          - items
          items:
            enum:
            - items
            type: string
          nullable: false
          type: array
          uniqueItems: true
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentTransactionImportResponseDTO"
          description: The import was retrieved successfully.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The import was not found.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transaction-imports:read:all
      - oauth2:
        - payment:payment-transaction-imports:read:one
      - oauth2:
        - payment:payment-transaction-imports:read:authenticated
      summary: Get a single payment transaction import
      tags:
      - Payment Transaction Imports
      x-beta: true
  "/2026-4/payment-transactions":
    get:
      description: Paginate through all payment transactions that are available based
        in the current authentication context. Transactions of every origin are returned
        unless filtered; each entry is either a platform or an imported transaction,
        discriminated by `origin`.
      operationId: PaginatePaymentTransactions
      parameters:
      - description: The filter(s) to apply to the payment transactions.
        explode: true
        in: query
        name: filter
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterDTO"
          - type: string
      - description: The pagination information for the request.
        explode: true
        in: query
        name: page
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryPageDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PaginatePaymentTransactionsResponseDTO"
          description: Retrieved a page of payment transactions successfully.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transactions:read:all
      - oauth2:
        - payment:payment-transactions:read:authenticated
      summary: Paginate through all payment transactions
      tags:
      - Payment Transactions
      x-beta: true
  "/2026-4/payment-transactions/{paymentTransactionId}":
    get:
      description: Retrieve a single payment transaction by its identifier.
      operationId: GetPaymentTransaction
      parameters:
      - description: The unique identifier of the payment transaction to retrieve.
        in: path
        name: paymentTransactionId
        required: true
        schema:
          example: 6fc2acbd-3afd-4df3-9967-836a7929b13f
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetPaymentTransactionResponseDTO"
          description: The payment transaction was retrieved successfully.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment transaction was not found.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transactions:read:all
      - oauth2:
        - payment:payment-transactions:read:one
      - oauth2:
        - payment:payment-transactions:read:authenticated
      summary: Get a single payment transaction
      tags:
      - Payment Transactions
      x-beta: true
  "/2026-4/payment-transactions/{paymentTransactionId}/downloads/delivery-note":
    get:
      description: Redirects to a temporary download URL for the delivery note of
        the given payment transaction.
      operationId: DownloadPaymentTransactionDeliveryNote
      parameters:
      - description: The unique identifier of the payment transaction to download
          the delivery note for.
        in: path
        name: paymentTransactionId
        required: true
        schema:
          example: 6e40be56-ef5f-4a86-a666-aa7a89f39e26
          format: uuid
          type: string
      - description: Determines the file type of the download. If the requested media
          type is not supported, a 406 Not Acceptable response is returned.
        in: header
        name: Accept
        schema:
          example: image/png, image/*;q=0.9
          type: string
      responses:
        '302':
          description: Redirects to the delivery note download URL.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment transaction or delivery note was not found.
        '406':
          description: The requested media type is not supported.
        '409':
          description: The payment transaction was not processed by a provider (e.g.
            an imported transaction) and has no documents.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transactions:read:all
      - oauth2:
        - payment:payment-transactions:read:one
      - oauth2:
        - payment:payment-transactions:read:authenticated
      summary: Download a delivery note for a payment transaction
      tags:
      - Payment Transactions
      x-beta: true
    post:
      description: Creates a temporary download URL for the delivery note of the given
        payment transaction.
      operationId: CreatePaymentTransactionDeliveryNoteDownload
      parameters:
      - description: The unique identifier of the payment transaction to download
          the delivery note for.
        in: path
        name: paymentTransactionId
        required: true
        schema:
          example: 6e40be56-ef5f-4a86-a666-aa7a89f39e26
          format: uuid
          type: string
      - description: Determines the file type of the download. If the requested media
          type is not supported, a 406 Not Acceptable response is returned.
        in: header
        name: Accept
        schema:
          example: image/png, image/*;q=0.9
          type: string
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CreateDeliveryNoteDownloadResponseDTO"
          description: The delivery note download has been created successfully.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment transaction or delivery note was not found.
        '406':
          description: The requested media type is not supported.
        '409':
          description: The payment transaction was not processed by a provider (e.g.
            an imported transaction) and has no documents.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transactions:read:all
      - oauth2:
        - payment:payment-transactions:read:one
      - oauth2:
        - payment:payment-transactions:read:authenticated
      summary: Create a delivery note download for a payment transaction
      tags:
      - Payment Transactions
      x-beta: true
  "/2026-4/payment-transactions/{paymentTransactionId}/downloads/receipt":
    get:
      description: Redirects to a temporary download URL for the receipt of the given
        payment transaction.
      operationId: DownloadPaymentTransactionReceipt
      parameters:
      - description: The unique identifier of the payment transaction to download
          the receipt for.
        in: path
        name: paymentTransactionId
        required: true
        schema:
          example: 6e40be56-ef5f-4a86-a666-aa7a89f39e26
          format: uuid
          type: string
      - description: Determines the file type of the download. If the requested media
          type is not supported, a 406 Not Acceptable response is returned.
        in: header
        name: Accept
        schema:
          example: image/png, image/*;q=0.9
          type: string
      responses:
        '302':
          description: Redirects to the receipt download URL.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment transaction or receipt was not found.
        '406':
          description: The requested media type is not supported.
        '409':
          description: The payment transaction was not processed by a provider (e.g.
            an imported transaction) and has no documents.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transactions:read:all
      - oauth2:
        - payment:payment-transactions:read:one
      - oauth2:
        - payment:payment-transactions:read:authenticated
      summary: Download a receipt for a payment transaction
      tags:
      - Payment Transactions
      x-beta: true
    post:
      description: Creates a temporary download URL for the receipt of the given payment
        transaction.
      operationId: CreatePaymentTransactionReceiptDownload
      parameters:
      - description: The unique identifier of the payment transaction to download
          the receipt for.
        in: path
        name: paymentTransactionId
        required: true
        schema:
          example: 6e40be56-ef5f-4a86-a666-aa7a89f39e26
          format: uuid
          type: string
      - description: Determines the file type of the download. If the requested media
          type is not supported, a 406 Not Acceptable response is returned.
        in: header
        name: Accept
        schema:
          example: image/png, image/*;q=0.9
          type: string
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CreateReceiptDownloadResponseDTO"
          description: The receipt download has been created successfully.
        '400':
          description: The request parameters are invalid or missing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The payment transaction or receipt was not found.
        '406':
          description: The requested media type is not supported.
        '409':
          description: The payment transaction was not processed by a provider (e.g.
            an imported transaction) and has no documents.
        '500':
          description: An internal server error occurred.
      security:
      - oauth2:
        - payment:payment-transactions:read:all
      - oauth2:
        - payment:payment-transactions:read:one
      - oauth2:
        - payment:payment-transactions:read:authenticated
      summary: Create a receipt download for a payment transaction
      tags:
      - Payment Transactions
      x-beta: true
components:
  schemas:
    AuthorizationType:
      description: The authorization type for the transaction. Either PARTIAL if the
        authorized amount is a temporary hold on the user's funds, or FINAL if the
        authorized amount is the final amount that will be charged to the user.
      enum:
      - PARTIAL
      - FINAL
      type: string
    CreateDeliveryNoteDownloadResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/DeliveryNoteDownloadDTO"
          description: The download details for the delivery note.
          nullable: false
          type: object
      required:
      - data
      type: object
    CreateOnboardingBodyDTO:
      properties:
        cancelRedirectUrl:
          description: The URL to which the user will be redirected after a cancelled
            onboarding.
          example: https://example.com/cancel
          format: uri
          nullable: false
          type: string
        clientId:
          description: The identifier of the client the onboarding belongs to. Required
            if not requesting with the :authenticated scope.
          example: pace-drive-app
          nullable: false
          type: string
        failureRedirectUrl:
          description: The URL to which the user will be redirected after a failed
            onboarding.
          example: https://example.com/failure
          format: uri
          nullable: false
          type: string
        kind:
          description: The kind of the payment method to be created.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        metadata:
          additionalProperties: true
          description: An optional metadata object that is passed to the underlying
            payment integration. The requirements may vary for each provider.
          nullable: false
          type: object
        proxy:
          default: false
          description: Determines if the payment method will be created as proxy payment
            method.
          example: true
          nullable: false
          type: boolean
        successRedirectUrl:
          description: The URL to which the user will be redirected after a successful
            onboarding.
          example: https://example.com/success
          format: uri
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user associated with the onboarding.
            Required if not requesting with the :authenticated scope.
          example: c7bf1e9e-6ea0-445c-b3ae-e814a109416b
          format: uuid
          nullable: false
          type: string
      required:
      - kind
      - successRedirectUrl
      - cancelRedirectUrl
      - failureRedirectUrl
      type: object
    CreateOnboardingResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/OnboardingDTO"
          description: The onboarding that was created.
          nullable: false
          type: object
      required:
      - data
      type: object
    CreatePaymentTransactionImportBodyDTO:
      properties:
        clientId:
          description: The identifier of the client the imported transactions belong
            to. Required if not requesting with the :authenticated scope, which defaults
            it to the requesting client and allows no other.
          example: pace-drive-app
          nullable: false
          type: string
        transactions:
          description: The transactions to import, at most 100 per request. Each `externalId`
            must be unique within the request. A single malformed entry rejects the
            whole request; larger backfills page through multiple requests.
          items:
            "$ref": "#/components/schemas/CreatePaymentTransactionImportItemDTO"
          maxItems: 100
          minItems: 1
          nullable: false
          type: array
          uniqueItems: true
        userId:
          description: The unique identifier of the user the imported transactions
            belong to. Required if not requesting with the :authenticated scope, which
            defaults it to the authenticated user and allows no other.
          example: a1c782d9-7a6c-4e5a-b05b-1d11b93c510a
          format: uuid
          nullable: false
          type: string
      required:
      - transactions
      type: object
    CreatePaymentTransactionImportItemDTO:
      properties:
        additionalData:
          additionalProperties: true
          description: Free-form JSON object of integration-specific fields, e.g.
            a card scheme reference or an odometer reading. Stored and returned exactly
            as received, not interpreted, and visible to everyone who may read the
            transaction.
          example:
            cardSchemeReference: MCC-5541
            legacyInvoiceNo: R-2024-88213
            odometerKm: 143902
          nullable: false
          type: object
        authorizedAmount:
          description: The amount that was originally authorized, e.g. a pre-authorization
            at the pump. May differ from the captured amount; repeat the captured
            amount if the origin system does not report it separately.
          example: '80.00'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        authorizedAt:
          description: When the authorization happened. Must be in the past and not
            after `capturedAt`; repeat `capturedAt` if the origin system does not
            report it separately.
          example: '2024-03-11T09:38:12.000Z'
          format: date-time
          nullable: false
          type: string
        capturedAmount:
          description: The amount that was captured, which is what the user was charged.
          example: '46.87'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        capturedAt:
          description: When the payment settled outside the platform. Must be in the
            past. An imported transaction is always CAPTURED.
          example: '2024-03-11T09:42:00.000Z'
          format: date-time
          nullable: false
          type: string
        currency:
          description: The currency of the transaction.
          example: EUR
          nullable: false
          type: string
        externalId:
          description: 'The identifier the importing system assigns to the transaction.
            Unique per importing client across its imports and users: re-sending an
            id is a no-op that reports the record as SKIPPED. Another client may use
            the same id without interfering.'
          example: dkv:TXN-2024-0009182
          maxLength: 255
          minLength: 1
          nullable: false
          type: string
        language:
          allOf:
          - "$ref": "#/components/schemas/PaymentTokenLanguage"
          description: The language the transaction's labels (products, configurations)
            are in.
          example: DE
          nullable: false
          type: string
        paymentMethodId:
          description: The unique identifier of the payment method the transaction
            was paid with. Must exist and belong to the user; the transaction's kind
            is derived from it.
          example: b4fd81c9-8969-4323-98b7-855a7d7f0d60
          format: uuid
          nullable: false
          type: string
        poi:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CreatePaymentTransactionImportPoiDTO"
          description: The point of interaction (POI) where the transaction took place.
            Omit if the origin system does not know it; its identifier alone may be
            omitted when the site cannot be resolved to one.
          nullable: false
          type: object
        products:
          description: The products of the transaction, at least one.
          items:
            "$ref": "#/components/schemas/CreatePaymentTransactionImportProductDTO"
          minItems: 1
          nullable: false
          type: array
          uniqueItems: false
        summary:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionSummaryDTO"
          description: 'The totals of the transaction, in the transaction''s currency.
            Each total must equal the sum of the corresponding field across the products:
            `totalAmountExcludingVAT` the sum of their `priceExcludingVAT`, `totalAmountIncludingVAT`
            the sum of their `priceIncludingVAT`, and `vatAmount` the sum of their
            `vatAmount`.'
          nullable: false
          type: object
      required:
      - externalId
      - paymentMethodId
      - currency
      - language
      - authorizedAmount
      - authorizedAt
      - capturedAmount
      - capturedAt
      - products
      - summary
      type: object
    CreatePaymentTransactionImportPoiDTO:
      properties:
        address:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionPoiAddressDTO"
          description: The address of the point of interest (POI).
          nullable: false
          type: object
        id:
          description: The unique identifier of the point of interest (POI) the transaction
            took place at. Omit if the importing system cannot resolve the site to
            one.
          example: 154e01ae-557a-48b3-a68a-609f1507db1d
          format: uuid
          nullable: false
          type: string
        name:
          description: The name of the point of interest (POI).
          example: PACE Fuel Station
          nullable: false
          type: string
      required:
      - name
      - address
      type: object
    CreatePaymentTransactionImportProductDTO:
      properties:
        configurations:
          description: The configurations of the product, each named once, as its
            type requires them. A configuration's `value` is the platform-defined
            identifier, independent of the transaction's language, while its `label`
            is the text shown to the user in that language.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/ProductConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/ProductConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/ProductConfigurationInputTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationLocationTypeDTO"
          nullable: false
          type: array
          uniqueItems: false
        label:
          description: The label of the product, in the transaction's language.
          example: Diesel
          nullable: false
          type: string
        priceExcludingVAT:
          description: The total price of this product excluding VAT.
          example: '39.39'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        priceIncludingVAT:
          description: The total price of this product including VAT.
          example: '46.87'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the product excluding VAT.
          example: '1.020'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the product including VAT.
          example: '1.214'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        quantity:
          description: The quantity of the product.
          example: '38.62'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: false
          type: string
        type:
          description: The type of the product.
          example: FUELING
          nullable: false
          type: string
        unit:
          description: The unit of the product.
          example: LITER
          nullable: false
          type: string
        vatAmount:
          description: The VAT amount of the product.
          example: '7.48'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatRate:
          description: The VAT rate of the product from 0 (0%) to 1 (100%).
          example: '0.19'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 1
          minimum: 0
          nullable: false
          type: string
      required:
      - type
      - label
      - configurations
      - unit
      - quantity
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      type: object
    CreatePaymentTransactionImportResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionImportDTO"
          description: The created import with the result of every submitted record.
          nullable: false
          type: object
      required:
      - data
      type: object
    CreateReceiptDownloadResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/ReceiptDownloadDTO"
          description: The download details for the receipt.
          nullable: false
          type: object
      required:
      - data
      type: object
    DeletePaymentMethodSharesBodyDTO:
      properties:
        shareIds:
          description: The IDs of the payment method shares to revoke. Maximum 50
            per request. Omit or pass an empty array to revoke all shares for the
            payment method.
          example:
          - cf315018-bba1-4d25-8417-9182c149b951
          - 6527a33c-c301-4f54-a838-bbfd4c1ec7e0
          items:
            format: uuid
            type: string
          maxItems: 50
          nullable: false
          type: array
          uniqueItems: true
      type: object
    DeliveryNoteDownloadDTO:
      properties:
        downloadURL:
          description: The download URL of the delivery note.
          example: https://example.com/delivery-note.pdf
          format: uri
          nullable: false
          type: string
        expiresAt:
          description: The date and time when the download URL expires.
          example: '2026-01-29T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
      required:
      - downloadURL
      - expiresAt
      type: object
    GetPaymentMethodKindsQueryFilterClientIdDTO:
      properties:
        eq:
          description: Filter payment method kinds by a specific client ID.
          example: drive-app-ios
          nullable: false
          type: string
      type: object
    GetPaymentMethodKindsQueryFilterDTO:
      properties:
        clientId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodKindsQueryFilterClientIdDTO"
          description: Filter payment method kinds by client ID.
          nullable: false
          type: object
      type: object
    GetPaymentMethodKindsResponseDTO:
      properties:
        data:
          description: The list of payment method kinds.
          items:
            "$ref": "#/components/schemas/PaymentMethodKindDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    GetPaymentMethodResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentMethodDTO"
          description: The user payment method that was retrieved.
          nullable: false
          type: object
      required:
      - data
      type: object
    GetPaymentMethodSharesResponseDTO:
      properties:
        data:
          description: A list of payment method shares.
          items:
            "$ref": "#/components/schemas/PaymentMethodShareDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    GetPaymentMethodsQueryFilterClientIdDTO:
      properties:
        eq:
          description: Filter payment methods by a specific client ID.
          example: drive-app-ios
          nullable: false
          type: string
      type: object
    GetPaymentMethodsQueryFilterDTO:
      properties:
        clientId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterClientIdDTO"
          description: Filter payment methods by client ID.
          nullable: false
          type: object
        implicit:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterImplicitDTO"
          nullable: false
          type: object
        onboardingId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterOnboardingIdDTO"
          nullable: false
          type: object
        proxy:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterProxyDTO"
          nullable: false
          type: object
        userId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterUserIdDTO"
          nullable: false
          type: object
      type: object
    GetPaymentMethodsQueryFilterImplicitDTO:
      properties:
        eq:
          example: false
          nullable: false
          type: boolean
      type: object
    GetPaymentMethodsQueryFilterOnboardingIdDTO:
      properties:
        eq:
          example: 953b0cfa-e66c-4f25-b6cd-dc4d178e6852
          format: uuid
          nullable: true
          type: string
      type: object
    GetPaymentMethodsQueryFilterProxyDTO:
      properties:
        eq:
          example: false
          nullable: false
          type: boolean
      type: object
    GetPaymentMethodsQueryFilterUserIdDTO:
      properties:
        eq:
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          nullable: false
          type: string
      type: object
    GetPaymentMethodsResponseDTO:
      properties:
        data:
          description: A list of payment methods for a specific user.
          items:
            "$ref": "#/components/schemas/PaymentMethodDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    GetPaymentTransactionImportResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionImportDTO"
          description: The import for the given import ID, with the result of every
            submitted record.
          nullable: false
          type: object
      required:
      - data
      type: object
    GetPaymentTransactionResponseDTO:
      properties:
        data:
          description: The payment transaction for the given payment transaction ID.
            Its shape depends on `origin`.
          discriminator:
            mapping:
              IMPORTED: "#/components/schemas/ImportedPaymentTransactionDTO"
              PLATFORM: "#/components/schemas/PlatformPaymentTransactionDTO"
            propertyName: origin
          nullable: false
          oneOf:
          - "$ref": "#/components/schemas/PlatformPaymentTransactionDTO"
          - "$ref": "#/components/schemas/ImportedPaymentTransactionDTO"
          type: object
      required:
      - data
      type: object
    ImportedPaymentTransactionDTO:
      properties:
        additionalData:
          additionalProperties: true
          description: Free-form additional data supplied by the importing system,
            returned exactly as imported. Not interpreted by this service.
          example:
            cardSchemeReference: MCC-5541
            legacyInvoiceNo: R-2024-88213
            odometerKm: 143902
          nullable: true
          type: object
        authorizedAmount:
          description: The amount that was authorized from the payment transaction.
            This is the amount that was requested to be charged to the user.
          example: '120.00'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        authorizedAt:
          description: The date and time when the payment transaction was authorized
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        capturedAmount:
          description: The amount that was captured from the payment transaction.
            This is the amount that was actually charged to the user.
          example: '46.87'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        capturedAt:
          description: The date and time when the payment transaction was captured
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        clientId:
          description: 'The identifier of the client that created the payment transaction:
            the one that authorized it for a platform transaction, the one that imported
            it for an imported one.'
          example: pace-drive-app
          nullable: false
          type: string
        createdAt:
          description: The date and time when the payment transaction was created
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        currency:
          description: The currency of the transaction.
          example: EUR
          nullable: false
          type: string
        externalId:
          description: The identifier the importing system assigned to the transaction,
            as submitted to the import. Unique per importing client.
          example: dkv:TXN-2024-0009182
          nullable: false
          type: string
        id:
          description: The unique identifier of the payment transaction
          example: 6fc2acbd-3afd-4df3-9967-836a7929b13f
          format: uuid
          nullable: false
          type: string
        importId:
          description: The unique identifier of the import that created the transaction.
          example: 9b1c0f4e-2f3a-4c5d-8e6f-7a8b9c0d1e2f
          format: uuid
          nullable: false
          type: string
        kind:
          description: The kind of the payment method used for this transaction.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        origin:
          description: 'The origin of the transaction. IMPORTED: settled outside the
            platform and imported; never authorized, captured, cancelled or documented
            by this service.'
          enum:
          - IMPORTED
          example: IMPORTED
          nullable: false
          type: string
        paymentMethodId:
          description: The unique identifier of the payment method used for the transaction
          example: b4fd81c9-8969-4323-98b7-855a7d7f0d60
          format: uuid
          nullable: false
          type: string
        poi:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/ImportedPaymentTransactionPoiDTO"
          description: The point of interaction (POI) where the transaction took place,
            or null if the importing system did not know it.
          nullable: true
          type: object
        products:
          description: The products that are part of the transaction. Empty if the
            importing system did not know them.
          items:
            "$ref": "#/components/schemas/ImportedPaymentTransactionProductDTO"
          nullable: false
          type: array
          uniqueItems: true
        status:
          description: 'The current status of the payment transaction. An imported
            transaction is always CAPTURED: it records money that already moved.'
          enum:
          - AUTHORIZING
          - AUTHORIZING_ACTIONS_REQUIRED
          - AUTHORIZING_FAILED
          - AUTHORIZING_CANCELLED
          - AUTHORIZED
          - AUTHORIZED_CANCELLING
          - AUTHORIZED_CANCELLING_FAILED
          - AUTHORIZED_CANCELLED
          - CAPTURING
          - CAPTURING_FAILED
          - CAPTURING_CANCELLED
          - CAPTURED
          example: CAPTURED
          nullable: false
          type: string
        summary:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionSummaryDTO"
          description: The summary of the transaction, including the total amounts
            from each product.
          nullable: true
          type: object
        updatedAt:
          description: The date and time when the payment transaction was last updated
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user associated with the payment
            transaction.
          example: a1c782d9-7a6c-4e5a-b05b-1d11b93c510a
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - clientId
      - paymentMethodId
      - userId
      - kind
      - status
      - currency
      - authorizedAmount
      - authorizedAt
      - capturedAmount
      - capturedAt
      - summary
      - createdAt
      - updatedAt
      - origin
      - importId
      - externalId
      - poi
      - products
      - additionalData
      type: object
    ImportedPaymentTransactionPoiDTO:
      properties:
        address:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionPoiAddressDTO"
          description: The address of the point of interest (POI).
          nullable: false
          type: object
        id:
          description: The unique identifier of the point of interest (POI), or null
            if the importing system could not resolve the site to one.
          example: 154e01ae-557a-48b3-a68a-609f1507db1d
          format: uuid
          nullable: true
          type: string
        name:
          description: The name of the point of interest (POI).
          example: PACE Fuel Station
          nullable: false
          type: string
      required:
      - id
      - name
      - address
      type: object
    ImportedPaymentTransactionProductDTO:
      properties:
        configurations:
          description: A list of product configurations.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/ProductConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/ProductConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/ProductConfigurationInputTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationLocationTypeDTO"
          nullable: false
          type: array
          uniqueItems: false
        currency:
          description: The currency of the product.
          example: EUR
          nullable: false
          type: string
        id:
          description: The unique identifier of the product.
          example: 8394e4df-95f6-4b9e-87da-4982c0aaec4b
          format: uuid
          nullable: false
          type: string
        label:
          description: The localized label of the product.
          example: Fueling
          nullable: false
          type: string
        priceExcludingVAT:
          description: The total price of this product excluding VAT.
          example: '61.34'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: false
          type: string
        priceIncludingVAT:
          description: The total price of this product including VAT.
          example: '72.99'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the product excluding VAT.
          example: '1.596'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the product including VAT.
          example: '1.899'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        quantity:
          description: The quantity of the product.
          example: '38.62'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: false
          type: string
        status:
          description: 'The status of the product. An imported product is always CONFIGURED:
            it is priced and final.'
          enum:
          - CONFIGURED
          example: CONFIGURED
          nullable: false
          type: string
        type:
          description: The type of the product.
          example: FUELING
          nullable: false
          type: string
        unit:
          description: The unit of the product.
          example: LITER
          nullable: false
          type: string
        vatAmount:
          description: The VAT amount of the product.
          example: '13.63'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatRate:
          description: The VAT rate of the product from 0 (0%) to 1 (100%).
          example: '0.19'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 1
          minimum: 0
          nullable: false
          type: string
      required:
      - id
      - label
      - type
      - configurations
      - status
      - unit
      - quantity
      - currency
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      type: object
    OnboardingDTO:
      properties:
        cancelRedirectUrl:
          description: The URL to which the user will be redirected after a cancelled
            onboarding.
          example: https://example.com/cancel
          format: uri
          nullable: false
          type: string
        cancelledAt:
          description: The date and time when the onboarding was cancelled.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        clientOnboardingUrl:
          description: The URL which the user will need to visit to complete the onboarding.
          example: https://example.com/onboarding
          format: uri
          nullable: false
          type: string
        completedAt:
          description: The date and time when the onboarding was completed.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        createdAt:
          description: The date and time when the onboarding was created.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        expiresAt:
          description: The date and time when the onboarding will expire.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        failedAt:
          description: The date and time when the onboarding has failed.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        failureRedirectUrl:
          description: The URL to which the user will be redirected after a failed
            onboarding.
          example: https://example.com/failure
          format: uri
          nullable: false
          type: string
        id:
          description: The unique identifier for the onboarding.
          example: 565aa839-876b-4f24-8de0-dd8df72eda17
          format: uuid
          nullable: false
          type: string
        kind:
          description: The kind of the payment method to be created.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        metadata:
          additionalProperties: true
          description: An optional metadata object that is passed to the underlying
            payment integration. The requirements may vary for each provider.
          nullable: true
          type: object
        proxy:
          description: Determines if the payment method will be created as proxy payment
            method.
          example: true
          nullable: false
          type: boolean
        status:
          allOf:
          - "$ref": "#/components/schemas/OnboardingStatus"
          description: The current status of the onboarding process.
          example: PENDING
          nullable: false
          type: string
        successRedirectUrl:
          description: The URL to which the user will be redirected after a successful
            onboarding.
          example: https://example.com/success
          format: uri
          nullable: false
          type: string
        updatedAt:
          description: The date and time when the onboarding was last updated.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user associated with the onboarding.
          example: c7bf1e9e-6ea0-445c-b3ae-e814a109416b
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - userId
      - kind
      - proxy
      - status
      - clientOnboardingUrl
      - successRedirectUrl
      - cancelRedirectUrl
      - failureRedirectUrl
      - metadata
      - completedAt
      - cancelledAt
      - failedAt
      - expiresAt
      - createdAt
      - updatedAt
      type: object
    OnboardingStatus:
      description: The current status of the onboarding process.
      enum:
      - PENDING
      - COMPLETED
      - FAILED
      - CANCELLED
      type: string
    PaginatePaymentTransactionImportsQueryFilterClientIdDTO:
      properties:
        eq:
          example: backoffice-importer
          nullable: false
          type: string
        in:
          example:
          - backoffice-importer
          - dkv-settlement-importer
          items:
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionImportsQueryFilterCreatedAtDTO:
      properties:
        gte:
          description: Only imports created at or after this point in time.
          example: '2026-07-01T00:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        lte:
          description: Only imports created at or before this point in time.
          example: '2026-07-31T23:59:59.999Z'
          format: date-time
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionImportsQueryFilterDTO:
      properties:
        clientId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionImportsQueryFilterClientIdDTO"
          description: Filter imports by the client that submitted them.
          nullable: false
          type: object
        createdAt:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionImportsQueryFilterCreatedAtDTO"
          description: Filter imports by when they were created.
          nullable: false
          type: object
        status:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionImportsQueryFilterStatusDTO"
          description: Filter imports by status.
          nullable: false
          type: object
        userId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionImportsQueryFilterUserIdDTO"
          description: Filter imports by the user the imported transactions belong
            to.
          nullable: false
          type: object
      type: object
    PaginatePaymentTransactionImportsQueryFilterStatusDTO:
      properties:
        eq:
          enum:
          - COMPLETED
          - PARTIAL
          - FAILED
          example: PARTIAL
          nullable: false
          type: string
        in:
          example:
          - PARTIAL
          - FAILED
          items:
            enum:
            - COMPLETED
            - PARTIAL
            - FAILED
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionImportsQueryFilterUserIdDTO:
      properties:
        eq:
          description: The unique identifier of the user the imported transactions
            belong to.
          example: a1c782d9-7a6c-4e5a-b05b-1d11b93c510a
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionImportsQueryPageDTO:
      properties:
        number:
          default: 0
          description: The page number to return.
          example: 0
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        size:
          default: 10
          description: The number of imports to return per page.
          example: 10
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 50
          minimum: 1
          nullable: false
          type: integer
      required:
      - number
      - size
      type: object
    PaginatePaymentTransactionImportsResponseDTO:
      properties:
        data:
          description: The page of imports.
          items:
            "$ref": "#/components/schemas/PaymentTransactionImportDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    PaginatePaymentTransactionsQueryCartIdFilterDTO:
      properties:
        eq:
          example: 1b73357c-fede-4e5f-9a0e-1999b31d5022
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterAuthorizationTypeDTO:
      properties:
        eq:
          enum:
          - PARTIAL
          - FINAL
          example: PARTIAL
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterClientIdDTO:
      properties:
        eq:
          example: drive-app-ios
          nullable: false
          type: string
        in:
          example:
          - drive-app-ios
          - drive-app-android
          items:
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionsQueryFilterDTO:
      properties:
        authorizationType:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterAuthorizationTypeDTO"
          description: Filter payment transactions by authorization type.
          nullable: false
          type: object
        cartId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryCartIdFilterDTO"
          description: Filter payment transactions by cart ID.
          nullable: false
          type: object
        clientId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterClientIdDTO"
          description: Filter payment transactions by the ID of the client that authorized
            them.
          nullable: false
          type: object
        id:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterIdDTO"
          description: Filter payment transactions by ID.
          nullable: false
          type: object
        importId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterImportIdDTO"
          description: Filter payment transactions by the import that created them.
            Only imported transactions have one.
          nullable: false
          type: object
        kind:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterKindDTO"
          description: Filter payment transactions by the kind of the payment method
            they were paid with.
          nullable: false
          type: object
        origin:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterOriginDTO"
          description: Filter payment transactions by origin. Without it, transactions
            of every origin are returned.
          nullable: false
          type: object
        paymentMethodId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterPaymentMethodIdDTO"
          description: Filter payment transactions by payment method ID.
          nullable: false
          type: object
        poiId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterPoiIdDTO"
          description: Filter payment transactions by the ID of the point of interaction
            they took place at.
          nullable: false
          type: object
        products:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsDTO"
          description: Filter payment transactions by products.
          nullable: false
          type: object
        proxy:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProxyDTO"
          description: Filter payment transactions by proxy flag.
          nullable: false
          type: object
        status:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterStatusDTO"
          description: Filter payment transactions by status.
          nullable: false
          type: object
        userId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterUserIdDTO"
          description: Filter payment transactions by the ID of the user who paid
            for them.
          nullable: false
          type: object
      type: object
    PaginatePaymentTransactionsQueryFilterIdDTO:
      properties:
        eq:
          example: 2bddafa9-f68e-49d9-81b6-6779548be8f6
          format: uuid
          nullable: false
          type: string
        in:
          example:
          - dfe18fab-67ae-4218-954a-b3fdc79d59af
          - 99b8d67c-7443-45b7-8865-79706837cdfe
          items:
            format: uuid
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionsQueryFilterImportIdDTO:
      properties:
        eq:
          example: 9b1c0f4e-2f3a-4c5d-8e6f-7a8b9c0d1e2f
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterKindDTO:
      properties:
        eq:
          example: DKV
          nullable: false
          type: string
        in:
          example:
          - DKV
          - HOYER
          items:
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionsQueryFilterOriginDTO:
      properties:
        eq:
          enum:
          - PLATFORM
          - IMPORTED
          example: IMPORTED
          nullable: false
          type: string
        in:
          example:
          - PLATFORM
          - IMPORTED
          items:
            enum:
            - PLATFORM
            - IMPORTED
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionsQueryFilterPaymentMethodIdDTO:
      properties:
        eq:
          example: 39b6ca0f-c2d3-49ac-ad08-df97c06b452e
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterPoiIdDTO:
      properties:
        eq:
          example: 154e01ae-557a-48b3-a68a-609f1507db1d
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterProductsDTO:
      properties:
        every:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterDTO"
          nullable: false
          type: object
        none:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterDTO"
          nullable: false
          type: object
        some:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterDTO"
          nullable: false
          type: object
      type: object
    PaginatePaymentTransactionsQueryFilterProductsFilterBuyerIdDTO:
      properties:
        eq:
          example: e60605ae-5164-4a5f-8452-4cf95a568817
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterProductsFilterContractIdDTO:
      properties:
        eq:
          example: a7d657e3-563a-47f2-a864-decbe96cc1ae
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterProductsFilterDTO:
      properties:
        buyerId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterBuyerIdDTO"
          nullable: false
          type: object
        contractId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterContractIdDTO"
          nullable: false
          type: object
        supplierId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterSupplierIdDTO"
          nullable: false
          type: object
        type:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterTypeDTO"
          nullable: false
          type: object
      type: object
    PaginatePaymentTransactionsQueryFilterProductsFilterSupplierIdDTO:
      properties:
        eq:
          example: bf3df0d7-f880-4508-8c3c-d5071949b5cf
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterProductsFilterTypeDTO:
      properties:
        eq:
          example: FUELING
          nullable: false
          type: string
        in:
          example:
          - FUELING
          - WASHING
          items:
            type: string
          nullable: false
          type: array
          uniqueItems: true
        not:
          example: FUELING
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterProxyDTO:
      properties:
        eq:
          example: true
          nullable: false
          type: boolean
      type: object
    PaginatePaymentTransactionsQueryFilterStatusDTO:
      properties:
        eq:
          enum:
          - AUTHORIZING
          - AUTHORIZING_ACTIONS_REQUIRED
          - AUTHORIZING_FAILED
          - AUTHORIZING_CANCELLED
          - AUTHORIZED
          - AUTHORIZED_CANCELLING
          - AUTHORIZED_CANCELLING_FAILED
          - AUTHORIZED_CANCELLED
          - CAPTURING
          - CAPTURING_FAILED
          - CAPTURING_CANCELLED
          - CAPTURED
          example: AUTHORIZED
          nullable: false
          type: string
        in:
          example:
          - AUTHORIZING_FAILED
          - CAPTURING_FAILED
          - AUTHORIZED_CANCELLING_FAILED
          items:
            enum:
            - AUTHORIZING
            - AUTHORIZING_ACTIONS_REQUIRED
            - AUTHORIZING_FAILED
            - AUTHORIZING_CANCELLED
            - AUTHORIZED
            - AUTHORIZED_CANCELLING
            - AUTHORIZED_CANCELLING_FAILED
            - AUTHORIZED_CANCELLED
            - CAPTURING
            - CAPTURING_FAILED
            - CAPTURING_CANCELLED
            - CAPTURED
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginatePaymentTransactionsQueryFilterUserIdDTO:
      properties:
        eq:
          example: cb760b7d-6bcb-4a3c-9d2a-b4cf3594194c
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryPageDTO:
      properties:
        number:
          default: 0
          description: The page number to return.
          example: 10
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        size:
          default: 10
          description: The number of items to return per page.
          example: 10
          exclusiveMaximum: false
          exclusiveMinimum: false
          maximum: 50
          minimum: 1
          nullable: false
          type: integer
      required:
      - number
      - size
      type: object
    PaginatePaymentTransactionsResponseDTO:
      properties:
        data:
          description: The page of payment transactions. The shape of each entry depends
            on its `origin`.
          discriminator:
            mapping:
              IMPORTED: "#/components/schemas/ImportedPaymentTransactionDTO"
              PLATFORM: "#/components/schemas/PlatformPaymentTransactionDTO"
            propertyName: origin
          items:
            oneOf:
            - "$ref": "#/components/schemas/PlatformPaymentTransactionDTO"
            - "$ref": "#/components/schemas/ImportedPaymentTransactionDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    PaymentMethodDTO:
      properties:
        createdAt:
          description: The date and time when the payment method was created.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        expiresAt:
          description: The date and time when the payment method will expire.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        icons:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentMethodIconsDTO"
          description: The icons to use for this payment method.
          nullable: false
          type: object
        id:
          description: The unique identifier for the payment method.
          example: 40d8d9b4-ed3a-4a21-9745-5d86279a1dcd
          format: uuid
          nullable: false
          type: string
        implicit:
          description: A boolean indicating whether the payment method is implicit.
            Implicit payment methods are not onboarded by the user but rather the
            system during authorization.
          example: true
          nullable: false
          type: boolean
        kind:
          description: The kind of the payment method.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        label:
          description: The localized label of the payment method kind.
          example: Fuel Card Provider
          nullable: false
          type: string
        lastUsedAt:
          description: The date and time when the payment method was last used to
            capture a payment transaction.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        metadata:
          additionalProperties: true
          description: An optional object containing additional metadata for the payment
            method.
          nullable: true
          type: object
        name:
          description: A human-readable name for the payment method.
          example: XYZ ending in 1234
          nullable: false
          type: string
        onboardingId:
          description: The unique identifier of the onboarding through which the payment
            method was created. This is null if the payment method was not created
            through an onboarding process.
          example: 28da8789-53c8-4801-814c-db62a40d34df
          format: uuid
          nullable: true
          type: string
        proxy:
          description: A boolean indicating whether the payment method is a proxy
            payment method.
          example: false
          nullable: false
          type: boolean
        restrictions:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentMethodRestrictionsDTO"
          description: The restrictions that constrain how the payment method may
            be used.
          nullable: false
          type: object
        shareCount:
          description: The number of users this payment method is currently actively
            shared with.
          example: 12
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        shared:
          description: A boolean indicating whether the payment method is shared by
            other user.
          example: false
          nullable: false
          type: boolean
        updatedAt:
          description: The date and time when the payment method was last updated.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user associated with the payment
            method.
          example: f0fa68e4-674d-4145-a2a2-189816caf7af
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - userId
      - onboardingId
      - kind
      - label
      - name
      - proxy
      - implicit
      - shared
      - shareCount
      - icons
      - restrictions
      - metadata
      - expiresAt
      - lastUsedAt
      - createdAt
      - updatedAt
      type: object
    PaymentMethodIconsDTO:
      properties:
        dark:
          description: An optional URL of the dark theme icon for the payment method.
          example: https://example.com/icons/payment-methods/example-dark.svg
          format: uri
          nullable: true
          type: string
        default:
          description: The URL of the default icon for the payment method.
          example: https://example.com/icons/payment-methods/example-light.svg
          format: uri
          nullable: false
          type: string
      required:
      - default
      - dark
      type: object
    PaymentMethodKindDTO:
      properties:
        icons:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentMethodKindIconsDTO"
          description: The icons associated with the payment method kind.
          nullable: false
          type: object
        implicit:
          description: A boolean indicating whether the payment method kind is implicit.
            Implicit payment method kinds are not onboarded by the user but rather
            the system during authorization.
          example: false
          nullable: false
          type: boolean
        label:
          description: The localized label of the payment method kind.
          example: Fuel Card Provider
          nullable: false
          type: string
        name:
          description: The unique identifier of the payment method kind.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        twoFactorAuthentication:
          description: A boolean indicating whether the payment method kind requires
            two-factor authentication.
          example: false
          nullable: false
          type: boolean
      required:
      - name
      - label
      - icons
      - twoFactorAuthentication
      - implicit
      type: object
    PaymentMethodKindIconsDTO:
      properties:
        dark:
          description: The URL of the dark icon for the payment method kind, if applicable.
          example: https://cdn.pace.cloud/fuel-card-provider/dark.png
          format: uri
          nullable: true
          type: string
        default:
          description: The URL of the default icon for the payment method kind.
          example: https://cdn.pace.cloud/fuel-card-provider/default.png
          format: uri
          nullable: false
          type: string
      required:
      - default
      - dark
      type: object
    PaymentMethodRestrictionsDTO:
      properties:
        allowedFuelTypes:
          description: The fuel types the payment method may be used to pay for. `null`
            if unrestricted.
          example:
          - DIESEL
          - RON95_E10
          items:
            type: string
          nullable: true
          type: array
          uniqueItems: true
        allowedProducts:
          description: The product categories the payment method may be used for.
            `null` if unrestricted.
          example:
          - FUELING
          - WASHING
          items:
            type: string
          nullable: true
          type: array
          uniqueItems: true
        maxProducts:
          description: The maximum number of products that may be in a cart for an
            authorization. `null` if unrestricted.
          example: 3
          exclusiveMinimum: false
          minimum: 1
          nullable: true
          type: integer
        maximumAuthorizeAmount:
          description: The maximum amount the payment method may be authorized for.
            `null` if unrestricted.
          example: '150.00'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: true
          type: string
      required:
      - allowedFuelTypes
      - allowedProducts
      - maximumAuthorizeAmount
      - maxProducts
      type: object
    PaymentMethodShareDTO:
      properties:
        createdAt:
          description: The date and time when the payment method share was created.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        expiresAt:
          description: The date and time when the share expires. After this time the
            share is no longer valid. Omit for no expiration.
          example: '2025-12-31T23:59:59.000Z'
          format: date-time
          nullable: true
          type: string
        id:
          description: The unique identifier of the payment method share.
          example: 92e5ec38-2a2c-4040-8158-f053b1f45054
          format: uuid
          nullable: false
          type: string
        paymentMethodId:
          description: The unique identifier of the payment method that was shared.
          example: 45981481-b14d-4075-a8bc-d9626979a3ba
          format: uuid
          nullable: false
          type: string
        updatedAt:
          description: The date and time when the payment method share was last updated.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user the payment method is shared
            with.
          example: 9d38dbaa-3f65-4453-b6f3-53673bd1a413
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - paymentMethodId
      - userId
      - expiresAt
      - createdAt
      - updatedAt
      type: object
    PaymentTokenLanguage:
      description: The preferred language for user-facing content during the payment
        token flow. Defaults to EN if omitted.
      enum:
      - DA
      - DE
      - EN
      - CS
      - ES
      - FR
      - IT
      - NL
      - PL
      - PT
      - RO
      - RU
      type: string
    PaymentTransactionImportCountsDTO:
      properties:
        failed:
          description: The number of records that were rejected.
          example: 1
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        imported:
          description: The number of records that created a transaction.
          example: 1
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        skipped:
          description: The number of records whose external id was already imported
            and that were left unchanged.
          example: 1
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        total:
          description: The number of records that were submitted.
          example: 3
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
      required:
      - total
      - imported
      - skipped
      - failed
      type: object
    PaymentTransactionImportDTO:
      properties:
        clientId:
          description: The identifier of the client that submitted the import, read
            from its access token.
          example: backoffice-importer
          nullable: false
          type: string
        counts:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionImportCountsDTO"
          description: How many records ended up with which result.
          nullable: false
          type: object
        createdAt:
          description: When the import was created.
          example: '2026-07-20T10:15:00.000Z'
          format: date-time
          nullable: false
          type: string
        id:
          description: The unique identifier of the import.
          example: 9b1c0f4e-2f3a-4c5d-8e6f-7a8b9c0d1e2f
          format: uuid
          nullable: false
          type: string
        items:
          description: The result of every submitted record, ordered by position.
            Only present when requested via the `include` query parameter.
          items:
            "$ref": "#/components/schemas/PaymentTransactionImportItemDTO"
          nullable: false
          type: array
          uniqueItems: true
        status:
          description: 'The summary of the record results. COMPLETED: no record failed
            (skipped records count as success). PARTIAL: some records failed, the
            others were imported or skipped. FAILED: every record failed. Imports
            are processed synchronously, so there is no in-progress value.'
          enum:
          - COMPLETED
          - PARTIAL
          - FAILED
          example: PARTIAL
          nullable: false
          type: string
        updatedAt:
          description: When the import was last updated.
          example: '2026-07-20T10:15:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user the imported transactions
            belong to.
          example: a1c782d9-7a6c-4e5a-b05b-1d11b93c510a
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - clientId
      - userId
      - status
      - counts
      - createdAt
      - updatedAt
      type: object
    PaymentTransactionImportItemDTO:
      properties:
        externalId:
          description: The identifier the importing system assigned to the record.
          example: dkv:TXN-2024-0009182
          nullable: false
          type: string
        failureCode:
          description: 'Why the record was rejected; null unless the result is FAILED.
            PAYMENT_METHOD_NOT_FOUND: the payment method is not one of the import
            user''s, which covers a method the payment integration does not know and
            one that belongs to somebody else.'
          example: PAYMENT_METHOD_NOT_FOUND
          nullable: true
          type: string
        position:
          description: The 0-based index of the record in the submitted `transactions`
            array.
          example: 0
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        result:
          description: 'What became of the record. IMPORTED: a transaction was created.
            SKIPPED: the external id was already imported, the existing transaction
            is left unchanged. FAILED: the record was rejected, see `failureCode`.'
          enum:
          - IMPORTED
          - SKIPPED
          - FAILED
          example: IMPORTED
          nullable: false
          type: string
        transactionId:
          description: 'The transaction the record refers to: the one this import
            created (IMPORTED), the one that already carried the external id (SKIPPED),
            or null (FAILED).'
          example: 6fc2acbd-3afd-4df3-9967-836a7929b13f
          format: uuid
          nullable: true
          type: string
      required:
      - position
      - externalId
      - result
      - transactionId
      - failureCode
      type: object
    PaymentTransactionPoiAddressDTO:
      properties:
        city:
          description: The city of the POI address.
          example: Karlsruhe
          nullable: false
          type: string
        country:
          description: The country of the POI address.
          example: DE
          nullable: false
          type: string
        houseNumber:
          description: The house number of the POI address.
          example: '18'
          nullable: true
          type: string
        postalCode:
          description: The postal code of the POI address.
          example: '76131'
          nullable: false
          type: string
        street:
          description: The street name of the POI address.
          example: Haid-und-Neu-Straße
          nullable: false
          type: string
      required:
      - street
      - houseNumber
      - postalCode
      - city
      - country
      type: object
    PaymentTransactionPoiDTO:
      properties:
        address:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionPoiAddressDTO"
          description: The address of the point of interest (POI) associated with
            the payment transaction.
          nullable: false
          type: object
        id:
          description: The unique identifier of the point of interest (POI) associated
            with the payment transaction.
          example: 154e01ae-557a-48b3-a68a-609f1507db1d
          format: uuid
          nullable: false
          type: string
        name:
          description: The name of the point of interest (POI).
          example: PACE Fuel Station
          nullable: false
          type: string
      required:
      - id
      - name
      - address
      type: object
    PaymentTransactionProductCancelledDTO:
      properties:
        buyerId:
          description: The unique identifier of the buyer the product is associated
            with.
          example: 0151f0e1-f932-4d3a-9e2a-0f3818b8cb1c
          format: uuid
          nullable: false
          type: string
        configurations:
          description: A list of product configurations.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/ProductConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/ProductConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/ProductConfigurationInputTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationLocationTypeDTO"
          nullable: false
          type: array
          uniqueItems: false
        contractId:
          description: The unique identifier of the contract the product is associated
            with.
          example: 3fc6db3b-615c-4db2-9d86-c37e9df8ae47
          format: uuid
          nullable: false
          type: string
        currency:
          description: The currency of the product.
          example: EUR
          nullable: true
          type: string
        id:
          description: The unique identifier of the product.
          example: 8394e4df-95f6-4b9e-87da-4982c0aaec4b
          format: uuid
          nullable: false
          type: string
        label:
          description: The localized label of the product.
          example: Fueling
          nullable: false
          type: string
        priceExcludingVAT:
          description: The total price of this product excluding VAT.
          example: '61.34'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: true
          type: string
        priceIncludingVAT:
          description: The total price of this product including VAT.
          example: '72.99'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the product excluding VAT.
          example: '1.596'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the product including VAT.
          example: '1.899'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        quantity:
          description: The quantity of the product.
          example: '38.62'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: true
          type: string
        status:
          enum:
          - CANCELLED
          example: CANCELLED
          nullable: false
          type: string
        supplierId:
          description: The unique identifier of the supplier the product is associated
            with.
          example: 1dd3721c-7c7b-4acb-8adc-e027267f603c
          format: uuid
          nullable: false
          type: string
        type:
          description: The type of the product.
          example: FUELING
          nullable: false
          type: string
        unit:
          description: The unit of the product.
          example: LITER
          nullable: true
          type: string
        vatAmount:
          description: The VAT amount of the product.
          example: '13.63'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        vatRate:
          description: The VAT rate of the product from 0 (0%) to 1 (100%).
          example: '0.19'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 1
          minimum: 0
          nullable: true
          type: string
      required:
      - id
      - label
      - type
      - configurations
      - status
      - unit
      - quantity
      - currency
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      - contractId
      - supplierId
      - buyerId
      type: object
    PaymentTransactionProductConfiguredDTO:
      properties:
        buyerId:
          description: The unique identifier of the buyer the product is associated
            with.
          example: 0151f0e1-f932-4d3a-9e2a-0f3818b8cb1c
          format: uuid
          nullable: false
          type: string
        configurations:
          description: A list of product configurations.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/ProductConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/ProductConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/ProductConfigurationInputTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationLocationTypeDTO"
          nullable: false
          type: array
          uniqueItems: false
        contractId:
          description: The unique identifier of the contract the product is associated
            with.
          example: 3fc6db3b-615c-4db2-9d86-c37e9df8ae47
          format: uuid
          nullable: false
          type: string
        currency:
          description: The currency of the product.
          example: EUR
          nullable: false
          type: string
        id:
          description: The unique identifier of the product.
          example: 8394e4df-95f6-4b9e-87da-4982c0aaec4b
          format: uuid
          nullable: false
          type: string
        label:
          description: The localized label of the product.
          example: Fueling
          nullable: false
          type: string
        priceExcludingVAT:
          description: The total price of this product excluding VAT.
          example: '61.34'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: false
          type: string
        priceIncludingVAT:
          description: The total price of this product including VAT.
          example: '72.99'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the product excluding VAT.
          example: '1.596'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the product including VAT.
          example: '1.899'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        quantity:
          description: The quantity of the product.
          example: '38.62'
          exclusiveMinimum: true
          format: decimal
          minimum: 0
          nullable: false
          type: string
        status:
          enum:
          - CONFIGURED
          example: CONFIGURED
          nullable: false
          type: string
        supplierId:
          description: The unique identifier of the supplier the product is associated
            with.
          example: 1dd3721c-7c7b-4acb-8adc-e027267f603c
          format: uuid
          nullable: false
          type: string
        type:
          description: The type of the product.
          example: FUELING
          nullable: false
          type: string
        unit:
          description: The unit of the product.
          example: LITER
          nullable: false
          type: string
        vatAmount:
          description: The VAT amount of the product.
          example: '13.63'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatRate:
          description: The VAT rate of the product from 0 (0%) to 1 (100%).
          example: '0.19'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 1
          minimum: 0
          nullable: false
          type: string
      required:
      - id
      - label
      - type
      - configurations
      - status
      - unit
      - quantity
      - currency
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      - contractId
      - supplierId
      - buyerId
      type: object
    PaymentTransactionProductConfiguringDTO:
      properties:
        buyerId:
          description: The unique identifier of the buyer the product is associated
            with.
          example: 0151f0e1-f932-4d3a-9e2a-0f3818b8cb1c
          format: uuid
          nullable: false
          type: string
        configurations:
          description: A list of product configurations.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/ProductConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/ProductConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/ProductConfigurationInputTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationSingleSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationMultiSelectTypeDTO"
            - "$ref": "#/components/schemas/ProductConfigurationLocationTypeDTO"
          nullable: false
          type: array
          uniqueItems: false
        contractId:
          description: The unique identifier of the contract the product is associated
            with.
          example: 3fc6db3b-615c-4db2-9d86-c37e9df8ae47
          format: uuid
          nullable: false
          type: string
        id:
          description: The unique identifier of the product.
          example: 8394e4df-95f6-4b9e-87da-4982c0aaec4b
          format: uuid
          nullable: false
          type: string
        label:
          description: The localized label of the product.
          example: Fueling
          nullable: false
          type: string
        status:
          enum:
          - CONFIGURING
          example: CONFIGURING
          nullable: false
          type: string
        supplierId:
          description: The unique identifier of the supplier the product is associated
            with.
          example: 1dd3721c-7c7b-4acb-8adc-e027267f603c
          format: uuid
          nullable: false
          type: string
        type:
          description: The type of the product.
          example: FUELING
          nullable: false
          type: string
      required:
      - id
      - label
      - type
      - configurations
      - status
      - contractId
      - supplierId
      - buyerId
      type: object
    PaymentTransactionSummaryDTO:
      properties:
        currency:
          description: The currency of the transaction. This value matches the currency
            of each product in the transaction.
          example: EUR
          nullable: false
          type: string
        totalAmountExcludingVAT:
          description: The total transaction amount excluding VAT.
          example: '88.90'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        totalAmountIncludingVAT:
          description: The total transaction amount including VAT.
          example: '104.84'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatAmount:
          description: The total VAT amount for the transaction.
          example: '15.94'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
      required:
      - currency
      - totalAmountExcludingVAT
      - totalAmountIncludingVAT
      - vatAmount
      type: object
    PlatformPaymentTransactionDTO:
      properties:
        authorizationType:
          allOf:
          - "$ref": "#/components/schemas/AuthorizationType"
          description: The type of the authorization for the transaction. Either PENDING
            if the authorized amount is a temporary hold on the user's funds, or FINAL
            if the authorized amount is the final amount that will be charged to the
            user.
          example: PARTIAL
          nullable: false
          type: string
        authorizedAmount:
          description: The amount that was authorized from the payment transaction.
            This is the amount that was requested to be charged to the user.
          example: '120.00'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        authorizedAt:
          description: The date and time when the payment transaction was authorized
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        cancelledAt:
          description: The timestamp when the transaction was cancelled. This field
            is only set if the transaction was cancelled.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        capturedAmount:
          description: The amount that was captured from the payment transaction.
            This is the amount that was actually charged to the user.
          example: '46.87'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: true
          type: string
        capturedAt:
          description: The date and time when the payment transaction was captured
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        cartId:
          description: The unique identifier of the cart associated with the payment
            transaction.
          example: 317643aa-b684-44de-873c-a72d9ed766ee
          format: uuid
          nullable: false
          type: string
        clientId:
          description: 'The identifier of the client that created the payment transaction:
            the one that authorized it for a platform transaction, the one that imported
            it for an imported one.'
          example: pace-drive-app
          nullable: false
          type: string
        createdAt:
          description: The date and time when the payment transaction was created
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        currency:
          description: The currency of the transaction.
          example: EUR
          nullable: false
          type: string
        failedAt:
          description: The timestamp when the transaction failed. This field is only
            set if the transaction failed.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        failureCode:
          description: The failure code of the transaction. This field is only set
            if the transaction failed.
          enum:
          - PAYMENT_METHOD_EXPIRED
          - INVALID_CARD_NUMBER
          - INSUFFICIENT_FUNDS
          - FRAUD_DETECTED
          - RESTRICTED_CARD
          - WITHDRAWAL_LIMIT_EXCEEDED
          - WITHDRAWAL_FREQUENCY_LIMIT_EXCEEDED
          - DECLINED_BY_ISSUER
          - TERMINAL_NOT_AVAILABLE
          - PROVIDER_ERROR
          - INVALID_METADATA
          - PROVIDER_NOT_AVAILABLE
          - PROVIDER_NOT_ENABLED
          - UNKNOWN
          example: INSUFFICIENT_FUNDS
          nullable: true
          type: string
        id:
          description: The unique identifier of the payment transaction
          example: 6fc2acbd-3afd-4df3-9967-836a7929b13f
          format: uuid
          nullable: false
          type: string
        kind:
          description: The kind of the payment method used for this transaction.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        origin:
          description: 'The origin of the transaction. PLATFORM: authorized and captured
            through this service.'
          enum:
          - PLATFORM
          example: PLATFORM
          nullable: false
          type: string
        paymentMethodId:
          description: The unique identifier of the payment method used for the transaction
          example: b4fd81c9-8969-4323-98b7-855a7d7f0d60
          format: uuid
          nullable: false
          type: string
        poi:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionPoiDTO"
          description: The point of interaction (POI) where the transaction took place.
          nullable: false
          type: object
        products:
          description: A list of products that are part of the transaction. Useful
            for reporting purposes like receipts.
          discriminator:
            mapping:
              CANCELLED: "#/components/schemas/PaymentTransactionProductCancelledDTO"
              CONFIGURED: "#/components/schemas/PaymentTransactionProductConfiguredDTO"
              CONFIGURING: "#/components/schemas/PaymentTransactionProductConfiguringDTO"
            propertyName: status
          items:
            oneOf:
            - "$ref": "#/components/schemas/PaymentTransactionProductConfiguringDTO"
            - "$ref": "#/components/schemas/PaymentTransactionProductConfiguredDTO"
            - "$ref": "#/components/schemas/PaymentTransactionProductCancelledDTO"
          nullable: false
          type: array
          uniqueItems: false
        proxy:
          description: Determines whether the payment transaction is a proxy transaction.
          example: true
          nullable: false
          type: boolean
        status:
          description: 'The current status of the payment transaction. An imported
            transaction is always CAPTURED: it records money that already moved.'
          enum:
          - AUTHORIZING
          - AUTHORIZING_ACTIONS_REQUIRED
          - AUTHORIZING_FAILED
          - AUTHORIZING_CANCELLED
          - AUTHORIZED
          - AUTHORIZED_CANCELLING
          - AUTHORIZED_CANCELLING_FAILED
          - AUTHORIZED_CANCELLED
          - CAPTURING
          - CAPTURING_FAILED
          - CAPTURING_CANCELLED
          - CAPTURED
          example: CAPTURED
          nullable: false
          type: string
        summary:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentTransactionSummaryDTO"
          description: The summary of the transaction, including the total amounts
            from each product.
          nullable: true
          type: object
        updatedAt:
          description: The date and time when the payment transaction was last updated
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user associated with the payment
            transaction.
          example: a1c782d9-7a6c-4e5a-b05b-1d11b93c510a
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - clientId
      - paymentMethodId
      - userId
      - kind
      - status
      - currency
      - authorizedAmount
      - authorizedAt
      - capturedAmount
      - capturedAt
      - summary
      - createdAt
      - updatedAt
      - origin
      - cartId
      - proxy
      - authorizationType
      - cancelledAt
      - failedAt
      - failureCode
      - poi
      - products
      type: object
    ProductConfigurationInputTypeDTO:
      properties:
        label:
          description: The localized label of the product configuration.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the product configuration.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          enum:
          - INPUT
          example: INPUT
          nullable: false
          type: string
        value:
          description: The value of the input configuration
          example: '100.00'
          nullable: false
          type: string
      required:
      - name
      - label
      - type
      - value
      type: object
    ProductConfigurationLocationTypeDTO:
      properties:
        label:
          description: The localized label of the product configuration.
          example: Pump Number
          nullable: false
          type: string
        latitude:
          description: The latitude of the location
          example: '52.5200'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 90
          minimum: -90
          nullable: false
          type: string
        longitude:
          description: The longitude of the location
          example: '13.4050'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 180
          minimum: -180
          nullable: false
          type: string
        name:
          description: The unique identifier of the product configuration.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          enum:
          - LOCATION
          example: LOCATION
          nullable: false
          type: string
      required:
      - name
      - label
      - type
      - latitude
      - longitude
      type: object
    ProductConfigurationMultiSelectTypeDTO:
      properties:
        label:
          description: The localized label of the product configuration.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the product configuration.
          example: PUMP_NUMBER
          nullable: false
          type: string
        options:
          description: The selected configuration options for the product.
          discriminator:
            mapping:
              PRICED: "#/components/schemas/ProductConfigurationPricedSelectOptionDTO"
              SIMPLE: "#/components/schemas/ProductConfigurationSelectOptionDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/ProductConfigurationSelectOptionDTO"
            - "$ref": "#/components/schemas/ProductConfigurationPricedSelectOptionDTO"
          minItems: 1
          nullable: false
          type: array
          uniqueItems: false
        type:
          enum:
          - MULTI_SELECT
          example: MULTI_SELECT
          nullable: false
          type: string
      required:
      - name
      - label
      - type
      - options
      type: object
    ProductConfigurationPricedSelectOptionDTO:
      properties:
        currency:
          description: The currency in which the configuration option is priced.
          example: EUR
          nullable: false
          type: string
        label:
          description: The localized label of the product configuration selection.
          example: '1'
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the configuration option excluding VAT.
          example: '1.529'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the configuration option including VAT.
          example: '1.819'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        type:
          description: The type of the product configuration select option.
          enum:
          - PRICED
          example: PRICED
          nullable: false
          type: string
        unit:
          description: The unit of measurement for the configuration option.
          example: LITER
          nullable: false
          type: string
        value:
          description: The configuration selection value.
          example: 947a06c0-7c23-41d6-9b5a-44be6194dbd2
          nullable: false
          type: string
        vatRate:
          description: The VAT rate applied to the configuration option.
          example: '0.19'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
      required:
      - type
      - label
      - value
      - currency
      - unit
      - vatRate
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      type: object
    ProductConfigurationSelectOptionDTO:
      properties:
        label:
          description: The localized label of the product configuration selection.
          example: '1'
          nullable: false
          type: string
        type:
          description: The type of the product configuration select option.
          enum:
          - SIMPLE
          example: SIMPLE
          nullable: false
          type: string
        value:
          description: The configuration selection value.
          example: 947a06c0-7c23-41d6-9b5a-44be6194dbd2
          nullable: false
          type: string
      required:
      - type
      - label
      - value
      type: object
    ProductConfigurationSingleSelectTypeDTO:
      properties:
        label:
          description: The localized label of the product configuration.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the product configuration.
          example: PUMP_NUMBER
          nullable: false
          type: string
        option:
          description: The selected configuration option for the product.
          discriminator:
            mapping:
              PRICED: "#/components/schemas/ProductConfigurationPricedSelectOptionDTO"
              SIMPLE: "#/components/schemas/ProductConfigurationSelectOptionDTO"
            propertyName: type
          nullable: false
          oneOf:
          - "$ref": "#/components/schemas/ProductConfigurationSelectOptionDTO"
          - "$ref": "#/components/schemas/ProductConfigurationPricedSelectOptionDTO"
          type: object
        type:
          enum:
          - SINGLE_SELECT
          example: SINGLE_SELECT
          nullable: false
          type: string
      required:
      - name
      - label
      - type
      - option
      type: object
    ReceiptDownloadDTO:
      properties:
        downloadURL:
          description: The download URL of the receipt.
          example: https://example.com/receipt.pdf
          format: uri
          nullable: false
          type: string
        expiresAt:
          description: The date and time when the download URL expires.
          example: '2026-01-29T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
      required:
      - downloadURL
      - expiresAt
      type: object
    SharePaymentMethodBodyDTO:
      properties:
        clientId:
          description: The identifier of the client the shares belong to. Required
            if not requesting with the :authenticated scope, which defaults it to
            the requesting client and allows no other.
          example: pace-drive-app
          nullable: false
          type: string
        expiresAt:
          description: The date and time when all created shares expire. Omit for
            no expiration.
          example: '2025-12-31T23:59:59.000Z'
          format: date-time
          nullable: false
          type: string
        userIds:
          description: The IDs of the users to share the payment method with.
          example:
          - 263ca0fd-60a4-4369-80d6-52f55e9617c8
          - b0c2b734-7ec7-4404-a7bb-a0262c80c81c
          items:
            format: uuid
            type: string
          maxItems: 50
          minItems: 1
          nullable: false
          type: array
          uniqueItems: true
      required:
      - userIds
      type: object
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          scopes:
            payment:onboardings:create:authenticated: Allows creating an onboarding
              for the authenticated user.
            payment:onboardings:create:one: Allows creating an onboarding for a given
              user.
            payment:payment-method-kinds:read:all: Allows reading all payment method
              kinds.
            payment:payment-method-kinds:read:authenticated: Allows reading payment
              method kinds for the authenticated client.
            payment:payment-method-shares:create:authenticated: Allows sharing authenticated
              user's payment methods with other users.
            payment:payment-method-shares:create:one: Allows sharing a payment method
              with other users.
            payment:payment-method-shares:delete:authenticated: Allows deleting a
              payment method share for the authenticated user.
            payment:payment-method-shares:delete:one: Allows deleting a payment method
              share.
            payment:payment-method-shares:read:all: Allows reading all payment method
              shares.
            payment:payment-method-shares:read:authenticated: Allows reading payment
              method shares for the authenticated user.
            payment:payment-methods:delete:authenticated: Allows deleting a payment
              method for the authenticated user.
            payment:payment-methods:delete:one: Allows deleting a payment method.
            payment:payment-methods:read:all: Allows reading all payment methods.
            payment:payment-methods:read:authenticated: Allows reading payment methods
              for the authenticated user.
            payment:payment-methods:read:one: Allows reading one payment method.
            payment:payment-methods:verify:authenticated: Allows verifying a payment
              method for the authenticated user.
            payment:payment-methods:verify:one: Allows verifying a payment method.
            payment:payment-transaction-imports:create:authenticated: Allows importing
              payment transactions for the authenticated user.
            payment:payment-transaction-imports:create:one: Allows importing payment
              transactions for any user.
            payment:payment-transaction-imports:delete:authenticated: Allows rolling
              back the payment transaction imports of the authenticated user.
            payment:payment-transaction-imports:delete:one: Allows rolling back any
              payment transaction import.
            payment:payment-transaction-imports:read:all: Allows reading all payment
              transaction imports.
            payment:payment-transaction-imports:read:authenticated: Allows reading
              the payment transaction imports of the authenticated user.
            payment:payment-transaction-imports:read:one: Allows reading one payment
              transaction import.
            payment:payment-transactions:read:all: Allows reading all payment transactions.
            payment:payment-transactions:read:authenticated: Allows reading payment
              transactions for the authenticated user.
            payment:payment-transactions:read:one: Allows reading one payment transaction.
          authorizationUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/auth
          refreshUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
          tokenUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
tags:
- name: Onboardings
  description: Endpoints related to payment method onboardings.
- name: Payment Method Kinds
  description: Endpoints for retrieving payment method kinds.
- name: Payment Method Shares
  description: Endpoints for sharing payment methods with other users.
- name: Payment Methods
  description: Endpoints for managing payment methods.
- name: Payment Transactions
  description: Endpoints for managing payment transactions.
- name: Payment Transaction Imports
  description: Endpoints for importing payment transactions settled outside the platform.
openapi: 3.0.0
servers:
- description: PACE Payment Service
  url: https://api.pace.cloud/payment
