Xác Nhận Chuyển Khoản Tự Động Trên Google Sheets: Cách Làm 2026
Mục lục:
- 1. Vì sao bạn cứ phải hỏi đi hỏi lại "anh/chị chuyển chưa"
- 2. Nguyên lý: Sheets không tự biết tiền đã về, phải có webhook báo cho nó
- 3. Đối soát theo nội dung chuyển khoản: chỗ dễ sai nhất
- 4. Dashboard theo dõi: biết ngay hôm nay thu được bao nhiêu mà không cần cộng tay
- 5. Khi nào nên tự xây bằng Apps Script, khi nào nên dùng công cụ có sẵn
- 6. Rủi ro cần lường trước khi phụ thuộc vào webhook tự động
- 7. Tự động hóa đối soát thanh toán cũng chỉ là một mảnh trong bức tranh vận hành bằng Sheets
Trả lời nhanh: Để xác nhận chuyển khoản tự động trên Google Sheets, bạn cần một dịch vụ webhook ngân hàng (như SePay) báo giao dịch về theo thời gian thực, rồi dùng Apps Script ghi nhận vào Sheets và đối soát theo nội dung chuyển khoản — không có cách nào làm việc này chỉ bằng công thức Sheets thuần vì Sheets không tự biết tiền đã về tài khoản hay chưa.
Vì sao bạn cứ phải hỏi đi hỏi lại "anh/chị chuyển chưa"
Thử hình dung một chủ shop tên Lan bán hàng online, mỗi ngày nhận 30-40 đơn. Khách chốt đơn xong, Lan gửi số tài khoản, khách chuyển khoản, rồi Lan phải mở app ngân hàng, lướt qua hàng chục dòng sao kê để tìm đúng giao dịch khớp với đơn hàng nào. Có hôm bận giao hàng, Lan quên kiểm tra, khách nhắn hỏi "sao chưa thấy giao hàng" trong khi tiền đã về từ hai tiếng trước.
Vấn đề không nằm ở việc Lan lười kiểm tra — vấn đề là việc đối chiếu thủ công giữa sao kê ngân hàng và bảng đơn hàng trên Google Sheets vốn không có cơ chế tự động nào kết nối hai bên. Sheets chỉ là nơi lưu dữ liệu bạn gõ vào; nó không "nghe" được biến động số dư trong tài khoản ngân hàng trừ khi có một cầu nối kỹ thuật ở giữa.
Nguyên lý: Sheets không tự biết tiền đã về, phải có webhook báo cho nó
Về bản chất, ngân hàng không cho phép Google Sheets "hỏi thẳng" xem tài khoản vừa nhận bao nhiêu tiền — đó là lý do các dịch vụ trung gian như SePay ra đời. SePay kết nối với tài khoản ngân hàng của bạn (qua các kênh được ngân hàng cho phép), và mỗi khi có giao dịch phát sinh, nó gửi một thông báo gọi là webhook đến một địa chỉ bạn chỉ định.
Địa chỉ đó, trong trường hợp dùng Apps Script, thường là một Web App được publish từ script gắn với Google Sheets của bạn. Luồng hoạt động tóm tắt:
- Khách chuyển khoản, ghi nội dung là mã đơn hàng (ví dụ DH1024)
- Ngân hàng xử lý giao dịch, SePay phát hiện biến động số dư
- SePay gửi dữ liệu giao dịch (số tiền, nội dung, thời gian) tới webhook URL của bạn
- Apps Script nhận dữ liệu, tìm dòng đơn hàng có mã trùng khớp trong Sheets, cập nhật trạng thái "Đã thanh toán"
Toàn bộ quá trình diễn ra trong vài giây, không cần ai bấm nút refresh hay mở app ngân hàng. Đây chính là phần mà Tạo QR Thanh Toán Ngân Hàng Trực Tiếp Trên Google Sheets xử lý sẵn — công cụ tạo mã QR chuẩn VietQR/Napas ngay trên Sheets và tích hợp webhook SePay để tự động cập nhật trạng thái giao dịch, thay vì bạn phải tự viết script xử lý webhook từ đầu.

