{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "kh/gdt/patent-tax-return",
  "version": "1.0.0",
  "title": "Cambodia Patent Tax Return (Form PR 008)",
  "description": "File Cambodia's annual Patent Tax (Tax on Business Registration, ពន្ធប៉តង់) return with the General Department of Taxation (GDT), per Form PR 008 (\"Return for Patent Tax\"). Patent tax is an annual licence-style tax every registered enterprise in Cambodia pays for the right to carry on business for a given calendar year; this return declares the enterprise's business activities and the resulting tax due, and is a companion sibling to the already-published kh/gdt/monthly-vat-return and kh/gdt/monthly-tax-declaration schemas on the same unauthenticated tax.gov.kh channel. This schema models the return's own page 1 (application year, taxpayer identification, tax-office designation, an optional differs-from-registration head-office address block, business-premises ownership/rental declaration, up to four business-activity/tax-amount line items, and the subtotal/additional-tax/interest/total computation) plus page 2's attachment checklist and declarant date. Out of scope, and disclosed rather than silently omitted: the form's own \"Form PR 008_1\" continuation annex (bundled in the same PDF as this return's page 3), used only when an enterprise has more than four business activities to declare, and the page-2 \"TAX OFFICIAL USE ONLY\" block (payment confirmation, bank account, receipt number), which is staff-only annotation and not applicant input. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Cambodia or the General Department of Taxation.",
  "status": "draft",
  "jurisdiction": {
    "country": "KH",
    "level": "national"
  },
  "authority": {
    "name": "General Department of Taxation of Cambodia",
    "abbreviation": "GDT",
    "url": "https://www.tax.gov.kh/"
  },
  "process": {
    "type": "filing",
    "language": "km"
  },
  "source": {
    "url": "https://www.tax.gov.kh/u6rhf7ogbi6/gdtstream/edebc078-4dbe-4415-97bf-c5dc9c2bbed5",
    "retrievedAt": "2026-07-16",
    "documentRef": "Form PR 008 — Return for Patent Tax (update 16/01/2019)"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-16",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-16",
    "notes": "GovSchema Standard Research cycle GOV-3426, deepening Cambodia's Taxes vertical with a schema the GOV-3417 cycle had explicitly sized/screened as ready-to-scope backlog but left unauthored: 'Return for Patent Tax- Form PR 008' (80 AcroForm widgets across 3 pages, the smallest of three disclosed sibling candidates alongside Withholding Tax Form WT 03 (327 widgets) and Tax on Salary Form TOS 01 (292 widgets), both still left as backlog). Cambodia's other four verticals (DMV, Passport, Visa, National ID) were re-confirmed weak/dead in the GOV-3410 cycle and not re-screened this cycle. Re-fetched tax.gov.kh's own document-form listing (https://www.tax.gov.kh/en/document-form/page/3, HTTP 200) and located the Form PR 008 entry under its 'ANNUAL TAX RETURN FORM' category (distinct from the 'MONTHLY TAX RETURN FORM' category the VAT 200/P101 siblings are listed under, consistent with patent tax being an annual rather than monthly obligation) — applied the same forward-search-from-title convention GOV-3417 established to avoid the listing page's off-by-one previous-row link bug, and cross-checked the resulting URL against the byte size/widget count GOV-3417 had already recorded for this exact candidate. File identity: genuine AcroForm PDF (%PDF-1.5 header), 1,712,399 bytes, sha256:432decc7ef1ca56d4434c05da44b3a2fa417784837c3041ecad3fc16bbf673fc. Extraction method: pdfjs-dist@3 (installed standalone in a scratch directory for extraction only, not added as a repository dependency), using getAnnotations({intent:'display'}) merged by page-relative x/y position with getTextContent()'s bilingual Khmer/English text layer, since the source PDF's internal field names (Text1, Text2, Check Box5, etc.) are entirely non-descriptive sequence numbers rather than semantic labels. Confirmed 43 widgets on page 1, 5 on page 2, and 32 on page 3 (80 total, matching the GOV-3417 scouting figure exactly). Two shared field names recur across mutually-exclusive widget pairs in the same manner GDT uses elsewhere in this registry's kh/gdt schemas (e.g. 'Check Box33' in kh/gdt/monthly-tax-declaration): 'Check Box5' (Department of Large Taxpayers vs Tax Branch), 'Check Box6' (head-office address same as registration: Yes vs No), 'Check Box7' (business premises owned vs rented), 'Check Box8' (has property ID number, owned-branch: No vs Yes), and 'Check Box9' (has property ID number, rented-branch: No vs Yes) — each pair modelled as a single logical field by position rather than as two independent booleans. Page 3 ('FORM PR 008_1 / ADDITIONAL BUSINESS ACTIVITIES', 32 widgets: a repeated TIN/enterprise-name header plus 11 further activity/tax-amount row pairs, subtotal, and its own date/signature/name/position block) is the form's own explicitly-referenced continuation annex for enterprises with more than four business activities ('please fill additional form PR 008_01' — page 1's own instruction text) — confirmed present but left unmodelled as a disclosed future companion schema, the same treatment this registry gave kh/gdt/monthly-vat-return's own page-2 annex. Page 2's 'TAX OFFICIAL USE ONLY' block (payment confirmation checkbox, bank account number, bank name, receipt number, supervisor sign-off) is staff-only and excluded from fields[], consistent with equivalent staff-only blocks excluded elsewhere in this registry; the declarant's own Name/Position lines on page 2 have no fillable widget (printed lines for a physical signature only), so only the declaration date (Text33/34/35, DD/MM/YYYY) is modelled from that block. No submission was made and no live tax.gov.kh account was created or required to author this schema."
  },
  "maturity": {
    "level": "structural-reference",
    "criteria": {
      "structuralReference": true,
      "verifiedSchema": false,
      "agentReadySchema": false,
      "executionTestedSchema": false
    },
    "method": "maturity-self-assessment-v1",
    "assertedBy": "GovSchema Engineering (Standards Engineer)",
    "assertedAt": "2026-07-16"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "taxYear",
      "label": "Applying for patent tax for the year of",
      "type": "integer",
      "required": true,
      "description": "The calendar year this patent tax return applies to.",
      "sourceRef": "Header, widget Text1",
      "validation": { "minimum": 2000, "maximum": 2100 }
    },
    {
      "name": "taxIdentificationNumber",
      "label": "Tax Identification Number (TIN)",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The enterprise's Tax Identification Number, in the source's own two-box format: a 4-character prefix followed by a 9-digit number.",
      "sourceRef": "Header, widgets Text2 (4-char)/Text3 (9-digit)",
      "validation": { "pattern": "^[A-Za-z0-9]{4}[0-9]{9}$", "maxLength": 13 }
    },
    {
      "name": "enterpriseName",
      "label": "Name of enterprise",
      "type": "string",
      "required": true,
      "description": "The registered name of the enterprise filing this return.",
      "sourceRef": "Header, widget Text4",
      "validation": { "minLength": 1, "maxLength": 300 }
    },
    {
      "name": "enterpriseNameLatin",
      "label": "Name of enterprise in Latin",
      "type": "string",
      "required": true,
      "description": "The enterprise's registered name transliterated into Latin script.",
      "sourceRef": "Header, widget Text5",
      "validation": { "minLength": 1, "maxLength": 300 }
    },
    {
      "name": "reportingOfficeType",
      "label": "Department of large tax payers / Tax branch",
      "type": "enum",
      "required": true,
      "description": "Which General Department of Taxation office this filer reports to.",
      "sourceRef": "Header — shared widget \"Check Box5\", two positioned instances (Department of Large Taxpayers / Tax Branch)",
      "validation": { "enum": ["large_taxpayer_department", "tax_branch"] }
    },
    {
      "name": "taxOfficeBranchName",
      "label": "Tax branch",
      "type": "string",
      "required": false,
      "description": "Name of the specific tax branch this filer reports to. Required only when reportingOfficeType is tax_branch.",
      "sourceRef": "Header, widget Text6",
      "validation": { "maxLength": 200 },
      "requiredWhen": { "field": "reportingOfficeType", "equals": "tax_branch" }
    },
    {
      "name": "isHeadOfficeAddressSameAsRegistered",
      "label": "Is your head office address the same as when the company registered for the first time?",
      "type": "boolean",
      "required": true,
      "description": "Whether the enterprise's current head-office address matches the address on file from its original tax registration. When false, the address and contact fields below must be completed.",
      "sourceRef": "Section 1 — shared widget \"Check Box6\", two positioned instances (Yes / No)"
    },
    {
      "name": "addressHouseNumberOrBuilding",
      "label": "House No./Building",
      "type": "string",
      "required": false,
      "description": "House or building number of the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text7",
      "validation": { "maxLength": 100 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "addressStreet",
      "label": "Street",
      "type": "string",
      "required": false,
      "description": "Street of the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text8",
      "validation": { "maxLength": 200 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "addressVillage",
      "label": "Village",
      "type": "string",
      "required": false,
      "description": "Village of the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text9",
      "validation": { "maxLength": 100 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "addressCommune",
      "label": "Commune",
      "type": "string",
      "required": false,
      "description": "Commune (Sangkat) of the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text10",
      "validation": { "maxLength": 100 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "addressDistrictOrKhan",
      "label": "District/Khan",
      "type": "string",
      "required": false,
      "description": "District or Khan of the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text11",
      "validation": { "maxLength": 100 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "addressProvinceOrMunicipality",
      "label": "Province/Municipality",
      "type": "string",
      "required": false,
      "description": "Province or Municipality of the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text12",
      "validation": { "maxLength": 100 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "email",
      "label": "Email",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Email address for the enterprise's current head-office address. Required only when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Widget Text13",
      "validation": { "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$", "maxLength": 200 },
      "requiredWhen": { "field": "isHeadOfficeAddressSameAsRegistered", "equals": false }
    },
    {
      "name": "poBox",
      "label": "P.O. Box / Electronic mail box",
      "type": "string",
      "required": false,
      "description": "Post office box or electronic mailbox for the enterprise's current head-office address, if any.",
      "sourceRef": "Widget Text14",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "mobilePhone",
      "label": "Mobile phone",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Mobile telephone number for the enterprise's current head-office address, if any.",
      "sourceRef": "Widget Text15",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "officeTelephone",
      "label": "Office telephone",
      "type": "string",
      "required": false,
      "classification": "pii",
      "description": "Office telephone number for the enterprise's current head-office address, if any.",
      "sourceRef": "Widget Text16",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "fax",
      "label": "Fax",
      "type": "string",
      "required": false,
      "description": "Fax number for the enterprise's current head-office address, if any.",
      "sourceRef": "Widget Text17",
      "validation": { "maxLength": 30 }
    },
    {
      "name": "propertyOwnershipType",
      "label": "Is the property of this above address owned by business or rented?",
      "type": "enum",
      "required": true,
      "description": "Whether the enterprise's business premises are owned by the business or rented.",
      "sourceRef": "Widget \"Check Box7\", two positioned instances (Owned / Rental)",
      "validation": { "enum": ["owned", "rented"] }
    },
    {
      "name": "hasPropertyIdNumberOwned",
      "label": "Does this business location have property identification number (PIN)?",
      "type": "boolean",
      "required": false,
      "description": "Whether the owned business premises has a Property Identification Number (PIN). Required only when propertyOwnershipType is owned.",
      "sourceRef": "Widget \"Check Box8\", two positioned instances (No / Yes)",
      "requiredWhen": { "field": "propertyOwnershipType", "equals": "owned" }
    },
    {
      "name": "propertyIdNumberOwned",
      "label": "Property identification number (PIN)",
      "type": "string",
      "required": false,
      "description": "The owned business premises' Property Identification Number. Required only when hasPropertyIdNumberOwned is true.",
      "sourceRef": "Widget Text18",
      "validation": { "maxLength": 11 },
      "requiredWhen": { "field": "hasPropertyIdNumberOwned", "equals": true }
    },
    {
      "name": "monthlyRentalFee",
      "label": "Rental fee per month",
      "type": "number",
      "required": false,
      "description": "Monthly rental fee for the business premises, in Cambodian riel (KHR). Required only when propertyOwnershipType is rented.",
      "sourceRef": "Widget Text19",
      "validation": { "minimum": 0 },
      "requiredWhen": { "field": "propertyOwnershipType", "equals": "rented" }
    },
    {
      "name": "hasPropertyIdNumberRented",
      "label": "Does this business location have property identification number (PIN)?",
      "type": "boolean",
      "required": false,
      "description": "Whether the rented business premises has a Property Identification Number (PIN). Required only when propertyOwnershipType is rented.",
      "sourceRef": "Widget \"Check Box9\", two positioned instances (No / Yes)",
      "requiredWhen": { "field": "propertyOwnershipType", "equals": "rented" }
    },
    {
      "name": "propertyIdNumberRented",
      "label": "Property identification number (PIN)",
      "type": "string",
      "required": false,
      "description": "The rented business premises' Property Identification Number. Required only when hasPropertyIdNumberRented is true.",
      "sourceRef": "Widget Text20",
      "validation": { "maxLength": 11 },
      "requiredWhen": { "field": "hasPropertyIdNumberRented", "equals": true }
    },
    {
      "name": "businessActivity1Description",
      "label": "Business activity (1)",
      "type": "string",
      "required": true,
      "description": "Description of the enterprise's first declared business activity. Every filer declares at least one business activity.",
      "sourceRef": "Business activities table, row 1, widget Text21",
      "validation": { "minLength": 1, "maxLength": 300 }
    },
    {
      "name": "businessActivity1TaxAmount",
      "label": "Patent tax payable (1)",
      "type": "number",
      "required": true,
      "description": "Patent tax payable for the enterprise's first declared business activity, in Cambodian riel (KHR).",
      "sourceRef": "Business activities table, row 1, widget Text22",
      "validation": { "minimum": 0 }
    },
    {
      "name": "businessActivity2Description",
      "label": "Business activity (2)",
      "type": "string",
      "required": false,
      "description": "Description of the enterprise's second declared business activity, if any.",
      "sourceRef": "Business activities table, row 2, widget Text23",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "businessActivity2TaxAmount",
      "label": "Patent tax payable (2)",
      "type": "number",
      "required": false,
      "description": "Patent tax payable for the enterprise's second declared business activity, if any, in Cambodian riel (KHR).",
      "sourceRef": "Business activities table, row 2, widget Text24",
      "validation": { "minimum": 0 }
    },
    {
      "name": "businessActivity3Description",
      "label": "Business activity (3)",
      "type": "string",
      "required": false,
      "description": "Description of the enterprise's third declared business activity, if any.",
      "sourceRef": "Business activities table, row 3, widget Text25",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "businessActivity3TaxAmount",
      "label": "Patent tax payable (3)",
      "type": "number",
      "required": false,
      "description": "Patent tax payable for the enterprise's third declared business activity, if any, in Cambodian riel (KHR).",
      "sourceRef": "Business activities table, row 3, widget Text26",
      "validation": { "minimum": 0 }
    },
    {
      "name": "businessActivity4Description",
      "label": "Business activity (4)",
      "type": "string",
      "required": false,
      "description": "Description of the enterprise's fourth declared business activity, if any. Enterprises with more than four business activities file the form's own continuation annex (Form PR 008_1) instead, out of scope for this schema — see the schema's own description field.",
      "sourceRef": "Business activities table, row 4, widget Text27",
      "validation": { "maxLength": 300 }
    },
    {
      "name": "businessActivity4TaxAmount",
      "label": "Patent tax payable (4)",
      "type": "number",
      "required": false,
      "description": "Patent tax payable for the enterprise's fourth declared business activity, if any, in Cambodian riel (KHR).",
      "sourceRef": "Business activities table, row 4, widget Text28",
      "validation": { "minimum": 0 }
    },
    {
      "name": "patentTaxSubtotal",
      "label": "Sub total",
      "type": "number",
      "required": false,
      "description": "Sum of the patent tax payable across all declared business activities.",
      "sourceRef": "Widget Text29",
      "validation": { "minimum": 0 }
    },
    {
      "name": "additionalTax",
      "label": "Additional tax",
      "type": "number",
      "required": false,
      "description": "Any additional/penalty tax amount owed on this return, if any.",
      "sourceRef": "Widget Text30",
      "validation": { "minimum": 0 }
    },
    {
      "name": "interest",
      "label": "Late interest",
      "type": "number",
      "required": false,
      "description": "Interest owed for late payment, if any.",
      "sourceRef": "Widget Text31",
      "validation": { "minimum": 0 }
    },
    {
      "name": "totalPatentTaxPayable",
      "label": "Total (Sub total + Additional tax + Interest)",
      "type": "number",
      "required": true,
      "description": "Total amount due on this return: the sum of patentTaxSubtotal, additionalTax, and interest.",
      "sourceRef": "Widget Text32",
      "validation": { "minimum": 0 }
    },
    {
      "name": "attachedLandTitleOrRentalContract",
      "label": "Certificate of land title or rental contract and receipt of the withholding tax payment (certified copy)",
      "type": "boolean",
      "required": false,
      "description": "Whether a certified copy of the land title certificate (if owned) or the rental contract and withholding-tax-payment receipt (if rented) is attached. Only applicable when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Attachment checklist, item 1, widget \"Check Box10\""
    },
    {
      "name": "attachedPropertyTaxReceipt",
      "label": "Property tax receipt (if any, certified copy)",
      "type": "boolean",
      "required": false,
      "description": "Whether a certified copy of the property tax receipt is attached, if any. Only applicable when isHeadOfficeAddressSameAsRegistered is false.",
      "sourceRef": "Attachment checklist, item 2, widget \"Check Box11\""
    },
    {
      "name": "declarationDate",
      "label": "Date",
      "type": "date",
      "required": true,
      "description": "Date this declaration is signed and filed.",
      "sourceRef": "Page 2, widgets Text33/Text34/Text35 (DD/MM/YYYY)"
    }
  ]
}
