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

# Create Verification

> This lets you create a payee verification.

<Warning>
  This feature is coming soon. The APIs listed here are for reference only
  and are not yet available in production or sandbox.
</Warning>

```bash cURL theme={null}
curl --request POST \
  --url https://service-sandbox.tazapay.com/v3/verify/payee \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "John Doe",
    "type": "individual",
    "beneficiary_details": {
      "destination_details": {
        "type": "bank",
        "bank": {
          "account_number": "9876543210",
          "bank_codes": {
            "ifsc_code": "HDFC0001234"
          },
          "country": "IN",
          "currency": "INR"
        }
      }
    },
    "reference_id": "your-internal-ref-001"
  }'
```

```json 200 theme={null}
{
  "status": "success",
  "message": "",
  "data": {
    "id": "ver_xxxx",
    "object": "verification",
    "verification_status": "pending",
    "status_description": "",
    "beneficiary": null,
    "beneficiary_details": {
      "type": "individual",
      "address": null,
      "phone": null,
      "tax_id": null,
      "destination": null
    },
    "destination_details": {
      "type": "bank",
      "local_payment_network": null
    },
    "verified_information": null,
    "balance": {
      "holding_currency": "USD",
      "initial_balance": 100,
      "balance_impact": 10,
      "balance_remaining": 90,
      "balance_transaction_id": "txn_xxxx"
    },
    "metadata": null,
    "reference_id": "your-internal-ref-001",
    "created_at": "2026-04-07T10:00:00Z",
    "updated_at": "2026-04-07T10:00:00Z"
  }
}
```

# Initiate Verification

POST `/v3/verify/payee`

Pass exactly one of `beneficiary` (Mode A — saved beneficiary) or
`beneficiary_details` (Mode B — inline). Use
[Get Verification Metadata](/API-Reference/payee-verification/get-verification-metadata)
to determine which fields and bank codes are required for a given corridor.

#### Authorizations

<ParamField header="Authorization" type="string" required>
  Basic authentication header of the form `Basic <encoded-value>`, where
  `<encoded-value>` is the base64-encoded string `username:password`.
</ParamField>

#### Body

<ParamField body="name" type="string" required>
  Full name of the beneficiary (payee) to match against the account holder.
</ParamField>

<ParamField body="type" type="enum" required>
  Type of beneficiary entity. Allowed: `individual`, `business`.
</ParamField>

<ParamField body="beneficiary" type="string">
  ID of an existing saved beneficiary (`bnf_xxxx`). If provided, inline
  beneficiary fields (`name`, `destination_details`, etc.) are not required.
  Pass this **or** `beneficiary_details`, not both.
</ParamField>

