Hy An — Khi doanh nghiệp phát triển nhanh hơn bảng tính

Khách hàng Công ty TNHH Thực phẩm Hy An
Ngành Bán lẻ / Thương mại điện tử
Thời gian 4 tuần
Công cụ Google Sheets · n8n · Python · Pancake POS API

Hy An là doanh nghiệp bán lẻ nhỏ — dưới 10 người — bán hàng trên Facebook, TikTok Shop và Shopee, quản lý qua Pancake POS. Giống hầu hết công ty ở quy mô này, họ không có kế toán riêng hay đội tài chính. Chủ doanh nghiệp tự theo dõi mọi thứ, song song với việc điều hành.

Một thời gian, bảng tính Excel hoạt động ổn. Ba cột song song mỗi tháng — mỗi cột cho một tài khoản — và mọi khoản tiền vào được tính thành doanh thu. Cách làm này hợp lý khi công ty còn nhỏ và cần di chuyển nhanh. Nhưng khi kinh doanh mở rộng sang nhiều kênh hơn, chuyển khoản nội bộ giữa các tài khoản cũng bị tính thành thu nhập. Bảng tính không phân biệt được tiền từ khách hàng và tiền chuyển giữa các tài khoản công ty.

Đến Q1 2026, doanh thu trên báo cáo bị phồng lên đáng kể. Hơn 90% phần đếm trùng đến từ chuyển nội bộ, phần còn lại từ các khoản vốn. Báo cáo lãi lỗ trông có vẻ tốt trên giấy, nhưng con số thật lại kể câu chuyện khác.

Giải pháp

Ba tầng, một hệ thống

Tôi xây hệ thống 3 tầng: script chuyển đổi dữ liệu cũ, Google Sheets làm trung tâm vận hành, và n8n cho tự động hoá hàng ngày.

Dữ liệu XLSX cũ Python migration Google Sheets
Pancake POS n8n (đồng bộ ngày) Google Sheets
Tầng 1

Chuyển đổi dữ liệu — phân loại hàng trăm giao dịch

File Excel cũ có ba cột mỗi tháng, mỗi tài khoản. Không có hệ thống phân loại — điều này dễ hiểu khi một người phải lo hết mọi thứ. Nhưng nó có nghĩa là không cách nào biết tiền vào là bán hàng thật hay chỉ là chuyển khoản nội bộ giữa các tài khoản.

Tôi viết script Python chuyển file XLSX cũ thành định dạng phẳng, có phân loại. Mỗi giao dịch được gắn thẻ:

Thẻ Ý nghĩa Tính vào P&L?
Khách hàng Giao dịch thật với bên ngoài
Nội bộ Chuyển giữa các tài khoản công ty Không
Vốn chủ Chủ rút/nạp vốn Không
Hoàn trả Hoàn tiền/đổi trả Có (âm)

Bộ phân loại dùng regex trên nội dung giao dịch tiếng Việt để phát hiện chuyển nội bộ, vốn chủ sở hữu, và chuyển tiền quảng cáo.

Kết quả: 98% giao dịch được phân loại tự động. Chỉ một vài giao dịch cần xem lại thủ công.

Tầng 2

Google Sheets — trung tâm vận hành

Bảng tính được tạo tự động qua Google Sheets API với 5 tab. Toàn bộ báo cáo chạy bằng công thức — không tính toán thủ công.

Tab 1: Sổ giao dịch

Bảng phẳng với mọi giao dịch: ngày, tài khoản, nội dung, thu/chi, phân loại, loại doanh thu, loại chi phí, ghi chú, chứng từ. Dropdown đảm bảo nhập liệu nhất quán. Dòng thiếu phân loại được tô vàng.

Toàn bộ giao dịch lịch sử được nhập sẵn từ bước chuyển đổi.

Tab 2: Số dư đầu kỳ

Số dư đầu mỗi tháng của từng tài khoản, trích từ file XLSX cũ. Tab Báo cáo tham chiếu để tính toán số dư.

Tab 3: Báo cáo lãi lỗ tháng

Đây là trung tâm của hệ thống. Chọn tháng, toàn bộ báo cáo tự tính lại:

  • Số dư tài khoản — theo từng ngân hàng, đối chiếu với số dư đầu kỳ
  • Doanh thu thật — chia theo bán lẻ và bán buôn, lọc theo phân loại = “Khách hàng”
  • Chi phí theo nhóm — giá vốn, vận hành, marketing, logistics
  • Lãi/Lỗ — kết quả thực tế
  • Giao dịch nội bộ — hiển thị để tham khảo, tự động loại khỏi P&L
  • Đối chiếu Pancake — so sánh doanh thu Pancake (từ đơn hàng) với doanh thu ngân hàng (từ nhập thủ công)

