> ## 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.

# Company (CAC) Verification

> Confirm a company's CAC documents by uploading them for asynchronous review.

CAC verification is the foundation of every Vouchmark check. It is a document-driven flow: the owner uploads CAC documents, the documents are reviewed in the background, and the per-document outcome is recorded on the company. There is no live registry lookup that returns directors or a registration record — verification is based on the documents you submit.

## What gets verified

* **CAC certificate** (`cacert`) — the registration certificate.
* **CAC status report** (`cacReport`) — the company's status report.
* **MEMART** (`memartDocument`) — the Memorandum and Articles of Association. Required for RC companies (any classification other than `BUSINESS_NAME`) to clear the full bucket.

Each document ends up in one of four states: `verified`, `pending`, `failed`, or `not_submitted`.

## How it runs

CAC verification is **asynchronous**. Submission queues a background job, returns a `pending` status immediately, and the owner is emailed when the job finishes. You can also poll the status endpoint for the per-document result.

<Steps>
  <Step title="Submit documents">
    Upload the certificate (and optionally the status report and MEMART) to `POST /v1/verifyCacAndReport`. To submit one document at a time, use `POST /v1/verifyCacDocument` with a `documentType` of `cacert`, `cacReport`, or `memartDocument`.
  </Step>

  <Step title="Background review">
    A queued job reviews the documents against the company on file. The company's CAC document statuses move to `pending` while the job runs.
  </Step>

  <Step title="Poll for the outcome">
    Poll `GET /v1/cacVerificationStatus/{companyId}` for the per-document `verified` flag, status, and reason. For a live progress percentage of an in-flight job, `POST /v1/checkVerificationProgress` with the job's `progressId`.
  </Step>
</Steps>

## Call it from the API

<CodeGroup>
  ```bash Submit a batch theme={null}
  curl -X POST https://api.vouchmark.com/v1/verifyCacAndReport \
    -H "Authorization: Bearer $TOKEN" \
    -F "companyId=cmp_aBcD..." \
    -F "cacert=@./cacert.pdf" \
    -F "cacReport=@./report.pdf" \
    -F "memartDocument=@./memart.pdf"
  ```

  ```bash Submit one document theme={null}
  curl -X POST https://api.vouchmark.com/v1/verifyCacDocument \
    -H "Authorization: Bearer $TOKEN" \
    -F "companyId=cmp_aBcD..." \
    -F "documentType=cacert" \
    -F "document=@./cacert.pdf"
  ```

  ```bash Poll status theme={null}
  curl https://api.vouchmark.com/v1/cacVerificationStatus/cmp_aBcD... \
    -H "Authorization: Bearer $TOKEN"
  ```
</CodeGroup>

```json Submission response theme={null}
{
  "success": true,
  "message": "CAC documents submitted for verification. You will receive an email notification once verification is complete, or check back later for status.",
  "data": {
    "verified": false,
    "status": "pending",
    "details": { "companyId": "cmp_aBcD..." }
  }
}
```

```json Status response theme={null}
{
  "success": true,
  "message": "Success",
  "data": {
    "documents": {
      "cacert": { "verified": true, "status": "verified", "reason": null },
      "cacReport": { "verified": false, "status": "pending", "reason": null },
      "memart": { "verified": false, "status": "not_submitted", "reason": null }
    }
  }
}
```

## Notes

* Submit at least the certificate or the status report; a batch with no files is rejected.
* For RC companies the MEMART is required to clear the full CAC bucket.
* A document already in `verified` state cannot be re-submitted via the single-document endpoint (returns `409`).
* Verification is rate limited to 10 attempts per hour per caller.

## Reference

* [Verify CAC documents](/api-reference/verifications/verify-cac)
* [Verify one CAC document](/api-reference/verifications/verify-cac-document)
* [Get CAC verification status](/api-reference/verifications/cac-status)
* [Check verification progress](/api-reference/verifications/check-progress)
