7 min read
Short answer: FEFO (First Expired First Out) là phương pháp quản lý hạn sử dụng tồn kho ưu tiên xuất hàng có hạn gần nhất, bất kể thứ tự nhập. Khác với FIFO chỉ xét ngày nhập, FEFO xét trực tiếp ngày hết hạn của từng batch — đúng cho F&B, mỹ phẩm, dược phẩm. Triển khai cần 4 cột data tối thiểu: SKU, batch number, expiry date, qty. Excel đủ dùng cho dưới 5.000 SKU.
Trong một shop mỹ phẩm 15 SKU ở quận Bình Thạnh, kế toán phát hiện 28 triệu đồng giá vốn đã rời khỏi kho dưới dạng hàng tiêu hủy trong quý vừa rồi. Doanh số tăng 18%, nhưng lợi nhuận thuần đi xuống. Truy ngược dòng tiền: không phải bán ế. Là xuất sai thứ tự. Nhân viên lấy hàng từ kệ trên xuống, không nhìn batch number. Lô về sau lại được bán trước; lô về trước nằm lại đáy kho cho đến khi hết hạn. Một quy tắc đơn giản — được đặt tên FEFO — sẽ đóng cánh cửa này lại.
Article contents
Lỗ vì hàng hết hạn không phải lỗ doanh số — đó là lỗ quy trình
Phần lớn chủ shop F&B và mỹ phẩm khi thấy doanh số tăng đều cho rằng mọi thứ ổn. Họ nhìn báo cáo P&L, thấy margin gross vẫn dương, và bỏ qua một dòng nhỏ: write-off. Write-off là giá trị hàng phải hủy vì hết hạn, hỏng, hoặc lệch tiêu chuẩn — số đó âm thầm ăn vào lợi nhuận thuần và không xuất hiện trên báo doanh thu.
Theo khảo sát của ECR Community về retail mất mát hàng hóa (2023), write-off do hết hạn chiếm 5-15% giá trị tồn kho trong các shop FMCG có mặt hàng nguyên liệu tươi, mỹ phẩm hoạt chất, hoặc dược. Con số đó cao hơn cả trộm cắp (1-3%) và lệch tồn kho hệ thống (2-5%) cộng lại — nhưng lại được nhắc đến ít hơn nhiều trong các báo cáo nội bộ vì nó không “thấy được” bằng mắt.
Điểm đáng chú ý: write-off do hết hạn không phải lỗ vì bán không hết. Đó là lỗ vì xuất sai thứ tự. Hai shop cùng SKU mix, cùng tốc độ bán, một shop xuất theo “lô nào dễ lấy” sẽ lỗ gấp 3-5 lần shop xuất theo nguyên tắc. Sự khác biệt nằm ở quy trình — không phải ở nhân viên, không phải ở thị trường.
FIFO không sai, nhưng FIFO không đủ cho hàng có hạn
FIFO (First In First Out) là phương pháp xuất kho theo thứ tự nhập trước xuất trước. FEFO (First Expired First Out) là phương pháp xuất kho theo thứ tự hết hạn gần nhất trước.
FIFO là quy tắc kế toán chuẩn được dạy từ giáo trình. Nhập trước thì xuất trước — vừa đúng về mặt tài chính (giá vốn match dòng tiền), vừa hợp lý cho hàng không có hạn (gỗ, kim loại, thiết bị, văn phòng phẩm). Vấn đề là FIFO giả định một điều ngầm: lô nhập trước thì hết hạn trước. Giả định đó sai trong nhiều tình huống thực: nhà cung cấp xả tồn nên lô mới về có hạn ngắn hơn lô cũ; cùng SKU nhưng batch khác lại có shelf life khác nhau theo điều kiện kho; hoặc đợt khuyến mãi dồn về một loạt rồi bán theo nhịp tự nhiên.
| Criterion | FIFO | FEFO | Conclusion |
|---|---|---|---|
| Cơ sở xuất kho | Ngày nhập | Ngày hết hạn | FEFO khi có batch + hạn |
| Phù hợp mặt hàng | Không có hạn | Có hạn | Khác mặt hàng → khác rule |
| Data cần thiết | SKU + ngày nhập | SKU + batch + expiry | FEFO cần thêm 1 trường |
| Phòng ngừa hết hạn | Một phần | Trực tiếp | FEFO mục tiêu chính |
| Đúng với kế toán giá vốn | There are | Có (qua expiry mapping) | FEFO không thua FIFO |
Summary: FEFO bao gồm FIFO trong trường hợp lô nhập trước cũng là lô có hạn gần nhất. Nhưng FEFO xử lý đúng cả khi giả định đó sai. Với mặt hàng có batch + hạn sử dụng, mặc định nên là FEFO.
Mọi hệ thống FEFO chạy được đều cần 4 cột data tối thiểu
FEFO không phải là một phần mềm. Đó là một quy tắc gắn vào cấu trúc data tồn kho. Để vận hành được, mỗi record trong kho cần ít nhất 4 trường thông tin: SKU (mã sản phẩm, không thay đổi qua các lô); batch number (mã lô, do nhà sản xuất gán, in trên bao bì); expiry date (ngày hết hạn cụ thể, không phải shelf life ngày tính từ sản xuất); và qty (số lượng còn lại trong lô đó).
Nếu thiếu bất kỳ trường nào trong 4 trường, FEFO không chạy được. Thiếu batch number — không phân biệt được lô. Thiếu expiry — không sắp thứ tự được. Thiếu qty per batch — không biết lô nào đã hết. Trong thực tế, nhiều shop nhỏ ghi tồn kho theo SKU duy nhất, gộp tất cả lô lại thành một dòng. Đó là lý do FEFO không cài lên được hệ thống của họ, không phải vì họ thiếu phần mềm.
Bước đầu tiên không phải mua công cụ, mà là phân tách lô — đảm bảo từ lúc nhập hàng, mỗi lô được gán batch + expiry độc lập, dù SKU giống nhau. Với cấu trúc này, một file Excel với 4 cột + công thức sort theo expiry là đủ để bắt đầu.
Quy trình 4 bước hằng ngày: nhận → cảnh báo → ưu tiên → tính lỗ
Hệ thống data chỉ có giá trị khi có quy trình vận hành kèm. FEFO trong thực tế cần 4 hành động hằng ngày, không bước nào skipped được.
Bước 1 — Nhận hàng có gán batch. Khi hàng về, nhân viên kho không chỉ đếm số lượng. Mỗi thùng phải được nhập vào hệ thống dưới dạng một record có SKU + batch number + expiry date riêng. 30 giây mỗi thùng. Nếu bỏ qua bước này, mọi bước sau vô nghĩa — vì sau đó không cách nào tách được lô.
Bước 2 — Cảnh báo sớm theo 2 mốc. Lô nào còn 30 ngày trước hết hạn → cảnh báo T-30 (tăng cường xuất). Lô nào còn 7 ngày → cảnh báo T-7 (đẩy mạnh, có thể giảm giá để giải phóng). Cảnh báo phải tự động hiển thị trên dashboard mỗi sáng, không phải đợi cuối tuần kiểm thủ công.
Bước 3 — Ưu tiên xuất theo expiry. Khi có đơn, hệ thống chỉ định batch nào lấy trước. Nhân viên kho không quyết định bằng mắt. Nguyên tắc: trong cùng SKU, batch có expiry sớm nhất luôn xuất trước, kể cả khi nó nằm ở vị trí kho khó với hơn.
Bước 4 — Tính write-off định kỳ. Mỗi tháng tính tổng giá trị đã hủy vì hết hạn. Con số này là KPI vận hành, không phải số tài chính cuối năm. Đo nó hàng tháng để thấy quy trình có cải thiện hay không. 4 bước này biến FEFO từ khái niệm sách giáo khoa thành thói quen vận hành.
Excel đủ cho dưới 5.000 SKU — khi nào cần lên ERP
Excel và Google Sheets chạy được FEFO khá tốt cho quy mô vừa. Với 4 trường data + công thức sort + conditional formatting cho cảnh báo T-30/T-7, một bảng tính ổn định có thể xử lý vài nghìn SKU và vài chục nhân viên nhập liệu dùng chung. Quan trọng hơn: tư duy quy trình được ép vào cấu trúc file ngay từ đầu, ai mở file ra cũng phải tuân thủ.
Ranh giới: khi vượt 5.000 SKU active hoặc 3 kho vật lý, Excel bắt đầu chậm. Sort 5.000 dòng × nhiều batch + conditional formatting nặng có thể làm file load 10-30 giây mỗi lần mở. Concurrency cũng bắt đầu vỡ: nhiều nhân viên cùng sửa, version conflict xuất hiện. Lúc đó cần lên ERP có module inventory lot/batch tracking — Odoo, Misa AMIS, hoặc NetSuite tùy quy mô. Nhưng kể cả khi lên ERP, cấu trúc data + 4 bước quy trình ở trên không thay đổi — chỉ là chuyển từ Excel sang database.
Excel không phải vấn đề. Quy trình mới là vấn đề. Doanh nghiệp chưa có quy trình FEFO trên Excel thì lên ERP cũng không tự nhiên có. Ngược lại, doanh nghiệp đã có quy trình FEFO trên Excel thì việc migrate sang ERP sau này chỉ là kỹ thuật, không phải xây lại tư duy.
Key takeaways
- Lỗ vì hết hạn = lỗ quy trình, không phải lỗ doanh số. 5-15% giá trị tồn kho trong shop FMCG có hạn — cao hơn cả trộm cắp cộng lệch tồn cộng lại.
- FEFO bao trùm FIFO khi mặt hàng có batch + hạn. FIFO an toàn cho hàng không hạn; FEFO mặc định cho hàng có hạn.
- 4 trường data tối thiểu: SKU, batch number, expiry date, qty per batch. Thiếu 1 trong 4, FEFO không chạy.
- 4 bước hằng ngày: nhận có batch → cảnh báo T-30/T-7 → ưu tiên xuất theo expiry → tính write-off định kỳ.
- Excel đủ dưới 5.000 SKU. ERP chỉ thay được data engine, không thay được quy trình. Quy trình phải có trên Excel trước khi migrate.
PRACTICAL TOOLS
FMCG Inventory & FEFO Tracker
Excel template có sẵn 4 cột data tối thiểu, dashboard cảnh báo T-30/T-7 tự động, công thức tính write-off theo từng lô, và quy trình 4 bước được tích hợp dưới dạng macro. Phù hợp shop FMCG, mỹ phẩm, F&B có batch + hạn sử dụng dưới 5.000 SKU.
Frequently asked questions
FEFO là gì?
FEFO (First Expired First Out) là phương pháp quản lý kho ưu tiên xuất hàng có hạn sử dụng gần nhất trước, bất kể thứ tự nhập. Khác với FIFO chỉ xét ngày nhập, FEFO xét trực tiếp ngày hết hạn của từng batch. FEFO được dùng phổ biến trong F&B, mỹ phẩm, dược phẩm, sữa và mọi mặt hàng có hạn sử dụng rõ ràng.
FEFO vs FIFO khác nhau gì?
FIFO xuất theo thứ tự nhập (nhập trước, xuất trước). FEFO xuất theo thứ tự hết hạn (hết hạn gần nhất, xuất trước). FIFO phù hợp hàng không có hạn (gỗ, kim loại, văn phòng phẩm). FEFO bắt buộc cho hàng có batch + hạn. Sự khác biệt data: FEFO cần thêm 1 trường — expiry date per batch.
Triển khai FEFO bằng Excel có khả thi không?
Khả thi cho dưới 5.000 SKU và 3 kho vật lý. Cần 4 cột data tối thiểu: SKU, batch number, expiry date, qty. Cộng công thức sort + conditional formatting cho cảnh báo T-30/T-7. Khi vượt ngưỡng 5.000 SKU hoặc concurrency cao (nhiều người sửa cùng lúc), nên chuyển sang ERP có module lot/batch tracking như Odoo hoặc NetSuite.
Tại sao shop tôi chạy FIFO mà vẫn lỗ vì hết hạn?
Vì FIFO giả định lô nhập trước có hạn sớm hơn, nhưng giả định đó sai khi nhà cung cấp xả tồn (lô mới về có hạn ngắn hơn lô cũ) hoặc cùng SKU có shelf life khác nhau theo batch. FEFO xử lý đúng cả hai trường hợp này vì xét trực tiếp expiry date, không dựa trên giả định về thứ tự nhập.
Cảnh báo T-30 và T-7 là gì? Có cần cả hai không?
T-30 là cảnh báo 30 ngày trước expiry — đẩy mạnh xuất bình thường, ưu tiên trong các đơn lớn. T-7 là cảnh báo 7 ngày trước — đẩy mạnh có giảm giá, là mốc cuối trước khi phải hủy. Hai mốc là tối thiểu cho ngành FMCG/mỹ phẩm. Hàng có shelf life ngắn dưới 30 ngày (sữa tươi, rau củ) có thể cần thêm mốc T-3 hoặc T-1.
Tham khảo: ECR Community — Retail Loss Management Survey (2023) · Slack, Brandon-Jones, Burgess — Operations Management (2022)
Stay Updated
Get insights on management, operations & digital assets delivered to your inbox.
