Volt Transactions API

Operations related to movement of funds, including payouts, settlements, and internal transactions.

Business capability
Payment Initiation Management BC-1340.10

Operations 3

GET /transactions List of transactions #
GET /transactions/{transactionId} Get transaction details #
POST /accounts/{accountId}/transactions Create a transaction #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/volt-io-transactions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

volt-io-transactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Global Api Accounts Transactions API
  version: 1.0.0
  description: "## API idempotency \nEach `POST` request creating a resource (for example a transaction) requires to send a unique idempotency key. It is included in the `Idempotency-Key` HTTP header. Idempotency key helps prevent duplicates in your `POST` requests. We recommend using an **UUID** for the key, however you may use any other unique identifier you choose.\n\n#### Preventing duplicates \nIf we have already processed the request and you send a request using the same idempotency key, it will fail with an error, returning a ```409 Conflict``` response.\n\n## Case-sensitivity\nAll properties/keys within request's/response's payload are case-sensitive.\n\nHTTP headers' names are case-insensitive.\n\n## API base URL\n**Sandbox: [https://accounts.sandbox.volt.io]()**\n\n**Production: [https://accounts.volt.io]()**"
  contact:
    email: support@volt.io
    name: Volt Support
    url: https://www.volt.io/contact/
servers:
- url: https://accounts.sandbox.volt.io
  description: Sandbox
- url: https://accounts.volt.io
  description: Production
security:
- BearerAuth: []
tags:
- name: Transactions
  description: Operations related to movement of funds, including payouts, settlements, and internal transactions.
paths:
  /transactions:
    get:
      summary: List of transactions
      operationId: get-transactions
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - $ref: '#/components/parameters/LimitParam'
      - $ref: '#/components/parameters/PageParam'
      - in: query
        name: status[]
        description: Filter by transaction status (e.g. COMPLETED, REJECTED).
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TransactionStatusEnum'
          example:
          - CREATED
      - in: query
        name: createdAt[gte]
        description: Filter for transactions created on or after this date.
        schema:
          type: string
          format: date-time
          description: ISO 8601 format (YYYY-MM-DDThh:mm:ssZ)
          example: '2025-07-01T10:00:00Z'
      - in: query
        name: operation[]
        description: Filter by operation direction (INCOMING or OUTGOING).
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TransactionOperationEnum'
          example:
          - OUTGOING
      - in: query
        name: type[]
        description: Filter by transaction type.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TransactionTypeEnum'
          example:
          - PAYOUT
      - in: query
        name: accountId
        description: Filter by account.
        schema:
          type: string
          format: uuid
          example: 2f5e48b7-235a-4ba4-ad10-8aa981a73d03
      - in: query
        name: sourceTransactionId
        description: Filter by source transaction id (e.g. for refunds).
        schema:
          type: string
          format: uuid
          example: 2f5e48b7-235a-4ba4-ad10-8aa981a73d03
      - in: query
        name: aliasId
        description: Filter transactions by alias UUID.
        schema:
          type: string
          format: uuid
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      - in: query
        name: gatewayPaymentId
        description: Filter transactions by linked gateway payment UUID.
        schema:
          type: string
          format: uuid
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      - in: query
        name: iban
        description: Filter by exact IBAN. Matches the beneficiary, beneficiary alias or sender identification.
        schema:
          type: string
          example: DE07500105176551562526
      - in: query
        name: accountNumber
        description: Filter by exact account number. Matches the beneficiary, beneficiary alias or sender identification.
        schema:
          type: string
          example: '12345678'
      - in: query
        name: order[createdAt]
        description: Sort order by createdAt field (desc by default).
        schema:
          allOf:
          - $ref: '#/components/schemas/SortOrder'
      responses:
        '200':
          description: Paginated list of transactions.
          headers:
            limit:
              $ref: '#/components/headers/PaginationLimit'
            page:
              $ref: '#/components/headers/PaginationPage'
            page-count:
              $ref: '#/components/headers/PaginationPageCount'
            total-items:
              $ref: '#/components/headers/PaginationTotalItems'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TransactionMinimalDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '415':
          $ref: '#/components/responses/415'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
  /transactions/{transactionId}:
    get:
      summary: Get transaction details
      operationId: get-transaction-details
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - name: transactionId
        in: path
        description: Unique UUID of the transaction.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Full details of the specified transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionDetails'
              examples:
                Outgoing:
                  $ref: '#/components/examples/OutgoingResponseExample'
                Incoming:
                  $ref: '#/components/examples/IncomingResponseExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '415':
          $ref: '#/components/responses/415'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
  /accounts/{accountId}/transactions:
    post:
      summary: Create a transaction
      operationId: create-transaction
      tags:
      - Transactions
      parameters:
      - name: accountId
        in: path
        description: Unique identifier of the account.
        required: true
        schema:
          type: string
          format: uuid
      - $ref: '#/components/parameters/IdempotencyKey'
      - $ref: '#/components/parameters/XVoltApiVersion'
      - $ref: '#/components/parameters/XJWSSignature'
      - $ref: '#/components/parameters/XVoltTestingScenario'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - type
              properties:
                type:
                  type: string
                  description: The transaction type discriminator (PAYOUT, SETTLEMENT, INTERNAL, or REFUND).
              oneOf:
              - $ref: '#/components/schemas/SettlementTransactionRequest'
              - $ref: '#/components/schemas/PayoutTransactionRequest'
              - $ref: '#/components/schemas/InternalTransactionRequest'
              - $ref: '#/components/schemas/RefundTransactionRequest'
              discriminator:
                propertyName: type
                mapping:
                  PAYOUT: '#/components/schemas/PayoutTransactionRequest'
                  SETTLEMENT: '#/components/schemas/SettlementTransactionRequest'
                  INTERNAL: '#/components/schemas/InternalTransactionRequest'
                  REFUND: '#/components/schemas/RefundTransactionRequest'
            examples:
              payoutRequestEURExample:
                $ref: '#/components/examples/PayoutRequestEURExample'
              payoutRequestGBPExample:
                $ref: '#/components/examples/PayoutRequestGBPExample'
              settlementRequestEURExample:
                $ref: '#/components/examples/SettlementRequestEURExample'
              internalRequestEURExample:
                $ref: '#/components/examples/InternalRequestEURExample'
              refundRequestExample:
                $ref: '#/components/examples/RefundRequestExample'
      responses:
        '201':
          description: Transaction created successfully.
          headers:
            Location:
              schema:
                type: string
                format: uri
              description: Location of created transaction
          content:
            application/json:
              schema:
                type: object
                description: Response containing the identifier of the created transaction.
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Unique ID of the transaction.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '415':
          $ref: '#/components/responses/415'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
