Screen 04

LHDN batch export

LHDN's e-Duti Setem accepts a bulk upload: one XML file covering many instruments at once, under Senarai then Permohonan Berkelompok. This screen builds that file. It is the closest thing to automation that exists, and it goes through the front door.

You are here Submission Intake Processing Filing Release Step P4 · hands off to Filing

Filing one at a time

~3 hours

Eight jobs, each needing a separate login session, upload, declaration form, and payment. Repeated every single day.

Filing as a batch

~10 minutes

One export, one upload, one validation pass, one payment covering all eight.

ops.tenancy.example.my/batch/new

New LHDN batch

Verified jobs eligible for bulk upload
Selected
6
of 8 eligible
Total duty3
RM1,842
payable to LHDN
Duplicates
RM60
6 copies at RM10
Penalties
RM0
all within 30 days
1 RefPartiesAnnual rentBand DutyChecks2
TS-2609-0139
Chan / Iskandar
Vista Kiara, Mont Kiara
RM54,000>3–5 yrs RM648 Ready
TS-2609-0138
Lee / Farhan
Sunway Velocity, Cheras
RM33,600>1–3 yrs RM404 Ready
TS-2609-0136
Ganesan / Wong
Icon City, Petaling Jaya
RM38,400>1–3 yrs RM462 Ready
TS-2609-0135
Yap / Nurhaliza
Seri Maya, Setiawangsa
RM24,000≤1 yr RM96 Ready
TS-2609-0134
Ooi / Kamarul
KL Gateway, Bangsar South
RM31,200>1–3 yrs RM375 Ready
TS-2609-0132
Sivalingam / Teh
Puchong Prima
RM18,000>1–3 yrs RM216 Ready
TS-2609-0141
Danial / Suria
The Veo, Melawati
RM30,000>1–3 yrs RM360 Top up unpaid
TS-2609-0130
Rahim / Cheong
Bandar Utama
RM21,600≤1 yr RM87 Passport missing

File preview illustrative structure only

<!-- structure shown for illustration, not the real LHDN schema -->
<BatchSubmission count="6">
  <Instrument ref="TS-2609-0139">
    <Type>TENANCY</Type>
    <ExecutionDate>2026-08-22</ExecutionDate>
    <AnnualRent>54000.00</AnnualRent>
    <TermBand>3_TO_5_YEARS</TermBand>
    <Counterparts>1</Counterparts>
    <DutyAssessed>648.00</DutyAssessed>
  </Instrument>
  <!-- 5 more -->
</BatchSubmission>

What the staff member does next6

  1. Download the generated fileFrom this screen
  2. Log into MyTax with the company TINBy hand, includes MFA
  3. e-Duti Setem, Senarai, Permohonan BerkelompokBy hand
  4. Upload the file and review validation errorsBy hand
  5. Pay the assessed duty for the whole batchBy hand
  6. Download the stamped certificatesBy hand
  7. Upload the certificates back, jobs auto completeBulk upload by reference number

What each function does

  1. 1Selection with eligibility rules Only jobs that are paid, verified and have complete documents can be ticked. The two greyed rows are blocked and say why. Why enforce it here: one bad record can fail validation for the entire upload, so the filtering has to happen before the file is built, not after LHDN rejects it.
  2. 2Pre flight checks Each row confirms the documents are present, the duty is verified, and no top up is outstanding. Why: catching a missing passport here costs a second. Catching it after upload means unpicking a batch someone already paid for.
  3. 3Total duty for the batch What the client is about to pay LHDN across all selected jobs. Why it matters: this is real money leaving the company account, collected earlier from agents. Seeing the number before generating the file is the last chance to notice something absurd.
  4. 4Preview XML Shows the file before download. Why: during the first weeks of use, staff will want to sanity check what is being sent, and it makes debugging a rejected batch possible without developer help.
  5. 5Generate batch file Builds the XML, stamps every included job as "In batch #12", and locks them from editing until the batch is resolved. Why the lock: otherwise two staff members export overlapping batches and the same tenancy gets filed and paid for twice.
  6. 6The manual steps, named honestly Steps 2 to 6 are amber because a person does them on a government website. Why show them at all: so nobody in the client's organisation is ever under the impression the system files to LHDN by itself. Putting it on screen is cheaper than explaining it later.

Scope this carefully. The bulk upload facility exists and takes XML, but the exact schema has to come from inside a live e-Duti Setem account or from LHDN. Until it is in hand, this screen cannot be fixed price. Quote it as a phase two item or on time and materials, and say so up front rather than discovering it in week five.

And do not replace it with a bot. Scripting a login to MyTax with stored credentials is fragile, almost certainly against their terms, and puts the client's entire tax account at risk for a saving this screen already delivers legitimately.