Skip to content
电子发票校验规则与故障排除

电子发票校验规则与故障排除

提交电子发票时,LHDN 的 MyInvois 系统会先校验再受理。如果缺少必填字段,单据不会被提交,而是停放在池中等待补正(见电子发票池与提交路由)。如果字段齐全但内容有误,LHDN 可能先受理提交、随后把单据标记为 Invalid —— 你需要修复后重新提交。

本指南两者都涵盖:哪些字段必须有,以及最常见错误怎么修。

必填字段

单据表头

每张电子发票至少需要:

  • 供应方:名称、TIN、ID 类型 + ID 值(如 BRN)、行业分类代码、经营活动描述、地址、联系电话
  • 购买方:名称、TIN、ID 类型 + ID 值、地址、联系电话
  • 单据:电子发票类型与版本、签发日期时间、币种代码
  • 金额:小计、不含税总额、含税总额
联系电话必须为 8–20 个字符。过短的号码或用 “N/A” 之类文字填充的号码无法通过校验。

行项目

每一行需要:

  • 商品分类代码(LHDN 约 45 个分类;留空时系统默认为 022 – Others
  • 商品名称
  • 单价
  • 税种代码
  • 税额

行上无税时,税种自动设为 06 – Not Applicable;有税但未填税种时,默认为 01 – Sales Tax

分类代码 004 专用于合并电子发票。切勿在单独电子发票的行上使用 —— 即使买方 TIN 等其他信息全部正确,LHDN 也会将单据标记为 Invalid。

地址

供应方和购买方地址至少必须包含:

字段必填最大长度
地址行 1150 字符
城市50 字符
州属
地址行 2–3150 字符
邮编5 字符

地址行 1、城市或州属缺失时,单据不会被提交,而是进入池中等待补全。

马来西亚州属代码

LHDN 要求州属以数字代码提交。系统会自动解析自由文本的州名 —— 包括 KLWPKLPenangN9JohoreMalacca 等常见缩写 —— 无法匹配时会提示人工更正。

代码州属代码州属
01柔佛 Johor09玻璃市 Perlis
02吉打 Kedah10雪兰莪 Selangor
03吉兰丹 Kelantan11登嘉楼 Terengganu
04马六甲 Melaka12沙巴 Sabah
05森美兰 Negeri Sembilan13砂拉越 Sarawak
06彭亨 Pahang14吉隆坡联邦直辖区
07槟城 Pulau Pinang15纳闽联邦直辖区
08霹雳 Perak16布城联邦直辖区

外国地址的州属字段按文本原样传递,国家从地址数据推导(无法确定时默认马来西亚)。

General TIN:没有买方 TIN 时怎么办

LHDN 公布了四个 General TIN,用于无法取得真实 TIN 的场景:

General TIN适用对象
EI00000000010一般公众 / 本地买方(主要用于合并电子发票)
EI00000000020外国买方
EI00000000030外国供应商(自开票采购)
EI00000000040政府 / 军队

容易踩坑的规则:

  1. 单独电子发票应优先使用买方的真实 TIN。
  2. 本地无 TIN 买方的单独电子发票可以使用 EI00000000010 —— 但必须同时满足 ID 类型 = NRIC 且提供有效的 NRIC 号码。其他组合会被拒绝。
  3. 买方 ID 类型为 BRN 或护照时,不能使用 General Public TIN —— 必须取得买方真实 TIN。
  4. 买方有 TIN 但无 ID 值时,系统自动以 000000000000 填充 ID 值,LHDN 可接受。
金额 ≥ RM 10,000、买方 ID 类型为 BRN 且缺 TIN 的交易,系统会自动按注册号在 LHDN 检索并回填 TIN。

常见校验错误与修复

1. 外币发票的币种设置错误

现象: USD(或其他外币)发票因币种错误被拒。

原因: 外币单据的单据币种应为外币(如 USD),而本位币必须是 MYR。两者都被设成外币时就会报错。

修复: 把源单据的本位币改回 MYR,然后重新处理电子发票。

示例: GadgetSphere Sdn Bhd 用 USD 向新加坡经销商开票。单据币种 USD、本位币 MYR、记录汇率 —— 顺利提交。误将本位币设为 USD 时,LHDN 拒绝了该单据。

2. General TIN 误用

现象: LHDN 将单据标记为 Invalid,报 TIN 相关错误(例如"不允许使用 general TIN"类的提示)。

原因与修复: 违反了上文 General TIN 的四条规则之一 —— 最常见的是 EI00000000010 搭配了 NRIC 以外的 ID 类型,或 NRIC 无效。更正买方 TIN/ID 组合后执行 Save and Resubmit

3. 贷记单/借记单引用了失效的原始电子发票

现象: 贷记单、借记单、退款单或销售退货本身数据无误,却被拒绝。

原因: 这类单据必须引用原始电子发票的 LHDN 单据。如果原始发票先被拒(Invalid)、后重新提交成功,它会获得新的 LHDN 单据号 —— 而你的贷记单可能仍指向旧的失效单据。

修复: 把贷记单的原始发票引用更新为当前 Valid 的 LHDN 单据,然后 Save and Resubmit。若不存在有效的原始发票:

方案操作
不带引用提交清空原始发票引用字段后重新提交(在允许的场景下)
先修复原始发票先重新提交原始发票使其变为 Valid,再让贷记单指向它

4. 重复提交 —— 同一笔销售在 LHDN 被计了两次

现象: 同一张源单据同时出现在两张 Valid 电子发票中(例如先单独提交了一次,又被并入了当月合并电子发票),导致 LHDN 记录的销售额虚高。

原因:

  • 手工"推入批次池"操作执行了两次(双击或超时重试),产生两条池记录,分别被扫入不同的合并电子发票。
  • 单据已单独提交,但它在批次池中的副本仍处于未处理状态,被月度合并再次收入。

修复:

情形操作
距错误电子发票通过校验不足 72 小时取消含重复的那张电子发票,将其余合法单据重新合并提交。提交前核对替换发票的总额。
已超过 72 小时对重复金额开具贷记单,引用含重复的那张电子发票。请与会计确认 —— 通常账面是正确的,只是 LHDN 申报虚高。

预防: 任何手工推送或超时后,先核对池中的单据数量再合并 —— 切勿盲目重试。

5. 倒填日期单据因签发时间被拒

现象: 历史日期的单据因日期/时间问题被拒绝。

原因: LHDN 要求电子发票的签发日期时间为实际提交时间,而不是原交易日期。交易日期在单据上另行保留。

修复: 无需手工处理 —— 系统自动以提交时刻为准。若外部集成的单据出现此错误,请确认集成没有用历史交易日期覆盖签发时间。往月 B2C 单据的合并见池与提交路由

修复流程

无论哪种错误,恢复流程都一样:

  1. 在相应的池或提交界面找到单据(单据上会显示 LHDN 错误代码和消息)。
  2. 更正数据 —— 买方信息、币种、引用或行分类。
  3. 执行 Save and Resubmit
  4. 跟踪状态直至变为 Valid
取消窗口: Valid 电子发票可在通过校验后 72 小时内取消;超时后只能通过贷记单/借记单引用原发票进行冲正。取消流程详见 My E-Invoice Admin Applet