API ReferenceBusiness Services (CAC)

Business Services (CAC)

Submit and track Corporate Affairs Commission Business Name services through POPFAB. You use your POPFAB API key. Partnership and LLC flows are not public in this portal yet.

Only the Business Name endpoints below are public right now. Partnership and LLC endpoints are not exposed in this portal yet.

CAC pricing snapshot

The table below reflects the current Business Name pricing profile shown in the portal.

Service / ProductPriceSub-serviceSub-service Price
BN APPLICATION UPDATE₦1,000.00------
BN BULK COMPLIANCE₦1,000.00------
BN BULK REGISTRATION₦2,000.00------
BN COMPLIANCE₦1,000.00BN_COMPLIANCE_ADVANCE_CHECK₦1,050.00
BN PRE-REG VALIDATION₦1,000.00------
BUSINESS NAME₦29,000.00PRIORITY_SERVICE₦1,500.00
BUSINESS NAME PARTNERSHIP₦1,000.00------
BUSINESS NAME PARTNERSHIP UPDATE₦1,000.00------
DOWNLOAD CERTIFICATE₦5,500.00------
DOWNLOAD STATUS REPORT₦5,500.00------

Business Name Registration

Use these APIs for Business Name compliance, registration, update, tracking, document retrieval, and annual returns. POPFAB holds the CAC credential and manages the CAC submission lifecycle.

ProcessPOPFAB endpointAvailability
Check name compliancePOST /v1/business-services/cac/business-names/complianceControlled rollout
Validate registration detailsPOST /v1/business-services/cac/business-names/pre-registration-validationControlled rollout
Submit sole proprietorshipPOST /v1/business-services/cac/business-names/sole-proprietorshipsControlled rollout
Update queried applicationPOST /v1/business-services/cac/business-names/updatesControlled rollout
Track applicationGET /v1/business-services/cac/business-names/{transaction_ref}Controlled rollout
Download certificatePOST /v1/business-services/cac/business-names/certificatesControlled rollout
Download status reportPOST /v1/business-services/cac/business-names/status-reportsControlled rollout

Check Business Name compliance

POST
/v1/business-services/cac/business-names/compliance

Runs CAC advanced name-compliance checks before filing. POPFAB always enables CAC’s advanceCheck option.

ParameterTypeRequiredDescription
proposed_namestringRequiredThe proposed Business Name, up to 160 characters.
line_of_businessstringRequiredThe business sector/industry, up to 255 characters.
Check a proposed namebash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/compliance \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"proposed_name":"TestQuality Ventures","line_of_business":"general_merchandise"}'
A successful compliance response can contain the CAC recommended action, suggested/similar names, and compliance/similarity scores. It is not a registration or a reservation.

Validate Business Name registration details

POST
/v1/business-services/cac/business-names/pre-registration-validation

Validates the proprietor’s details and identity payload before a Business Name submission. Run this after name compliance and before the final submission step.

Request headers

ParameterTypeRequiredDescription
AuthorizationstringRequiredBearer YOUR_POPFAB_API_KEY. A sk_test_ key selects sandbox; a sk_live_ key selects live.
Content-TypestringRequiredapplication/json

Required request body

ParameterTypeRequiredDescription
passport, signature, means_of_idstringRequiredPNG or JPEG data URL: data:image/jpeg;base64,BASE64_DATA. Large images may be rejected.
company_city, company_email, company_state, company_address, company_street_numberstringRequiredBusiness contact and address details.
business_commencement_datestringRequiredBusiness commencement date in YYYY-MM-DD format.
transaction_refstringRequiredYour unique reference for this validation attempt.
proposed_option_1, line_of_businessstringRequiredThe proposed Business Name and its business activity.
proprietor_firstname, proprietor_surname, proprietor_nationalitystringRequiredProprietor identity details.
proprietor_genderstringRequiredMALE or FEMALE.
proprietor_dobstringRequiredDate of birth in YYYY-MM-DD format.
proprietor_email, proprietor_phonenumberstringRequiredProprietor contact details. Email must be valid.
proprietor_state, proprietor_city, proprietor_lga, proprietor_postcode, proprietor_street_number, proprietor_service_addressstringRequiredProprietor residential and service-address details.
proprietor_othernamestringOptionalOther/middle name, when applicable.
The current contract is unchanged here. The recommended architecture is to keep this step lightweight and move large document blobs to the final submission stage or a dedicated upload flow when that product change lands.
Validate a Business Name applicationbash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/pre-registration-validation \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "passport": "data:image/jpeg;base64,BASE64_PASSPORT",
    "signature": "data:image/jpeg;base64,BASE64_SIGNATURE",
    "means_of_id": "data:image/jpeg;base64,BASE64_ID",
    "company_city": "Eti Osa",
    "company_email": "business@example.com",
    "company_state": "Lagos State",
    "business_commencement_date": "2026-08-01",
    "company_address": "12 Example Road",
    "company_street_number": "12",
    "transaction_ref": "BN-VALIDATION-2026-0001",
    "proposed_option_1": "Example Traders",
    "line_of_business": "Fashion design",
    "proprietor_firstname": "Jasper",
    "proprietor_surname": "Chinedu",
    "proprietor_othername": "Kelechi",
    "proprietor_gender": "MALE",
    "proprietor_nationality": "Nigerian",
    "proprietor_dob": "1980-05-25",
    "proprietor_email": "jasper@example.com",
    "proprietor_phonenumber": "+2348020686848",
    "proprietor_state": "Lagos State",
    "proprietor_city": "Eti Osa",
    "proprietor_lga": "Ado/Langbasa/Badore",
    "proprietor_postcode": "100001",
    "proprietor_street_number": "12",
    "proprietor_service_address": "Ikota Estate, Lagos"
  }'
