Volt Accounts API

Management of accounts.

Operations 4

GET /accounts List of accounts #
GET /accounts/{accountId} Get account details #
POST /accounts/{accountId}/close Close account #
GET /accounts/{accountId}/beneficiaries List of transaction beneficiaries #

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-accounts-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-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Global Accounts 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: Accounts
  description: Management of accounts.
paths:
  /accounts:
    get:
      summary: List of accounts
      operationId: get-accounts
      tags:
      - Accounts
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - $ref: '#/components/parameters/LimitParam'
      - $ref: '#/components/parameters/PageParam'
      - in: query
        name: currency[]
        schema:
          type: array
          description: Filter by Currency.
          items:
            $ref: '#/components/schemas/CurrencyCode'
          example:
          - EUR
      - in: query
        name: active
        description: Filter by Active.
        schema:
          type: boolean
      responses:
        '200':
          description: Retrieve accounts list.
          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/AccountMinimalDetails'
        '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'
  /accounts/{accountId}:
    get:
      tags:
      - Accounts
      summary: Get account details
      operationId: get-account-details
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - name: accountId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Unique identifier of the account.
      responses:
        '200':
          description: Successful account details response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountDetails'
              example:
                id: 7523a8d3-70a9-4448-822a-ba1a38e0b715
                currency: EUR
                identifications:
                - iban: DE33500105173822933531
                  bic: ALBPPLPW
                name: My EUR account
                active: true
                country: DK
                balance:
                  available: 123
                  timestamp: '2023-10-16T16:52:37+00:00'
                type: VOLT_ACCOUNT
        '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}/close:
    post:
      tags:
      - Accounts
      summary: Close account
      operationId: close-account
      description: Immediately closes the specified account. A closed account cannot be reopened or used for further transactions. Only Named Accounts can be closed.
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      - $ref: '#/components/parameters/XVoltApiVersion'
      - name: accountId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Unique identifier of the account to be closed.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountCloseRequest'
      responses:
        '200':
          description: Account successfully closed.
        '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'
  /accounts/{accountId}/beneficiaries:
    get:
      summary: List of transaction beneficiaries
      operationId: get-account-beneficiaries
      tags:
      - Accounts
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - $ref: '#/components/parameters/LimitParam'
      - $ref: '#/components/parameters/PageParam'
      - name: accountId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Unique identifier of the account
      - in: query
        name: iban
        schema:
          type: string
          example: DE07500105176551562526
          description: Filter by IBAN.
      - in: query
        name: sortCode
        schema:
          type: string
          example: 12345678
        description: Filter by SortCode number.
      - in: query
        name: accountNumber
        schema:
          type: string
          example: 12345678
        description: Filter by Account number.
      - in: query
        name: order[createdAt]
        description: Sort order by createdAt field.
        schema:
          allOf:
          - $ref: '#/components/schemas/SortOrder'
          default: desc
      responses:
        '200':
          description: List of account beneficiaries
          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/AccountBeneficiaryMinimalDetails'
              example:
              - name: John Doe
                accountIdentifiers:
                  iban: DE07500105176551562526
                  swiftBic: '123456'
        '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'
