kiira

Every LHDN acronym,
one toggle away.

We keep the Peppol schema, the validation rules, and the quirks of the MyInvois portal updated so you don't have to. Write an invoice the normal way. We handle the XML, the UUID exchange, and the embassy of error messages LHDN sends back.

Schema v1.2 · auto-updated Never auto-files Errors in English, BM, 中
MyInvois · Compliance
all green
  • Peppol BIS 3.0
    Schema v1.2 · auto-updates
  • Consolidated B2C
    Monthly rollup · counter sales
  • Self-billed invoice
    Foreign supplier rule
  • Credit / debit notes
    Linked to original UUID
  • TIN / BRN lookup
    Validates before submit
  • Auto-file to LHDN
    We never do this · human tap only
Fields mapped 34 / 34

Three problems, three fixes.

LHDN's e-invoice regime has a lot of moving parts. The ones that trip up micros the most — validation, consolidated B2C, and the submission mechanics themselves — are what we built for first.

Submission

Peppol mapped, UUID handled.

You write the invoice normally. We render Peppol BIS 3.0 XML behind the scenes, POST it to MyInvois, catch the UUID, and stamp the QR on the customer's PDF. You never see the schema unless you ask.

  • All 34 required fields auto-populated from your customer + product records
  • Retries queued if LHDN is down — your invoice ships the moment it's back
  • Every submission logged for forensic audit trail
Validation preview

Errors in English, not XML.

Before anything hits LHDN, you see exactly what they'll see — but with cryptic codes already translated. No 400-line fault dumps. No guessing which field broke.

  • Sandbox dry-run on every draft before you press submit
  • Top rejection reasons flagged inline (TIN, classification, SST rounding)
  • One click to fix the customer record — not a separate trip back
Consolidated B2C

One rollup a month, done for you.

If you sell to walk-ins — kedai makan, retail, counter sales — you don't need per-customer invoices. Kiira tallies the month's counter takings and submits one consolidated B2C e-invoice on the day you pick.

  • Pulls from your daily sales summaries automatically
  • Submits within the 7-day window — no manual month-end scramble
  • Skips individually-invoiced customers (no double-counting)

What LHDN sees. In plain English.

Every submission runs through a sandbox dry-run first. The errors that come back — the ones your accounting software usually forwards untouched — get translated before you ever see them.

lhdn · response DS302
<fault>
  code="DS302"
  message="cbc:EndpointID value does not conform to valid TIN pattern for scheme OTH"
</fault>
↓ translated ↓
Buyer TIN

The buyer's TIN doesn't exist in LHDN's register.

Check it on MyTax — formats starting with IG are personal, C is corporate. Your buyer probably gave you the wrong one.

↳ Fix on customer record
lhdn · response CF321
<fault>
  code="CF321"
  message="Classification code required for InvoiceLine at index [3]"
</fault>
↓ translated ↓
Line item #3

One of your line items has no classification code.

Line 3: 'Teh Ais' — map it once to LHDN's catalogue and we'll reuse it for every future sale.

↳ Map this product
lhdn · response CF364
<fault>
  code="CF364"
  message="Computed TaxAmount differs from reported amount at line index [1] by 0.01"
</fault>
↓ translated ↓
SST on line 1

SST calculation is off by 1 sen.

Rounding issue — your spreadsheet rounded twice. We'll recompute and resubmit; no action needed on your end.

↳ Auto-fixed
April 2026 · daily counter sales
MonTueWedThuFriSatSun
01 620
02 880
03 340
04 1,120
05 560
06
07
08 910
09 450
10 720
11 1,280
12 510
13
14
15 740
16 620
17 980
18 415
19 1,050
20
21
22 850
23 560
24 1,180
25 720
26 640
27
28
29 920
30 780
Rolled up
RM 18,442.00
E-invoice · 1 of 1
Consolidated B2C
↳ Submitted 7 May 2026 · 1 e-invoice · UUID 01HXJ…

30 days of counter sales.
One e-invoice.

If your shop takes walk-in cash, you don't issue a separate MyInvois e-invoice per kopi. LHDN lets you roll up the month into one submission — as long as it lands within 7 days of month-end. Kiira does the rolling.

  • Pick your cadence day

    The 7th of the following month is the safe default. Kiira submits on that day, every month.

  • Pulls from daily sales summaries

    POS export, Shopee payout, GrabFood settlement — whatever source you connected.

  • Skips invoiced customers

    If a walk-in asked for a named invoice mid-month, we exclude them from the rollup. No double-counting.

  • Rounded to LHDN's rules

    SST aggregated correctly across the month — not three separate rounding operations.

Thirty-four fields. Mapped once.