Đối soát theo nội dung chuyển khoản: chỗ dễ sai nhất
Nhiều người nghĩ cứ có webhook là xong, nhưng phần khó thực sự nằm ở bước đối soát — tức là xác định giao dịch vừa về khớp với đơn hàng nào. Cách phổ biến nhất là yêu cầu khách ghi mã đơn hàng vào nội dung chuyển khoản, sau đó dùng hàm tìm kiếm để khớp.
Giả sử bảng đơn hàng của Lan có cột B là mã đơn (DH1024), cột E là số tiền cần thu, cột F là trạng thái thanh toán. Khi một giao dịch mới về với nội dung chứa "DH1024", công thức kiểm tra trong Apps Script (hoặc một công thức hỗ trợ thủ công trong Sheets) có thể dùng dạng:
=IFERROR(VLOOKUP("*"&B2&"*", Giaodich!A:C, 2, 0), "Chưa có")
Công thức này tìm trong cột A của sheet "Giaodich" (nơi webhook ghi dữ liệu thô) xem có nội dung nào chứa mã đơn ở ô B2 không, nếu có thì lấy số tiền ở cột B của sheet đó. Nhưng đây là lúc rủi ro xuất hiện: khách gõ sai mã (DH 1024 có khoảng trắng, hoặc DH10024 thừa số 0), ứng dụng ngân hàng tự thêm ký tự rác vào nội dung, hoặc khách chuyển thiếu/thừa tiền so với đơn.
Cách xử lý thực tế cho từng trường hợp:
- Nội dung gõ sai định dạng: chuẩn hóa mã đơn ngắn gọn, không dấu, không khoảng trắng (DH1024 thay vì "Đơn hàng số 1024"), và dùng hàm tìm kiếm không phân biệt hoa thường
- Chuyển thiếu/thừa: đừng tự động đóng đơn khi số tiền không khớp tuyệt đối — chỉ đánh dấu "đã nhận một phần" và cần người kiểm tra lại
- Không ghi nội dung gì cả: giữ lại một quy trình đối chiếu thủ công dự phòng, ví dụ lọc theo số tiền và khung giờ gần nhất
Nói cách khác, tự động hóa phần lớn trường hợp là khả thi, nhưng bạn vẫn cần một cơ chế cờ cảnh báo cho 10% còn lại thay vì tin tuyệt đối vào máy.
Dashboard theo dõi: biết ngay hôm nay thu được bao nhiêu mà không cần cộng tay
Một khi giao dịch đã được ghi nhận tự động vào Sheets, bước tiếp theo nhiều người bỏ qua là tổng hợp số liệu để nhìn được bức tranh tổng thể. Giả sử mỗi dòng trong sheet "Giaodich" có cột A là thời gian, cột B là số tiền, cột C là trạng thái đối soát.
Để biết tổng tiền đã xác nhận trong ngày, công thức đơn giản:
=SUMIFS(Giaodich!B:B, Giaodich!A:A, ">="&TODAY(), Giaodich!C:C, "Đã đối soát")
Và để đếm số giao dịch chưa khớp được đơn hàng nào (cần người kiểm tra tay):
=COUNTIF(Giaodich!C:C, "Chưa khớp")
Hai con số này, nếu đặt ở đầu bảng tính hoặc một tab dashboard riêng, giúp người quản lý nhìn một lần là biết hôm nay có bao nhiêu đơn cần xử lý thủ công — thay vì phải mở từng dòng sao kê để dò. Với một cửa hàng giả định thu trung bình 40 giao dịch/ngày, việc giảm từ 40 lần tra cứu thủ công xuống còn 2-3 trường hợp cần kiểm tra tay đã là một khác biệt lớn về thời gian, dù con số chính xác tùy thuộc tỷ lệ khách ghi đúng nội dung chuyển khoản.
Khi nào nên tự xây bằng Apps Script, khi nào nên dùng công cụ có sẵn
Có hai hướng để làm việc này: tự viết Apps Script xử lý webhook từ đầu, hoặc dùng một công cụ đã đóng gói sẵn phần tạo QR và kết nối webhook.
| Tiêu chí | Tự viết Apps Script | Dùng công cụ đóng gói sẵn |
|---|---|---|
| Thời gian triển khai | Vài ngày đến vài tuần, tùy mức độ quen Apps Script | Cài đặt trong Sheets, dùng ngay |
| Yêu cầu kỹ thuật | Cần hiểu doPost, xác thực webhook, xử lý lỗi | Không cần biết lập trình |
| Khả năng tùy biến | Tùy biến hoàn toàn theo quy trình riêng | Giới hạn trong tính năng công cụ hỗ trợ |
| Bảo trì khi Apps Script lỗi/đổi quota | Tự chịu trách nhiệm sửa | Thường đã được cập nhật sẵn |
Nếu quy trình bán hàng của bạn đơn giản — tạo QR, thu tiền, biết ai đã chuyển — thì việc tự viết từ đầu thường là tốn công không cần thiết. Đây đúng là tình huống mà Tạo QR Thanh Toán Ngân Hàng Trực Tiếp Trên Google Sheets nhắm tới: tạo mã QR chuẩn VietQR/Napas ngay trong Sheets, hỗ trợ hơn 20 ngân hàng, kèm sẵn phần xác nhận giao dịch tự động qua SePay và lưu lịch sử giao dịch gồm thời gian, số tiền, nội dung, trạng thái — bạn không cần ghép nối riêng từng phần lại với nhau. Công cụ giá 59.000đ, mua một lần dùng lâu dài, có 7 ngày dùng thử để xem có hợp với quy trình thu tiền hiện tại không.
Ngược lại, nếu bạn có đội kỹ thuật riêng và quy trình đối soát phức tạp hơn nhiều (nhiều tài khoản ngân hàng, nhiều kênh bán, cần đồng bộ với hệ thống kế toán nội bộ), tự viết Apps Script để kiểm soát toàn bộ logic vẫn hợp lý hơn.

