Minimum happy path
- Create or find the customer record and save
customerId. - Read the jurisdiction catalog, choose
countrypluscountryOptions, and fetch the requirements schema. - Create the incorporation and save
incorporation.id. - Create or reuse required Commenda OS records, such as people, business entities, locations, and documents.
- Register participants and upsert required participant documents.
- Submit incorporation-level intake fields, then read validation until
incorporationValidation.isCompleteistrue. - 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
customerId.
2. Choose jurisdiction and fetch requirements
3. Create the incorporation
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: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: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:
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.
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
incorporationValidation.isComplete. When it is true, the incorporation is eligible to submit for Commenda review.
9. Submit for review
400 with validation details. If it succeeds, Commenda begins review. The response usually returns incorporationStatus: "IN_PROGRESS" once review starts.
10. Track status
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.
BLOCKED while active.
Issues and correction requests
Commenda can create partner-visible issues when an incorporation needs correction or additional information.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:secretPreview.
Webhook delivery is asynchronous and retried. Your endpoint should respond within 10 seconds and dedupe deliveries by eventId.