Skip to main content
When a business signs up with you, a verification checks what its applicant told you against CAC’s register: the registration number, the business name, whether CAC lists it as active and, if you send their names, whether the people you’re dealing with are its officers. You get one result and each check behind it, not a copy of CAC’s record.

Verify a business

POST /v1/businesses/verifications with the number and name your applicant gave, and optionally up to 10 officer names.
Response (201)

The result

result is a summary; decide your own rules from checks. For example, you might accept partial when only status is INACTIVE and ask the applicant to file their annual returns. A number in more than one register needs type (400 type_required, as with lookups). GET /v1/businesses/verifications/{id} returns it again, free. We keep only the result and the checks (encrypted, since they hold the names you sent), never CAC’s record or its officer list.

Pricing

The current price is on the Pricing page; a charge shows as a business_verification_charge in your transactions, and amount_charged is "0.00" for a free one. Send an Idempotency-Key: a retry with the same key gets the first answer and isn’t charged again. Live verifications allow 60 a minute per organization.

When the business isn’t registered

A not_found applicant can register their business name without leaving your product: see Registrations.

Test mode

Test verifications never reach CAC. Every number is the test business: ADA FOODS VENTURES when type is BN, ADA FOODS LIMITED otherwise, active, with ADA CHIOMA OBI as its officer. So {"number": "RC 7654321", "name": "Ada Foods Ltd", "officers": ["Ada Obi"]} is a match, and a different name or officer gives the other results. ?simulate=not_found and ?simulate=inactive force those answers and ?simulate=cac_search_unavailable gives its 503. With officer names, lookup_unavailable gives the other 503 and insufficient_balance the 402; without them nothing is fetched or charged, so those two don’t apply.