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

# Verify NIN (basic)

> Look up core NIN biodata including photo. Charged from your NGN wallet when the provider answers. Scope: `identity:write`. Requires `Idempotency-Key`.

> [!NOTE]
>
> Part of **Identity**. List prices first with [List products](https://docs.sendpadi.com/api-reference/identity/list-products.md). Live keys debit your **NGN wallet** when the provider answers (found or not found). Provider-down errors are refunded.

**1. Confirm price**

`GET /api/v1/merchant/identity/products` → copy `price` for `nin_basic`. Skip products where `available` is `false`.

**2. Verify**

The sample body is the **minimum**: `nin` only. That returns the full record. Optionally send `firstName`, `middleName`, `lastName`, `dateOfBirth`, `phoneNumber` if you also want a `match` object.

`lookupType` is `record`. Returns core biodata (name, date of birth, gender, phone) plus `record.photo` as raw base64 when the provider has it. `match` is `null` unless you sent match fields.

> [!NOTE]
>
> **Sandbox (test keys):** any 11-digit number returns a sample payload and **does not debit** your wallet. All zeros (`00000000000`) returns `IDENTITY_NOT_FOUND`.


## OpenAPI

````yaml POST /api/v1/merchant/identity/nin/basic
openapi: 3.1.0
info:
  title: SendPadi Merchant API
  version: 1.0.0
  description: >-
    Merchant REST API. Authenticate with HMAC headers (`X-Api-Key`,
    `X-Timestamp`, `X-Signature`). Generate playground headers with [Sign
    requests (playground)](/guides/sign-requests).
servers:
  - url: https://api.sendpadi.com
    description: Production (test + live keys)
security: []
paths:
  /api/v1/merchant/identity/nin/basic:
    post:
      tags:
        - identity
      summary: Verify NIN (basic)
      description: >-
        Look up core NIN biodata including photo. Charged from your NGN wallet
        when the provider answers. **Scope:** `identity:write`. Requires
        `Idempotency-Key` on this write.
      operationId: api-reference_identity_verify-nin-basic
      parameters:
        - name: X-Timestamp
          in: header
          required: true
          description: Unix time in seconds
          schema:
            type: string
        - name: X-Signature
          in: header
          required: true
          description: HMAC-SHA256 signature
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: true
          description: UUID. Required on money-moving writes.
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nin:
                  type: string
                  description: 11-digit NIN. Digits only.
                firstName:
                  type: string
                  description: Optional. Compared with the record and returned in `match`.
                middleName:
                  type: string
                  description: Optional. Compared with the record and returned in `match`.
                lastName:
                  type: string
                  description: Optional. Compared with the record and returned in `match`.
                dateOfBirth:
                  type: string
                  description: >-
                    Optional. `YYYY-MM-DD` or `DD-MM-YYYY`. Compared with the
                    record.
                phoneNumber:
                  type: string
                  description: Optional. Compared with the record using the last 10 digits.
              required:
                - nin
            example:
              nin: '22222222222'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              example:
                success: true
                data:
                  transactionId: idv_txn_001
                  reference: IDV-abc
                  status: completed
                  product: nin_basic
                  idType: nin
                  level: basic
                  charge:
                    amount: 100
                    currency: NGN
                  lookupType: record
                  record:
                    idNumber: '22222222222'
                    firstName: John
                    middleName: Michael
                    lastName: Doe
                    fullName: John Michael Doe
                    gender: Male
                    dateOfBirth: '1990-01-01'
                    phoneNumber: '08012345678'
                    photo: <base64>
                  match: null
              examples:
                success:
                  summary: Success
                  value:
                    success: true
                    data:
                      transactionId: idv_txn_001
                      reference: IDV-abc
                      status: completed
                      product: nin_basic
                      idType: nin
                      level: basic
                      charge:
                        amount: 100
                        currency: NGN
                      lookupType: record
                      record:
                        idNumber: '22222222222'
                        firstName: John
                        middleName: Michael
                        lastName: Doe
                        fullName: John Michael Doe
                        gender: Male
                        dateOfBirth: '1990-01-01'
                        phoneNumber: '08012345678'
                        photo: <base64>
                      match: null
        '400':
          description: Insufficient NGN balance
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              examples:
                insufficient_ngn_balance:
                  summary: Insufficient NGN balance
                  value:
                    success: false
                    message: >-
                      Insufficient funds. NIN costs 70 NGN; your available
                      balance is 0 NGN.
                    error: INSUFFICIENT_BALANCE
              example:
                success: false
                message: >-
                  Insufficient funds. NIN costs 70 NGN; your available balance
                  is 0 NGN.
                error: INSUFFICIENT_BALANCE
        '404':
          description: No record found (charged)
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              examples:
                no_record_found_charged_:
                  summary: No record found (charged)
                  value:
                    success: false
                    message: >-
                      No record was found for this NIN. The lookup was completed
                      and has been charged.
                    error: IDENTITY_NOT_FOUND
                    data:
                      transactionId: idv_txn_001
                      reference: IDV-abc
                      status: completed
                      refunded: false
                      charge:
                        amount: 70
                        currency: NGN
              example:
                success: false
                message: >-
                  No record was found for this NIN. The lookup was completed and
                  has been charged.
                error: IDENTITY_NOT_FOUND
                data:
                  transactionId: idv_txn_001
                  reference: IDV-abc
                  status: completed
                  refunded: false
                  charge:
                    amount: 70
                    currency: NGN
        '503':
          description: Provider unavailable (refunded)
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              examples:
                provider_unavailable_refunded_:
                  summary: Provider unavailable (refunded)
                  value:
                    success: false
                    message: >-
                      NIN verification is temporarily unavailable. Please try
                      again shortly. You have not been charged.
                    error: IDENTITY_PROVIDER_UNAVAILABLE
                    data:
                      transactionId: idv_txn_001
                      reference: IDV-abc
                      status: failed
                      refunded: true
                      charge:
                        amount: 70
                        currency: NGN
              example:
                success: false
                message: >-
                  NIN verification is temporarily unavailable. Please try again
                  shortly. You have not been charged.
                error: IDENTITY_PROVIDER_UNAVAILABLE
                data:
                  transactionId: idv_txn_001
                  reference: IDV-abc
                  status: failed
                  refunded: true
                  charge:
                    amount: 70
                    currency: NGN
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: API key id (sp_test_… / sp_live_…)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.