# Cách tạo mã QR chuyển khoản trong Google Sheets bằng hàm IMAGE và VietQR

Một hàm IMAGE ghép với link ảnh của img.vietqr.io là đủ để mỗi dòng trong Google Sheets có một mã QR chuyển khoản điền sẵn số tiền và nội dung — khách quét bằng app ngân hàng là chuyển đúng. Bài này đi qua cấu trúc link, bảng mã BIN, cách dùng ENCODEURL cho nội dung, các lỗi hay gặp, và một điều cần biết trước: số tài khoản, số tiền, nội dung sẽ đi qua máy chủ của bên thứ ba.

Đăng 2026-10-10 · 8 phút đọc · Google Sheets, Mã QR, VietQR, Công thức

Video: https://youtu.be/JKdgBp0dm1k

## Công thức tạo mã QR chuyển khoản trong một ô

Giả sử cột B là số tiền, cột C là nội dung chuyển khoản. Gõ vào D2 (thay 970436 và số tài khoản bằng của bạn):

**Mã QR VietQR trong ô** — đổi B2 hay C2 là mã đổi theo:

```
=IMAGE("https://img.vietqr.io/image/970436-0011001234567-compact.png?amount="&ROUND(B2;0)&"&addInfo="&ENCODEURL(C2)&"&accountName="&ENCODEURL("NGUYEN VAN AN"))
```

- **Hàm dùng:** IMAGE + ENCODEURL
- **Ảnh do:** img.vietqr.io vẽ
- **Nội dung tối đa:** 50 ký tự, không ký tự đặc biệt
- **Chạy trên:** Google Sheets (cần mạng)

Kéo công thức xuống là mỗi dòng một mã. Tăng chiều cao hàng lên khoảng 150 px để ảnh đủ to cho camera điện thoại quét.

## Cấu trúc link VietQR: mỗi phần nghĩa là gì

Theo tài liệu "Quick Link" của VietQR.io, link ảnh gồm phần đường dẫn **img.vietqr.io/image/BANK_ID-ACCOUNT_NO-TEMPLATE.png** và ba tham số sau dấu ?: **amount**, **addInfo**, **accountName**, nối với nhau bằng dấu &.

*Nguồn: tài liệu VietQR.io, mục Link tạo mã nhanh.*

| Phần | Ý nghĩa | Lưu ý |
|---|---|---|
| BANK_ID | Mã BIN 6 số của ngân hàng (970436) hoặc tên viết tắt (vietcombank, VCB) | Dùng mã BIN cho chắc, không sợ viết sai tên |
| ACCOUNT_NO | Số tài khoản nhận tiền | Tối đa 19 ký tự, chỉ chữ số, không khoảng trắng |
| TEMPLATE | Kiểu ảnh: compact (540×540), compact2 (có thông tin chuyển khoản), qr_only (chỉ mã), print | compact gọn nhất cho một ô |
| amount | Số tiền | Số nguyên dương, không dấu chấm phân cách |
| addInfo | Nội dung chuyển khoản | Tối đa 50 ký tự, không ký tự đặc biệt |
| accountName | Tên in lên ảnh | Không thuộc chuẩn VietQR — app ngân hàng vẫn hiện tên thật của chủ tài khoản |

Muốn đổi tài khoản cho cả file mà không sửa từng công thức, để mã BIN ở G1, số tài khoản ở G2, tên ở G3:

**Bản đọc từ ô thiết lập**, dòng chưa có số tiền thì để trống:

```
=IF(B2=""; ""; IMAGE("https://img.vietqr.io/image/"&$G$1&"-"&$G$2&"-compact.png?amount="&ROUND(B2;0)&"&addInfo="&ENCODEURL(C2)&"&accountName="&ENCODEURL($G$3)))
```

## Mã BIN của các ngân hàng phổ biến

