---
info:
  version: 2026-2
  contact: {}
  description: Platform payment service responsible for handling payment transactions.
  title: Platform Payment Service
openapi: 3.0.0
servers:
- description: PACE Payment Service
  url: https://api.pace.cloud/payment
paths:
  "/2026-2/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-2/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-2/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-2/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-2/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.
        '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:create:one
      - oauth2:
        - payment:payment-method-shares:create:authenticated
      summary: Creates payment method shares (bulk).
      tags:
      - Payment Method Shares
      x-beta: true
  "/2026-2/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-2/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-2/payment-transactions":
    get:
      description: Paginate through all payment transactions that are available based
        in the current authentication context.
      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-2/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:
          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.
        '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:
          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.
        '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-2/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:
          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.
        '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:
          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.
        '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
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.
components:
  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-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
  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
      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
        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
      required:
      - data
      type: object
    CreateReceiptDownloadResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/ReceiptDownloadDTO"
          description: The download details for the receipt.
          nullable: false
      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:
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodKindsQueryFilterClientIdDTO"
          description: Filter payment method kinds by client ID.
          nullable: false
      type: object
    GetPaymentMethodKindsResponseDTO:
      properties:
        data:
          description: The list of payment method kinds.
          items:
            "$ref": "#/components/schemas/PaymentMethodKindDTO"
          nullable: false
          type: array
      required:
      - data
      type: object
    GetPaymentMethodResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaymentMethodDTO"
          description: The user payment method that was retrieved.
          nullable: false
      required:
      - data
      type: object
    GetPaymentMethodSharesResponseDTO:
      properties:
        data:
          description: A list of payment method shares.
          items:
            "$ref": "#/components/schemas/PaymentMethodShareDTO"
          nullable: false
          type: array
      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:
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterClientIdDTO"
          description: Filter payment methods by client ID.
          nullable: false
        implicit:
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterImplicitDTO"
          nullable: false
        onboardingId:
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterOnboardingIdDTO"
          nullable: false
        proxy:
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterProxyDTO"
          nullable: false
        userId:
          allOf:
          - "$ref": "#/components/schemas/GetPaymentMethodsQueryFilterUserIdDTO"
          nullable: false
      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
      required:
      - data
      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
        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
    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
    PaginatePaymentTransactionsQueryFilterDTO:
      properties:
        authorizationType:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterAuthorizationTypeDTO"
          description: Filter payment transactions by authorization type.
          nullable: false
        cartId:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryCartIdFilterDTO"
          description: Filter payment transactions by cart ID.
          nullable: false
        id:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterIdDTO"
          description: Filter payment transactions by ID.
          nullable: false
        paymentMethodId:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterPaymentMethodIdDTO"
          description: Filter payment transactions by payment method ID.
          nullable: false
        products:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsDTO"
          description: Filter payment transactions by products.
          nullable: false
        proxy:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProxyDTO"
          description: Filter payment transactions by proxy flag.
          nullable: false
        status:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterStatusDTO"
          description: Filter payment transactions by status.
          nullable: false
        userId:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterUserIdDTO"
          description: Filter payment transactions by user ID.
          nullable: false
      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
    PaginatePaymentTransactionsQueryFilterPaymentMethodIdDTO:
      properties:
        eq:
          example: 39b6ca0f-c2d3-49ac-ad08-df97c06b452e
          format: uuid
          nullable: false
          type: string
      type: object
    PaginatePaymentTransactionsQueryFilterProductsDTO:
      properties:
        every:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterDTO"
          nullable: false
        none:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterDTO"
          nullable: false
        some:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterDTO"
          nullable: false
      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:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterBuyerIdDTO"
          nullable: false
        contractId:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterContractIdDTO"
          nullable: false
        supplierId:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterSupplierIdDTO"
          nullable: false
        type:
          allOf:
          - "$ref": "#/components/schemas/PaginatePaymentTransactionsQueryFilterProductsFilterTypeDTO"
          nullable: false
      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
          items:
            "$ref": "#/components/schemas/PaymentTransactionDTO"
          nullable: false
          type: array
      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
        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
        shareCount:
          description: The number of shares for the payment method with other users.
          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
      - 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
        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
    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
    PaymentTransactionDTO:
      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
        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 authorized the payment transaction.
          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
          - INVALID_METADATA
          - 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
        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
        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
        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.
          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
        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
      - cartId
      - kind
      - status
      - proxy
      - authorizationType
      - authorizedAmount
      - authorizedAt
      - currency
      - capturedAmount
      - capturedAt
      - cancelledAt
      - failedAt
      - failureCode
      - poi
      - products
      - summary
      - createdAt
      - updatedAt
      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
        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: 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: 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
      - contractId
      - supplierId
      - buyerId
      - label
      - type
      - configurations
      - status
      - unit
      - quantity
      - currency
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      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
      - contractId
      - supplierId
      - buyerId
      - label
      - type
      - configurations
      - status
      - unit
      - quantity
      - currency
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      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
      - contractId
      - supplierId
      - buyerId
      - label
      - type
      - configurations
      - status
      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
    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
        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:
          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:
        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
