Registry entry
Cambodia Legal Form for Limited Company Registration (Form 101-P2)
Register a private or public limited company with Cambodia's General Department of Taxation (GDT), combining the company's legal-form declaration, business-enterprise profile, primary shareholder/representative identity, and taxpayer classification into a single application, per Form 101-P2 ("Legal Form for Limited Company (Private/Public Limited Company)"). This is the tax-registration counterpart to company incorporation — functionally analogous to obtaining a US EIN — issued alongside a Tax Identification Number (TIN) once approved; it is filed together with, not instead of, the Ministry of Commerce's own separate business-name and incorporation registration (see documents[] item 1). This schema models Form 101-P2's four data-collection sections: (§1) legal form selection; (§2) business enterprise information — company identity, contact details, registered address with geographic coordinates, share capital, and share structure; (§3) shareholder/representative information for the one physical person completing this application (gated by the form's own "same as Form 101 section II" skip logic) plus that person's declared position in the company (§3.1); and (§4) taxpayer classification information — employee counts, working conditions, and estimated-annual-turnover-based taxpayer size bracket. It also models the form's 9-item attachment checklist as documents[], and the closing declaration/signature block. Out of scope, and disclosed rather than silently omitted: §5's public-service-fee/patent-tax computation table, which requires a separate, unfetched "Annex on Public Service Fees and Patent Tax" to populate correctly; §5's four companion sub-forms (101-A Bank Account, 101-B Physical Person, 101-C Branch, 101-D Mission/Business Activity Information) and the SMEs Tax Incentive Certificate (TIC) form, each referenced by name only with no attached field-level widget in this document; and §3.1's own apparent re-declaration of company name, registration number, TIN, phone, address, and share-structure fields already captured in §2 (same labels, distinct widget names) — modelled once under §2 rather than twice, since nothing in the source distinguishes them as a second, independent fact. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Cambodia or the General Department of Taxation.
Registry entry
kh/gdt/legal-form-limited-company-registration
Authoritative source Form 101-P2 — Legal Form for Limited Company (Private/Public Limited Company)
Machine access
- Schema document
registry/kh/gdt/legal-form-limited-company-registration/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/kh/gdt/legal-form-limited-company-registration/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
60 fields, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.
Fields
-
legalFormenum requiredWhether the company being registered is a private or public limited company.
enum: private_limited_company | public_limited_company -
companyNameKhmerstring requiredThe proposed company's full legal name in Khmer script.
length: 1–300 -
companyNameLatinstring requiredThe proposed company's full legal name transliterated into Latin script.
length: 1–300 -
businessActivityKhmerstring requiredDescription of the company's business activity, in Khmer.
length: 1–500 -
businessActivityEnglishstring requiredDescription of the company's business activity, in English.
length: 1–500 -
companyMobilePhonestring requiredThe company's own mobile contact number.
length: 1–30classification: pii -
companyOfficeTelephonestring requiredThe company's office landline telephone number.
length: 1–30 -
companyEmailstring requiredThe company's own contact email address.
patternlength: 0–200 -
companyAddressstring requiredThe company's registered business address.
length: 1–500 -
companyAddressLatitudestring requiredLatitude of the company's registered business address.
length: 0–50 -
companyAddressLongitudestring requiredLongitude of the company's registered business address.
length: 0–50 -
companyAddressOwnershipenum requiredWhether the company's registered address is owned or rented.
enum: owned | rented -
totalMonthlyRentFeeKhrnumber optionalTotal monthly rent, in Cambodian riel (KHR), for the registered address. Required only when companyAddressOwnership is rented.
range: 0–∞ -
shareTypeCountenum requiredWhether the company's shares are of a single type or more than one type.
enum: single_type | multiple_types -
shareClassDescriptionstring requiredFree-text description of the company's share class(es) (e.g. ordinary, preference).
length: 1–200 -
shareCountClassAinteger requiredNumber of shares in class "A". Always required — every company has at least one share class.
range: 0–∞ -
shareCountClassBinteger optionalNumber of shares in class "B". Applicable only when shareTypeCount is multiple_types.
range: 0–∞ -
shareCountClassCinteger optionalNumber of shares in class "C", when applicable.
range: 0–∞ -
shareCountClassDinteger optionalNumber of shares in class "D", when applicable.
range: 0–∞ -
shareCountClassEinteger optionalNumber of shares in class "E", when applicable.
range: 0–∞ -
registeredCapitalKhrnumber requiredThe company's total registered capital, in Cambodian riel (KHR).
range: 0–∞ -
parValueKhrPerSharenumber requiredPar value per share, in Cambodian riel (KHR).
range: 0–∞ -
majorityShareholderNationalityenum requiredNationality (Khmer or foreign) of the shareholder(s) holding a majority of voting rights.
enum: khmer | foreign -
majorityShareholderTotalSharePercentnumber requiredPercentage of total shares held by the majority shareholder(s) identified above.
range: 0–100 -
isRepresentativeInfoSameAsForm101boolean requiredWhether the physical person completing this application already has their identity information on file via a companion Form 101. If true, the representative* fields below are not required (the form's own instruction is to skip to §3.1's position declaration only); if false, they must be completed here.
-
representativeSexenum optionalSex of the physical person completing this application.
enum: male | female -
representativeTaxIdstring optionalThe representative's own Tax Identification Number, if already assigned.
length: 0–30classification: sensitive-pii -
representativeLastNamestring optionalRepresentative's last name.
length: 1–100classification: pii -
representativeFirstNamestring optionalRepresentative's first name.
length: 1–100classification: pii -
representativeNameLatinstring optionalRepresentative's name transliterated into Latin script (last name, first name).
length: 1–200classification: pii -
representativeDateOfBirthdate optionalRepresentative's date of birth.
classification: pii -
representativeNationalitystring optionalRepresentative's nationality.
length: 1–100 -
representativeIdDocumentTypeenum optionalWhich type of identity document the representative is citing.
enum: identification_card | passport -
representativeIdDocumentNumberstring optionalThe representative's identification card or passport number, matching representativeIdDocumentType.
length: 1–30classification: sensitive-pii -
representativeIdIssuedDatedate optionalIssue date of the representative's identification card or passport.
-
representativeIdExpiryDatedate optionalExpiry date of the representative's identification card or passport.
-
representativeMobilePhonestring optionalRepresentative's mobile phone number.
length: 1–30classification: pii -
representativeEmailstring optionalRepresentative's email address.
patternlength: 0–200classification: pii -
representativeAddressstring optionalRepresentative's own residential address.
length: 1–500classification: pii -
representativePositionInCompanyenum requiredThe position the physical person completing this application holds in the company. Always required, independently of isRepresentativeInfoSameAsForm101.
enum: director | shareholder | chairman_of_board | legal_person_representative -
signageBoardstring optionalText displayed on the company's physical signage board, if any.
length: 0–200 -
additionalLegalFormenum optionalAn additional legal-form classification, when the company is also a public establishment, state-owned company, state-joint venture, or qualified investment project.
enum: public_establishment_economic | state_owned_company | state_joint_venture_company | investment_enterprise_qip -
existingRegistrationNumberstring optionalPre-existing registration number, applicable when additionalLegalForm identifies the applicant as a public institution/state-owned entity already holding one.
length: 0–50 -
existingRegistrationDatedate optionalDate of the pre-existing registration referenced in existingRegistrationNumber.
-
ministryOrInstitutionstring optionalThe supervising ministry or institution, applicable when additionalLegalForm identifies a public establishment or state-owned/joint-venture company.
length: 0–200 -
firstSuppliesDatedate requiredExpected date of the company's first supply of goods or services, required for a new registration (the transaction type this schema always models).
-
taxpayerSizeClassificationenum requiredTaxpayer size bracket, self-selected by estimated annual turnover, per the form's own three published patent-tax thresholds.
enum: large_over_10000m_khr | large_4000_to_10000m_khr | medium_1000_to_4000m_khr -
taxYearFromMonthDaystring requiredStart day/month of the company's first (partial) tax year — no year field is present on the source, since Cambodia's tax year always runs within a single calendar year (1 January-31 December).
pattern -
taxYearToMonthDaystring requiredEnd day/month of the company's first (partial) tax year.
pattern -
totalNumberOfEmployeesinteger requiredTotal number of employees.
range: 0–∞ -
totalMonthlySalaryKhrnumber requiredTotal monthly salary paid to all employees, in Cambodian riel (KHR).
range: 0–∞ -
totalNumberOfFemaleEmployeesinteger requiredTotal number of female employees. The source PDF's own English-language caption for this specific widget reads "Registration Number" — a mistranslation in the source bilingual template, disclosed in this schema's verification notes; this field follows the Khmer label's actual meaning, corroborated by the immediately following Number of Foreign Employees / Number of Female Foreign Employees fields.
range: 0–∞ -
numberOfForeignEmployeesinteger requiredNumber of foreign employees.
range: 0–∞ -
numberOfFemaleForeignEmployeesinteger requiredNumber of female foreign employees.
range: 0–∞ -
weeklyDayOffenum requiredThe company's designated weekly day off for employees.
enum: sunday | rotated_day_off | saturday_and_sunday | saturday_afternoon_and_sunday -
workingHoursPerDayOrWeekstring requiredNumber of working hours per day or week.
length: 0–20 -
hasHazardousMaterialsOrMachineryboolean requiredWhether the workplace contains hazardous machinery or raw materials.
-
declarationNoConvictionboolean requiredDeclaration that the signer has no relevant criminal conviction and is not a government official. Must be affirmatively checked to submit.
enum: true -
declarationInformationTrueAndCorrectboolean requiredDeclaration that all information and attachments in this application are true and correct. Must be affirmatively checked to submit.
enum: true -
declarationSignatureDatedate requiredDate the declaration is signed.
Verification record
This file is the source-review record for this document version, per the manual-source-review-v1 practice. It documents the provenance of the published fields and states the current verification claim honestly.
Current claim
status:draftverification.method:manual-source-review-v1verification.lastVerifiedAt:2026-07-16
This is a GovSchema Standard Research cycle (GOV-3410), a general research-analyst brief covering DMV, Business Formation, Visa, Passport, Taxes, and National ID & Civic Documents across all jurisdictions.
Why this candidate
By this cycle, Mongolia's own remaining backlog gap (National ID) had already been re-confirmed a dead end across two prior cycles (GOV-3382, GOV-3389 — both e-mongolia.mn's login-gated wizard and burtgel.gov.mn's in-person-only process), and three previously-scouted backlog candidates from an earlier cycle (Switzerland Business Formation, Kenya Visa, Rwanda National ID) had all since been authored. With no genuinely open backlog item remaining, this cycle scouted 3 new-jurisdiction candidates in parallel — Azerbaijan, Egypt, and Cambodia — across all 6 verticals each.
- Azerbaijan: Visa (
evisa.gov.az) is Cloudflare-challenge-gated; DMV (dmx.gov.az) and Business Formation (e-taxes.gov.az) both hard-403; Passport's e-service subdomain renders an empty app shell; National ID is in-person only. Only Taxes (taxes.gov.az's individual income tax declaration, 173 numbered line-item fields across a main form and 4 annexes) came back as a strong, unauthenticated candidate. - Egypt: every vertical is login-gated, reCAPTCHA-gated at account creation (not just final submit), or unreachable from this environment — no strong candidate found this cycle.
- Cambodia: the General Department of Taxation (GDT) publishes a public, unauthenticated document library at
tax.gov.kh/en/document-form, including genuine AcroForm PDFs with no login/CAPTCHA/WAF gate. Two strong candidates surfaced: Form 101-P2 (Legal Form for Limited Company — Business Formation) and Form P101 (Monthly Tax Declaration — Taxes, 294 fields, left as ready-to-author backlog for a future cycle since it is a business's periodic withholding/VAT filing rather than an individual return, and this cycle's time budget was spent on Form 101-P2). Cambodia's Visa (evisa.gov.kh, CAPTCHA-gated before the field-level DOM is reachable), Business Formation's own primary channel (Ministry of Commerce's registration portal, currently down — "Site Under Maintenance"), DMV (vehicle.mpwt.gov.kh, login-gated), Passport (online.gdi.gov.kh, login-gated), and National ID (in-person only) were all screened and found weaker or dead this cycle.
Cambodia won on source strength: a directly downloadable, genuinely unauthenticated AcroForm PDF with 179 real form-field widgets, versus Azerbaijan's single Taxes candidate and Egypt's lack of any strong candidate.
Sources examined
Primary source
- Authority: General Department of Taxation of Cambodia (GDT),
https://www.tax.gov.kh/. - Document — Form 101-P2, "Legal Form for Limited Company (Private/Public Limited Company)".
- URL (directly retrieved, HTTP 200, plain unauthenticated curl):
https://www.tax.gov.kh/u6rhf7ogbi6/gdtstream/c5a36033-1c8c-4193-aa9b-7cefc353d718 - Listing page (directly retrieved, HTTP 200):
https://www.tax.gov.kh/en/document-form, under the entry "Legal Form for Limited Company ( Private/Public Limited Company)- Form 101-P2" (published 2023-02-01 per the page's own embedded schema.org JSON-LD). Located by parsing the page's own<script type="application/ld+json">blocks (one per downloadable document) and matching the"name"field against sibling forms in the same series (101-P3 Foreign Company Branch, 101-P4 Partnership) to disambiguate the correctgdtstreamUUID, since the download links themselves carry only a "KH"/"EN" language-toggle label with no descriptive text. - File identity: genuine AcroForm PDF (
%PDF-1.5header), 1,116,490 bytes,sha256:9edd0d77f394d625eb6c38bbcbebd6a572405926339f89f4d81eed00619f5c5. - Extraction method:
pdfjs-dist@3(installed standalone in a scratch directory for extraction only, not added as a repository dependency). Bothpage.getAnnotations()(179Widgetannotations across 4 pages) andpage.getTextContent()(full bilingual Khmer/English text layer with per-glyph x/y coordinates) were extracted, then merged into one top-to-bottom, left-to-right reading-order listing per page so every widget could be matched to its nearest preceding label by position — the source's own internal AcroForm field names (Text8,Check Box4, etc.) carry no semantic meaning on their own, the same non-self-describing- widget situation this registry has handled before for other AcroForms. - Known extraction limitation, disclosed:
pdfjs-dist's text extraction rendered the form's Khmer text with visibly fragmented combining marks and subscript consonants (stray replacement glyphs interleaved with base characters — a known limitation extracting complex Brahmic-script shaping from PDF glyph runs). Rather than risk a transcription error reconstructing broken Khmer strings by hand, every field'slabelin this schema uses the form's own parallel, cleanly- extracted English caption instead. The form is genuinely bilingual with an English column printed directly beside each Khmer one throughout — this is not a translation added by this schema. - Reused internal field names, disclosed: the source PDF reuses the same internal AcroForm field name across genuinely distinct logical checkboxes on the same page — e.g.
Check Box4backs both the Type-of-Shares single/multiple toggle (§2) and, lower on the same page, the Sex male/female toggle (§3). This schema's own field names (shareTypeCount,representativeSex) are assigned by position and surrounding label text, not copied from the PDF's own (in this case ambiguous) internal field names.
- URL (directly retrieved, HTTP 200, plain unauthenticated curl):
Scope and disclosed boundaries
This schema models Form 101-P2's four data-collection sections in full:
- §1 Legal Form Information — the private/public limited company toggle.
- §2 Business Enterprise Information — company identity (Khmer/Latin name), business activity, contact details, registered address with geographic coordinates, owned/rented status, share type/count/capital structure, and majority-shareholder nationality/percentage.
- §3 Shareholder/Representative Information — the one physical person completing this application. The source form gates this entire block with its own "Is the physical person's information the same as the information provided in section II-Form 101?" checkbox: if yes, the form instructs skipping straight to §3.1; if no, the identity/contact/address fields must be completed. This schema models that gate as
isRepresentativeInfoSameAsForm101, with everyrepresentative*detail fieldrequiredWhenit isfalse— a faithful transcription of the source's own conditional instruction, not an invented convenience. - §3.1 — the representative's declared position in the company (
representativePositionInCompany), which the source's own layout always requires regardless of the §3 gate above. - §4 Taxpayer Classification Information — signage board, an optional additional legal-form classification (public establishment/state-owned/ joint-venture/QIP) with its own pre-existing registration number/date and supervising ministry, the first-supplies-of-goods-or-services date (required, since this schema always models a new registration), the three-tier taxpayer-size classification by estimated annual turnover, employee counts (total, female, foreign, female foreign), weekly day-off, working hours, and a hazardous-materials/machinery yes/no gate.
- The 9-item attachment checklist (§6), modelled as
documents[]. - The closing DECLARATION block (two required affirmative declarations plus a signature date).
Explicitly out of scope, and disclosed rather than silently omitted:
- §5's public-service-fee/patent-tax computation table (5 fee line items plus a grand total) — the form's own instruction directs the applicant to "refer to the Annex on Public Service Fees and Patent Tax" to populate this table, and that annex was not fetched this cycle. Rather than fabricate plausible-looking fee amounts/units without that source, this table is left unmodelled — a genuine gap, not an oversight.
- §5's four companion sub-forms (101-A Bank Account Information, 101-B Physical Person Information, 101-C Branch Information, 101-D Mission/Business Activity Information) and the SMEs Tax Incentive Certificate (TIC) form — each is referenced by name only in a "please fill out the information following each form below" instruction, with no attached checkbox or field-level widget in this PDF confirming whether any is in use for a given filing. Not modelled as either
fields[]ordocuments[], since fabricating a selection checkbox with no widget backing it would misrepresent the source. Left as a disclosed candidate for future companion schemas, following this registry's own precedent (e.g.mn/gasr/state-registration-limited-liability-companyleaving Form UB-12's own detail unexpanded). - §3.1's own apparent re-declaration of company name, registration number, TIN, phone, address, majority-shareholder nationality, and share-type/count fields — appearing a second time on page 2 under distinct widget names (
Text36-Text39,Address 2,Check Box7,Check Box07,A1-E1) but with labels identical to §2's own fields. Nothing in the extracted text or widget structure distinguishes these as representing a second, independent fact (e.g. a corporate shareholder's own separate registration, as opposed to the company being registered); modelled once, under §2, rather than duplicated — a disclosed judgment call, not a silent omission. - Cambodia's Ministry of Commerce business-name/incorporation registration itself — Form 101-P2 is this registry's chosen entry point because it is the only channel found this cycle that is both unauthenticated and field-level documented; the Ministry of Commerce's own
businessregistration.moc.gov.khportal returned "Site Under Maintenance" (HTTP 403) this cycle and is not modelled. Form 101-P2's own attachment checklist item 1 (Confirmation of Registration Letter issued by Ministry of Commerce) reflects that this GDT filing is a companion to, not a replacement for, that separate incorporation step. - Cambodia's other 5 verticals (DMV, Passport, Visa, Taxes, National ID) — all screened this cycle and found weaker or dead (see "Why this candidate" above); left as open backlog, with Form P101 (Monthly Tax Declaration, 294 AcroForm fields, same unauthenticated
tax.gov.khchannel) flagged as the strongest ready-to-author lead for Taxes.
Conformance fixtures
11 fixtures are committed under conformance/kh/gdt/legal-form-limited-company-registration/1.0.0/: 2 valid submissions (0 errors each — one single-share-class company at an owned address with the representative's identity already on file via Form 101, skipping the representative* detail fields; one multi-share-class company at a rented address with a full representative detail block populated) and 9 mutation-control fixtures (each expected to raise exactly 1 error): a missing required companyNameKhmer, an invalid legalForm enum value, an invalid companyEmail pattern, a missing totalMonthlyRentFeeKhr when companyAddressOwnership is rented (the requiredWhen rule), a missing shareCountClassB when shareTypeCount is multiple_types (another requiredWhen rule), a missing representativeLastName when isRepresentativeInfoSameAsForm101 is false (a third requiredWhen rule), an out-of-range majorityShareholderTotalSharePercent (>100), a declarationNoConviction set to false (violating its enum:[true] constraint), and an out-of-range taxYearFromMonthDay (violating its DD-MM pattern). All 11 were checked with a from-scratch, throwaway Node mock validator implementing this schema's own required/requiredWhen/ validation rules (not committed — consistent with this registry's established per-cycle practice of writing an independent validator rather than reusing the authoring script). Both tools/validate.mjs and tools/validate-ajv.mjs pass at 518/518 across the full registry with this schema added.
Known gaps
- Cambodia opens as this registry's 69th jurisdiction with 1 of 6 verticals (Business Formation). DMV, Passport, Visa, Taxes, and National ID remain open backlog — see "Why this candidate" above for the per-vertical screening record, including Form P101 (Monthly Tax Declaration) as a ready-to-author Taxes candidate for a future cycle.
- §5's fee-schedule table and four companion sub-forms are disclosed, out-of-scope candidates for a future companion schema/version — see "Scope and disclosed boundaries" above.
Verification method assessment
manual-source-review-v1 — a human/agent read the primary source directly and transcribed its fields. No automated re-verification tooling exists yet for this schema; nextReviewBy is set 6 months out per the practice's default cadence.
View the raw record (VERIFICATION.md)
Version history
-
1.0.0draftlatestthis pagehas verification recordschema.json
Independent and non-affiliated
GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by General Department of Taxation of Cambodia or any government. The authoritative source is always the live government form and its official instructions.