LHDN wants 34 fields on every invoice. Most come from your customer record, your product catalogue, or your company profile — you fill them once. The rest (UUID, digital signature, submission timestamp) are ours to worry about.

From your company profile

7 fields · set once
  • Seller TIN

    From your MyTax profile · validated at onboarding

  • BRN / NRIC

    SSM for companies, NRIC for sole props

  • SST number

    Optional · only if registered

  • MSIC code

    5-digit industry code · chosen once

  • Registered address

    Must match SSM exactly

  • Contact email

    Mandatory for B2B

  • Digital signature

    Kiira handles · not your problem

From the customer record

9 fields · per buyer
  • Buyer TIN

    Validated on save · flagged if it fails LHDN register

  • BRN / NRIC / Passport

    Depends on buyer type

  • Legal name

    Must match registered exactly

  • Registered address

    Same as SSM / NRIC

  • Contact email

    Required for B2B

  • Phone number

    Optional but recommended

  • MSIC code

    Buyer's industry · mandatory for B2B

  • State code

    From address · derived automatically

  • Country code

    MYS by default; foreign allowed

From each invoice

18 fields · per sale
  • Issue date & time

    Now · UTC+8

  • Invoice number

    Your sequence · we enforce uniqueness

  • Currency code

    MYR · foreign allowed

  • Line items

    Description + qty + unit price + classification

  • SST rate & amount

    0 / 6 / 8% · auto-computed

  • Subtotal · Total

    Aggregated · rounded to LHDN rules

  • Payment terms

    Net 7 / Net 30 · optional

  • Payment reference

    DuitNow QR embedded here

  • Exchange rate

    If non-MYR · daily BNM rate

  • Discount (if any)

    Line-level amount, not percentage

  • Original UUID

    For credit / debit notes

  • Reference period

    For consolidated B2C

  • + 6 more …

    UUID, digital sig, timestamps — ours to handle

Never auto-files.
Not even if you set it to.

Other tools run batch submissions overnight. That's fine until the night a bad invoice slips through and you find out when a refund comes in. We won't do that — every submission is a human tap, and draft invoices live for an hour before anything moves.

  • No scheduled submissions

    Even consolidated B2C needs a tap — we remind you on the 7th, you approve, it ships.

  • One-hour undo window

    Every draft sits as needs_review = true for 60 minutes. Reply 'nope' on WhatsApp, it's gone.

  • Full forensic log

    Every submission logged with prompt version, token counts, response payload. Regulated trail built in.

Free tier does almost all of this.

WhatsApp capture, invoices, dashboard, bank imports — all free. MyInvois submission sits on the Compliance tier (RM79/mo), which is the one LHDN is going to ask you about when Phase 5 lands.

Free
For most of your books
RM 0 / month
MyInvois not included
Compliance
For when LHDN asks
RM 79 / month
MyInvois · full module

Questions we keep getting asked.

Can I use Kiira for MyInvois if I book everything else in SQL Account / Bukku?

+
Yes. Many of our users run Kiira alongside an existing accounting package — we handle only the e-invoice submission layer and export clean entries back for reconciliation. You don't have to migrate your books.

What happens if MyInvois is down when I hit submit?

+
LHDN allows a 72-hour grace period during outages. Kiira queues the submission automatically — the moment the service returns, the invoice goes through. You'll get a WhatsApp confirmation with the UUID.

How does Kiira handle the 72-hour cancellation window?

+
Once LHDN returns a UUID, you have 72 hours to cancel the invoice cleanly. Past that, it's credit-note territory. Kiira shows you the countdown on every submitted invoice and lets you cancel with one tap before the window closes.

Do you handle self-billed invoices for foreign suppliers?

+
Yes. When you pay a foreign supplier who can't issue their own e-invoice (a Bali designer, a Shenzhen factory), Kiira generates a self-billed e-invoice on their behalf and submits it under your TIN. Part of the Compliance tier.

What about credit notes and debit notes?

+
Fully supported. Credit / debit notes reference the original invoice's UUID and inherit its audit trail. From the customer's POS, it looks like a refund with a corrected e-invoice.

My accountant uses SQL Account. Can they still reconcile?

+
Yes — we export to SQL Account and AutoCount formats, and every submitted e-invoice carries its UUID + validation timestamp in the export. Their month-end reconciliation doesn't change.

When does Kiira update the Peppol schema?

+
Automatically. LHDN has shipped two minor schema revisions since Phase 1 — we rolled both out within 48 hours of LHDN's publication, without anyone on your side lifting a finger. Part of what you're paying for on the Compliance tier.
MyInvois · ready when LHDN is

Start on free.
Upgrade the day LHDN asks.

Kiira's MyInvois module costs RM79/mo on the Compliance tier — no card until you actually need it. The rest of your books (invoices, expenses, bank imports) stays free forever.