Cách Tạo Invoice/Hóa Đơn Chuyên Nghiệp Trên Google Sheets [Kèm Template]
![Cách Tạo Invoice/Hóa Đơn Chuyên Nghiệp Trên Google Sheets [Kèm Template]](/images/blog/og-cach-tao-invoice-hoa-don-google-sheets-template.png)
Giới Thiệu: Tại Sao Cần Tạo Hóa Đơn Chuyên Nghiệp Trên Google Sheets?
Trong kinh doanh, hóa đơn (invoice) không chỉ là giấy tờ ghi nhận giao dịch mà còn thể hiện sự chuyên nghiệp và uy tín của doanh nghiệp bạn. Một hóa đơn được thiết kế đẹp, đầy đủ thông tin sẽ giúp khách hàng tin tưởng hơn và đồng thời giúp bạn quản lý tài chính hiệu quả hơn.
Vậy tại sao nên chọn Google Sheets để tạo hóa đơn Google Sheets thay vì phần mềm kế toán đắt tiền? Dưới đây là những lý do thuyết phục:
Lợi ích khi tạo hóa đơn bằng Google Sheets:
- Miễn phí 100% — Không cần mua phần mềm kế toán, không phí hàng tháng
- Truy cập mọi nơi — Tạo và gửi hóa đơn từ bất kỳ thiết bị nào có Internet
- Tùy biến linh hoạt — Thiết kế theo đúng branding doanh nghiệp của bạn
- Tự động hóa — Dùng công thức và Apps Script để tự động tính toán, đánh số hóa đơn
- Chia sẻ dễ dàng — Gửi link hoặc xuất PDF ngay lập tức
- Lưu trữ đám mây — Dữ liệu an toàn trên Google Drive, không lo mất file
- Tích hợp tốt — Kết nối với Google Forms, Gmail, Google Apps Script
Bài viết này sẽ hướng dẫn bạn từng bước tạo hóa đơn chuyên nghiệp trên Google Sheets, bao gồm cả công thức tự động tính thuế VAT, dropdown list để chọn sản phẩm/khách hàng nhanh chóng, và cách xuất ra PDF để gửi cho khách. Cuối bài còn có template hóa đơn miễn phí bạn có thể tải về sử dụng ngay.
Cho dù bạn là freelancer, chủ shop online, hay doanh nghiệp nhỏ — bài hướng dẫn này sẽ giúp bạn tạo được hóa đơn đẹp và chuyên nghiệp chỉ trong 30 phút.
Thành Phần Bắt Buộc Của Hóa Đơn Tại Việt Nam
Trước khi bắt tay vào thiết kế, bạn cần nắm rõ các thành phần bắt buộc trên một hóa đơn hợp lệ tại Việt Nam theo quy định của Bộ Tài chính. Thiếu bất kỳ thành phần nào có thể khiến hóa đơn không có giá trị pháp lý.
| STT | Thành phần | Mô tả chi tiết | Bắt buộc |
|---|---|---|---|
| 1 | Thông tin bên bán | Tên công ty, địa chỉ, MST, SĐT, email | Có |
| 2 | Thông tin bên mua | Tên khách hàng/công ty, địa chỉ, MST (nếu có) | Có |
| 3 | Số hóa đơn | Mã số duy nhất, theo thứ tự tăng dần (VD: INV-2026-001) | Có |
| 4 | Ngày lập hóa đơn | Ngày phát hành hóa đơn | Có |
| 5 | Danh sách sản phẩm/dịch vụ | STT, tên SP, ĐVT, số lượng, đơn giá, thành tiền | Có |
| 6 | Thuế VAT | Thuế suất (8% hoặc 10%), tiền thuế | Có |
| 7 | Tổng tiền thanh toán | Tổng cộng bao gồm thuế, bằng số và bằng chữ | Có |
| 8 | Phương thức thanh toán | Tiền mặt, chuyển khoản, thẻ tín dụng | Nên có |
| 9 | Hạn thanh toán | Ngày cuối cùng khách phải thanh toán | Nên có |
Lưu ý quan trọng:
Hóa đơn tạo trên Google Sheets là hóa đơn nội bộ/báo giá. Đối với hóa đơn điện tử có giá trị pháp lý theo Nghị định 123/2020/NĐ-CP, doanh nghiệp cần sử dụng phần mềm hóa đơn điện tử được cấp phép. Tuy nhiên, template Google Sheets rất hữu ích cho freelancer, báo giá, và quản lý nội bộ.
Bước 1: Tạo Layout Hóa Đơn Trên Google Sheets
Bước đầu tiên là thiết lập cấu trúc bảng tính với layout hóa đơn chuyên nghiệp. Bạn cần chia sheet thành các vùng rõ ràng cho từng phần thông tin.
1.1 Thiết lập kích thước cột
Mở một Google Sheets mới và thiết lập độ rộng các cột như sau:
Cột A: 50px (STT)
Cột B: 250px (Tên sản phẩm/dịch vụ)
Cột C: 80px (Đơn vị tính)
Cột D: 80px (Số lượng)
Cột E: 150px (Đơn giá)
Cột F: 150px (Thành tiền)
Tổng chiều rộng: ~760px — vừa khổ giấy A4
Để chỉnh độ rộng cột: Click phải vào header cột > Resize column > nhập giá trị pixel.
1.2 Merge cells cho header
Phần header hóa đơn cần merge nhiều ô lại để đặt thông tin doanh nghiệp và tiêu đề:
// Vùng logo + tên công ty
Merge A1:B5 → Logo và tên doanh nghiệp (bên trái)
Merge C1:F2 → Tiêu đề "HÓA ĐƠN" (bên phải)
Merge C3:F3 → Số hóa đơn
Merge C4:F4 → Ngày lập
Merge C5:F5 → Hạn thanh toán
// Vùng thông tin bên bán
Merge A7:F7 → Dòng "THÔNG TIN BÊN BÁN" (header)
Merge A8:C8 → Tên công ty bán
Merge D8:F8 → MST bên bán
Merge A9:F9 → Địa chỉ bên bán
// Vùng thông tin bên mua
Merge A11:F11 → Dòng "THÔNG TIN BÊN MUA" (header)
Merge A12:C12 → Tên khách hàng/công ty mua
Merge D12:F12 → MST bên mua
Merge A13:F13 → Địa chỉ bên mua
Mẹo:
Chọn vùng ô cần merge > vào menu Format > Merge cells > Merge all. Hoặc dùng icon Merge trên toolbar để thao tác nhanh hơn.
1.3 Cấu trúc vùng sản phẩm và tổng tiền
// Header bảng sản phẩm (hàng 15)
A15: STT
B15: Tên sản phẩm / Dịch vụ
C15: ĐVT
D15: Số lượng
E15: Đơn giá
F15: Thành tiền
// Dữ liệu sản phẩm (hàng 16-25 — dành 10 dòng)
A16:F25 → Vùng nhập liệu sản phẩm
// Vùng tổng kết (hàng 27-30)
Merge A27:E27 → "Tổng cộng trước thuế" | F27: =SUM(F16:F25)
Merge A28:E28 → "Thuế VAT (10%)" | F28: =F27*10%
Merge A29:E29 → "TỔNG THANH TOÁN" | F29: =F27+F28
Merge A30:F30 → "Bằng chữ: ..."
Bước 2: Thêm Thông Tin Doanh Nghiệp
Phần header hóa đơn cần thể hiện đầy đủ thông tin doanh nghiệp của bạn. Đây là bộ mặt thương hiệu trên mỗi hóa đơn gửi đi.
2.1 Thêm logo công ty
Để chèn logo vào Google Sheets, bạn có 2 cách:
Cách 1: Dùng hàm IMAGE
// Chèn logo từ URL (đặt trong ô A1)
=IMAGE("https://your-domain.com/logo.png", 1)
// Tham số thứ 2:
// 1 = Co giãn theo tỷ lệ, vừa ô
// 2 = Co giãn vừa ô, không giữ tỷ lệ
// 3 = Giữ kích thước gốc
// 4 = Tùy chỉnh: =IMAGE(url, 4, chiều_cao, chiều_rộng)
Cách 2: Insert > Image > Image in cell — Kéo thả file ảnh trực tiếp vào ô. Cách này đơn giản hơn nhưng không linh hoạt bằng hàm IMAGE.
2.2 Thông tin cần điền
// Ô A1:B5 (đã merge) — Thông tin bên trái
CÔNG TY TNHH ABC
Địa chỉ: 123 Nguyễn Huệ, Q.1, TP.HCM
MST: 0123456789
SĐT: 028 1234 5678
Email: info@abc.com.vn
// Ô C1:F2 (đã merge) — Tiêu đề bên phải
HÓA ĐƠN (Invoice)
(Font size 28, Bold, màu #1e40af)
// Ô C3: Số HĐ: | Giá trị: INV-2026-001
// Ô C4: Ngày lập: | Giá trị: 25/02/2026
// Ô C5: Hạn TT: | Giá trị: 10/03/2026
Tip chuyên nghiệp:
Đặt thông tin doanh nghiệp ở một sheet riêng (ví dụ sheet "Config") rồi dùng công thức tham chiếu. Như vậy khi thay đổi thông tin, bạn chỉ cần sửa một nơi. Ví dụ: =Config!B1 để lấy tên công ty từ sheet Config.
Bước 3: Tạo Bảng Sản Phẩm / Dịch Vụ
Bảng sản phẩm là phần quan trọng nhất của hóa đơn. Cần thiết kế rõ ràng, dễ đọc và có công thức tự động tính toán.
3.1 Cấu trúc header bảng
| STT | Tên sản phẩm / Dịch vụ | ĐVT | SL | Đơn giá | Thành tiền |
|---|---|---|---|---|---|
| 1 | Thiết kế website doanh nghiệp | Gói | 1 | 15,000,000 | 15,000,000 |
| 2 | Hosting 1 năm | Năm | 1 | 2,400,000 | 2,400,000 |
| 3 | Tên miền .com.vn | Năm | 1 | 450,000 | 450,000 |
3.2 Công thức cột Thành tiền
Cột Thành tiền tự động nhân Số lượng x Đơn giá. Sử dụng công thức IF để ẩn kết quả 0 khi chưa nhập dữ liệu:
// Ô F16 (dòng sản phẩm đầu tiên):
=IF(D16="","",D16*E16)
// Giải thích:
// - Nếu ô Số lượng (D16) trống → hiển thị trống
// - Nếu có dữ liệu → tính Số lượng × Đơn giá
// Copy công thức từ F16 xuống F25 (10 dòng sản phẩm)
// Cách nhanh: Chọn F16 > kéo handle nhỏ ở góc phải xuống F25
3.3 Cột STT tự động
// Ô A16 — STT tự động chỉ khi có dữ liệu:
=IF(B16="","",ROW()-15)
// Giải thích:
// - ROW() trả về số hàng hiện tại (16)
// - Trừ 15 để bắt đầu từ 1
// - IF kiểm tra nếu cột B (tên SP) trống thì không hiện STT
// Copy từ A16 xuống A25
Bước 4: Công Thức Tự Động Tính Toán
Đây là phần quan trọng nhất khi tạo hóa đơn Google Sheets — các công thức sẽ giúp mọi tính toán hoàn toàn tự động, giảm thiểu sai sót.
4.1 Tổng cộng trước thuế
// Ô F27 — Tổng cộng trước thuế:
=SUM(F16:F25)
// Hoặc dùng SUMPRODUCT nếu muốn chắc chắn chỉ tính số:
=SUMPRODUCT((D16:D25)*(E16:E25))
4.2 Tính thuế VAT linh hoạt
Hiện tại thuế VAT tại Việt Nam có 2 mức phổ biến: 8% (một số ngành được giảm) và 10% (mức chuẩn). Để linh hoạt, tạo ô cho phép chọn thuế suất:
// Tạo ô chọn thuế suất (ví dụ ô E28):
// Vào Data > Data validation > Dropdown: 0%, 5%, 8%, 10%
// Ô F28 — Tiền thuế VAT:
=F27*E28
// Ví dụ: Nếu tổng trước thuế = 17,850,000 và VAT = 10%
// → F28 = 17,850,000 × 10% = 1,785,000
// CÁCH NÂNG CAO: VAT cho từng sản phẩm riêng
// Thêm cột G cho thuế suất từng dòng:
// G16: =IF(D16="","",F16*$E$28)
// Lúc này F27 vẫn là SUM(F16:F25) và F28 = SUM(G16:G25)
4.3 Tổng thanh toán
// Ô F29 — TỔNG THANH TOÁN:
=F27+F28
// Hoặc nếu có thêm chiết khấu:
// Ô F27: Tổng trước thuế
// Ô F28: Chiết khấu (%) → =F27*tỷ_lệ_CK
// Ô F29: Thuế VAT → =(F27-F28)*thuế_suất
// Ô F30: TỔNG = F27 - F28 + F29
4.4 VLOOKUP tự động tra cứu giá sản phẩm
Tạo sheet "DanhMucSP" chứa danh sách sản phẩm và giá, sau đó dùng VLOOKUP để tự động điền giá khi chọn sản phẩm:
// Sheet "DanhMucSP":
// Cột A: Mã SP | Cột B: Tên SP | Cột C: ĐVT | Cột D: Đơn giá
// SP001 | Website doanh nghiệp | Gói | 15000000
// SP002 | Hosting 1 năm | Năm | 2400000
// SP003 | Tên miền .com.vn | Năm | 450000
// Trong sheet Invoice, ô E16 (Đơn giá) — tự động tra cứu:
=IF(B16="","",VLOOKUP(B16,DanhMucSP!A:D,4,FALSE))
// Ô C16 (ĐVT) — tự động tra cứu:
=IF(B16="","",VLOOKUP(B16,DanhMucSP!A:D,3,FALSE))
// Hoặc dùng INDEX + MATCH (linh hoạt hơn VLOOKUP):
=IF(B16="","",INDEX(DanhMucSP!D:D,MATCH(B16,DanhMucSP!A:A,0)))
Mẹo chuyên nghiệp:
Kết hợp VLOOKUP với Data Validation (dropdown) ở cột Tên SP. Khi chọn sản phẩm từ dropdown, ĐVT và Đơn giá sẽ tự động điền — rất nhanh và không sai sót!
4.5 Định dạng số tiền VND
// Chọn cột E (Đơn giá) và F (Thành tiền)
// Format > Number > Custom number format
// Nhập pattern: #,##0 "đ"
// Ví dụ kết quả: 15,000,000 đ
// Hoặc pattern chi tiết hơn:
// #,##0 "VNĐ" → 15,000,000 VNĐ
// #,### → 15,000,000 (không đơn vị)
// "$"#,##0 → $15,000,000 (cho invoice quốc tế)
Bước 5: Định Dạng Chuyên Nghiệp
Sau khi có cấu trúc và công thức, bước tiếp theo là làm cho hóa đơn trở nên chuyên nghiệp và đẹp mắt. Đây là phần tạo nên sự khác biệt giữa một bảng tính thô và một hóa đơn thương mại thực thụ.
5.1 Font chữ và cỡ chữ
// Khuyến nghị font chuyên nghiệp:
// - Tiêu đề "HÓA ĐƠN": Arial Black hoặc Roboto, 28pt, Bold
// - Tên công ty: Arial, 16pt, Bold
// - Header bảng: Arial, 11pt, Bold, Trắng trên nền xanh
// - Nội dung: Arial, 10pt, Regular
// - Tổng thanh toán: Arial, 14pt, Bold, Đỏ hoặc Xanh đậm
// - Ghi chú footer: Arial, 9pt, Italic, Màu xám
5.2 Bảng màu chuyên nghiệp
| Phần tử | Màu nền | Màu chữ | Mã màu |
|---|---|---|---|
| Header bảng SP | Xanh đậm | Trắng | #1e40af / #ffffff |
| Dòng chẵn | Xám nhạt | Đen | #f3f4f6 / #111827 |
| Dòng lẻ | Trắng | Đen | #ffffff / #111827 |
| Dòng tổng tiền | Xanh nhạt | Xanh đậm | #dbeafe / #1e3a8a |
| Tiêu đề HÓA ĐƠN | Không nền | Xanh đậm | transparent / #1e40af |
5.3 Borders và đường kẻ
// Áp dụng border cho bảng sản phẩm:
// 1. Chọn vùng A15:F25
// 2. Toolbar > Borders > All borders (đường kẻ mỏng)
// 3. Riêng header A15:F15 > Bottom border: Thick (đậm)
// 4. Riêng dòng tổng A27:F29 > Top border: Double line
// Border color nên dùng: #d1d5db (xám nhẹ, không quá nổi)
5.4 Conditional Formatting cho dòng xen kẽ
// Tạo dòng xen kẽ màu (zebra stripes) cho dễ đọc:
// 1. Chọn A16:F25
// 2. Format > Conditional formatting
// 3. Custom formula: =ISEVEN(ROW())
// 4. Background color: #f3f4f6 (xám rất nhạt)
// Hoặc dùng Alternating colors:
// Format > Alternating colors > Chọn style > Done
Bước 6: Tạo Dropdown List Cho Khách Hàng & Sản Phẩm
Dropdown list giúp bạn nhập liệu nhanh chóng và chính xác. Khi chọn khách hàng hoặc sản phẩm từ danh sách, các thông tin liên quan sẽ tự động điền — tiết kiệm rất nhiều thời gian khi tạo hóa đơn hàng ngày.
6.1 Tạo sheet danh mục
Tạo 2 sheet phụ để lưu dữ liệu master:
// Sheet "KhachHang" — Danh sách khách hàng:
// A: Tên KH | B: Công ty | C: Địa chỉ | D: MST | E: SĐT
// Nguyễn Văn A | Cty ABC | 123 Lê Lợi, Q.1 | 0312345678 | 0901234567
// Trần Thị B | Cty XYZ | 456 Trần Hưng Đạo | 0398765432 | 0912345678
// Sheet "DanhMucSP" — Danh sách sản phẩm:
// A: Mã SP | B: Tên SP | C: ĐVT | D: Đơn giá
// SP001 | Website doanh nghiệp | Gói | 15000000
// SP002 | Hosting 1 năm | Năm | 2400000
// SP003 | SEO 6 tháng | Gói | 30000000
6.2 Tạo dropdown chọn khách hàng
// Bước 1: Chọn ô thông tin khách hàng (VD: A12)
// Bước 2: Data > Data validation
// Bước 3: Criteria > List from a range
// Bước 4: Nhập range: KhachHang!A2:A100
// Bước 5: Tick "Show dropdown list in cell"
// Bước 6: Done
// Sau khi chọn khách hàng, tự động điền thông tin:
// Ô D12 (MST): =IF(A12="","",VLOOKUP(A12,KhachHang!A:D,4,FALSE))
// Ô A13 (Địa chỉ): =IF(A12="","",VLOOKUP(A12,KhachHang!A:C,3,FALSE))
6.3 Tạo dropdown chọn sản phẩm
// Ô B16 (Tên SP dòng 1):
// Data > Data validation > List from a range: DanhMucSP!B2:B100
// Khi chọn SP từ dropdown, tự động điền:
// C16 (ĐVT): =IF(B16="","",VLOOKUP(B16,DanhMucSP!B:D,2,FALSE))
// E16 (Đơn giá): =IF(B16="","",VLOOKUP(B16,DanhMucSP!B:D,3,FALSE))
// F16 (Thành tiền): =IF(D16="","",D16*E16)
// Chỉ cần chọn SP và nhập SL → tất cả tự động tính!
Nâng cao — Dependent Dropdown:
Nếu sản phẩm chia theo danh mục (Phần mềm, Dịch vụ, Phụ kiện...), bạn có thể tạo dependent dropdown — chọn danh mục trước, danh sách SP thay đổi theo. Dùng hàm FILTER kết hợp Data Validation:
// Data validation source cho dropdown SP:
=FILTER(DanhMucSP!B:B, DanhMucSP!E:E=G15)
// G15 là ô chứa danh mục đã chọn
Bước 7: In & Xuất PDF Hóa Đơn
Sau khi hoàn thành hóa đơn, bạn cần xuất ra PDF hoặc in trực tiếp để gửi cho khách hàng. Google Sheets hỗ trợ cả hai cách này.
7.1 Thiết lập trang in
// File > Print (Ctrl + P)
// Các thiết lập quan trọng:
// 1. Print: Current sheet (chỉ in sheet Invoice)
// 2. Paper size: A4
// 3. Page orientation: Portrait (dọc)
// 4. Scale: Fit to width (vừa chiều ngang)
// 5. Margins: Normal hoặc Narrow
// 6. Formatting:
// ✅ Show gridlines: OFF (tắt đường kẻ sheet)
// ✅ Show notes: OFF
// 7. Headers and Footers:
// - Page numbers: OFF (hóa đơn 1 trang)
// - Workbook title: OFF
// - Sheet name: OFF
7.2 Xuất PDF
Có 2 cách xuất PDF từ Google Sheets:
// Cách 1: File > Download > PDF document (.pdf)
// → Mở Print Preview, chỉnh thiết lập rồi click "Export"
// Cách 2: File > Email as attachment
// → Chọn format PDF, nhập email khách hàng
// → Google Sheets sẽ tự gửi email kèm file PDF!
// Cách 3 (nâng cao): Dùng Apps Script tự động xuất PDF
// (Xem phần Apps Script bên dưới)
Mẹo chuyên nghiệp:
Trước khi xuất PDF, hãy ẩn các sheet phụ (DanhMucSP, KhachHang) bằng cách click phải vào tab sheet > Hide sheet. Điều này giúp file PDF gọn gàng hơn nếu khách tải cả file.
7.3 Tạo nút "Xuất PDF" nhanh
// Chèn nút button: Insert > Drawing > tạo hình chữ nhật "Xuất PDF"
// Click phải vào Drawing > Assign script > nhập: exportPDF
// Hàm Apps Script exportPDF (xem chi tiết phần 11)
Template Hóa Đơn Miễn Phí — Tải Về Ngay
Nếu bạn không muốn tạo từ đầu, dưới đây là mô tả template hóa đơn chuyên nghiệp mà bạn có thể áp dụng ngay. Template bao gồm đầy đủ các tính năng đã hướng dẫn ở trên.
Template Invoice Pro — Google Sheets
Tính năng bao gồm:
- Layout hóa đơn A4 chuyên nghiệp
- Dropdown list khách hàng & sản phẩm
- VLOOKUP tự động tra cứu giá
- Tính VAT 8%/10% linh hoạt
- Số hóa đơn tự tăng
- Conditional formatting
- Print-ready (sẵn sàng in)
Bao gồm các sheet:
- Invoice — Sheet hóa đơn chính
- KhachHang — Danh sách khách hàng
- DanhMucSP — Danh mục sản phẩm & giá
- Config — Thông tin doanh nghiệp
- LichSu — Lịch sử hóa đơn đã tạo
Tuy nhiên, nếu doanh nghiệp bạn cần giải pháp quản lý hóa đơn và đơn hàng chuyên nghiệp hơn — với tính năng quản lý kho, CRM khách hàng, báo cáo doanh thu tự động — hãy tham khảo Phần Mềm Quản Lý Bán Hàng SheetStore. Phần mềm tích hợp sẵn tính năng tạo hóa đơn, quản lý đơn hàng và xuất báo cáo thuế — tất cả chạy trên nền tảng Google Sheets quen thuộc.
Tự Động Hóa Với Google Apps Script
Nếu bạn muốn nâng cấp hóa đơn Google Sheets lên một tầm cao mới, Google Apps Script sẽ giúp bạn tự động hóa toàn bộ quy trình — từ đánh số hóa đơn, gửi email đến lưu lịch sử.
11.1 Tự động đánh số hóa đơn
// Extensions > Apps Script > paste code sau:
function generateInvoiceNumber() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const configSheet = ss.getSheetByName("Config");
// Lấy số hóa đơn cuối cùng từ Config
let lastNum = configSheet.getRange("B10").getValue(); // VD: 42
let newNum = lastNum + 1;
// Format: INV-2026-043
const year = new Date().getFullYear();
const invoiceNumber = "INV-" + year + "-" +
String(newNum).padStart(3, "0");
// Cập nhật số mới vào Config
configSheet.getRange("B10").setValue(newNum);
// Điền vào ô số hóa đơn trên Invoice
const invoiceSheet = ss.getSheetByName("Invoice");
invoiceSheet.getRange("E3").setValue(invoiceNumber);
// Điền ngày lập = hôm nay
invoiceSheet.getRange("E4").setValue(new Date());
// Điền hạn TT = 15 ngày sau
const dueDate = new Date();
dueDate.setDate(dueDate.getDate() + 15);
invoiceSheet.getRange("E5").setValue(dueDate);
SpreadsheetApp.getUi().alert(
"Đã tạo hóa đơn mới: " + invoiceNumber
);
}
// Gán hàm này cho nút "Tạo HĐ Mới" trên sheet
11.2 Tự động gửi hóa đơn qua email
function sendInvoiceEmail() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const invoiceSheet = ss.getSheetByName("Invoice");
// Lấy thông tin
const invoiceNum = invoiceSheet.getRange("E3").getValue();
const customerName = invoiceSheet.getRange("A12").getValue();
const totalAmount = invoiceSheet.getRange("F29").getValue();
const customerEmail = invoiceSheet.getRange("F12").getValue();
if (!customerEmail) {
SpreadsheetApp.getUi().alert("Vui lòng nhập email khách hàng!");
return;
}
// Xuất PDF
const url = ss.getUrl().replace(/edit.*$/, '') +
'export?format=pdf' +
'&gid=' + invoiceSheet.getSheetId() +
'&size=A4' +
'&portrait=true' +
'&gridlines=false';
const token = ScriptApp.getOAuthToken();
const response = UrlFetchApp.fetch(url, {
headers: { 'Authorization': 'Bearer ' + token }
});
const pdfBlob = response.getBlob()
.setName(invoiceNum + '.pdf');
// Gửi email
const subject = "Hóa đơn " + invoiceNum +
" - " + ss.getSheetByName("Config")
.getRange("B1").getValue();
const body = "Kính gửi " + customerName + ",\n\n" +
"Đính kèm là hóa đơn " + invoiceNum +
" với tổng thanh toán: " +
Utilities.formatString("%,.0f", totalAmount) + " VNĐ.\n\n" +
"Vui lòng thanh toán trong thời hạn ghi trên hóa đơn.\n\n" +
"Trân trọng,\n" +
ss.getSheetByName("Config").getRange("B1").getValue();
GmailApp.sendEmail(customerEmail, subject, body, {
attachments: [pdfBlob],
name: ss.getSheetByName("Config").getRange("B1").getValue()
});
SpreadsheetApp.getUi().alert(
"Đã gửi hóa đơn " + invoiceNum +
" đến " + customerEmail
);
}
11.3 Lưu lịch sử hóa đơn tự động
function saveInvoiceHistory() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const inv = ss.getSheetByName("Invoice");
const history = ss.getSheetByName("LichSu");
// Lấy dữ liệu từ invoice hiện tại
const data = [
inv.getRange("E3").getValue(), // Số HĐ
new Date(), // Ngày lưu
inv.getRange("A12").getValue(), // Khách hàng
inv.getRange("F27").getValue(), // Tổng trước thuế
inv.getRange("F28").getValue(), // VAT
inv.getRange("F29").getValue(), // Tổng thanh toán
"Chưa thanh toán" // Trạng thái
];
// Thêm vào dòng cuối sheet LichSu
history.appendRow(data);
SpreadsheetApp.getUi().alert("Đã lưu vào lịch sử!");
}
// Kết hợp 3 hàm vào 1 quy trình:
function createAndSendInvoice() {
generateInvoiceNumber(); // Tạo số HĐ mới
saveInvoiceHistory(); // Lưu lịch sử
sendInvoiceEmail(); // Gửi email
}
Muốn tự động hóa nâng cao hơn?
Nếu bạn cần hệ thống quản lý hóa đơn toàn diện với tự động đánh số, quản lý trạng thái thanh toán, nhắc nhở nợ quá hạn, và báo cáo doanh thu — hãy khám phá Phần Mềm Quản Lý Bán Hàng SheetStore. Tất cả đã được xây dựng sẵn trên nền Google Sheets, bạn chỉ cần sử dụng.
Tips Quản Lý Hóa Đơn Hiệu Quả
Tạo được hóa đơn đẹp chỉ là bước đầu. Quản lý hóa đơn hiệu quả mới là chìa khóa giúp tài chính doanh nghiệp luôn minh bạch và kiểm soát được.
1. Đánh số hóa đơn liên tục
Sử dụng format nhất quán: INV-YYYY-NNN (VD: INV-2026-001). Không bao giờ bỏ sót hoặc đánh lại số đã dùng. Dùng Apps Script để tự động hóa việc này.
2. Lưu lịch sử mỗi hóa đơn
Mỗi khi tạo hóa đơn xong, lưu một bản vào sheet "LichSu" với các cột: Số HĐ, Ngày, Khách hàng, Tổng tiền, Trạng thái thanh toán. Dùng Conditional Formatting tô đỏ các hóa đơn quá hạn.
3. Tạo folder PDF trên Drive
Tổ chức file PDF theo cấu trúc: Drive > Hóa đơn > 2026 > Tháng 02. Apps Script có thể tự động lưu PDF vào đúng folder.
4. Backup định kỳ
Dù Google Drive đã lưu trữ đám mây, hãy tải backup file gốc (.xlsx) hàng tháng. Vào File > Download > Microsoft Excel để tải về.
5. Phân quyền truy cập
Chỉ chia sẻ quyền "View" cho khách hàng (nếu dùng link). Giữ quyền "Edit" cho nội bộ. Protect sheet Config và DanhMucSP để tránh chỉnh sửa nhầm.
6. Review thuế suất định kỳ
Thuế VAT có thể thay đổi theo chính sách nhà nước (như giảm từ 10% xuống 8% trong giai đoạn hỗ trợ). Kiểm tra và cập nhật thuế suất trong sheet Config mỗi quý.
7. Sử dụng Named Ranges
Đặt tên cho các vùng quan trọng: Data > Named ranges. VD: "DanhSachSP" cho DanhMucSP!B2:B100, "GiaSP" cho DanhMucSP!D2:D100. Công thức sẽ dễ đọc hơn nhiều.
Kết Luận
Vậy là bạn đã biết cách tạo hóa đơn Google Sheets chuyên nghiệp từ A đến Z. Tóm tắt các bước chính:
- Tạo Layout — Merge cells, chia vùng header/body/footer rõ ràng
- Thêm thông tin DN — Logo, tên, MST, địa chỉ, liên hệ
- Bảng sản phẩm — STT, tên SP, ĐVT, SL, đơn giá, thành tiền
- Công thức tự động — SUM, IF, VLOOKUP, tính VAT
- Định dạng đẹp — Font, màu, border, conditional formatting
- Dropdown list — Chọn KH và SP từ danh sách, tự động fill
- In & xuất PDF — Thiết lập A4, gửi email kèm PDF
Google Sheets là công cụ tuyệt vời cho freelancer và doanh nghiệp nhỏ vì miễn phí, linh hoạt và dễ tùy biến. Với Apps Script, bạn còn có thể tự động hóa hoàn toàn quy trình tạo và gửi hóa đơn.
Tuy nhiên, khi doanh nghiệp phát triển và cần quản lý hàng trăm hóa đơn mỗi tháng, kết hợp với quản lý kho hàng, CRM khách hàng, và báo cáo tài chính tổng hợp — bạn sẽ cần một giải pháp chuyên nghiệp hơn. Phần Mềm Quản Lý Bán Hàng SheetStore được xây dựng trên nền Google Sheets, giúp bạn chuyển đổi mượt mà mà không phải học công cụ mới.
Hãy bắt đầu với template miễn phí, thực hành theo từng bước, và dần dần tùy biến theo nhu cầu riêng của bạn. Chúc bạn tạo được những hóa đơn thật chuyên nghiệp!
Câu Hỏi Thường Gặp (FAQ)
Hóa đơn tạo trên Google Sheets có giá trị pháp lý không?
Hóa đơn tạo trên Google Sheets là hóa đơn nội bộ, dùng cho báo giá, ghi nhận giao dịch và quản lý nội bộ. Để có hóa đơn điện tử có giá trị pháp lý theo Nghị định 123/2020/NĐ-CP, doanh nghiệp cần sử dụng phần mềm hóa đơn điện tử được Bộ Tài chính cấp phép (như VNPT Invoice, FPT eInvoice, MInvoice...).
Làm sao để hóa đơn tự động đánh số tăng dần?
Có 2 cách: (1) Dùng công thức trên sheet Config để lưu số cuối cùng, mỗi lần tạo HĐ mới thì +1. (2) Dùng Apps Script với hàm generateInvoiceNumber() như đã hướng dẫn ở phần 11. Cách thứ 2 chuyên nghiệp và an toàn hơn vì tránh được việc chỉnh sửa nhầm.
Có thể tạo hóa đơn bằng nhiều ngoại tệ không?
Có! Thêm ô chọn đơn vị tiền tệ (VND, USD, EUR) vào phần Config. Dùng hàm GOOGLEFINANCE("CURRENCY:USDVND") để lấy tỷ giá realtime. Sau đó dùng IF để thay đổi ký hiệu tiền tệ và format số cho phù hợp. Đối với khách quốc tế, template bằng tiếng Anh sẽ chuyên nghiệp hơn.
Thuế VAT 8% hay 10% — áp dụng khi nào?
Thuế VAT 10% là mức chuẩn áp dụng cho hầu hết hàng hóa dịch vụ. Mức 8% được áp dụng cho một số ngành hàng theo chính sách giảm thuế của Chính phủ (Nghị định 15/2022). Một số mặt hàng thuế VAT 5% (giáo dục, y tế, nông nghiệp). Kiểm tra danh mục ngành hàng cụ thể trên website Tổng cục Thuế để áp dụng đúng thuế suất.
Google Sheets có giới hạn số lượng hóa đơn lưu trữ không?
Google Sheets hỗ trợ tối đa 10 triệu ô (cells) trên mỗi spreadsheet. Nếu mỗi hóa đơn dùng khoảng 40 dòng, bạn có thể lưu hàng nghìn hóa đơn trong sheet LichSu. Tuy nhiên, khi file quá lớn sẽ chậm. Khuyến nghị: tạo file mới theo năm (Invoice_2026, Invoice_2027...) để giữ tốc độ.
Nên dùng Google Sheets hay Excel để tạo hóa đơn?
Cả hai đều phù hợp. Google Sheets ưu thế ở: miễn phí, truy cập online mọi nơi, chia sẻ link dễ dàng, Apps Script mạnh mẽ, và tích hợp Gmail/Drive. Excel ưu thế ở: macro VBA phong phú hơn, xử lý file lớn nhanh hơn, và nhiều template có sẵn. Nếu bạn đã dùng Google Workspace, Google Sheets là lựa chọn tối ưu.
Bài viết được cập nhật lần cuối: Tháng 2/2026. Nội dung được biên soạn bởi đội ngũ chuyên gia Google Sheets tại SheetStore — sheet.com.vn
Bạn đã tạo hóa đơn trên Google Sheets chưa? Chia sẻ kinh nghiệm của bạn ở phần bình luận bên dưới!
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.