Rủi ro cần lường trước khi phụ thuộc vào webhook tự động
Tự động hóa không có nghĩa là bỏ qua tay hẳn. Vài rủi ro thực tế cần tính đến:
Webhook có thể trễ hoặc không gửi được nếu dịch vụ trung gian (SePay) gặp sự cố tạm thời — nên có một cách kiểm tra dự phòng, ví dụ xem lại sao kê cuối ngày cho các đơn chưa được đánh dấu thanh toán quá lâu. Khách chuyển khoản nhưng xóa hoặc không ghi nội dung — hệ thống sẽ không tự khớp được, cần một bước rà soát các giao dịch "vô danh" theo số tiền và thời gian gần nhất với đơn hàng tương ứng. Và nếu Apps Script trong Sheets chạy quá nhiều tác vụ nặng, nó có thể chạm giới hạn thời gian thực thi của Google — nên giữ phần xử lý webhook gọn nhẹ, chỉ ghi nhận và đối soát cơ bản, còn báo cáo tổng hợp phức tạp nên tách sang tác vụ chạy định kỳ riêng.
Một điểm cần nói rõ: SePay là dịch vụ độc lập, có điều khoản sử dụng và chi phí riêng do SePay quy định — phần xác nhận tự động trong Sheets chỉ đóng vai trò nhận và xử lý dữ liệu webhook mà SePay gửi về, không thay thế vai trò của SePay.
Tự động hóa đối soát thanh toán cũng chỉ là một mảnh trong bức tranh vận hành bằng Sheets
Bài viết liên quan:
Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?
Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
Công cụ liên quan
Giải pháp cho bài viết này
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.
