Registry entry

Lesotho — Individual Income Tax Return (Form S128-I)

Revenue Services Lesotho's (RSL) Form S128-I, "Individual Income Tax Return, Year Ended 31 March 2023" — opens Lesotho's Taxes vertical (2 of 6: Business Formation). Resident and non-resident individual taxpayers use this annual return to reconcile chargeable income (employment, pension, business, commercial farming, property, and other income), compute tax before and after credits, and report payments already made (PAYE, withholding tax, advance installments) against tax due or overpaid for the year. This v1.0.0 schema is scoped to the core declaration a typical employee/pensioner taxpayer completes: identification (Your Details), Part A (Employment Income & Expenses), Part B (Pension Income), Part H (Tax Computation, Payments, and the resulting Tax Due/Overpaid), and the Declaration of Paid Preparer / Declaration of Taxpayer or Representative sections. Parts C-G (the detailed Business Income, Commercial Farming Income, Property Income, Other Income, and Credit for Foreign Tax Paid schedules) are out of scope for this version and deferred to a future minor version, consistent with this registry's established main-form-now/companion-schedules-later precedent. GovSchema is an independent, non-profit standards body and is not affiliated with, endorsed by, or operated by the Government of Lesotho or Revenue Services Lesotho.

Registry entry

ls/rsl/individual-income-tax-return

Jurisdiction
Lesotho · national
Version
1.0.0
Verification
draft

Authoritative source FORM S128-I — Individual Income Tax Return, Year Ended 31 March 2023

Machine access

Registry catalog
registry/index.jsonone record per schema id

Field reference

88 fields across 5 steps, 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.

Your Details

  • residencyStatus enum required

    The taxpayer's residency status for the tax year. "Part-year resident" requires entering the number of days the taxpayer was a resident.

    enum: resident | non-resident | part-year-resident
  • partYearResidentDays integer optional

    Number of days during the tax year the taxpayer was resident in Lesotho. Only entered when Part-year resident is ticked.

    range: 0–366
  • fullName string required

    Your surname, forenames, and maiden name

    length: 1–300classification: pii
  • tin string required

    The taxpayer's Taxpayer Identification Number, printed as a comb-box field.

    length: 1–20classification: sensitive-pii
  • phone string optional

    Contact telephone number

    length: 1–60classification: pii
  • email string optional

    Email address

    patternlength: 0–200classification: pii

Part A - Employment Income & Expenses

  • employer1Name string optional

    Row (a) of the employment-information table. Include fringe benefits not yet taxed; do not include employment income earned and taxed in a foreign country. Attach Form P.16 for each employer; if more than three employers, attach a list with the additional information.

    length: 1–300
  • employer1Tin string optional

    Employer TIN(s) (a)

    length: 1–20
  • employer1EmployedFrom date optional

    Employed from (in the year 2022/23) (a)

  • employer1EmployedUntil date optional

    Employed until (in the year 2022/23) (a)

  • employer1GrossIncome number optional

    Gross employment income (a)

    range: 0–∞
  • employer2Name string optional

    Row (b) of the employment-information table. Include fringe benefits not yet taxed; do not include employment income earned and taxed in a foreign country. Attach Form P.16 for each employer; if more than three employers, attach a list with the additional information.

    length: 1–300
  • employer2Tin string optional

    Employer TIN(s) (b)

    length: 1–20
  • employer2EmployedFrom date optional

    Employed from (in the year 2022/23) (b)

  • employer2EmployedUntil date optional

    Employed until (in the year 2022/23) (b)

  • employer2GrossIncome number optional

    Gross employment income (b)

    range: 0–∞
  • employer3Name string optional

    Row (c) of the employment-information table. Include fringe benefits not yet taxed; do not include employment income earned and taxed in a foreign country. Attach Form P.16 for each employer; if more than three employers, attach a list with the additional information.

    length: 1–300
  • employer3Tin string optional

    Employer TIN(s) (c)

    length: 1–20
  • employer3EmployedFrom date optional

    Employed from (in the year 2022/23) (c)

  • employer3EmployedUntil date optional

    Employed until (in the year 2022/23) (c)

  • employer3GrossIncome number optional

    Gross employment income (c)

    range: 0–∞
  • unemploymentPeriod1From date optional

    One of up to three periods during the tax year when the taxpayer was unemployed. If more than three such periods, attach a list with the additional information.

  • unemploymentPeriod1Until date optional

    Period during the Tax Year when the Taxpayer was unemployed – period 1 end

  • unemploymentPeriod2From date optional

    One of up to three periods during the tax year when the taxpayer was unemployed. If more than three such periods, attach a list with the additional information.

  • unemploymentPeriod2Until date optional

    Period during the Tax Year when the Taxpayer was unemployed – period 2 end

  • unemploymentPeriod3From date optional

    One of up to three periods during the tax year when the taxpayer was unemployed. If more than three such periods, attach a list with the additional information.

  • unemploymentPeriod3Until date optional

    Period during the Tax Year when the Taxpayer was unemployed – period 3 end

  • totalGrossEmploymentIncome number optional

    1d. Total gross employment income (1a+1b+1c)

    range: 0–∞
  • employmentExpenseTravel number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • employmentExpenseEducation number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • employmentExpenseTechnicalBooks number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • employmentExpenseMotorVehicle number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • employmentExpenseHomeOffice number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • employmentExpenseSuperannuation number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • employmentExpenseDonations number optional

    Deductible amount, part of item 2 (Unreimbursed employment-related expenses and donations). This row's visual order was confirmed by rendering the source PDF page, since the underlying text layer contains extraneous/duplicated item text not present in the printed form.

    range: 0–∞
  • totalEmploymentExpensesAndDonations number optional

    2h. Total unreimbursed employment-related expenses and donations (2a+2b+2c+2d+2e+2f+2g)

    range: 0–∞
  • chargeableEmploymentIncome number optional

    3. Chargeable employment income (1d-2h)

