Free Certificate of Insurance Checker

Upload an ACORD 25, set the limits your contract actually requires, and get a compliant-or-deficient verdict with an itemized list of what failed — and, unusually, an explicit list of anything the check could not read.

Check a certificate


Your requirements





Run the same check from your own code

This is the request the checker makes, with the requirements set above. The verification API takes it as-is — a file URL or the file's bytes — with no daily limit.

curl
curl -X POST "https://certificate-of-insurance-verification-compliance-check-api.p.rapidapi.com/verify" \
  -H "content-type: application/json" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: certificate-of-insurance-verification-compliance-check-api.p.rapidapi.com" \
  -d '{
    "file_url": "https://example.com/certs/your-coi.png",
    "requirements": {
      "general_liability": {
        "each_occurrence_min": 1000000,
        "general_aggregate_min": 2000000,
        "additional_insured_required": true
      },
      "min_days_until_expiration": 30
    }
  }'

Every requirement field, and the five ways a check silently passes a rule it never ran: Coverage Requirements as Data.

What this tool does differently

Reading a scanned, faxed, or photographed certificate is never perfect. The dangerous failure is not a blank — it is a plausible value: a limit inferred from the row above it, or a date reconstructed from a placeholder. A guessed limit looks exactly like a read one, and it can turn a deficient certificate into a clean one silently.

This check will not do that. A value it cannot trace to characters printed on the document is returned as null and reported, not filled in. Where that leaves a requirement unverifiable, the result says it can’t be determined — never a pass, and never a coverage gap that isn’t there. An absence of findings is not an absence of checking.

Nothing you upload is stored. The file is passed to the verification service, the result is returned, and the bytes are discarded with the request.

Limits of the free tool

Three checks per visitor per day, and a site-wide daily ceiling — every check runs a real extraction, which costs us real money, so the free tool is deliberately bounded. The COI / ACORD 25 Verification API has no daily limit, accepts larger files, and adds reusable requirement profiles so you don't restate your thresholds on every call.

A certificate is a snapshot issued as a matter of information only; it does not amend the underlying policy. This tool reports what the document shows against the thresholds you entered. It is reference data, not a determination, and not legal or insurance advice. See what makes a certificate deficient, and how a certificate holder differs from an additional insured for what each result means.