This validation endpoint requires data:image/…;base64, image values. This differs from the partnership-submission endpoint below, which accepts raw Base64 only.

Create a sole-proprietorship Business Name application

POST
/v1/business-services/cac/business-names/sole-proprietorships

Submits a sole-proprietorship Business Name registration to CAC. Validate the application details first to reduce queried or failed submissions.

ParameterTypeRequiredDescription
AuthorizationstringRequiredBearer YOUR_POPFAB_API_KEY. A sk_test_ key selects sandbox; a sk_live_ key selects live.
priority_servicebooleanOptionalQuery parameter. Set to true to request CAC priority processing, which may incur an additional charge. Defaults to false.
Content-TypestringRequiredapplication/json

The body is the same as the pre-registration validation request, except transaction_ref is omitted. The response includes CAC’s transactionRef; retain it for later status operations.

Submit a sole proprietorshipbash
curl -X POST 'https://api.popfab.io/v1/business-services/cac/business-names/sole-proprietorships?priority_service=true' \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "passport": "data:image/jpeg;base64,BASE64_PASSPORT",
    "signature": "data:image/jpeg;base64,BASE64_SIGNATURE",
    "means_of_id": "data:image/jpeg;base64,BASE64_ID",
    "proposed_option_1": "Example Ventures",
    "line_of_business": "Content Creation",
    "business_commencement_date": "2026-08-01",
    "proprietor_firstname": "John",
    "proprietor_surname": "Doe",
    "proprietor_gender": "MALE",
    "proprietor_dob": "1990-01-21",
    "proprietor_nationality": "Nigerian",
    "proprietor_email": "john@example.com",
    "proprietor_phonenumber": "+2348046438389",
    "proprietor_state": "F.C.T",
    "proprietor_city": "Abuja",
    "proprietor_lga": "Municipal",
    "proprietor_postcode": "900108",
    "proprietor_street_number": "41",
    "proprietor_service_address": "Limpopo Street, Abuja",
    "company_email": "business@example.com",
    "company_city": "Abuja",
    "company_state": "F.C.T",
    "company_address": "89 Road, Abuja",
    "company_street_number": "41"
  }'
Successful CAC responsejson
{
  "statusCode": 200,
  "status": "OK",
  "message": "Response ok",
  "data": {
    "message": "application received",
    "transactionRef": "VAS20260703095236144",
    "statusUrl": "https://…/api/vas/portal/user/status/VAS20260703095236144"
  },
  "success": true
}
A successful submission is sent to CAC and may create a charge. Use priority_service=true only when priority processing has been approved for your account.

Check registration status

GET
/v1/business-services/cac/business-names/{transaction_ref}

Returns the current CAC status for a Business Name registration. Use the transactionRef returned by the submission response.

ParameterTypeRequiredDescription
transaction_refstringRequiredThe CAC transactionRef returned when the registration was submitted, for example VAS20260703095236144.
AuthorizationstringRequiredBearer YOUR_POPFAB_API_KEY.
Poll a registrationbash
curl https://api.popfab.io/v1/business-services/cac/business-names/VAS20260703095236144 \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY"
Status responsejson
{
  "data": {
    "status": "pending",
    "transactionRef": "VAS20260703095236144",
    "data": {
      "rcNumber": null,
      "entityName": "Example Ventures",
      "registrationDate": null,
      "tin": null
    },
    "partners": null
  },
  "message": "status - name registration",
  "success": true
}
pending means CAC is processing the application. An approved application is ready for certificate retrieval when that endpoint is enabled; a queried application requires the query reason to be addressed.

Update a queried Business Name application

POST
/v1/business-services/cac/business-names/updates

Updates a submitted Business Name application after CAC raises a query. Send the transaction reference and only the field or fields CAC asked you to correct.