Part B - Pension Income

  • pensionPayer1Name string optional

    Row (a) of the pension-information table. Do not include pension income relating to employment carried on in a foreign country and taxed in that country, or (if the taxpayer retired before 11 March 1993) any war pension or gratuity paid by the Lesotho Government. Attach Form P.16 for each pension payer; if more than two pension payers, attach a list with additional information.

    length: 1–300
  • pensionPayer1Tin string optional

    Employer(s) TIN(s) (a)

    length: 1–20
  • pensionPayer1StartDate date optional

    Pension start date (in the year 2022/23) (a)

  • pensionPayer1EndDate date optional

    Pension end date (in the year 2022/23) (a)

  • pensionPayer1GrossIncome number optional

    Gross pension income (a)

    range: 0–∞
  • pensionPayer2Name string optional

    Row (b) of the pension-information table. Do not include pension income relating to employment carried on in a foreign country and taxed in that country, or (if the taxpayer retired before 11 March 1993) any war pension or gratuity paid by the Lesotho Government. Attach Form P.16 for each pension payer; if more than two pension payers, attach a list with additional information.

    length: 1–300
  • pensionPayer2Tin string optional

    Employer(s) TIN(s) (b)

    length: 1–20
  • pensionPayer2StartDate date optional

    Pension start date (in the year 2022/23) (b)

  • pensionPayer2EndDate date optional

    Pension end date (in the year 2022/23) (b)

  • pensionPayer2GrossIncome number optional

    Gross pension income (b)

    range: 0–∞
  • totalGrossPensionIncome number optional

    1.c. Total gross pension income (1a+1b)

    range: 0–∞
  • pensionDonations number optional

    Do not include amounts already deducted on line 2g in Part A.

    range: 0–∞
  • chargeablePensionIncome number optional

    3. Chargeable pension income (1c-2)

