Quản Lý Công Nợ Khách Hàng Với Google Sheets [Template 2027]
![Ảnh minh họa bài viết: Quản Lý Công Nợ Khách Hàng Với Google Sheets [Template 2027]](/images/blog/google-sheets-quan-ly-cong-no-khach-hang.png)
Quản Lý Công Nợ Khách Hàng Bằng Google Sheets: Template & Tự Động Nhắc Nợ
Công nợ khó thu là một trong những vấn đề lớn nhất của doanh nghiệp B2B và bán sỉ. Google Sheets kết hợp với Apps Script có thể tự động theo dõi công nợ và gửi nhắc nhở — giảm 60% thời gian đòi nợ.
Cấu Trúc File Quản Lý Công Nợ
| Sheet Tab | Nội dung | Columns quan trọng |
|---|---|---|
| 💼 Khách hàng | Danh sách KH nợ | Tên, SĐT, Email, Hạn mức tín dụng, Số ngày cho nợ |
| 📋 Công nợ | Chi tiết từng khoản nợ | KH, Ngày phát sinh, Số tiền, Hạn thanh toán, Đã trả, Còn nợ |
| 💰 Thanh toán | Ghi nhận thu tiền | Ngày thu, KH, Số tiền, Phương thức, Ghi chú |
| 📊 Tổng hợp | Dashboard công nợ | Tổng nợ, Quá hạn, Theo KH, Theo tuổi nợ |
Sheet Công Nợ — Công Thức Quan Trọng
Tính số tiền còn nợ
Tự động trừ khi khách hàng thanh toán một phần
Tính số ngày quá hạn
Số ngày quá hạn, 0 nếu chưa đến hạn hoặc đã trả
Phân loại tuổi nợ (Aging)
Tổng công nợ theo khách hàng
Tổng hợp tất cả khoản nợ của một khách hàng
Conditional Formatting Màu Theo Tuổi Nợ
Chưa đến hạn hoặc quá hạn dưới 7 ngày
Quá hạn 8-30 ngày — cần liên hệ nhắc nhở
Quá hạn 31-60 ngày — cần đòi nợ nghiêm túc
Quá hạn trên 60 ngày — nợ xấu, cần xử lý ngay
Apps Script: Tự Động Nhắc Nợ Qua Email/SMS
function nhacNoTuDong() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var congNo = ss.getSheetByName('Công nợ');
var data = congNo.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var tenKH = data[i][1];
var email = data[i][2];
var soTien = data[i][4];
var hanTT = new Date(data[i][5]);
var conNo = data[i][6];
var quaHan = Math.floor((new Date() - hanTT) / (1000*60*60*24));
if (conNo > 0) {
var subject, body;
if (quaHan === -3) { // Nhắc 3 ngày trước hạn
subject = 'Nhắc nhở: Hóa đơn sắp đến hạn thanh toán';
body = 'Kính gửi ' + tenKH + ',\n\nHóa đơn ' +
soTien.toLocaleString('vi-VN') + ' đ sẽ đến hạn trong 3 ngày.\n' +
'Vui lòng chuẩn bị thanh toán đúng hạn.\n\nTrân trọng.';
} else if (quaHan === 7) { // Nhắc sau 7 ngày quá hạn
subject = '⚠️ Thông báo: Hóa đơn quá hạn 7 ngày';
body = 'Kính gửi ' + tenKH + ',\n\nHóa đơn ' +
soTien.toLocaleString('vi-VN') + ' đ đã quá hạn ' + quaHan + ' ngày.\n' +
'Vui lòng liên hệ để sắp xếp thanh toán.\n\nTrân trọng.';
} else if (quaHan === 30) { // Cảnh báo 30 ngày
subject = '🚨 Cảnh báo: Nợ quá hạn nghiêm trọng';
body = 'Kính gửi ' + tenKH + ',\n\nKhoản nợ ' +
soTien.toLocaleString('vi-VN') + ' đ đã quá hạn ' + quaHan + ' ngày.\n' +
'Chúng tôi sẽ áp dụng chính sách lãi suất nếu chưa thanh toán trong 7 ngày.\n\nTrân trọng.';
}
if (subject && email) {
MailApp.sendEmail({ to: email, subject: subject, body: body });
Logger.log('Đã gửi nhắc nợ cho: ' + tenKH);
}
}
}
}
Thiết lập trigger chạy hàng ngày lúc 9AM để tự động gửi nhắc nhở.
Dashboard Aging Report
Tạo bảng tổng hợp công nợ theo tuổi nợ (Aging Summary):
| Tuổi nợ | Số KH | Tổng tiền | % Tổng |
|---|---|---|---|
| Chưa đến hạn | COUNTIFS formula | SUMIFS formula | Tự tính |
| 1-30 ngày | COUNTIFS | SUMIFS | Tự tính |
| 31-60 ngày | COUNTIFS | SUMIFS | Tự tính |
| >60 ngày | COUNTIFS | SUMIFS | Tự tính |
=COUNTIFS(CôngNợ!H:H,">0",CôngNợ!H:H,"<=30",CôngNợ!F:F,">0")
SheetStore: Quản Lý Công Nợ Tự Động, Không Lo Quên
SheetStore tích hợp quản lý công nợ với tự động nhắc nhở qua email/SMS — không cần script thủ công, không bao giờ quên đòi tiền khách hàng.
Xem Tính Năng Công Nợ📚 Bài Viết Liên Quan
Câu Hỏi Thường Gặp
Apps Script tự động nhắc nợ có gửi nhầm cho khách đã thanh toán không?
Không, nếu bạn để điều kiện kiểm tra số tiền còn nợ trước khi gửi. Trong script, vòng lặp chỉ gửi email khi cột Còn nợ lớn hơn 0. Khi khách hàng thanh toán đủ, công thức cập nhật Còn nợ về 0 và script tự động bỏ qua khách đó. Nên chạy thử ở chế độ ghi log (Logger.log) vài ngày trước khi bật gửi email thật.
Aging Report khác gì so với bảng theo dõi công nợ thông thường?
Bảng công nợ thông thường chỉ cho biết khách nào còn nợ bao nhiêu. Aging Report phân loại các khoản nợ theo độ tuổi (chưa đến hạn, 1-30 ngày, 31-60 ngày, trên 60 ngày), giúp bạn thấy ngay khoản nào sắp thành nợ xấu để ưu tiên đòi. Đây là công cụ quản trị dòng tiền quan trọng mà mọi doanh nghiệp bán nợ nên có.
Có thể gửi nhắc nợ qua SMS hoặc Zalo thay vì email không?
Có. Thay vì MailApp.sendEmail, bạn gọi tới API SMS (như Twilio, eSMS) hoặc Zalo OA thông qua UrlFetchApp trong Apps Script. Cấu trúc vòng lặp và điều kiện quá hạn giữ nguyên, chỉ thay bước gửi tin nhắn. Với khách hàng Việt Nam, nhắc nợ qua Zalo thường có tỷ lệ đọc cao hơn email.
Làm sao đặt hạn mức tín dụng cho từng khách hàng?
Trong sheet Khách hàng, thêm cột Hạn mức tín dụng và Số ngày cho nợ cho mỗi khách. Sau đó dùng conditional formatting hoặc công thức cảnh báo khi tổng công nợ của khách vượt hạn mức (so sánh SUMIF tổng nợ với cột hạn mức). Việc này giúp bạn từ chối bán nợ thêm cho khách đang vượt ngưỡng rủi ro.
Trigger nhắc nợ nên chạy vào lúc nào trong ngày?
Nên đặt trigger chạy một lần mỗi ngày vào buổi sáng, khoảng 8h đến 9h, để khách hàng nhận thông báo đầu giờ làm việc và có thời gian xử lý trong ngày. Tránh gửi vào buổi tối hoặc cuối tuần. Bạn cũng có thể tách hai mốc nhắc: nhắc nhẹ trước hạn 3 ngày và nhắc nghiêm túc khi quá hạn 7 ngày.
Tôi cần quản lý công nợ toàn diện hơn cho cả doanh nghiệp thì dùng gì?
Bài này tập trung vào theo dõi công nợ khách hàng và tự động nhắc nợ. Nếu bạn cần một template đầy đủ với 4 sheet, hạn mức tín dụng, Aging Report chi tiết và dashboard tổng hợp công nợ phải thu của cả doanh nghiệp, hãy xem bài Template Quản Lý Công Nợ & Phải Thu Trên Google Sheets. Đây là bản tổng thể, còn bài này là kịch bản tự động nhắc nợ cho từng khách hàng.
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
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.

