Paystack Verification API

Identity, BVN, bank account, card BIN, country, bank, and address-verification lookups used to validate customers, beneficiary accounts, and cards before transacting.

Paystack Verification API is one of 13 APIs that Paystack publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Verification, Identity, BVN, and KYC. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

paystack-verification-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Paystack Verification API
  description: Identity, BVN, account number, card BIN, country, bank, and address-verification lookups used to validate customers,
    banks, and cards before transacting.
  version: 1.0.0
  contact:
    name: Paystack Support
    url: https://support.paystack.com
    email: [email protected]
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://api.paystack.co
  description: Base API endpoint
tags:
- name: Verification
paths:
  /bvn/match:
    post:
      tags:
      - Verification
      summary: Match Service
      operationId: verification_bvnMatch
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/paths/~1bvn~1match/post/requestBody/content/application~1json/schema'
          application/json:
            schema:
              type: object
              required:
              - account_number
              - bank_code
              - bvn
              properties:
                account_number:
                  description: Bank Account Number
                  type: string
                bank_code:
                  description: You can get the list of banks codes by calling the List Bank endpoint
                  type: integer
                bvn:
                  description: 11 digits Bank Verification Number
                  type: string
                first_name:
                  description: Customer's first name
                  type: string
                middle_name:
                  description: Customer's middle name
                  type: string
                last_name:
                  description: Customer's last name
                  type: string
      responses:
        '201':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
  /bank/resolve_bvn/{bvn}:
    get:
      tags:
      - Verification
      summary: Resolve BVN
      operationId: verification_resolveBvn
      parameters:
      - name: bvn
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        '404':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
  /bank/resolve:
    get:
      tags:
      - Verification
      summary: Resolve Account Number
      operationId: verification_resolveAccountNumber
      parameters:
      - name: account_number
        in: query
        schema:
          type: integer
        example: 0022728151
      - name: bank_code
        in: query
        schema:
          type: integer
        example: '063'
      responses:
        '200':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        '404':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
  /decision/bin/{bin}:
    get:
      tags:
      - Verification
      summary: Resolve Card BIN
      operationId: verification_resolveCardBin
      parameters:
      - name: bin
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        '404':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
  /country:
    get:
      tags:
      - Verification
      summary: List Countries
      operationId: verification_listCountries
      responses:
        '200':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        '404':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
  /bank:
    get:
      tags:
      - Verification
      summary: Fetch Banks
      operationId: verification_fetchBanks
      parameters:
      - in: query
        name: country
        schema:
          type: string
      - in: query
        name: pay_with_bank_transfer
        schema:
          type: boolean
      - in: query
        name: use_cursor
        schema:
          type: boolean
      - in: query
        name: perPage
        schema:
          type: integer
      - in: query
        name: next
        schema:
          type: string
      - in: query
        name: previous
        schema:
          type: string
      - in: query
        name: gateway
        schema:
          type: string
      responses:
        '200':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        '404':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
  /address_verification/states:
    get:
      tags:
      - Verification
      summary: List States (AVS)
      operationId: verification_avs
      parameters:
      - in: query
        name: type
        schema:
          type: string
      - in: query
        name: country
        schema:
          type: string
      - in: query
        name: currency
        schema:
          type: string
      responses:
        '200':
          $ref: '#/paths/~1plan/get/responses/200'
        '401':
          $ref: '#/paths/~1plan/get/responses/401'
        '404':
          $ref: '#/paths/~1plan/get/responses/401'
        default:
          description: Server error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    Customer:
      allOf:
      - type: object
        required:
        - email
        properties:
          email:
            description: Customer's email address
            type: string
      - type: object
        properties:
          first_name:
            description: Customer's first name
            type: string
          last_name:
            description: Customer's last name
            type: string
          phone:
            description: Customer's phone number
            type: string
          metadata:
            description: Stringified JSON object of custom data
            type: string
      - type: object
        required:
        - authorization_code
        properties:
          authorization_code:
            description: Customer's authorization code to be deactivated
            type: string
      - type: object
        required:
        - customer
        properties:
          customer:
            description: Customer's code, or email address
            type: string
          risk_action:
            description: "One of the possible risk actions [ default, allow, deny ]. allow to whitelist. \ndeny to blacklist.\
              \ Customers start with a default risk action.\n"
            type: string
            enum:
            - default
            - allow
            - deny
      - type: object
        required:
        - type
        - country
        - bvn
        - bank_code
        - account_number
        properties:
          type:
            description: Predefined types of identification.
            type: string
            enum:
            - bvn
            - bank_account
          country:
            description: Two-letter country code of identification issuer
            type: string
          bvn:
            description: Customer's Bank Verification Number
            type: string
          bank_code:
            description: You can get the list of bank codes by calling the List Banks endpoint (https://api.paystack.co/bank).
            type: string
          account_number:
            description: Customer's bank account number.
            type: string
          value:
            description: Customer's identification number. Required if type is bvn
            type: string
    Error:
      type: object
      properties:
        status:
          type: boolean
        message:
          type: string
    Response:
      type: object
      properties:
        status:
          type: boolean
        message:
          type: string
        data:
          type: object
security:
- bearerAuth: []