<ParamField body="beneficiary_details" type="object">
  Inline payee details. Pass this **or** `beneficiary`, not both.

  <Expandable title="beneficiary_details">
    <ParamField body="email" type="string">
      Email address of the beneficiary.
    </ParamField>

    <ParamField body="address" type="object">
      <Expandable title="address">
        <ParamField body="line1" type="string">First line of the street address.</ParamField>
        <ParamField body="line2" type="string">Second line of the street address.</ParamField>
        <ParamField body="city" type="string">City of the beneficiary.</ParamField>
        <ParamField body="state" type="string">State or province of the beneficiary.</ParamField>
        <ParamField body="country" type="string">Country of the address (ISO 3166-1 alpha-2).</ParamField>
        <ParamField body="postal_code" type="string">Postal or ZIP code.</ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="phone" type="object">
      <Expandable title="phone">
        <ParamField body="number" type="string">Phone number of the beneficiary.</ParamField>
        <ParamField body="calling_code" type="string">International dialing code (e.g. `+91` for India).</ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="destination_details" type="object" required>
      Container object holding payout destination details.

      <Expandable title="destination_details">
        <ParamField body="type" type="enum" required>
          Type of payout destination. Allowed: `bank`, `wallet`,
          `local_payment_network`.
        </ParamField>

        <ParamField body="bank" type="object">
          Required when `destination_details.type = bank`.

          <Expandable title="bank">
            <ParamField body="account_number" type="string" required>
              Bank account number of the beneficiary.
            </ParamField>

            <ParamField body="iban" type="string">
              IBAN of the beneficiary. Required for IBAN corridors.
            </ParamField>

            <ParamField body="bank_name" type="string">
              Name of the beneficiary's bank.
            </ParamField>

            <ParamField body="branch_name" type="string">
              Name or identifier of the bank branch.
            </ParamField>

            <ParamField body="country" type="string" required>
              Country where the bank account is held (ISO 3166-1 alpha-2).
            </ParamField>

            <ParamField body="currency" type="string" required>
              Currency of the bank account (ISO 4217).
            </ParamField>

            <ParamField body="bank_codes" type="object">
              Container for bank routing identifiers. Which codes are required
              depends on the corridor — use
              [Get Verification Metadata](/API-Reference/payee-verification/get-verification-metadata)
              to check.

              <Expandable title="bank_codes">
                <ParamField body="swift_code" type="string">SWIFT/BIC code of the bank.</ParamField>
                <ParamField body="ifsc_code" type="string">IFSC code for Indian bank accounts.</ParamField>
                <ParamField body="aba_code" type="string">ABA routing number for US bank accounts.</ParamField>
                <ParamField body="sort_code" type="string">Sort code for UK bank accounts.</ParamField>
                <ParamField body="branch_code" type="string">Branch-level identifier used in specific corridors where IFSC, SWIFT, or other routing codes are insufficient. Format varies by country and bank.</ParamField>
                <ParamField body="bsb_code" type="string">BSB code for Australian bank accounts.</ParamField>
                <ParamField body="bank_code" type="string">Bank code used in specific corridors.</ParamField>
                <ParamField body="cnaps" type="string">CNAPS code for Chinese bank accounts.</ParamField>
              </Expandable>
            </ParamField>

            <ParamField body="account_type" type="string">
              Type of bank account (e.g. `savings`, `current`, `checking`).
            </ParamField>
          </Expandable>
        </ParamField>

        <ParamField body="local_payment_network" type="object">
          Required when `destination_details.type = local_payment_network`.

          <Expandable title="local_payment_network">
            <ParamField body="type" type="string">
              Type of local payment network (e.g. `upi_inr`, `pix_brl`,
              `promptpay_thb`).
            </ParamField>

            <ParamField body="deposit_key" type="string">
              Deposit key for the network (e.g. UPI handle, PIX key).
            </ParamField>

            <ParamField body="deposit_key_type" type="string">
              Type of deposit key. Conditionally required depending on
              network type.
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="tax_id" type="string">
      Tax identification number of the beneficiary.
    </ParamField>

    <ParamField body="name_local" type="string">
      Name of the beneficiary in local language or script.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="metadata" type="object">
  Additional key-value data. Max 10 keys; string values ≤ 500 chars each.
</ParamField>

<ParamField body="reference_id" type="string">
  Reference ID of the verification on your system. Echoed in the response.
</ParamField>

#### Response

<ResponseField name="id" type="string">
  Unique identifier for the verification object. Prefix: `ver_`.
</ResponseField>

<ResponseField name="object" type="string">
  Fixed value: `verification`.
</ResponseField>

<ResponseField name="verification_status" type="enum">
  Current status of the verification. Allowed: `valid`, `invalid`,
  `pending`, `not_supported`.
</ResponseField>

<ResponseField name="status_description" type="string">
  Human-readable description of the verification status.
</ResponseField>

<ResponseField name="beneficiary" type="string">
  ID of the saved beneficiary used (`bnf_xxxx`). `null` for inline
  (Mode B) verifications.
</ResponseField>