Part H - Tax Computation

  • taxComputationChargeableEmploymentIncome number optional

    1a. Enter chargeable employment income from Part A, line 3

  • taxComputationChargeablePensionIncome number optional

    1b. Enter chargeable pension income from Part B, line 3

  • taxComputationChargeableBusinessIncome number optional

    Corresponds to Part C (Business Income & Expenses), which is out of scope for this v1.0.0 schema and deferred to a future minor version. Enter 0 or leave blank if the taxpayer has no business income.

  • taxComputationChargeableFarmingIncome number optional

    Corresponds to Part D (Commercial Farming Income & Expenses), which is out of scope for this v1.0.0 schema and deferred to a future minor version. Enter 0 or leave blank if the taxpayer has no commercial farming income.

  • taxComputationChargeablePropertyIncome number optional

    Corresponds to Part E (Property Income & Expenses), which is out of scope for this v1.0.0 schema and deferred to a future minor version. Enter 0 or leave blank if the taxpayer has no property income.

  • taxComputationChargeableOtherIncome number optional

    Corresponds to Part F (Other Income & Expenses), which is out of scope for this v1.0.0 schema and deferred to a future minor version. Enter 0 or leave blank if the taxpayer has no other chargeable income.

  • totalChargeableIncome number optional

    2. Total chargeable income. Add 1a+1b+1c+1d+1e+1f

  • taxBracket10PercentChargeableIncome number optional

    Row 3a applies a flat 10% rate specifically to chargeable commercial farming income (line 1d on this Part), ahead of the progressive brackets applied to the rest of chargeable income in rows 3b-3d. Column (b), the 10% rate, is pre-printed on the form and not a fillable field.

  • taxBracket10PercentTax number optional

    3a, col. (c). Multiply (a) * (b)

  • taxBracket20PercentChargeableIncome number optional

    For a Lesotho resident at least 18 years of age, or a non-resident who lives permanently outside Lesotho but works full time in Lesotho: the smaller of M67,440.00 or (line 2 minus line 1d), apportioned if not engaged in an income-earning activity for the entire year. For a Lesotho resident under 18: the smaller of M67,440.00 or (lines 1a+1b+1c+1f, not less than zero), similarly apportioned. Any other non-resident skips this row (col. (b), the 20% rate, is pre-printed and not a fillable field).

  • taxBracket20PercentTax number optional

    3b, col. (c). Multiply (a) * (b)

  • taxBracket30PercentChargeableIncome number optional

    For a Lesotho resident at least 18 years of age, or a qualifying non-resident: line 2 minus (lines 3a+3b in col. (a)). For a Lesotho resident under 18: (lines 1a+1b+1c+1f) minus (lines 3a+3b in col. (a)); for property income of a resident under 18, this row is skipped. Any other non-resident skips this row (col. (b), the 30% rate, is pre-printed and not a fillable field).

  • taxBracket30PercentTax number optional

    3c, col. (c). Multiply (a) * (b)

  • taxBracket4PercentChargeableIncome number optional

    A Lesotho resident at least 18 years of age skips this row. Any other non-resident (other than one who lives permanently outside Lesotho but works full time in Lesotho) or a resident under 18 enters line 1e here. Any other non-resident enters (line 2 minus line 1d) here. Col. (b) is pre-printed as 25% (40% for non-residents electing under section 109 to be taxed by assessment, and for Lesotho residents under the age of 18) and is not a fillable field.

  • taxBracket4PercentTax number optional

    3d, col. (c). Multiply (a) * (b)

  • totalTaxBeforeCredits number optional

    4. Total tax before credits (Add 3a+3b+3c+3d in col. (c))

    range: 0–∞
  • personalTaxCredit number optional

    For a Lesotho resident at least 18 years of age, or a non-resident who lives permanently outside Lesotho but works full time in Lesotho: M10,560.00 if engaged in an income-earning activity for the entire year (apportioned otherwise). For a Lesotho resident under 18: the smaller of line 3d (col. (c)) or M400, plus the smaller of (line 4 minus line 3d in col. (c)) or (M10,560.00 minus the amount just computed), apportioned if a part-year resident or not engaged in an income-earning activity for the entire year. Any other non-resident enters nil.

    range: 0–∞
  • creditForForeignTaxPaid number optional

    Corresponds to Part G (Credit for Foreign Tax Paid), which is out of scope for this v1.0.0 schema and deferred to a future minor version. Enter 0 or leave blank if the taxpayer paid no foreign tax.

    range: 0–∞
  • totalNonRefundableCredits number optional

    6. Total non refundable credits (5a+5b)

    range: 0–∞
  • totalTaxAfterCredits number optional

    Printed verbatim as “7. Total tax after” on the source form (the label is truncated in the original publication); by construction of the surrounding lines this is the total tax after non-refundable credits (line 4 minus line 6).

  • payeDeducted number optional

    8a. Income tax deducted from employment and pension income - PAYE (as shown on Form P.16)

    range: 0–∞
  • incomeTaxWhtPaid number optional

    8b. Income Tax (WHT) paid

    range: 0–∞
  • advanceInstallmentsPaid number optional

    8c. Advance installments of income tax paid

    range: 0–∞
  • totalPayments number optional

    9. Total payments. Add 8a+8b+8c

    range: 0–∞
  • taxDue number optional

    10. Tax due. Line 7 minus line 9. Enter nil if less than -0-

    range: 0–∞
  • taxOverpaid number optional

    11. Tax overpaid. Line 9 minus line 7. Enter nil if less than -0-

    range: 0–∞
  • claimingRepaymentOfOverpaidTax boolean optional

    When ticked, proof of banking details from the taxpayer's bank must be attached.