components:
  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
    AccountStatusEnum:
      type: string
      description: The current status of the account.
      enum:
      - ACTIVE
      - SUSPENDED
      - CLOSED
    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
    AccountBeneficiaryMinimalDetails:
      type: object
      properties:
        name:
          type: string
          description: Name of the beneficiary
          example: John Doe
        accountIdentifiers:
          $ref: accounts-common.yaml#/components/schemas/AccountIdentifier
    AccountBalance:
      type: object
      description: The account balance in minor units.
      properties:
        available:
          type: integer
          format: int64
        timestamp:
          type: string
          format: date-time
    AccountCloseRequest:
      type: object
      properties:
        communication:
          $ref: '#/components/schemas/Communication'
    AccountHolderMinimalDetails:
      type: object
      required:
      - entityId
      - legalName
      properties:
        entityId:
          $ref: '#/components/schemas/AccountHolderEntityId'
        legalName:
          type: string
          description: Full name or legal entity name of the account holder as registered with the bank.
    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
    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
    AccountDetails:
      type: object
      allOf:
      - $ref: '#/components/schemas/AccountMinimalDetails'
      - type: object
        properties:
          _links:
            type: object
            properties:
              self:
                $ref: '#/components/schemas/LinkObject'
    AccountType:
      type: string
      enum:
      - VOLT_ACCOUNT
      - NAMED_ACCOUNT
      - CONNECTED_ACCOUNT
    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
    AccountSubType:
      type: string
      enum:
      - BUSINESS
      - INDIVIDUAL
    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
    Identifications:
      description: A list of one or more account identifiers.
      type: array
      items:
        $ref: accounts-common.yaml#/components/schemas/AccountIdentifier
      minItems: 1
    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
    AccountHolderEntityId:
      type: string
      format: uuid
      description: 'The unique identifier of the account holder entity depends on the entity type:

        * Volt Business Customer: customer identifier

        * Merchant Clients (Business/Individual): unique identifier issued during the client onboarding process

        '
      example: 40bb9716-fb00-484e-b4a2-eb3a220b3906
    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
    LinkObject:
      type: object
      properties:
        href:
          type: string
          format: uri
        method:
          type: string
          enum:
          - GET
          - POST
          - PATCH
          - DELETE
      required:
      - href
    CurrencyCode:
      type: string
      description: Three-letter ISO 4217 currency code.
      example: EUR
      pattern: ^[A-Z]{3}$
    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:
          type: string
          description: Error code.
          enum:
          - UNSUPPORTED_MEDIA_TYPE
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    ValidationErrorDetail:
      type: object
      description: Details about a specific validation error.
      properties:
        type:
          $ref: '#/components/schemas/ValidationErrorType'
        propertyPath:
          type: string
          description: Points to the specific field or property in the incoming request that violated the validation rule.
        message:
          type: string
          description: Human-readable message about constraint violation.
    Error406Response:
      type: object
      description: API is not able to generate a response in the format defined in the Accept HTTP request header.
      properties:
        code:
          type: string
          description: Error code.
          enum:
          - MEDIA_TYPE_NOT_ACCEPTABLE
        message:
          type: string
          description: Error message.
      required:
      - code
      - message
    AccountMinimalDetails:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Id of Account.
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        identifications:
          $ref: '#/components/schemas/Identifications'
        name:
          type: string
          description: User-defined account alias.
        active:
          type: boolean
          description: Boolean flag indicating if the account is currently enabled for processing transactions.
        status:
          $ref: '#/components/schemas/AccountStatusEnum'
        country:
          $ref: '#/components/schemas/CountryCode'
        balance:
          $ref: '#/components/schemas/AccountBalance'
        type:
          $ref: '#/components/schemas/AccountType'
        subType:
          $ref: '#/components/schemas/AccountSubType'
        accountHolder:
          $ref: '#/components/schemas/AccountHolderMinimalDetails'
  responses:
    '403':
      description: '**Access denied** - Although your credentials are correct, your access to this section of the API has been disabled or limited. Subsequent requests to this endpoint will not be processed.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error403Response'
    '404':
      description: '**Not found** - The resource that you are requesting cannot be found.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error404Response'
    '401':
      description: '**Unauthorized** - Your credentials were invalid. It may be that the token you''ve used has expired. Try re-authenticating with valid or updated credentials and retry this request.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error401Response'
    '406':
      description: '**Media-type not acceptable** - API is not able to generate a response in the format defined in the Accept HTTP request header.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error406Response'
    '405':
      description: '**Method not supported** - HTTP method is not supported for this URL.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error405Response'
    '422':
      description: '**Unprocessable** - Request''s payload validation fails.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error422Response'
    '409':
      description: '**Conflict** - Modification of a resource is not possible, because current state of it does not allow it. Or `Idempotency-Key` was already used.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error409Response'
    '500':
      description: '**Internal server error** - Something went wrong and request cannot be processed due to server error. Message will contain trace ID and timestamp, which allows to investigate what went wrong.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error500Response'
    '400':
      description: '**Bad request** - Request you sent is invalid or malformed. Response will contain a description of the actual problem.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error400Response'
    '415':
      description: '**Unsupported media-type** - Request contains data in an unsupported content type.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error415Response'
  parameters:
    PageParam:
      name: page
      in: query
      description: Page index for pagination.
      schema:
        type: integer
        minimum: 1
        default: 1
    LimitParam:
      name: limit
      in: query
      description: Number of items to return per page (max 100).
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: It helps preventing duplicates in your `POST` requests. It is recommend using a **UUID** for the key, however you may use any other unique identifier you choose.
      required: true
      schema:
        type: string
        maxLength: 160
        example: 85136c79cbf9fe36bb9d05d0639c70c265c18d37
    XVoltApiVersion:
      name: X-Volt-Api-Version
      in: header
      description: Version of the API used. Currently, version `1` is the only version.
      required: true
      schema:
        type: integer
        example: 1
        enum:
        - 1
  headers:
    PaginationPageCount:
      description: Total number of available pages.
      schema:
        type: integer
        example: 6
    PaginationLimit:
      description: Number of items per page.
      schema:
        type: integer
        example: 25
    PaginationTotalItems:
      description: The absolute count of items matching the query.
      schema:
        type: integer
        example: 150
    PaginationPage:
      description: The current page number.
      schema:
        type: integer
        example: 1
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT