Volt Account Holder Verification API

Verification services for ensuring beneficiary account ownership.

Operations 3

GET /account-holder-verifications/{id} Get account holder verification details #
POST /account-holder-verifications/{id}/approve Approve account holder verification #
POST /account-holder-verifications/{id}/reject Reject account holder verification #

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-account-holder-verification-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-account-holder-verification-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Global Api Accounts Account Holder Verification 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: Account Holder Verification
  description: Verification services for ensuring beneficiary account ownership.
paths:
  /account-holder-verifications/{id}:
    get:
      summary: Get account holder verification details
      operationId: get-account-holder-verification-details
      tags:
      - Account Holder Verification
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - name: id
        in: path
        description: The unique identifier of the account holder verification.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Verification status and name-matching results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountHolderVerificationDetails'
        '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'
  /account-holder-verifications/{id}/approve:
    post:
      summary: Approve account holder verification
      operationId: approve-account-holder-verification
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - $ref: '#/components/parameters/XVoltTestingScenario'
      - name: id
        in: path
        description: Identifier of the account holder verification.
        required: true
        schema:
          type: string
          format: uuid
      tags:
      - Account Holder Verification
      responses:
        '202':
          description: Accepted approval of account holder verification with the matching ID.
        '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'
  /account-holder-verifications/{id}/reject:
    post:
      summary: Reject account holder verification
      operationId: reject-account-holder-verification
      parameters:
      - $ref: '#/components/parameters/XVoltApiVersion'
      - name: id
        in: path
        description: Identifier of the account holder verification.
        required: true
        schema:
          type: string
          format: uuid
      tags:
      - Account Holder Verification
      responses:
        '202':
          description: Accepted rejection request of account holder verification with the matching ID.
        '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:
  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
    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
    VerificationLink:
      type: object
      properties:
        self:
          $ref: '#/components/schemas/LinkObject'
        transaction:
          $ref: '#/components/schemas/LinkObject'
      additionalProperties: false
    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
    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
    ValidationErrorType:
      $ref: ./error-common.yaml#/components/schemas/ValidationErrorType
    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
    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
    AccountHolderVerificationDetails:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Id of Account Holder Verification Process.
        transactionId:
          type: string
          format: uuid
          description: Id of Transaction.
        status:
          type: string
          description: Status of Account Holder Verification Process.
          enum:
          - COMPLETED
          - PROCESSING
          - FAILED
        accountHolderName:
          type: object
          properties:
            requested:
              type: string
              description: The name provided by the merchant for verification.
            returned:
              type: string
              description: The actual name retrieved from the bank's records.
        result:
          $ref: '#/components/schemas/VerificationResult'
        executedAt:
          type: string
          format: date-time
          description: Timestamp of Account Holder Verification Execution.
        decision:
          $ref: '#/components/schemas/Decision'
        _links:
          $ref: '#/components/schemas/VerificationLink'
    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
    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).
    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.
    XVoltTestingScenario:
      type: string
      enum:
      - PAYOUT_REJECTED
      - ACCOUNT_HOLDER_VERIFICATION_CLOSE_MATCH
      - ACCOUNT_HOLDER_VERIFICATION_NO_MATCH
      - ACCOUNT_HOLDER_VERIFICATION_ERROR
      - ONBOARDING_REJECTED
      - ONBOARDING_ADDITIONAL_INFO_REQUIRED
      - ONBOARDING_ADDITIONAL_INFO_REQUIRED_NAME_MISMATCH
      - ONBOARDING_EXPIRED
      - ORDER_NAMED_ACCOUNTS_FAILED
    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
  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:
    XVoltTestingScenario:
      name: X-Volt-Testing-Scenario
      in: header
      description: '[SANDBOX ONLY] used to trigger specific transaction failure or verification mocks.'
      required: false
      schema:
        $ref: '#/components/schemas/XVoltTestingScenario'
    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
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT