> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paycrest.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Account

> Resolves the account holder name when available. For some fiat corridors (e.g. KES M-Pesa), `data` may be `"OK"` when the account is valid but no display name is returned — supply your own `accountName` on the order in that case.


Verify bank or mobile money account details before creating an order (legacy v1 API). Behavior matches v2 for request shape and mobile money normalization — see [Verify Account (v2)](/api-reference/general/verify-account) for mobile MSISDN formats, optional **`metadata`** (KES Till/Paybill), and when `data` is `"OK"` vs a resolved name.


## OpenAPI

````yaml openapi-v1.yaml POST /verify-account
openapi: 3.0.3
info:
  title: Paycrest Aggregator API
  version: 1.0.0
  description: >
    OpenAPI schema for the Paycrest Aggregator API. This covers sender,
    provider, and general endpoints.
servers:
  - url: https://api.paycrest.io/v1
security: []
tags:
  - name: Sender
    description: Endpoints for senders to create and manage payment orders
  - name: Provider
    description: Endpoints for providers to manage and fulfill orders
  - name: General
    description: General protocol and utility endpoints
paths:
  /verify-account:
    post:
      tags:
        - General
      summary: Verify account
      description: >
        Resolves the account holder name when available. For some fiat corridors
        (e.g. KES M-Pesa), `data` may be `"OK"` when the account is valid but no
        display name is returned — supply your own `accountName` on the order in
        that case.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyAccountRequest'
            examples:
              ngnBank:
                summary: NGN bank account
                value:
                  institution: GTBINGLA
                  accountIdentifier: '0123456789'
              kesMobile:
                summary: KES M-Pesa (local MSISDN normalized server-side)
                value:
                  institution: SAFAKEPC
                  accountIdentifier: '0712345678'
      responses:
        '200':
          description: Account verified
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  message:
                    type: string
                    example: Account name was fetched successfully
                  data:
                    type: string
                    description: >-
                      Resolved account name, or `"OK"` when valid but name
                      lookup is unavailable
                    example: JOHN DOE
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: Bad gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    VerifyAccountRequest:
      type: object
      required:
        - institution
        - accountIdentifier
      properties:
        institution:
          type: string
          description: >-
            Institution code (SWIFT code or custom PayCrest code ending with
            'PC'). See [Code Standards](/resources/code-standards) for details.
        accountIdentifier:
          type: string
          description: >
            Bank account number, mobile wallet MSISDN, Till/Paybill identifier,
            or other account identifier.


            For **mobile_money** institutions, the API normalizes phone numbers
            before verification: strips `+`, removes a leading domestic `0`, and
            adds the country dial code when missing (KES 254, UGX 256, TZS 255,
            GHS 233, MWK 265). Examples for KES M-Pesa — `0712345678`,
            `+254712345678`, and `254712345678` all normalize to `254712345678`.


            KES Till/Paybill identifiers are not normalized when `metadata`
            indicates Till/Paybill, or when the value looks like Paybill
            (`business|reference`) or Till (fewer than 9 digits).
        metadata:
          type: object
          additionalProperties: true
          description: >
            Optional. Used for KES Till/Paybill verify so phone normalization is
            not applied. Same semantics as recipient `metadata` on order create
            (e.g. `channel` Till or Paybill, `businessNumber`).
    ErrorResponse:
      type: object
      properties:
        status:
          type: string
          example: error
        message:
          type: string
          example: Error message
        data:
          nullable: true
          description: >-
            null on most errors; an array of field-level errors on validation
            failures
          oneOf:
            - type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                  message:
                    type: string
            - type: object
              additionalProperties: true

````