Thiết kế quan trọng: Tất cả giá trị đều là công thức SUMPRODUCT lọc theo cột phân loại. Giao dịch nội bộ vẫn có trong dữ liệu nhưng tự động ẩn khỏi báo cáo. Không ai cần nhớ phải loại trừ chúng.

Tab 4: Tổng hợp năm

Ma trận 12 tháng: doanh thu, giá vốn, lãi gộp, các nhóm chi phí, lãi ròng. Thêm dòng doanh thu Pancake để đối chiếu chéo.

Tab 5: Đơn hàng Pancake

Dữ liệu đơn hàng thô từ Pancake POS — mã đơn, ngày, kênh, trạng thái, khách hàng, sản phẩm, số lượng, giá, tiền COD, tỉnh thành. Mỗi dòng là một sản phẩm trong đơn. Được cập nhật hàng ngày bởi n8n.

Tầng 3

Workflow n8n — tự động hoá hàng ngày

Workflow 4 node chạy trên n8n tự host:

6h sáng mỗi ngày Xoá tab Pancake Lấy toàn bộ đơn Ghi vào Sheets

Lịch kích hoạt chạy lúc 6h sáng giờ Việt Nam. Workflow xoá dữ liệu Pancake cũ để tránh trùng, sau đó lấy toàn bộ đơn hàng từ Pancake API.

Bước lấy dữ liệu phân trang qua API, map trạng thái đơn (mới, xác nhận, đóng gói, đã gửi, hoàn thành, đã huỷ), phát hiện kênh bán từ tiền tố page ID (tts_ = TikTok, shopee_ = Shopee, còn lại là Facebook), và trải phẳng thành một dòng mỗi sản phẩm.

Toàn bộ dữ liệu được ghi vào Google Sheets qua service account.

Độ bền: Tự retry 3 lần, cách nhau 5 phút. Email cảnh báo cho tôi khi lỗi.

Quyết định thiết kế

Tại sao kiến trúc này

Google Sheets làm trung tâm, không phải database. Đội ngũ khách hàng đã quen dùng Sheets. Không cần học công cụ mới. Công thức xử lý toàn bộ logic báo cáo.

P&L dựa trên phân loại. Thay vì cố sửa layout 3 cột cũ, tôi trải phẳng mọi thứ và thêm cột phân loại. Công thức P&L chỉ lọc “Khách hàng”. Giao dịch nội bộ vẫn có trong dữ liệu nhưng tự động ẩn khỏi báo cáo.

Đồng bộ toàn bộ, không phải tăng dần. Workflow n8n xoá và nhập lại toàn bộ đơn Pancake mỗi ngày. Đơn giản hơn việc theo dõi thay đổi, và lượng dữ liệu (vài trăm đơn) đủ nhỏ để chạy nhanh.

Đối chiếu Pancake tích hợp sẵn. Tab P&L so sánh doanh thu Pancake (từ đơn hàng) với doanh thu ngân hàng (từ nhập thủ công). Chênh lệch = tiền đang trên đường — tiền từ đơn hoàn thành chưa nhập tài khoản.

Công nghệ

Hệ thống chạy trên gì

Thành phần Công cụ Chi phí
Chuyển dữ liệu Python + openpyxl Một lần
Tạo bảng tính Python + Google Sheets API Miễn phí
Vận hành Google Sheets Miễn phí
Đồng bộ ngày n8n (tự host) ~$5/tháng VPS
Dữ liệu đơn hàng Pancake POS API Có sẵn trong gói
Xác thực Google Service Account Miễn phí
Kết quả

Tác động

98% Tỷ lệ tự động
0 Copy-paste thủ công
3 Kênh bán hợp nhất
  • Doanh thu ảo loại bỏ — chuyển nội bộ và vốn chủ sở hữu không còn làm phồng báo cáo lãi lỗ
  • Dữ liệu đơn hàng Pancake tự đồng bộ hàng ngày — không cần copy thủ công
  • Đối chiếu doanh thu (Pancake vs ngân hàng) cho thấy dòng tiền thực tế
  • Báo cáo lãi lỗ tháng cập nhật chỉ bằng một ô thay đổi
  • Phân tích kênh bán (TikTok / Shopee / Facebook) có sẵn tự động

Chủ doanh nghiệp vẫn tự quản lý tài chính — chỉ là không còn phải vật lộn với bảng tính nữa. Hệ thống lo phần nặng, còn chị ấy tập trung vào phát triển kinh doanh.


minh@mpstudio.dev

Tôi thường trả lời trong vòng một ngày.