> ## Documentation Index
> Fetch the complete documentation index at: https://paystack-sdk.efobi.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Verification

> Methods for verifying bank accounts and card details

## Overview

The Verification class provides methods for verifying various Paystack entities including bank accounts and card BINs. This helps you validate customer information before processing payments.

## Methods

### resolveAccount

Resolves a bank account number to an account name. This is useful for confirming the account details before initiating a transfer.

<CodeGroup>
  ```typescript TypeScript theme={null}
  const result = await paystack.verification.resolveAccount({
    account_number: "0123456789",
    bank_code: "058"
  });

  if (result.data) {
    console.log(result.data.data.account_name);
    console.log(result.data.data.account_number);
  }
  ```

  ```javascript JavaScript theme={null}
  const result = await paystack.verification.resolveAccount({
    account_number: "0123456789",
    bank_code: "058"
  });

  if (result.data) {
    console.log(result.data.data.account_name);
    console.log(result.data.data.account_number);
  }
  ```
</CodeGroup>

#### Parameters

<ParamField path="account_number" type="string" required>
  The bank account number you want to verify
</ParamField>

<ParamField path="bank_code" type="string" required>
  The bank code of the bank where the account is held. You can get this from the [listBanks](/api-reference/miscellaneous#listbanks) method
</ParamField>

#### Response

<ResponseField name="status" type="boolean">
  Indicates whether the request was successful
</ResponseField>

<ResponseField name="message" type="string">
  A message describing the result
</ResponseField>

<ResponseField name="data" type="object">
  The account details

  <Expandable title="data properties">
    <ResponseField name="account_number" type="string">
      The account number that was resolved
    </ResponseField>

    <ResponseField name="account_name" type="string">
      The name on the account
    </ResponseField>
  </Expandable>
</ResponseField>

***

### validateAccount

Validates a customer's account number using their identity information. This provides enhanced verification beyond simple name resolution.

<CodeGroup>
  ```typescript TypeScript theme={null}
  const result = await paystack.verification.validateAccount({
    account_name: "John Doe",
    account_number: "0123456789",
    account_type: "personal",
    bank_code: "058",
    country_code: "NG",
    document_type: "identityNumber",
    document_number: "1234567890"
  });

  if (result.data) {
    console.log(result.data.data.verified);
    console.log(result.data.data.verificationMessage);
  }
  ```

  ```javascript JavaScript theme={null}
  const result = await paystack.verification.validateAccount({
    account_name: "John Doe",
    account_number: "0123456789",
    account_type: "personal",
    bank_code: "058",
    country_code: "NG",
    document_type: "identityNumber",
    document_number: "1234567890"
  });

  if (result.data) {
    console.log(result.data.data.verified);
    console.log(result.data.data.verificationMessage);
  }
  ```
</CodeGroup>

#### Parameters

<ParamField path="account_name" type="string" required>
  The name on the account
</ParamField>

<ParamField path="account_number" type="string" required>
  The bank account number to validate
</ParamField>

<ParamField path="account_type" type="enum" required>
  The type of account. Options: `personal`, `business`
</ParamField>

<ParamField path="bank_code" type="string" required>
  The bank code where the account is held
</ParamField>

<ParamField path="country_code" type="string" required>
  The country code (e.g., "NG" for Nigeria, "GH" for Ghana)
</ParamField>

<ParamField path="document_type" type="enum" required>
  The type of document being used for verification. Options: `identityNumber`, `passportNumber`, `businessRegistrationNumber`
</ParamField>

<ParamField path="document_number" type="string">
  The document number (optional depending on requirements)
</ParamField>

#### Response

<ResponseField name="status" type="boolean">
  Indicates whether the request was successful
</ResponseField>

<ResponseField name="message" type="string">
  A message describing the result
</ResponseField>

<ResponseField name="data" type="object">
  The validation result

  <Expandable title="data properties">
    <ResponseField name="verified" type="boolean">
      Whether the account was successfully verified
    </ResponseField>

    <ResponseField name="verificationMessage" type="string">
      A message describing the verification result
    </ResponseField>
  </Expandable>
</ResponseField>

***

### resolveCardBin

Resolves a card BIN (Bank Identification Number) to get card and bank details. The first 6 digits of a card number make up the BIN.

<CodeGroup>
  ```typescript TypeScript theme={null}
  const result = await paystack.verification.resolveCardBin({
    card_bin: "539983"
  });

  if (result.data) {
    console.log(result.data.data.bank);
    console.log(result.data.data.brand);
    console.log(result.data.data.card_type);
    console.log(result.data.data.country_name);
  }
  ```

  ```javascript JavaScript theme={null}
  const result = await paystack.verification.resolveCardBin({
    card_bin: "539983"
  });

  if (result.data) {
    console.log(result.data.data.bank);
    console.log(result.data.data.brand);
    console.log(result.data.data.card_type);
    console.log(result.data.data.country_name);
  }
  ```
</CodeGroup>

#### Parameters

<ParamField path="card_bin" type="string" required>
  The first 6 digits of the card number
</ParamField>

#### Response

<ResponseField name="status" type="boolean">
  Indicates whether the request was successful
</ResponseField>

<ResponseField name="message" type="string">
  A message describing the result
</ResponseField>

<ResponseField name="data" type="object">
  The card BIN details

  <Expandable title="data properties">
    <ResponseField name="bin" type="string">
      The card BIN that was resolved
    </ResponseField>

    <ResponseField name="brand" type="string">
      The card brand (e.g., "Visa", "Mastercard")
    </ResponseField>

    <ResponseField name="sub_brand" type="string">
      The card sub-brand
    </ResponseField>

    <ResponseField name="country_code" type="string">
      The country code where the card was issued
    </ResponseField>

    <ResponseField name="country_name" type="string">
      The country name where the card was issued
    </ResponseField>

    <ResponseField name="card_type" type="string">
      The type of card (e.g., "DEBIT", "CREDIT")
    </ResponseField>

    <ResponseField name="bank" type="string">
      The bank that issued the card
    </ResponseField>

    <ResponseField name="linked_bank_id" type="number">
      The ID of the linked bank in Paystack's system
    </ResponseField>
  </Expandable>
</ResponseField>

## Error Handling

All methods return a result object with `data` and `error` properties. Always check for errors:

```typescript theme={null}
const result = await paystack.verification.resolveAccount({
  account_number: "0123456789",
  bank_code: "058"
});

if (result.error) {
  console.error('Verification failed:', result.error.flatten());
} else if (result.data) {
  console.log('Account name:', result.data.data.account_name);
}
```

## Related Resources

<CardGroup cols={2}>
  <Card title="Miscellaneous" icon="list" href="/api-reference/miscellaneous">
    Get list of supported banks for verification
  </Card>

  <Card title="Paystack Verification API" icon="link" href="https://paystack.com/docs/api/verification/">
    Official Paystack Verification API documentation
  </Card>
</CardGroup>
