报价单 PDF——在浏览器里打好一份 A4 报价单

公司名称、编号项目表、折扣、SST 与有效期,一次生成一份可以直接发给客户的 PDF,全部在你自己的标签页里完成。

🔒 100% 浏览器内运行 · 零服务器上传

支持 PNG、JPEG 或 WebP,会缩小到 120 × 48 pt 放在公司名称旁边。透明背景在白纸上仍然是透明的。

公司资料、标志和默认值只保存在这台设备的浏览器里——本页没有服务器,任何内容都不会上传。客户资料和项目明细从不保存。

项目明细

每一行对应下面项目框里的一行。改哪一边都可以,两边会保持同步。

按「开始处理」之前什么都不会下载:PDF 引擎约 175 KB,用过一次之后浏览器会保存缓存。内容里有汉字的报价单还要再下载一个字体文件——1.3 MB,服务器开启压缩时约 705 KB——只下载一次,而且只有真的出现汉字时才下载。纯英文或马来文报价单完全不会下载字体。

没有放进文件的行

马来西亚规则与特殊情况

报价单、税务发票、电子发票——三份不同的文件

报价单是一份报价邀请。它既不是付款通知,也不是税务发票,更不是 LHDN 电子发票。马来西亚报价单的争议,多半从把这三者混为一谈开始,下面这张表就是它们的区别。同一张表单也能改成发票:那是一份付款通知,仍然不是 LHDN 电子发票,也从不提交到 MyInvois。

报价单税务发票LHDN 电子发票
对还没谈定的工作提出价格对已经提供的工作开出的账单经 IRBM/LHDN 验证并取得唯一编号的税务发票
在客户接受之前发出,客户接受的就是它在商品或服务提供时开出,不是写报价单的时候轮到你的阶段后,先经 MyInvois 验证再送到买家手上
带的是有效期,不是付款期限带付款期限,是正式要求付款的文件带验证链接和买家可扫的二维码
如果你已注册 SST,只写出「将会」收取的税额写出实际收取的 SST,并附上你的 SST 注册号同样的税务字段,用的是 LHDN 自己的结构

这个工具怎样处理 SST

  • 税率用官方公布的税率。服务税标准税率 8%,餐饮、物流、电信与停车这四个优惠类别为 6%,自 2024-03-01 起生效,与 SST 计算器读的是同一张表。销售税不在这里加:普通零售商不在收银台收销售税。
  • 先扣折扣,再算 SST。本工具把折扣扣在小计上,服务税按折扣后的金额计算——那才是客户真正要付的钱。如果你的会计要求按折扣前的金额计税,先把折扣后金额放进 SST 计算器,再把结果填到这里。
  • 每一行都换算成「分」,这是本工具的规则。数量 × 单价用整数运算四舍五入到最近的分,再逐行相加。供应商的会计系统可能差一分;本页把这个规则写出来,而不是藏起来。
  • 只有已注册 SST 才加税。某项服务是否应税、属于哪个类别,属于 JKDM MySST 的指引范围——本页只做算术,不判断你的注册状态。没注册却印上服务税,等于造出一份自己解释不了的文件。

一份有用的报价单要有这些

  • 编号和日期。「Q-2026-0118,2026 年 11 月 9 日」是客户日后找得回来的文件;「我们上次谈的那份报价」不是。
  • 注册公司名,以及 SSM 注册号(如果有)——买家的财务在付款前一定会问。
  • 逐项列出,不要一个总价。项目说明、数量、单价。真正经得起争议的是「电线安装 | 三相 | 1 | 1,200」这一行。
  • 有效期。这是马来西亚的商业惯例,不是法律:报价单一般开 14 到 30 天;在税率或材料价格变动之前报的价,不该无限期有效。
  • 一种货币。本工具只把 MYR、SGD、USD 印成标签,绝不做换算——写进报价单的汇率,是日后谁也查不回来的数字。

中文内容。报价单里出现汉字时,会下载一个字体子集(文泉驿微米黑,Apache-2.0)——实际 1.3 MB,用 gzip 压缩后约 705 KB——保证汉字真的写进 PDF,而不是被悄悄丢掉。PDF 会内嵌整个字体,所以中文报价单约 760 KB;纯拉丁文只有几 KB。纯英文或马来文报价单完全不下载字体。每次按下「开始处理」都会下载一次 PDF 引擎(约 175 KB,之后浏览器会保存缓存)。子集里没有的字符——例如《通用规范汉字表》之外的生僻字或表情符号——会被拒绝并列出是哪几个字,绝不会画成空方框。中文标点已全部收录。

处理前后

处理前

每月保养服务 | 2 | RM seratus
三相电线安装 | 1 | 12.345
厨房插座与防水开关更换 | 8 | 65.00

处理后

第 1 行被拒绝 · 单价不是数字
第 2 行被拒绝 · 单价超过两位小数
1 个项目 · 小计 RM 520.00 · 总计 RM 520.00

使用方法

  1. 填写公司名称、客户和报价单字段——日期由浏览器填今天的日期,不是在页面生成时写死的。
  2. 把项目明细粘进「输入」面板,一行一个:项目说明 | 数量 | 单价。在面板上方选择货币、折扣和 SST 模式。
  3. 按「开始处理」,再下载 PDF。「复制结果」会把金额合计复制成文字,每一行被拒绝的项目都带行号列出。

常见问题

这是税务发票或 LHDN 电子发票吗?

不是。报价单是一份报价:没有 SST 注册号,不是付款通知,也从不提交到 MyInvois。把单据类型改成发票,同样的金额就变成一份付款通知——仍然不是 LHDN 电子发票,也仍然不提交到任何地方。PDF 每一页的页脚都写着这是哪一种文件。

我的报价单要加 SST 吗?

只有已注册服务税才需要。菜单提供标准税率 8% 与较低税率 6%,两个都来自官方税率表;没注册就留在「不收 SST」。你这项服务是否应税,由 JKDM 判定,不是这一页。

为什么我有一行被拒绝了?

每一行必须是 项目说明 | 数量 | 单价,数量大于零,单价最多两位小数。单价里打了 RM、写了三位小数,或者只有一个分隔符,都会连行号和原因一起列出来——不会被悄悄删掉,也不会被猜着改。

我的报价单会被上传吗?

不会。PDF 由 pdf-lib 在这个标签页里生成,页面根本没有可以调用的上传接口。页面唯一可能发出的请求是它自己的字体文件,而且只有内容里出现汉字时才会发出。你自己的公司资料确实会记住——公司名称、注册号、地址、联系方式、标志和默认值,保存在这台设备的浏览器 localStorage 里,下一份文件打开时抬头已经填好。客户资料和项目明细从不保存,「清除我的资料」会把保存过的内容全部删掉。

可以开给外国客户吗?

可以——选 SGD 或 USD,金额就按那种货币标注。工具不做任何换算:请直接填你报价用的货币金额,因为工具自己编出来的汇率,双方日后都查不回来。