*Lấy từ danh sách ngân hàng của api.vietqr.io (tháng 09/2026). Ngân hàng khác: tra trong danh sách đó.*

| Ngân hàng | Mã BIN | Ngân hàng | Mã BIN |
|---|---|---|---|
| Vietcombank | 970436 | MBBank | 970422 |
| VietinBank | 970415 | ACB | 970416 |
| BIDV | 970418 | VPBank | 970432 |
| Agribank | 970405 | TPBank | 970423 |
| Techcombank | 970407 | Sacombank | 970403 |

**Thử với chính tài khoản của bạn trước:** Trước khi gửi cho ai, quét mã bằng app ngân hàng của bạn: app phải hiện đúng tên chủ tài khoản, đúng số tiền, đúng nội dung. Không cần bấm chuyển. Sai một chữ số BIN hay số tài khoản là tiền đi nhầm chỗ.

## ENCODEURL là gì và vì sao nội dung nên viết không dấu

Link không được chứa khoảng trắng, dấu &, dấu ? hay chữ tiếng Việt có dấu ở dạng nguyên. Hàm **ENCODEURL** đổi các ký tự đó thành mã %XX: khoảng trắng thành %20, "ò" thành %C3%B2 (hai byte UTF-8), "&" thành %26. Thiếu ENCODEURL, nội dung "A101 & A102" sẽ cắt link làm đôi ở dấu &, phần sau bị hiểu thành một tham số khác.