Declarations

  • paidPreparerName string optional

    Declaration of Paid Preparer (external tax consultant/accountant/auditor, etc.). Skip this section if there is no paid preparer.

    length: 1–300classification: pii
  • paidPreparerDate date optional

    Date (day, month, year) [paid preparer]

  • paidPreparerTin string optional

    TIN of paid preparer

    length: 1–20classification: sensitive-pii
  • paidPreparerFirmName string optional

    Firm's name

    length: 1–300
  • paidPreparerFirmTin string optional

    Firm's TIN

    length: 1–20
  • paidPreparerFirmAddress string optional

    Firm's physical address

    length: 1–300
  • paidPreparerPhone string optional

    Contact telephone number [paid preparer]

    length: 1–60classification: pii
  • paidPreparerEmail string optional

    Email address [paid preparer]

    patternlength: 0–200classification: pii
  • declarationDate date required

    The date the taxpayer (or representative) signs the declaration that the return is correct and complete, and (if applicable) confirms having ticked the repayment box on line 11.

  • representativeFullName string optional

    If you are signing this form on behalf of a legally incapacitated person, print your full name

    length: 1–300classification: pii
  • representativePhone string optional

    Only applicable when representativeFullName is filled in (the taxpayer is a legally incapacitated person and this form is signed by a representative). The source form has no separate yes/no checkbox for this scenario, so it is not modeled as a requiredWhen gate — see the notEquals-empty-string-absent-field anti-pattern in this registry's own authoring notes.

    length: 1–60classification: pii

Verification record

GOV-4755 ("GovSchema Standard Research"). Per the prior cycle's own recommendation ([[gov4748-ls-obfc-opens-98th-backlog-exhausted]]), this cycle deepened Lesotho's remaining verticals rather than scouting yet another new jurisdiction, since the GOV-4748 cycle found the registry's other recently-banked backlog candidates (Hungary Business Formation, Tunisia DMV, Morocco's four remaining verticals, North Macedonia Visa, Georgia's own disclosed backlog) all re-confirmed dead or weak on independent re-check.

Screened Lesotho's Ministry of Home Affairs channels first: passport issuance (homeaffairs.gov.ls/passports/) is confirmed in-person/biometric-only with no downloadable application form (matching this registry's own established in-person-only pattern, e.g. Czechia/Georgia); the National ID (NICR) department publishes no downloadable form either; the ministry's own e-VISA service is stated as "currently suspended" on its own FAQ page. All three left as soft dead ends for a future cycle, not hard-confirmed (a genuine live-form re-check would need a different search angle or real-browser confirmation). Pivoted to Revenue Services Lesotho (RSL, the tax authority, formerly the Lesotho Revenue Authority), which publishes a large, unauthenticated "Forms & Instructions" library directly on its own domain.

Reaching the live source

Fetched directly: https://www.rsl.org.ls/sites/default/files/2024-07/Individual%20Income%20Tax%20Return%202023%20%281%29.pdf, HTTP 200, Content-Type: application/pdf, Content-Length: 373694 (byte-identical to the downloaded file), Last-Modified: Mon, 22 Jul 2024 10:36:15 GMT, sha256 ed5366829b61bbbc0f8ff757be43155f03daa7c04b1ec3ed92b140140e28ea3a, no login/CAPTCHA/WAF gate — linked directly from https://www.rsl.org.ls/forms-and-instructions under "Income Tax Forms", alongside the same-family Company Income Tax Return, FBT Return, and Trusts/Estates return (each a separate future-cycle candidate). Form S128-I is the individual (not company) return, corroborated independently by a public search result citing the same form number and confirming it is available "through the Interim E-filing Solution in E-Services" as well as this direct download.

