Một lần đưa hàng qua máy, hóa đơn nhảy hai dòng
Tình huống này đã được một thu ngân ở nước ngoài chia sẻ trên Reddit (dẫn lại trong bài viết trên Medium ngày 19/10/2026): trên bao bì vừa có mã vạch truyền thống, vừa có thêm một mã QR. Thu ngân đưa sản phẩm qua máy quét một lần, nhưng hóa đơn lại xuất hiện hai dòng giống hệt nhau — hoặc ngược lại, máy báo lỗi và không tính tiền được dù mã nào trông cũng rõ nét.
Đây không phải lỗi in ấn đơn thuần, cũng không phải máy quét hỏng. Đây là hệ quả tất yếu của giai đoạn chuyển đổi khi một bao bì mang đồng thời 2 mã (tiếng Anh gọi là dual marking). Hiểu đúng cơ chế, cả nhà sản xuất lẫn cửa hàng đều tránh được — mà không cần bỏ mã nào.
Vì sao bao bì bắt đầu có 2 mã?
Mã vạch 1D như EAN/UPC chỉ chứa một thông tin duy nhất: mã số sản phẩm (GTIN — mã số thương phẩm toàn cầu). Mã 2D như QR theo chuẩn GS1 Digital Link hoặc GS1 DataMatrix chứa được nhiều hơn hẳn: ngoài GTIN còn có số lô, hạn sử dụng, số sê-ri và cả một đường link tới trang thông tin sản phẩm.
Vì vậy GS1 — tổ chức quản lý tiêu chuẩn mã vạch toàn cầu — đặt mục tiêu Sunrise 2027: đến cuối năm 2027, hệ thống bán hàng tại quầy (POS) cần đọc và xử lý được mã 2D bên cạnh mã 1D hiện có. Cần nói rõ hai điểm thường bị hiểu sai:
- Mã 1D không biến mất. Sunrise 2027 là mục tiêu của ngành, không phải lệnh cấm mã 1D. Không có thời điểm nào mã EAN/UPC bị khai tử; GS1 khẳng định mã 1D sẽ còn tồn tại song song với mã 2D chừng nào còn nhu cầu dùng.
- In 2 mã là cách làm được khuyến nghị. Trong giai đoạn chuyển đổi, GS1 khuyên giữ nguyên mã 1D và in thêm mã 2D trên cùng bao bì, để quầy nào chưa nâng cấp vẫn bán hàng bình thường bằng mã cũ, còn quầy đã nâng cấp thì khai thác được dữ liệu mới.
Vấn đề nằm ở chỗ: phần lớn máy quét và phần mềm bán hàng hiện nay vẫn được cài đặt với giả định “một sản phẩm — một mã”. Khi giả định đó không còn đúng, lỗi bắt đầu xuất hiện.
Vì sao quầy lại quét trùng, hoặc không tính được?
Máy quét đời cũ dùng tia laser chỉ đọc được mã 1D — với loại máy này, mã QR trên bao bì coi như không tồn tại và không có chuyện gì xảy ra. Rắc rối chỉ đến với máy quét công nghệ chụp ảnh (imaging scanner), loại đang phổ biến ở quầy thu ngân và quầy tự thanh toán: nó nhìn thấy toàn bộ vùng quét cùng lúc, nên thấy cả 2 mã trong một lần đưa hàng qua.
Nếu máy quét và phần mềm POS chưa được cấu hình cho trường hợp 2 mã, một trong ba tình huống sau sẽ xảy ra:
| Tình huống | Chuyện gì xảy ra | Nguyên nhân gốc |
|---|---|---|
| Tính tiền 2 lần | Hóa đơn có 2 dòng cho cùng 1 sản phẩm sau một lần quét. | Máy đọc và gửi cả mã 1D lẫn mã 2D; POS ghi nhận thành 2 lần quét riêng biệt. |
| Không tính được | Máy báo lỗi hoặc im lặng, thu ngân phải quét lại, che bớt một mã hoặc nhập tay. | Máy đọc được mã 2D nhưng POS không xử lý được dữ liệu trong mã (ví dụ cấu trúc GS1 Digital Link), và mã 1D dự phòng lại không được gửi đi. |
| Chậm và không ổn định | Lúc được lúc không, tùy góc đưa hàng qua máy. | Hai mã nằm quá xa nhau hoặc vùng yên tĩnh bị xâm phạm, nên mỗi lần quét máy lại “nhìn thấy” một tổ hợp khác. |
Điểm mấu chốt: cả 2 mã đều chứa cùng một GTIN. Một hệ thống được cấu hình đúng sẽ nhận ra “đây là cùng một sản phẩm” và chỉ tính tiền một lần. Quét trùng xảy ra khi khâu nhận ra đó chưa được bật — chứ không phải vì bao bì in 2 mã là sai.
Quy tắc 50 mm: áp dụng khi cả 2 mã cùng nằm trên mặt đưa qua quầy
Phản xạ tự nhiên của nhiều người thiết kế bao bì là in mã QR ra xa mã vạch, thậm chí sang mặt sau, cho “đỡ rối mắt” và tránh quét nhầm. Cần phân biệt hai trường hợp, vì quy tắc 50 mm chỉ áp dụng cho một trong hai trường hợp đó.
Theo tài liệu kỹ thuật của GS1, khi cả 2 mã cùng nằm trên mặt bao bì đưa qua quầy tính tiền, toàn bộ mã 2D — tính cả vùng yên tĩnh (quiet zone, khoảng trắng bắt buộc xung quanh mã) — cần nằm trong bán kính 50 mm quanh tâm của mã 1D. 50 mm là khoảng cách tối đa, không phải khoảng cách lý tưởng phải đạt cho bằng được.
Lý do rất thực tế: khi 2 mã nằm gần nhau và cùng lọt vào vùng quét, máy quét được cấu hình đúng sẽ đối chiếu được GTIN trong cả 2 mã và hiểu đó là một sản phẩm duy nhất.
Một cách xử lý tình thế khác là tách hai mã ra hai mặt khác nhau — ví dụ mã QR ở mặt trước, mã UPC ở mặt sau — như bài viết trên Medium ngày 19/10/2026 đề xuất, dẫn GS1 General Specifications 6.3.3.2. Cách này giúp một lần quét thường chỉ bắt được một mã, nên giảm nguy cơ tính trùng. Đổi lại, máy quét không còn cơ hội đối chiếu GTIN của cả 2 mã trong cùng một lần quét. Đây là cách xử lý tình thế, không nên gọi là sai hướng dẫn.
Nói cách khác: vị trí in đúng chỉ phát huy tác dụng khi đi cùng cấu hình máy quét đúng. In đúng mà quầy chưa cấu hình thì vẫn quét trùng; cấu hình đúng mà vị trí in chưa phù hợp thì máy vẫn xử lý chập chờn. Phải làm cả hai phía.
Cách tránh: phần của bên in bao bì
- Không bỏ mã EAN/UPC. Giữ mã 1D nguyên trạng trong suốt giai đoạn chuyển đổi, chưa bỏ mã nào khi đối tác bán lẻ chưa xác nhận quầy của họ đã đọc và xử lý được mã 2D.
- Đặt đúng vị trí: toàn bộ mã 2D gồm vùng yên tĩnh nằm trong bán kính 50 mm quanh tâm mã 1D, trên cùng một mặt bao bì; tránh đặt lên nếp gấp, đường hàn, mép cong hoặc bề mặt dập nổi.
- Chừa vùng yên tĩnh: để khoảng trắng đủ rộng quanh mã QR (với QR, vùng yên tĩnh cần ít nhất 4 mô-đun ở mỗi phía); không để họa tiết, chữ hoặc mã khác lấn vào vùng này.
- Thống nhất dữ liệu: hai mã phải mã hóa cùng một GTIN. Nếu mã 2D mang thêm số lô, hạn dùng hoặc số sê-ri, hãy chắc chắn dữ liệu được viết đúng cấu trúc GS1, vì POS sẽ dựa vào GTIN để gộp 2 mã thành một sản phẩm.
- In thử và kiểm tra chất lượng in: in thử trên đúng chất liệu bao bì thật rồi kiểm tra độ tương phản và khả năng đọc trước khi in hàng loạt; mã đọc tốt trên file thiết kế vẫn có thể đọc kém trên màng bóng, giấy kraft hoặc bề mặt cong.
- Bao bì càng nhỏ càng phải cẩn thận: sản phẩm nhỏ như son dưỡng, gói gia vị hay lọ mini thường có cả 2 mã nằm sát nhau trong vùng quét — đây là nhóm rủi ro quét trùng cao nhất, cần test kỹ hơn cả.
Cách tránh: phần của cửa hàng và quầy thu ngân
- Bật chế độ quét 2 mã: hỏi nhà cung cấp máy quét xem model đang dùng có chế độ xử lý bao bì 2 mã hay không. GS1 và các hãng POS đã thống nhất các chế độ quét cho giai đoạn chuyển đổi, phổ biến nhất là ưu tiên đọc mã 2D chuẩn GS1 và chỉ dùng mã 1D khi không đọc được mã 2D.
- Dùng tính năng chống đọc trùng: một số hãng có thông số thời gian chờ chống đọc trùng (double-read timeout): trong một khoảng thời gian ngắn, máy không gửi lại cùng một dữ liệu hai lần. Ví dụ, Zebra có tính năng Timeout Between Same Symbols. Cần kiểm tra kỹ xem tính năng đó có bao quát cả trường hợp đọc chung UPC và mã 2D hay không — như bài viết trên Medium lưu ý, không phải cứ bật chống đọc trùng là đã xử lý được trường hợp 2 mã khác loại. Hãy hỏi nhà cung cấp thay vì tự mò trong menu cấu hình.
- Kiểm tra phần mềm POS, không chỉ máy quét: máy đọc được mã 2D không đồng nghĩa phần mềm bán hàng hiểu được mã đó. POS cần trích được GTIN từ cấu trúc GS1 Digital Link hoặc GS1 DataMatrix; nếu chưa, hãy để máy quét chỉ gửi GTIN và tạm ẩn các dữ liệu phụ như số lô, hạn dùng cho tới khi phần mềm sẵn sàng.
- Chưa cần dữ liệu 2D thì tắt đọc 2D tạm thời: nếu cửa hàng chưa bán hàng bằng dữ liệu lô/hạn dùng và chưa sẵn sàng xử lý mã 2D, cách xử lý tạm thời đơn giản nhất là tắt tính năng đọc mã 2D trên máy quét tại quầy. Hàng vẫn bán bình thường bằng mã 1D, và lỗi quét trùng biến mất ngay. Nhớ ghi lại quyết định này và đặt lịch bật lại trước khi triển khai mã 2D thật.
- Đào tạo thu ngân theo một quy trình chung: dán sẵn một bao bì mẫu của sản phẩm 2 mã tại quầy và hướng dẫn cách xử lý khi hóa đơn nhảy 2 dòng (xóa dòng trùng, quét lại từng mã) để ca nào cũng xử lý giống nhau.
Quy trình test-scan 15 phút trước khi đưa hàng lên kệ
Đừng để khách hàng là người đầu tiên phát hiện lỗi. Mỗi khi nhập một mặt hàng có bao bì in 2 mã, hãy chạy vòng kiểm tra ngắn này bằng chính máy quét và phần mềm POS của cửa hàng:
| Bước | Việc cần làm | Đạt khi |
|---|---|---|
| 1 | Quét chậm 5 lần, mỗi lần đưa cả 2 mã qua vùng quét. | Cả 5 lần hóa đơn chỉ có 1 dòng. |
| 2 | Quét nhanh 5 lần như thu ngân làm lúc đông khách. | Không lần nào nhảy 2 dòng hoặc báo lỗi. |
| 3 | Che mã 1D, chỉ quét mã 2D. | POS vẫn nhận đúng sản phẩm và giá (nếu quầy đã bật 2D). |
| 4 | Che mã 2D, chỉ quét mã 1D. | POS nhận đúng sản phẩm như trước đây. |
| 5 | Quét ở góc nghiêng, khoảng cách xa và qua lớp màng bọc. | Đọc được ngay, không phải xoay tìm góc lâu. |
| 6 | Kiểm tra hóa đơn: tên hàng, giá, số lượng. | Khớp hoàn toàn với sản phẩm mẫu. |
| 7 | Lặp lại bước 1–2 ở mọi quầy, kể cả quầy tự thanh toán. | Mọi quầy cho cùng một kết quả. |
Chỉ cần một bước không đạt, khoan đưa hàng lên kệ bán đại trà: ghi lại bước lỗi, chụp ảnh vị trí 2 mã trên bao bì và gửi cho đơn vị cung cấp máy quét hoặc phần mềm để chỉnh cấu hình trước. Lỗi cấu hình sửa một lần thì hết cho mọi lần bán sau; lỗi để lọt ra quầy thì lặp lại với từng khách.
Khi nào giữ 1 mã, khi nào in 2 mã?
| Tình huống | Nên làm |
|---|---|
| Bán qua quầy truyền thống, máy quét laser cũ, chưa có nhu cầu dữ liệu lô/hạn dùng | Giữ nguyên mã 1D như hiện tại. Chưa cần in thêm mã 2D. |
| Muốn khách quét mã xem thông tin, hướng dẫn, bảo hành bằng điện thoại | In thêm mã QR cho người dùng — và cấu hình quầy để mã này không tham gia tính tiền, hoặc test-scan kỹ trước khi bán. |
| Chuẩn bị bán vào kênh bán lẻ hiện đại, xuất khẩu, hoặc cần truy xuất lô/hạn dùng | In 2 mã theo hướng dẫn GS1 (quy tắc 50 mm), đồng thời làm việc với đối tác bán lẻ về cấu hình quầy của họ. |
| Sản phẩm thuộc diện quản lý chặt như dược phẩm, thực phẩm cần truy xuất nguồn gốc | Ưu tiên mã 2D chứa GTIN + số lô + hạn dùng, và kiểm tra yêu cầu riêng của từng thị trường/kênh phân phối. |
Ba lỗi thường gặp nhất
- Đặt mã QR marketing lẫn với mã tính tiền. Nhiều nhãn hàng vẫn ghi chú “quét mã QR để xem thông tin” ngay cạnh mã tính tiền, khiến thu ngân và khách lẫn lộn hai vai trò. Nếu trên bao bì có cả mã marketing riêng, hãy tách vị trí và ghi rõ mục đích của từng mã.
- Tự nghĩ ra nội dung mã 2D. Mã QR chứa một đường link tự đặt, không theo cấu trúc GS1 Digital Link, thì POS không trích được GTIN từ đó — đó là một nguyên nhân phổ biến của tình huống “đọc được mà không tính được”.
- Chỉ kiểm tra một phía. Máy quét thì đúng chuẩn, nhưng cửa hàng đổi sang phần mềm bán hàng mới, hoặc ngược lại, mà không ai test lại với bao bì 2 mã.
Nguồn tham khảo
- GS1 — 2D Barcodes at Retail Point-of-Sale Implementation Guideline và GS1 General Specifications (quy tắc đặt mã 2D trong bán kính 50 mm quanh tâm mã 1D; các chế độ quét tại quầy), tóm tắt tại Videojet: GS1 Sunrise 2027.
- Packaging World — Sunrise 2027 Advances at Retail (phát biểu của GS1 US: mã 1D không bị loại bỏ, dual marking trong giai đoạn chuyển đổi, quy tắc 50 mm).
- Medium — Barcode Dual Marking: Why a GS1 QR Code and UPC Ring Up Twice (and How to Fix It), 19/10/2026 (bài viết dẫn lại phàn nàn của thu ngân trên Reddit; bài Reddit gốc chưa được đọc trực tiếp khi soạn bài này).
Câu Hỏi Thường Gặp
Sẵn sàng nâng cấp hệ thống bán lẻ của bạn? Liên hệ TONGKHOMAVACH.VN để được tư vấn chọn thiết bị phù hợp theo ngân sách và quy mô cụ thể. Gọi 0988.937.913 – tư vấn miễn phí, bảo hành chính hãng, hỗ trợ lắp đặt toàn quốc.