components:
  examples:
    PayoutRequestGBPExample:
      value:
        type: PAYOUT
        amount: 5000
        currency: GBP
        paymentReference: UK-Payout
        internalReference: INT-101
        beneficiary:
          name: John Doe
          country: GBP
          email: email@email.com
          accountIdentifiers:
            accountNumber: '12345678'
            sortCode: '123456'
          address:
            addressLine1: 123, Main Street
            addressLine2: ''
            city: London
            postalCode: '12332'
            country: GB
        communication:
          notifications:
            url: https://mywebsite.com/webhooks
    SettlementRequestEURExample:
      value:
        type: SETTLEMENT
        amount: 25000
        currency: EUR
        paymentReference: Weekly-Settlement
        internalReference: SETTLE-01
        beneficiary:
          trustedAccountId: efffed42-40f7-4bd2-840d-908aae9a33ad
        communication:
          notifications:
            url: https://mywebsite.com/webhooks
    InternalRequestEURExample:
      value:
        type: INTERNAL
        amount: 100
        currency: EUR
        paymentReference: REBALANCE-EUR-01
        internalReference: LIQUIDITY-MOVE-2025
        beneficiary:
          accountId: 998275d3-70a9-4448-822a-ba1a38e0b715
        communication:
          notifications:
            url: https://mywebsite.com/webhooks
    IncomingResponseExample:
      value:
        id: efffed42-40f7-4bd2-840d-908aae9a33ad
        status: COMPLETED
        failure: null
        operation: INCOMING
        type: MANUAL_CREDIT
        subtype: null
        createdAt: '2025-07-01T10:00:00Z'
        updatedAt: '2025-07-01T10:05:00Z'
        amount: 500
        currency: EUR
        paymentReference: Payin
        paymentRail: SEPA
        beneficiary:
          name: Your Company Name
          country: DE
          customerId: 2f5e48b7-235a-4ba4-ad10-8aa981a73d03
          accountId: 7523a8d3-70a9-4448-822a-ba1a38e0b715
          alias:
            aliasId: f47ac10b-58cc-4372-a567-0e02b2c3d479
            accountIdentifiers:
              iban: DE33500105173822933531
        sender:
          name: John Doe
          country: LT
          accountIdentifiers:
            iban: DE07500105176551562526
            swiftBic: '123456'
          address:
            addressLine1: 123, Main Street
            addressLine2: ''
            city: New York City
            postalCode: '12332'
            country: US
        _links:
          self:
            href: https://accounts.volt.io/transactions/efffed42-40f7-4bd2-840d-908aae9a33ad
            method: GET
    PayoutRequestEURExample:
      value:
        type: PAYOUT
        amount: 1000
        currency: EUR
        paymentReference: Reconciliation-1
        internalReference: INT-99
        beneficiary:
          name: John Doe
          email: email@email.com
          accountIdentifiers:
            iban: DE07500105176551562526
            swiftBic: '123456'
          address:
            addressLine1: 123, Main Street
            addressLine2: ''
            city: Berlin
            postalCode: '12332'
            country: DE
        communication:
          notifications:
            url: https://mywebsite.com/webhooks
    OutgoingResponseExample:
      value:
        id: efffed42-40f7-4bd2-840d-908aae9a33ad
        status: COMPLETED
        failure: null
        operation: OUTGOING
        type: PAYOUT
        subtype: OPEN_LOOP
        createdAt: '2019-08-24T14:15:22Z'
        updatedAt: '2019-08-25T14:15:22Z'
        amount: 500
        currency: EUR
        paymentReference: Payout123456
        internalReference: H35X48Y4FWOD6G3S
        paymentRail: SEPA
        beneficiary:
          name: John Doe
          country: GB
          email: email@email.com
          accountIdentifiers:
            iban: DE07500105176551562526
          address:
            addressLine1: 123, Main Street
            addressLine2: ''
            city: London
            postalCode: '12332'
            country: GB
        sender:
          name: Account Holding
          customerId: efffed42-40f7-4bd2-840d-908aae9a33ad
          accountId: efffed42-40f7-4bd2-840d-908aae9a33ad
          accountIdentifiers:
            iban: DE07500105176551562526
            swiftBic: '123456'
        initiatedBy:
          user:
            id: efffed42-40f7-4bd2-840d-908aae9a33ad
            name: Robert Robertson
            type: USER
        decisions:
        - user:
            id: efffed42-40f7-4bd2-840d-908aae9a33ad
            name: Robert Robertson
            type: USER
          type: APPROVED
          createdAt: '2019-08-24T14:15:22Z'
        _links:
          self:
            href: https://accounts.volt.io/transactions/efffed42-40f7-4bd2-840d-908aae9a33ad
            method: GET
    RefundRequestExample:
      value:
        type: REFUND
        sourceTransactionId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        amount: 1000
        currency: EUR
        paymentReference: Refund-Order-42
        internalReference: REFUND-INT-01
        communication:
          notifications:
            url: https://mywebsite.com/webhooks
  schemas:
    Error401Response:
      type: object
      description: Error response for HTTP 401 Unauthorized.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - UNAUTHORISED
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    Error403Response:
      type: object
      description: Error response for HTTP 403 Forbidden.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - ACCESS_DENIED
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    TransactionMinimalDetails:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique UUID of the transaction generated by Volt.
        status:
          $ref: '#/components/schemas/TransactionStatusEnum'
        failure:
          $ref: '#/components/schemas/Failure'
        operation:
          $ref: '#/components/schemas/TransactionOperationEnum'
        type:
          $ref: '#/components/schemas/TransactionTypeEnum'
        subtype:
          $ref: '#/components/schemas/TransactionSubTypeEnum'
        createdAt:
          type: string
          format: date-time
          description: The timestamp when the transaction was initially created (ISO 8601).
        updatedAt:
          type: string
          format: date-time
          description: The timestamp of the last status update (ISO 8601).
        amount:
          $ref: accounts-common.yaml#/components/schemas/Amount
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        paymentReference:
          $ref: '#/components/schemas/PaymentReference'
        internalReference:
          $ref: '#/components/schemas/InternalReference'
        paymentRail:
          type:
          - string
          - 'null'
          description: The specific infrastructure used to move the funds (e.g. SEPA_INSTANT, FPS).
        beneficiary:
          $ref: '#/components/schemas/Beneficiary'
        sender:
          $ref: '#/components/schemas/Sender'
        initiatedBy:
          $ref: '#/components/schemas/InitiatedBy'
        gatewayPaymentId:
          type:
          - string
          - 'null'
          format: uuid
          description: UUID of the linked gateway payment, if transaction was matched with a Volt Connect payment.
        sourceTransactionId:
          type:
          - string
          - 'null'
          format: uuid
          description: UUID of the source transaction (e.g. the original transaction being refunded, reversed, or returned).
        decisions:
          type: array
          items:
            $ref: '#/components/schemas/Decision'
        verifications:
          type: object
          description: Group of verification results.
          properties:
            accountHolderVerification:
              allOf:
              - $ref: '#/components/schemas/AccountHolderVerification'
    Failure:
      type: object
      description: Details regarding why a transaction was not successful.
      properties:
        code:
          type: string
          description: A standardized machine-readable error code indicating why the transaction failed.
    TransactionTypeEnum:
      type: string
      enum:
      - PAYOUT
      - SETTLEMENT
      - REFUND
      - INTERNAL
      - GATEWAY_PAYMENT
      - MANUAL_CREDIT
      - TOP_UP
      - BOUNCE_BACK
      - REVERSAL
    TransactionDetails:
      type: object
      allOf:
      - $ref: '#/components/schemas/TransactionMinimalDetails'
      - type: object
        properties:
          _links:
            $ref: '#/components/schemas/TransactionLinks'
    InternalTransactionRequest:
      type: object
      required:
      - type
      - amount
      - currency
      - beneficiary
      - paymentReference
      properties:
        type:
          type: string
          description: Must be set to INTERNAL.
        amount:
          $ref: accounts-common.yaml#/components/schemas/Amount
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        paymentReference:
          $ref: '#/components/schemas/PaymentReference'
        internalReference:
          $ref: '#/components/schemas/InternalReference'
        beneficiary:
          type: object
          description: The unique UUID of the  account receiving the funds.
          required:
          - accountId
          properties:
            accountId:
              type: string
              format: uuid
              description: Target internal account ID.
        communication:
          $ref: '#/components/schemas/Communication'
    AccountHolderVerification:
      type: object
      description: Account Holder Verification basic information.
      properties:
        id:
          type: string
          format: uuid
          description: Unique verification ID.
        result:
          $ref: '#/components/schemas/VerificationResult'
        executedAt:
          type: string
          format: date-time
          description: Timestamp of  Account Holder Verification Execution.
    TransactionSubTypeEnum:
      type: string
      enum:
      - OPEN_LOOP
      - CLOSE_LOOP
      - VERIFIED
      - PARTIAL
      - FULL
    Performer:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique UUID of the action's performer.
        name:
          type: string
          description: The full name of the performer.
        type:
          type: string
          description: The type of the performer.
          enum:
          - USER
          - API_CLIENT
    OutgoingTransactionRequestBeneficiary:
      type: object
      required:
      - name
      - accountIdentifiers
      properties:
        name:
          type: string
          description: The name of the beneficiary.
          minLength: 1
          maxLength: 35
          pattern: ^(?=.*\S)[a-zA-Z0-9\/\-?:().,'+ ]*$
        email:
          type: string
          description: The email address of the beneficiary.
          format: email
          pattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
        accountIdentifiers:
          $ref: accounts-common.yaml#/components/schemas/AccountIdentifier
        address:
          type: object
          description: Optional additional address information
          required:
          - addressLine1
          - city
          - country
          properties:
            addressLine1:
              type: string
              maxLength: 35
              pattern: ^(?! *$)(?!.*\/\/)(?![:\-\/])[0-9A-Za-z\/\-?:().,'+_ ]+(?<!\/)$
              description: Primary address line, typically containing the street name and building number.
            addressLine2:
              type: string
              maxLength: 35
              pattern: ^(?:[0-9A-Za-z\/\-?:().,'+_ ]*(?<!\/))?$
              description: Additional address details such as suite, apartment number, or floor level.
            city:
              type: string
              maxLength: 35
              pattern: ^(?! *$)(?!.*\/\/)(?![:\-\/])[0-9A-Za-z\/\-?:().,'+_ ]+(?<!\/)$
              description: The city or locality of the beneficiary's registered address.
            postalCode:
              type: string
              maxLength: 16
              pattern: ^[A-Za-z0-9 \-]*$
              description: The ZIP or Postal code.
            country:
              $ref: '#/components/schemas/CountryCode'
    Error500Response:
      type: object
      description: Error response for HTTP 500 Internal Server Error.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - INTERNAL_SERVER_ERROR
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    TransactionOperationEnum:
      type: string
      enum:
      - OUTGOING
      - INCOMING
    Communication:
      type: object
      properties:
        notifications:
          type: object
          description: Settings for webhook notifications delivery.
          properties:
            url:
              type: string
              pattern: ^https?://[^ ]+$
              description: URL where the notifications (webhooks) are going to be sent when the transaction status changes. This value will take precedence over Fuzebox configuration. Provide a value here only if you need to overwrite it. Note that a default notifications URL must be configured in Fuzebox for notifications to be delivered; if it is not configured, no notification will be sent even when this overwrite URL is provided.
              example: https://mywebsite.com/webhooks
    Error422Response:
      type: object
      description: Error response for HTTP 422 Unprocessable Entity.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - VALIDATION_FAILURE
        message:
          type: string
          description: Error message.
        errors:
          type: array
          description: Field validation errors.
          items:
            $ref: '#/components/schemas/ValidationErrorDetail'
      required:
      - code
      - message
      - errors
    Error400Response:
      type: object
      description: Error response for HTTP 400 Bad Request.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - BAD_REQUEST
          - INVALID_PATH_VARIABLE
          - MISSING_HTTP_HEADER
          - INVALID_HTTP_HEADER
          - MALFORMED_PATH_PARAM
          - MISSING_QUERY_PARAM
          - INVALID_QUERY_PARAM
          - MALFORMED_QUERY_PARAM
          - CONFIGURATION_ERROR
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    SortOrder:
      description: Sorting direction
      type: string
      enum:
      - asc
      - desc
    ValidationErrorType:
      $ref: ./error-common.yaml#/components/schemas/ValidationErrorType
    TransactionStatusEnum:
      type: string
      enum:
      - CREATED
      - PROCESSING
      - COMPLETED
      - REJECTED
    Beneficiary:
      type: object
      description: The recipient of the funds.
      properties:
        customerId:
          type: string
          format: uuid
          description: Identifier of the customer within Fuzebox.
        accountId:
          type: string
          format: uuid
          description: Target account ID.
        alias:
          $ref: '#/components/schemas/Alias'
        name:
          type: string
          description: Name of the individual or entity.
        email:
          type: string
          format: email
        country:
          $ref: '#/components/schemas/CountryCode'
        accountIdentifiers:
          $ref: accounts-common.yaml#/components/schemas/AccountIdentifier
        address:
          $ref: '#/components/schemas/Address'
    InternalReference:
      type:
      - string
      - 'null'
      maxLength: 100
      pattern: ^[a-zA-Z0-9!@#$%^&*()_+={\[\]};:?|\-]*$
      description: Unique identifier of the transaction in the partner's system. Useful for automated reconciliation and logging.
    VerificationResult:
      type: string
      description: The outcome of the Account Holder Verification (AHV) process. This indicates  the degree of similarity between the provided beneficiary name and the name  registered at the destination bank.
      enum:
      - MATCH
      - CLOSE_MATCH
      - NO_MATCH
      - ERROR
    InitiatedBy:
      type: object
      properties:
        performer:
          $ref: '#/components/schemas/Performer'
    Error409Response:
      type: object
      description: Error response for HTTP 409 Conflict.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - CONFLICT
          - IDEMPOTENCY_CONFLICT
          - RESOURCE_NOT_MODIFIABLE
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    Error405Response:
      type: object
      description: HTTP method is not supported for this URL.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - METHOD_NOT_SUPPORTED
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    Alias:
      type: object
      description: Account alias details associated with the transaction.
      properties:
        id:
          type: string
          format: uuid
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
    Sender:
      type: object
      properties:
        name:
          type: string
          description: Full name or legal entity name of the sender as registered with the bank.
        customerId:
          type: string
          format: uuid
          description: The unique identifier of the customer in Volt.
        accountId:
          type: string
          format: uuid
          description: The unique identifier of the sender's account
        accountIdentifiers:
          $ref: accounts-common.yaml#/components/schemas/AccountIdentifier
    Error404Response:
      type: object
      description: Error response for HTTP 404 Not Found.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - RESOURCE_NOT_FOUND
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    LinkObjectArray:
      type: array
      description: List of links
      items:
        $ref: '#/components/schemas/LinkObject'
    LinkObject:
      type: object
      properties:
        href:
          type: string
          format: uri
        method:
          type: string
          enum:
          - GET
          - POST
          - PATCH
          - DELETE
      required:
      - href
    Decision:
      type: object
      description: Records of manual approvals or rejections.
      properties:
        performer:
          $ref: '#/components/schemas/Performer'
        type:
          type: string
          description: Type of performer's decision.
          enum:
          - APPROVED
          - REJECTED
        subject:
          type: string
          enum:
          - ACCOUNT_HOLDER_VERIFICATION
          - TRANSACTION
        createdAt:
          type: string
          format: date-time
          description: The timestamp when the decision was initially created (ISO 8601).
    CurrencyCode:
      type: string
      description: Three-letter ISO 4217 currency code.
      example: EUR
      pattern: ^[A-Z]{3}$
    PaymentReference:
      type: string
      pattern: ^(?=.*\S)[a-zA-Z0-9\/\-?:().,'+ ]*$
      minLength: 1
      maxLength: 35
      description: 'The reconciliation reference that appears on the bank statement. This is crucial for matching the transaction with external banking records. Maximum length: 35 (EU) or 18 (UK).'
    PayoutTransactionRequest:
      type: object
      required:
      - type
      - amount
      - currency
      - beneficiary
      - paymentReference
      properties:
        type:
          type: string
          description: Must be set to PAYOUT.
        amount:
          $ref: accounts-common.yaml#/components/schemas/Amount
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        paymentReference:
          $ref: '#/components/schemas/PaymentReference'
        internalReference:
          $ref: '#/components/schemas/InternalReference'
        beneficiary:
          $ref: '#/components/schemas/OutgoingTransactionRequestBeneficiary'
        communication:
          $ref: '#/components/schemas/Communication'
    SettlementTransactionRequest:
      type: object
      required:
      - type
      - amount
      - currency
      - paymentReference
      - beneficiary
      properties:
        type:
          type: string
        amount:
          $ref: accounts-common.yaml#/components/schemas/Amount
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        paymentReference:
          $ref: '#/components/schemas/PaymentReference'
        internalReference:
          $ref: '#/components/schemas/InternalReference'
        beneficiary:
          $ref: '#/components/schemas/OutgoingTransactionRequestBeneficiaryTrustedAccount'
        communication:
          $ref: '#/components/schemas/Communication'
    OutgoingTransactionRequestBeneficiaryTrustedAccount:
      type: object
      required:
      - trustedAccountId
      properties:
        trustedAccountId:
          type: string
          format: uuid
          description: ID of a pre-approved trusted account.
    CountryCode:
      description: Alpha-2 country code
      example: DE
      pattern: ^[A-Z]{2}$
      type: string
    Error415Response:
      type: object
      description: Request contains data in an unsupported content type.
      properties:
        code:
   

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/volt-io/refs/heads/main/openapi/volt-io-transactions-api-openapi.yml