Skip to main content
This guide shows the recommended implementation sequence for a customer incorporation flow. Use Core concepts for the object model and the endpoint reference pages for exact request and response schemas.

Minimum happy path

  1. Create or find the customer record and save customerId.
  2. Read the jurisdiction catalog, choose country plus countryOptions, and fetch the requirements schema.
  3. Create the incorporation and save incorporation.id.
  4. Create or reuse required Commenda OS records, such as people, business entities, locations, and documents.
  5. Register participants and upsert required participant documents.
  6. Submit incorporation-level intake fields, then read validation until incorporationValidation.isComplete is true.
  7. Submit for review, then track status and active issues.

Detailed implementation sequence

IDs you’ll save

Happy path: Singapore private limited company

This example uses one individual as both director and shareholder.

1. Create the customer

Save the returned customerId.

2. Choose jurisdiction and fetch requirements

For Singapore private limited company requirements:
For the public progress stages:
Render your UI from the returned requirements schema, but treat the server response as informational. Commenda validates every intake update against the current server-side requirements.

3. Create the incorporation

Save incorporation.id. The initial incorporationStatus is usually AWAITING_CUSTOMER_INPUT.

4. Create or reuse a person

If the director/shareholder does not already exist in Commenda OS, create a reusable person:
Save the returned person id. When you register the participant, send it as a number in resource.resourceId.

5. Register participants and roles

For Singapore private limited companies, use this role/type matrix:
For Singapore private limited companies, registered shareholder participant ownershipPercentage values must total 100. Participant writes that would make shareholder ownership exceed 100 are rejected; totals below 100 are accepted while the customer is still entering shareholders, but validation remains incomplete until the total equals 100. If the shareholder is a company, create or reuse a Commenda OS business entity first:
Then register it as a corporate shareholder:
To correct roles or ownership after registration, send the full desired roles array for that participant:

6. Upload and upsert documents

Upload each source document as multipart form data to create a reusable customer file. Upserting the participant document assigns that file to the participant document slot without changing the reusable file.
The multipart upload endpoint lives in the Commenda OS Partner API because files are reusable customer resources. For a shorter file-upload walkthrough, see Upload files for incorporation.
Then upsert each file as a typed participant document:
For Singapore private limited companies, every individual director and individual shareholder needs both PASSPORT_SCAN and UTILITY_BILL.

7. Submit intake data

Intake updates are merge-based and may be partial. Use this endpoint for incorporation details such as company name options and registered office address choice.

8. Check readiness to submit

Check incorporationValidation.isComplete. When it is true, the incorporation is eligible to submit for Commenda review.

9. Submit for review

The submit endpoint refreshes validation before accepting the handoff. If the incorporation is incomplete, it returns 400 with validation details. If it succeeds, Commenda begins review. The response usually returns incorporationStatus: "IN_PROGRESS" once review starts.

10. Track status

Use this response for customer-facing progress. It includes the top-level incorporationStatus, ordered stages, and active blockingIssueIds.

Requirements guide

Validation issues use paths that point to the missing or invalid requirement. Fetch requirements after the user chooses a jurisdiction and corporation type. Render your UI from the requirements response, but decide readiness from validation returned by write/read calls because Commenda may update requirements over time.

Completion semantics

incorporationValidation.isComplete means the current data satisfies the incorporation requirements and is eligible to submit. It does not by itself hand the incorporation to Commenda.
Correction requests are represented by read-only issues and surface as BLOCKED while active.

Issues and correction requests

Commenda can create partner-visible issues when an incorporation needs correction or additional information.
Issues are read-only over the Partner API. To resolve them, fix the underlying data through the normal endpoints: update intake fields, register or update participants, upload and upsert replacement documents, or otherwise provide the requested information. Commenda resolves the issue after review. Each issue row represents one remediation episode. Resolved incorporation issues are not reopened; if the same kind of correction is needed again later, Commenda creates a new issue with a new issue.id. Active issues are also returned by the status endpoint as blockingIssueIds. If an issue scope includes stageId, that issue is attached to the matching stage’s blockedByIssueIds; otherwise it blocks the first non-completed stage. Issue codes include MISSING_INFORMATION, INVALID_INFORMATION, DOCUMENT_REQUIRED, DOCUMENT_INVALID, COMPANY_NAME_REJECTED, and OTHER. Commenda may add additional issue codes in future API updates.

Issue webhooks

Subscribe to issue events if your integration should react without polling:
The create response includes the full signing secret once. Later reads return only secretPreview. Webhook delivery is asynchronous and retried. Your endpoint should respond within 10 seconds and dedupe deliveries by eventId.

Common errors and fixes