<ResponseField name="beneficiary_details" type="object">
  Echo of the beneficiary details submitted in the request or retrieved
  from the saved beneficiary object.

  <Expandable title="beneficiary_details">
    <ResponseField name="type" type="string">
      Type of beneficiary entity (`individual` or `business`).
    </ResponseField>

    <ResponseField name="address" type="object">
      <Expandable title="address">
        <ResponseField name="city" type="string">City of the beneficiary.</ResponseField>
        <ResponseField name="country" type="string">Country of the beneficiary (ISO 3166-1 alpha-2).</ResponseField>
        <ResponseField name="line1" type="string">First line of the street address.</ResponseField>
        <ResponseField name="line2" type="string">Second line of the street address.</ResponseField>
        <ResponseField name="postal_code" type="string">Postal or ZIP code.</ResponseField>
        <ResponseField name="state" type="string">State or province of the beneficiary.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="phone" type="object">
      <Expandable title="phone">
        <ResponseField name="calling_code" type="string">International dialing code (e.g. `+91` for India).</ResponseField>
        <ResponseField name="number" type="string">Phone number of the beneficiary.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="tax_id" type="string">
      Tax identification number of the beneficiary.
    </ResponseField>

    <ResponseField name="destination" type="string">
      ID of the destination object associated with this beneficiary. `null`
      if inline `destination_details` were passed.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="destination_details" type="object">
  Destination details echoed from the request.

  <Expandable title="destination_details">
    <ResponseField name="type" type="string">
      Type of payout destination (e.g. `bank`, `local_payment_network`).
    </ResponseField>

    <ResponseField name="local_payment_network" type="object">
      Present when `destination_details.type = local_payment_network`.

      <Expandable title="local_payment_network">
        <ResponseField name="type" type="string">Type of local payment network (e.g. `pix_brl`, `upi_inr`).</ResponseField>
        <ResponseField name="deposit_key" type="string">Deposit key for the network.</ResponseField>
        <ResponseField name="deposit_key_type" type="string">Type of deposit key.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="verified_information" type="object">
  Provider-returned verification result. Present when
  `verification_status.status = valid`.

  <Expandable title="verified_information">
    <ResponseField name="name_match_details" type="object">
      <Expandable title="name_match_details">
        <ResponseField name="type" type="string">Scoring methodology used by the provider (e.g. `continuous`, `discrete`).</ResponseField>
        <ResponseField name="value" type="float">Normalised confidence score from 0 to 1 as returned by the provider.</ResponseField>
        <ResponseField name="summary" type="enum">Tazapay normalised match classification. Allowed: `strong_match`, `partial_match`, `no_match`.</ResponseField>
        <ResponseField name="matched_name_translation" type="string">Translation of the matched name in local script, if available.</ResponseField>
        <ResponseField name="corrected_name_returned" type="string">Corrected or suggested name returned by the provider where a close but imperfect match was found.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="account_exists" type="boolean">
      Indicates whether the account was found and recognised at the bank.
    </ResponseField>

    <ResponseField name="beneficiary_type" type="string">
      Whether the account belongs to an `individual` or `business`.
    </ResponseField>

    <ResponseField name="bank" type="object">
      <Expandable title="bank">
        <ResponseField name="account_number" type="string">Bank account number of the beneficiary.</ResponseField>
        <ResponseField name="account_type" type="string">Type of bank account (e.g. `savings`, `current`, `checking`).</ResponseField>

        <ResponseField name="bank_codes" type="object">
          <Expandable title="bank_codes">
            <ResponseField name="swift_code" type="string">SWIFT/BIC code of the bank.</ResponseField>
            <ResponseField name="ifsc_code" type="string">IFSC code of the bank.</ResponseField>
            <ResponseField name="aba_code" type="string">ABA routing number of the bank.</ResponseField>
            <ResponseField name="sort_code" type="string">Sort code of the bank.</ResponseField>
            <ResponseField name="branch_code" type="string">Branch code of the bank.</ResponseField>
            <ResponseField name="bsb_code" type="string">BSB code of the bank.</ResponseField>
            <ResponseField name="bank_code" type="string">Bank code of the bank.</ResponseField>
            <ResponseField name="cnaps" type="string">CNAPS code of the bank.</ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="bank_name" type="string">Name of the beneficiary's bank.</ResponseField>
        <ResponseField name="branch_name" type="string">Name or identifier of the bank branch.</ResponseField>
        <ResponseField name="address" type="string">Address of the beneficiary's bank as returned by the provider.</ResponseField>
        <ResponseField name="country" type="string">Country where the bank account is held (ISO 3166-1 alpha-2).</ResponseField>
        <ResponseField name="currency" type="string">Currency of the bank account (ISO 4217).</ResponseField>
        <ResponseField name="payment_scheme_eligibility" type="string">Payment schemes the account is eligible for. Applicable to IBAN corridors only (e.g. `SEPA Credit Transfer`, `SEPA Instant`).</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="transaction_activity_details" type="object">
      Transaction activity details returned by the provider (Kinexys only).

      <Expandable title="transaction_activity_details">
        <ResponseField name="transaction_activity" type="boolean">Indicates whether recent transaction activity was detected on the account.</ResponseField>
        <ResponseField name="transaction_activity_since" type="date">Date from which transaction activity was checked.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="balance" type="object">
  Balance snapshot at the time of this verification.

  <Expandable title="balance">
    <ResponseField name="holding_currency" type="string">
      Currency from which the merchant is charged for this verification.
      Either `USD` or the merchant's primary currency, depending on which
      is utilised.
    </ResponseField>

    <ResponseField name="initial_balance" type="integer">
      Balance of the holding currency before this deduction.
    </ResponseField>

    <ResponseField name="balance_impact" type="integer">
      Amount consumed for this verification.
    </ResponseField>

    <ResponseField name="balance_remaining" type="integer">
      Balance of the holding currency remaining after this deduction.
    </ResponseField>

    <ResponseField name="balance_transaction_id" type="string">
      Transaction ID of the balance debit entry.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="metadata" type="object">
  Key-value map of merchant-defined metadata. Echoed from the request if
  provided. Max 10 keys; string values ≤ 500 chars each.
</ResponseField>

<ResponseField name="reference_id" type="string">
  Your reference ID echoed from the request.
</ResponseField>

<ResponseField name="created_at" type="timestamp">
  Timestamp when the verification object was created.
</ResponseField>

<ResponseField name="updated_at" type="timestamp">
  Timestamp of the last status update.
</ResponseField>