![Bảng ví dụ ENCODEURL: A101 202610 thành A101%20202610, Phòng A101 thành Ph%C3%B2ng%20A101, A101 & A102 thành A101%20%26%20A102, và cảnh báo không đưa tên, số điện thoại vào nội dung](https://www.hitava.cloud/img/blog/tao-ma-qr-chuyen-khoan-trong-google-sheets/encodeurl.webp)

ENCODEURL làm link hợp lệ, nhưng **không làm nội dung có dấu dùng được ở mọi ngân hàng**: tài liệu VietQR ghi nội dung không có ký tự đặc biệt, và nhiều app tự bỏ dấu khi hiện. Cách chắc nhất là ghép nội dung từ mã không dấu, ví dụ mã phòng + kỳ:

**Nội dung chuyển khoản** dạng "A101 202610" từ mã phòng (A2) và ngày đầu kỳ (D2):

```
=A2&" "&TEXT(D2;"yyyymm")
```

Nội dung ngắn, không dấu, theo một mẫu cố định còn có lợi khi đối chiếu: nhìn sao kê thấy "A101 202610" là biết tiền phòng nào, tháng nào.

## Lưu ý: dữ liệu đi qua máy chủ img.vietqr.io

Hàm IMAGE không tự vẽ mã QR. Mỗi lần trang tính mở hoặc tính lại, Google tải ảnh từ img.vietqr.io theo đúng link bạn ghép — nghĩa là **số tài khoản, số tiền và nội dung nằm nguyên trong link** và được gửi tới một dịch vụ bên ngoài, không phải của Google hay ngân hàng.

- Không đưa tên khách, số điện thoại, CCCD vào nội dung chuyển khoản. Mã phòng, mã học sinh, mã chuyến đi là đủ.
- Ai có quyền xem file đều thấy link (bấm vào ô là thấy công thức) và thấy số tài khoản, số tiền của từng dòng.
- Ảnh cần có mạng mới hiện. Dịch vụ bên ngoài đổi cách hoạt động hoặc ngừng thì ô sẽ trống — vẫn nên ghi số tài khoản bằng chữ cạnh mã QR để chuyển tay.
- Excel 2016–2021 không có hàm IMAGE; Excel 365 bản mới có hàm IMAGE nhưng cú pháp khác. Công thức trong bài viết cho Google Sheets.

Nếu không muốn dữ liệu đi qua bên thứ ba, cách còn lại là tự sinh mã theo chuẩn VietQR (EMVCo + CRC) bằng Apps Script ngay trong file — dài hơn nhiều so với một công thức, nên phần lớn người dùng chọn hàm IMAGE.

## Dùng mã QR ở đâu: hoá đơn phòng trọ, học phí, chia tiền đi chơi

![Tab Chia tiền trong Google Sheets: mỗi thành viên một dòng có số dư, việc cần làm, mã QR VietQR của Techcombank, MBBank, ACB, Vietcombank và cột chuyển tay ghi ngân hàng, số tài khoản](https://www.hitava.cloud/img/blog/tao-ma-qr-chuyen-khoan-trong-google-sheets/qr-trong-o.webp)
*Mẫu Quản lý đi chơi: mỗi người một mã QR do hàm IMAGE tải từ img.vietqr.io, kèm cột chuyển tay khi QR không hiện.*

- **Hoá đơn phòng trọ:** mỗi phòng một mã với tổng tiền tháng và nội dung "mã phòng + kỳ" — xem cả quy trình ở [cách quản lý phòng trọ bằng Google Sheets](https://www.hitava.cloud/blog/cach-quan-ly-phong-tro-bang-google-sheets).
- **Học phí lớp dạy thêm:** một mã cho mỗi phiếu, anh chị em gộp một phiếu — xem [quản lý lớp dạy thêm bằng Google Sheets](https://www.hitava.cloud/blog/quan-ly-lop-day-them-bang-google-sheets).
- **Chia tiền đi chơi:** mỗi người nợ một mã chuyển đúng số cho người giữ quỹ — xem [cách chia tiền đi chơi nhóm](https://www.hitava.cloud/blog/cach-chia-tien-di-choi-nhom).

→ [Quản lý phòng trọ PRO tạo mã QR VietQR ngay trong file bằng Apps Script trên Google Sheets — từ số tài khoản bạn điền ở tab Thiết lập, không gửi dữ liệu tới dịch vụ nào khác. Hoá đơn có mã điền sẵn số tiền và nội dung "mã phòng + kỳ", chép tin Zalo, tải ảnh, tạo PDF, rồi dán sao kê để tự khớp ai đã chuyển.](https://www.hitava.cloud/san-pham/quan-ly-phong-tro-pro)

![Hoá đơn phòng B105 tháng 06/2026 trong Quản lý phòng trọ PRO: mã QR chuyển khoản 1.901.000đ Vietcombank, nội dung B105 202606, nút chép tin Zalo, tải ảnh hoá đơn, tạo PDF](https://www.hitava.cloud/img/blog/tao-ma-qr-chuyen-khoan-trong-google-sheets/hoa-don-qr-phong-tro.webp)

Mẫu [Quản lý lớp học PRO](https://www.hitava.cloud/san-pham/quan-ly-lop-hoc-pro) cũng tạo mã QR học phí ngay trong file như vậy; mẫu [Quản lý đi chơi](https://www.hitava.cloud/san-pham/quan-ly-di-choi) không dùng Apps Script nên lấy ảnh QR từ img.vietqr.io bằng đúng hàm IMAGE trong bài này.

## Mã QR không hiện hoặc quét ra sai: lỗi hay gặp

| Triệu chứng | Nguyên nhân | Cách sửa |
|---|---|---|
| Ô trống, không có ảnh | Số tiền rỗng hoặc bằng 0, BIN sai, mất mạng | Kiểm tra từng ô G1, G2, B2; mở link trong trình duyệt xem có ảnh không |
| App báo số tiền sai | Số tiền có phần lẻ (1.161.290,32) hoặc là chữ | Bọc ROUND(B2;0); số dạng chữ xem [sửa lỗi SUM bằng 0](https://www.hitava.cloud/blog/sua-loi-sum-bang-0-trong-google-sheets) |
| Nội dung bị cắt | Có dấu & hoặc # chưa ENCODEURL, hoặc quá 50 ký tự | Dùng ENCODEURL, rút ngắn nội dung |
| Báo lỗi công thức | Dấu phẩy thay vì chấm phẩy (hoặc ngược lại) | Vùng Việt Nam dùng ;, vùng Hoa Kỳ dùng , |
| Ảnh quá nhỏ, khó quét | Hàng thấp | Tăng chiều cao hàng, hoặc IMAGE(link; 4; 160; 160) để đặt cỡ 160×160 px |

- [Google Sheets hay Excel?](https://www.hitava.cloud/blog/google-sheets-hay-excel): Hàm nào chỉ có trên Google Sheets
- [Cách quản lý phòng trọ bằng Google Sheets](https://www.hitava.cloud/blog/cach-quan-ly-phong-tro-bang-google-sheets): Hoá đơn có mã QR trong vòng 6 bước
- [Cách chia tiền đi chơi nhóm](https://www.hitava.cloud/blog/cach-chia-tien-di-choi-nhom): Mỗi người một mã QR chuyển đúng số
- [Hướng dẫn cài Quản lý phòng trọ PRO](https://www.hitava.cloud/huong-dan/quan-ly-phong-tro-pro): Có bước thử mã QR 1.000đ

## Câu hỏi thường gặp

**Tạo mã QR bằng img.vietqr.io có cần đăng ký không?**

Link tạo mã nhanh chỉ là một địa chỉ ảnh, dán vào trình duyệt là thấy, không cần đăng ký để thử. Tài liệu VietQR.io lưu ý dự án chính thức nên tạo template riêng — nếu dùng thường xuyên cho việc kinh doanh, đọc điều khoản trên vietqr.io.

**Mã QR này có dùng được với mọi app ngân hàng không?**

Mã theo chuẩn VietQR của Napas nên các app ngân hàng hỗ trợ VietQR quét được. Hãy tự quét thử bằng app của bạn và của một ngân hàng khác trước khi gửi hàng loạt.

**Có nên để nội dung chuyển khoản có dấu tiếng Việt?**

Không nên. ENCODEURL làm link hợp lệ, nhưng VietQR yêu cầu nội dung không có ký tự đặc biệt và nhiều app tự bỏ dấu. Dùng mã ngắn không dấu như "A101 202610".

**Tại sao mở bằng Excel thì ô mã QR trống?**

Excel 2016–2021 không có hàm IMAGE, còn Excel 365 có hàm IMAGE với cú pháp khác. Công thức trong bài viết cho Google Sheets; trên Excel hãy để cột ghi ngân hàng, số tài khoản, số tiền để chuyển tay.

**Đổi tài khoản nhận tiền thì có phải sửa từng ô không?**

Không nếu bạn để mã BIN, số tài khoản, tên ở ô thiết lập ($G$1, $G$2, $G$3) như công thức thứ hai trong bài. Sửa ba ô đó là mọi mã QR đổi theo.

Video: [Đi chơi về chia tiền: mỗi người một mã QR chuyển đúng số (Short)](https://youtu.be/zLON0Ty4F4s)

## Nguồn

- [VietQR.io — Link tạo mã nhanh (Quick Link)](https://www.vietqr.io/danh-sach-api/link-tao-ma-nhanh/)
- [VietQR.io — Danh sách ngân hàng (mã BIN)](https://api.vietqr.io/v2/banks)
- [Google — Hàm IMAGE](https://support.google.com/docs/answer/3093333?hl=vi)
- [Google — Hàm ENCODEURL](https://support.google.com/docs/answer/9199778?hl=vi)

## Mẫu liên quan

- https://www.hitava.cloud/san-pham/quan-ly-phong-tro-pro
- https://www.hitava.cloud/san-pham/quan-ly-lop-hoc-pro
- https://www.hitava.cloud/san-pham/quan-ly-di-choi

Trang bài viết: https://www.hitava.cloud/blog/tao-ma-qr-chuyen-khoan-trong-google-sheets