v:verza
verza / docs / business-verify-api

Business pre-screen API

One call runs the CIPC number check, the VAT number check, the domain check and the email check, then adds a short list of consistency rules. Each section is the underlying check, unchanged. The price is a flat $0.02.

It does not confirm the company exists at CIPC, is VAT-registered at SARS, or holds a B-BBEE level. The body must include a non-.za domain or an email. Without one of those, the response is a free 400: supply a non-.za domain or an email; reg and vat alone are free at /v1/company-validate and /v1/vat-validate. A VAT-only body points at /v1/vat-validate. A registration-number-only body points at /v1/company-validate. A .za domain is not sent to a registry. It is listed under not_evaluated with reason za_registry_not_queried.

Endpoints

POST /v1/business-verify

Supplier pre-screen in one call: CIPC number format, VAT number format, domain age and email DNS. Structural and public DNS checks only. It does not confirm the company exists at CIPC, is VAT-registered at SARS, or holds a B-BBEE level.

$0.02 per call · example: /v1/business-verify

How you pay

API key. The free tier issues a key at /signup: send it as Authorization: Bearer <key> and calls come off a monthly allowance, no crypto anywhere in that path. Every key comes with a sandbox twin (vz_test_) that never counts against quota and accepts only the documented test inputs, so you can wire up an integration before spending a single call.

Pay per call. Send no key at all and a paid endpoint replies HTTP 402 with the exact payment requirements; an x402 client pays USDC on Base (about two seconds to settle) and retries automatically. No account, no signup, which is what makes it work for autonomous agents.

Either way, invalid input is rejected with a free 400 before any payment is challenged, so you never pay (or spend quota) to learn you made a typo.

Questions

What do I send?
POST /v1/business-verify with a non-.za domain or an email. reg, vat and a .za domain may be added, and they do not satisfy the body on their own. A body with no non-.za domain and no email is a free 400: supply a non-.za domain or an email; reg and vat alone are free at /v1/company-validate and /v1/vat-validate. A VAT-only body points at /v1/vat-validate. A registration-number-only body points at /v1/company-validate. Unknown keys are a free 400. An empty body is a 402. A well-formed body that has not been paid is a 402 at $0.02.
Does this confirm CIPC, SARS or B-BBEE?
No. The check text says it does not confirm the company exists at CIPC, is VAT-registered at SARS, or holds a B-BBEE level. There is no registry lookup beyond the public domain data the domain check already uses.
What are the consistency rules?
domain registered before company registration year? is yes when the domain's created year is earlier than the company's registration year, same year when the years match, and no when the domain is later. email domain equals supplied domain compares the email host with the domain you sent. A domain with no created date is unknown.
What about a .za domain?
The domain-age check is skipped and listed under not_evaluated with reason za_registry_not_queried. An RDAP failure on any other suffix is HTTP 503, and that response is not settled.

Related

South African ID number validation API South African VAT number validation API NCA credit agreement lawfulness API South African KYB and onboarding API South African contact validation API CIPC registration number check Domain age and registry status API IP address screening API Risk score API Guides: how the interest rate caps work zaref: NCA maximum interest rates