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

# Utility Bill Verification

> Confirm a company's physical location from a utility bill, a meter, or a physical visit.

Utility verification ties a company to a physical location. There are three paths: upload a bill and match it to the company's address, verify an electricity meter directly, or submit the address for a physical visit.

## Match a bill to the company address

`POST /v1/verifyBill` reads an uploaded bill and checks its printed address against the company's address on file. On a pass, the company's `utility_bill` and `address_verified` flags are set. The company must already have an address on file.

```bash Upload a bill theme={null}
curl -X POST https://api.vouchmark.com/v1/verifyBill \
  -H "Authorization: Bearer $TOKEN" \
  -F "companyId=cmp_aBcD..." \
  -F "bill=@./utility-bill.jpg"
```

```json Verified theme={null}
{
  "success": true,
  "message": "Utility bill verified successfully"
}
```

A failure returns `400` with a `reason` and `suggestions`. The file is PDF, JPEG, or PNG up to 10 MB. See [Verify utility bill](/api-reference/verifications/verify-bill).

## Verify a meter from a bill image

`POST /v1/verify-utility-bill/image` reads a bill **image** (JPEG or PNG, up to 5 MB), extracts the meter number, provider, and bill date, and verifies the meter with the provider. It returns the extracted `billInfo` and the `verificationResult` rather than matching against a company address.

```bash Verify from image theme={null}
curl -X POST https://api.vouchmark.com/v1/verify-utility-bill/image \
  -H "Authorization: Bearer $TOKEN" \
  -F "bill=@./utility-bill.jpg"
```

See [Verify utility bill (image)](/api-reference/verifications/verify-bill-image).

## Verify a meter manually

`POST /v1/verify-utility-bill/manual` skips the upload entirely. Supply the meter number and provider code and the meter is verified directly. Valid providers: `ABUJA`, `KADUNA`, `JOS`, `PH`, `IBADAN`, `IKEJA`, `EKO`, `ENUGU`, `KANO`.

```bash Verify manually theme={null}
curl -X POST https://api.vouchmark.com/v1/verify-utility-bill/manual \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"meterNumber":"0123456789","provider":"IKEJA"}'
```

See [Verify utility bill (manual)](/api-reference/verifications/verify-bill-manual).

## Physical address visit

When no bill is available, submit the company's address for a physical visit through the KYC provider. Submit with `POST /v1/physicalAddress` and poll `GET /v1/physicalAddress` with the returned `reference_id` (or the `companyId`). Submission returns a `reference_id` and a `pending` status; once the visit completes, the status response carries the captured applicant, location, and photos.

```bash Submit address theme={null}
curl -X POST https://api.vouchmark.com/v1/physicalAddress \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "companyId": "cmp_aBcD...",
    "business_name": "Tekcify Technologies Ltd",
    "business_mobile": "08030000000",
    "first_name": "Jane",
    "last_name": "Doe",
    "mobile": "08031111111",
    "street": "14 Marina Road",
    "landmark": "Opposite the City Mall",
    "lga": "Lagos Island",
    "city": "Lagos",
    "state": "Lagos"
  }'
```

```bash Poll status theme={null}
curl "https://api.vouchmark.com/v1/physicalAddress?companyId=cmp_aBcD..." \
  -H "Authorization: Bearer $TOKEN"
```

All ten address fields are required. Submission is rate limited to 5 attempts per 24 hours. See [Physical address verification](/api-reference/verifications/physical-address).

## Reference

* [Verify utility bill](/api-reference/verifications/verify-bill)
* [Verify utility bill (image)](/api-reference/verifications/verify-bill-image)
* [Verify utility bill (manual)](/api-reference/verifications/verify-bill-manual)
* [Physical address verification](/api-reference/verifications/physical-address)
