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

# Verify CLABEs

> Verify an account holder's information before sending them a full payout

Account verification confirms a Mexican bank account identified by its standardized Mexican bank account number (CLABE). Fintoc sends a 0.01 MXN micro-deposit from your account balance to the target CLABE. When the verification completes, Fintoc returns the account holder's information.

## Create an account verification

An account verification creates a 0.01 MXN `Transfer` from your root `Account` to retrieve the target account holder's information. Because this call moves money from your account, you must sign the request with a JSON Web Signature (JWS). See [setting up JWS keys](/docs/transfers/transfers-setup/setting-up-jws-keys).

<CodeGroup>
  ```curl cURL theme={null}
  curl --request POST \
       --url https://api.fintoc.com/v2/account_verifications \
       --header 'Authorization: YOUR_TEST_SECRET_API_KEY' \
       --header 'Fintoc-JWS-Signature: YOUR_JWS_SIGNATURE' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '
  {
    "account_number": "000000000000000000"
  }
  '
  ```

  ```node Node theme={null}
  const verification = await fintoc.v2.accountVerifications.create({
    account_number: '000000000000000000',
  });
  ```

  ```python Python theme={null}
  verification = client.v2.account_verifications.create(
      account_number="000000000000000000"
  )
  ```
</CodeGroup>

When you request an account verification, the API returns an `account_verification` object in `pending` status. The holder fields are blank in this initial response; they populate once the verification succeeds. The response looks like this:

```json theme={null}
{
  "id": "accv_a1b2c3d4e5f6g7h8",
  "object": "account_verification",
  "status": "pending",
  "reason": null,
  "transfer_id": "tr_a1b2c3d4e5f6g7h8",
  "counterparty": {
    "account_number": "000000000000000000",
    "holder_id": null,
    "holder_name": null,
    "account_type": "clabe",
    "institution": {
      "id": "mx_banco_bbva",
      "name": "BBVA Mexico",
      "country": "mx"
    }
  },
  "mode": "test",
  "receipt_url": null,
  "transaction_date": null
}
```

## Monitor verification status

When Fintoc retrieves the transfer and account holder information, it sends an `account_verification.succeeded` webhook. This event includes the account holder's information in a succeeded `account_verification` object. The event looks like this:

```json theme={null}
{
  "id": "evt_a4xK32BanKWYn",
  "type": "account_verification.succeeded",
  "object": "event",
  "mode": "test",
  "created_at": "2020-04-17T00:00:00.000Z",
  "data": {
    "account_verification_id": "accv_a1b2c3d4e5f6g7h8",
    "object": "account_verification",
    "status": "succeeded",
    "reason": null,
    "transfer_id": "tr_a1b2c3d4e5f6g7h8",
    "counterparty": {
      "account_number": "000000000000000000",
      "holder_id": "AAA010101AAA",
      "holder_name": "Test Customer 1",
      "account_type": "clabe",
      "institution": {
        "id": "mx_banco_bbva",
        "name": "BBVA Mexico",
        "country": "mx"
      }
    },
    "mode": "test",
    "receipt_url": "https://www.banxico.org.mx/cep/",
    "transaction_date": "2020-04-17T00:00:00.000Z"
  }
}
```

If Fintoc cannot retrieve the information, you receive an `account_verification.failed` webhook with a `reason` field explaining why the verification failed.

For more on receiving webhooks with Fintoc, see the [webhooks guide](/docs/resources/webhooks-walkthrough).