ParameterTypeRequiredDescription
transaction_refstringRequiredThe CAC transactionRef returned by the original registration submission.
supporting_documentstringOptionalA corrected supporting document as a PNG, JPEG, or SVG Base64 data URL. Use this field when CAC asks for a supporting document.
passport, signature, means_of_idstringOptionalReplacement identity images as Base64 data URLs, when queried.
Business/proprietor fieldsstringOptionalAny field accepted by the sole-proprietorship request, using the same snake_case names. Include only fields CAC queried.
Replace a queried supporting documentbash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/updates \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "transaction_ref": "VAS20260317154608433",
    "supporting_document": "data:image/jpeg;base64,BASE64_SUPPORTING_DOCUMENT"
  }'
Successful update responsejson
{
  "statusCode": 200,
  "status": "OK",
  "message": "query data received successfully",
  "data": null,
  "success": true,
  "count": 0
}
Do not resend the entire application unless CAC specifically asks for it. A successful update confirms CAC received the corrected query data; continue polling the registration status.

Download approved-registration documents

POST
/v1/business-services/cac/business-names/certificates

Downloads the CAC registration certificate PDF for an approved Business Name.

POST
/v1/business-services/cac/business-names/status-reports

Downloads the CAC registration status-report PDF for an approved Business Name.

ParameterTypeRequiredDescription
rc_numberstringRequiredThe CAC registration number assigned after approval, for example 9397486.
transaction_refstringRequiredThe transactionRef from the original registration submission.
AuthorizationstringRequiredBearer YOUR_POPFAB_API_KEY.
Download a certificatebash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/certificates \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o certificate.pdf \
  -d '{"rc_number":"9397486","transaction_ref":"VAS20260317154608433"}'
Download a status reportbash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/status-reports \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o status-report.pdf \
  -d '{"rc_number":"9397486","transaction_ref":"VAS20260317154608433"}'
Both endpoints return a PDF attachment. Call registration-status polling first and download documents only after CAC reports the application as approved.

Security and document handling

POPFAB validates file signatures, applies size limits, and malware-scans identity documents before a reservation or encrypted persistence. Send raw Base64 only—do not include a data:image/... prefix. POPFAB does not expose your CAC credential or return document contents in normal API responses.

Request states

StateMeaning
funds_reservedApplication accepted and Service Balance reserved; it has not been sent to CAC.
submittingPayment was settled and POPFAB is submitting the application to CAC.
submitted / under_reviewCAC has accepted the application or is reviewing it.
approved / rejected / failedTerminal CAC/processing outcome.
unknown_outcomeA timeout happened after possible CAC submission. POPFAB reconciles before any retry.

Annual Returns (Business Name)

Annual Returns are mandatory CAC filings for registered Business Names. This portal only documents the Business Name annual-return flow.

POST
/v1/business-services/cac/business-names/annual-returns/financial-years

Returns the outstanding financial years and filing cost for a registered Business Name. Call this before filing annual returns.

ParameterTypeRequiredDescription
rc_numberstringRequiredThe CAC registration number for the Business Name, for example 4042857.
entity_typestringRequiredMust be BUSINESS_NAME.
AuthorizationstringRequiredBearer YOUR_POPFAB_API_KEY.
Get outstanding financial yearsbash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/annual-returns/financial-years \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rc_number":"4042857","entity_type":"BUSINESS_NAME"}'
Financial-year responsejson
{
  "Message": "Annual returns filing years",
  "data": {
    "financial_year": ["2024", "2025"],
    "cost_of_filling": 16200
  },
  "status": "success",
  "statusCode": 200
}
Use the returned financial_year values as input to the Annual Returns filing endpoint below.
POST
/v1/business-services/cac/business-names/annual-returns

Files one or more outstanding Business Name annual returns.

File annual returnsbash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/annual-returns \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" -H "Content-Type: application/json" \
  -d '{"rc_number":"4027374","entity_type":"BUSINESS_NAME","filing_data":[{"financial_year":"2024","net_asset":10000,"turn_over":12000,"file":"BASE64_PDF"}]}'
Filing responsejson
{"Message":"Annual returns filed successfully","data":{"annual_returns":[{"year":2024,"transactionRef":"VAS20260711163736836981412"}]},"status":"success","statusCode":200}
POST
/v1/business-services/cac/business-names/annual-returns/acknowledgement-letters

Downloads the PDF acknowledgement letter using an annual-return filing transaction reference.

Download acknowledgement letterbash
curl -X POST https://api.popfab.io/v1/business-services/cac/business-names/annual-returns/acknowledgement-letters \
  -H "Authorization: Bearer sk_test_YOUR_API_KEY" -H "Content-Type: application/json" -o acknowledgement.pdf \
  -d '{"transaction_ref":"VAS20260619081844902202295"}'
The acknowledgement-letter endpoint returns a PDF attachment. Use each transactionRef returned by a successful annual-return filing.

Current availability

Business Name name-compliance, pre-registration validation, sole-proprietorship submission, queried-application updates, registration-status polling, certificate download, status-report download, and annual returns are the currently documented CAC features. LLC and partnership flows are not publicly documented here.