Extraction method

pdfjs-dist (/tmp/node_modules/pdfjs-dist/build/pdf.js, non-legacy CJS build). getDocument().promise reports 8 pages; getAnnotations() returns zero annotations on every page, confirming a flat, non-fillable PDF with no AcroForm/XFA fields (this registry's established flat-PDF pattern). getTextContent()'s raw item stream was not trusted on its own this cycle: page 1's text layer, read literally, listed nine items under "2. Unreimbursed employment-related expenses and donations" (a, b, b, c, d, c, d, f, g) where the printed form has exactly seven (a-g), including a spurious extra line ("d. Other unreimbursed work expenses") not present anywhere in the rendered page and a genuinely present line ("e. Home office expenses") entirely absent from the text-item stream. This is a new, sixth distinct PDF-extraction failure mode for this registry (see gov-form-pdf-extraction): duplicated/extraneous ghost text co-resident with the real content in the same text layer, rather than merely out-of-order or checkbox-only scrambling. Resolved by rendering every page used in this schema (node-canvas at 2.5x scale) and reading the visual layout directly, cross-checking every field against the rendered image rather than the text layer alone.

Scoping decision

The source form is a genuinely large 8-page return covering six income categories (employment, pension, business, commercial farming, property, other) plus a foreign-tax-credit schedule. Following this registry's established main-form-now/companion-schedules-later precedent (e.g. kz/* Form 220.0X/250.0X series, tn/dgi/irpp-declaration), this v1.0.0 schema is scoped to the core declaration that a typical employee/pensioner taxpayer completes in full:

  • Your Details (residency status, identity, contact).
  • Part A — Employment Income & Expenses (up to 3 employers, up to 3 unemployment periods, the 7-item unreimbursed-expense schedule, chargeable employment income).
  • Part B — Pension Income (up to 2 pension payers, chargeable pension income).
  • Part H — Tax Computation (the chargeable-income summary grid, the four tax-bracket rows, credits, payments, and the resulting tax due/overpaid).
  • Declaration of Paid Preparer and Declaration of Taxpayer or Representative.

Parts C (Business Income & Expenses), D (Commercial Farming Income & Expenses), E (Property Income & Expenses), F (Other Income & Expenses), and G (Credit for Foreign Tax Paid) are out of scope for this version. Each is a structurally self-contained parallel schedule (Lesotho-source / foreign-source / chargeable columns, its own net-profit-or-loss and loss-carryforward computation) affecting a minority of individual filers; modeling all five in full would roughly double this schema's field count for comparatively rare use. Part H's own summary lines referencing these parts (1c-1f, 5b) are still modeled as pass-through optional numeric fields — a taxpayer with such income can still record the schedule's final total even though this schema does not yet walk through how that total is derived — each field's own description discloses which deferred part it corresponds to. This mirrors this registry's Tunisia IRPP precedent of keeping the summary/computation grid while deferring the detailed per-category build-up schedules.

Disclosed findings and interpretation choices

  1. Item 2's correct a-g ordering was recovered by visual rendering, not the text layer — see "Extraction method" above. The rendered image confirms: a. Travel; b. Education; c. Technical/trade books and subscriptions; d. Motor vehicle; e. Home office; f. Superannuation contributions; g. Donations to the Lesotho Sports and Recreation Commission — matching the printed "2h... (2a+2b+2c+2d+2e+2f+2g)" seven-term total formula exactly.
  2. Part B precedes Part C in the printed layout, even though a naive linear read of page 2's raw text item stream (without position-sorting) surfaces Part C's content before Part B's — confirmed from the rendered page image, where Part B (Pension Income) is the first block and Part C (Business Income & Expenses, out of scope) begins roughly halfway down the same page.
  3. Employer/pension-payer slots are bounded to the form's own printed capacity (3 employer rows in Part A, 2 pension-payer rows in Part B, 3 unemployment-period rows in Part A), matching this registry's established bounded-slot convention; each section's own printed instruction ("if more than three employers, attach a list with the additional information", "if more than two pension payers, attach a list with additional information", "if more than threesuch periods, attach list with the additional information") is modeled as a corresponding optional documents[] entry rather than a synthetic overflow field.
  4. residencyStatus is modeled as a required enum (resident/non-resident/part-year-resident) from the form's own single "Tick applicable box" instruction with three named options; partYearResidentDays is requiredWhen residencyStatus equals "part-year-resident", matching the form's own "enter number of days you were a resident" instruction printed directly beside that option only.
  5. Line 7 ("7. Total tax after") is transcribed verbatim from the source, which prints this label with no further qualifier (the phrase "Total tax after" is not completed with "credits" or similar in the published PDF) — likely a publishing truncation in RSL's own document, not a rendering artifact on this schema's part (confirmed present identically in both the text layer and the rendered image). The field's own description clarifies the value is total tax after non-refundable credits (line 4 minus line 6), inferred from the surrounding arithmetic (line 6 "Total non refundable credits" immediately precedes it, and line 8 "Payments" immediately follows, consistent with a "tax after credits, before payments" position in the return's own flow), while disclosing the verbatim label as printed per this registry's source-fidelity convention.
  6. Row 3a's flat 10% bracket applies specifically to chargeable commercial farming income (Part H's own "line 1d on this part"), a genuine Lesotho tax-policy fact (a concessional flat rate for farming income ahead of the progressive brackets applied to the rest of chargeable income in rows 3b-3d) rather than an extraction ambiguity — each tax-bracket row's field description transcribes the form's own conditional branching (by residency status and, for the 20%/30% brackets, taxpayer age) verbatim, but this schema does not attempt to encode that branching as executable crossFieldValidation, matching this registry's established practice of deferring a source's own complex conditional tax-law computation to prose description rather than modeled logic (see the Tunisia IRPP precedent's own deferred minimum-tax-floor computation).
  7. Signature fields are not modeled (only paidPreparerDate/declarationDate, the accompanying dates), consistent with this registry's standing convention that a physical/wet signature is not a machine-fillable data field.
  8. representativePhone is left unconditionally optional, not requiredWhen-gated on representativeFullName — the source has no separate yes/no checkbox for "signing on behalf of a legally incapacitated person," so gating representativePhone's requiredness on another optional string field being non-empty would reproduce this registry's own documented notEquals-empty-string-against-an-absent-field anti-pattern (notequals-empty-string-absent-field-bug); disclosed in the field's own description instead.
  9. Two crossFieldValidation rules assert Part H's own copied-forward totals equal their Part A/Part B source values (taxComputationChargeableEmploymentIncome = chargeableEmploymentIncome; taxComputationChargeablePensionIncome = chargeablePensionIncome), reflecting the form's own internal consistency requirement (the filer transcribes the same number into a second box) — Part H's remaining summary lines referencing deferred Parts C/D/E/F/G (1c/1d/1e/1f/5b) have no such cross-check since this schema does not model those parts' own totals.

Conformance

6 mock scenarios exercised against an ephemeral, from-scratch conformance checker (deriving required/requiredWhen/crossFieldValidation rules directly from this schema's own fields[] and crossFieldValidation[], discarded after use, not committed): (1) a full-time resident employee with a single employer, 0 errors; (2) the same taxpayer as a part-year resident with partYearResidentDays supplied, 0 errors; (3) the same part-year-resident scenario with partYearResidentDays omitted, correctly raising exactly 1 requiredWhen error; (4) an employer record with employer1EmployedUntil before employer1EmployedFrom, correctly raising exactly 1 crossFieldValidation error; (5) a Part H taxComputationChargeableEmploymentIncome value deliberately mismatched against Part A's own chargeableEmploymentIncome, correctly raising exactly 1 crossFieldValidation error; (6) a pensioner-only scenario (no employment income), 0 errors.

Validated clean with node tools/validate.mjs and node tools/validate-ajv.mjs (ajv 2020-12, v0.3 meta-schema), individually and as part of the full registry run. registry-index.json regenerated via npm run build-index in tools/govschema-client/.

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Revenue Services Lesotho or any government. The authoritative source is always the live government form and its official instructions.