hitava

Công việc & bán hàng · 12 phút đọc

Cách tính giá vốn hàng bán và lợi nhuận cho shop nhỏ (có công thức Google Sheets)

Giá vốn hàng bán là số tiền bạn đã bỏ ra để có đúng số hàng đã bán, tính theo giá nhập bình quân chứ không phải giá nhập lần gần nhất. Lấy doanh thu trừ giá vốn ra lãi gộp, trừ tiếp mặt bằng, lương, quảng cáo, phí sàn mới ra lãi ròng — con số thật sự còn lại trong túi. Bài này đi qua từng bước với một ví dụ số cụ thể, cách định giá bán theo % lãi mong muốn mà không rơi vào bẫy markup và margin, và công thức Google Sheets đã thử lại.

Đăng HiTaVaBán hàngGiá vốnLợi nhuậnCông thứcGoogle Sheets
Bảng giá vốn bình quân gia quyền di động: tồn đầu 20 túi giá 120.000, nhập 30 túi giá 130.000 và 50 túi giá 135.000, bán 25 rồi 40 túi; giá vốn hàng bán 8.430.000, lãi gộp 3.270.000, biên lãi gộp 27,9%

Giá vốn hàng bán là gì, khác giá nhập thế nào?

Giá nhập là giá trên phiếu nhập của một lần mua hàng. Giá vốn hàng bán là tổng giá trị của những món đã bán ra trong kỳ, tính theo giá nhập đã gộp các khoản để đưa hàng về tới kệ. Khi một mặt hàng chỉ nhập một lần một giá thì hai số này trùng nhau. Nhưng shop nhỏ hiếm khi như vậy: tháng này nhập 130.000đ, tháng sau nhà cung cấp tăng lên 135.000đ, hàng cũ chưa bán hết thì hàng mới đã về chung kệ.

Giá vốn của một đơn vị hàng nên gồm:

  • Giá mua trên hoá đơn của nhà cung cấp, sau khi trừ chiết khấu được hưởng ngay trên hoá đơn.
  • Phí vận chuyển, bốc xếp để đưa lô hàng về kho, chia đều cho số lượng của lô.
  • Thuế nhập khẩu (nếu có). Thuế GTGT đầu vào thì tuỳ cách bạn kê khai — nếu được khấu trừ thì không cộng vào giá vốn; hỏi kế toán nếu chưa rõ.

Ví dụ lô 50 túi hạt điều giá 135.000đ, phí xe chở về 500.000đ: giá vốn thực mỗi túi = (50 × 135.000 + 500.000) ÷ 50 = 145.000đ, không phải 135.000đ. Bỏ quên phí ship là lý do hay gặp nhất khiến sổ báo lãi mà cuối tháng tiền không thấy đâu.

Giá vốn
Theo giá nhập bình quân, gồm phí ship
Lãi gộp
Doanh thu thuần − giá vốn
Biên lãi gộp
Lãi gộp ÷ doanh thu thuần
Lãi ròng
Lãi gộp − chi phí vận hành

Cách tính giá vốn bình quân gia quyền khi nhập nhiều giá

Có vài cách gán giá cho hàng xuất bán (nhập trước xuất trước, đích danh, bình quân). Với shop nhỏ bán hàng giống hệt nhau trên cùng kệ, bình quân gia quyền là cách dễ làm và dễ kiểm nhất: giá vốn mỗi đơn vị = tổng giá trị hàng đang có ÷ tổng số lượng đang có. "Gia quyền" nghĩa là lô nào nhiều hàng thì giá lô đó nặng ký hơn — không phải cộng các giá rồi chia đều.

Ví dụ túi hạt điều 500g trong tháng 10, bán 180.000đ/túi:

Bảng nhập xuất túi hạt điều tháng 10: sau lần nhập 05/10 giá bình quân 126.000, sau lần nhập 15/10 giá bình quân 132.000; giá vốn xuất 3.150.000 và 5.280.000
Mỗi lần nhập, giá bình quân được tính lại; mỗi lần bán, giá vốn lấy theo bình quân lúc đó.
  1. 01/10 tồn đầu 20 túi × 120.000 = 2.400.000đ. Bình quân 120.000đ.
  2. 05/10 nhập 30 túi × 130.000 = 3.900.000đ. Tồn 50 túi, giá trị 6.300.000đ → bình quân 6.300.000 ÷ 50 = 126.000đ.
  3. 10/10 bán 25 túi → giá vốn 25 × 126.000 = 3.150.000đ. Còn 25 túi, giá trị 3.150.000đ, bình quân giữ nguyên 126.000đ.
  4. 15/10 nhập 50 túi × 135.000 = 6.750.000đ. Tồn 75 túi, giá trị 9.900.000đ → bình quân 132.000đ.
  5. 20/10 bán 40 túi → giá vốn 40 × 132.000 = 5.280.000đ. Còn 35 túi, giá trị 4.620.000đ.

Cả tháng bán 65 túi, giá vốn hàng bán = 3.150.000 + 5.280.000 = 8.430.000đ. Nếu lấy giá nhập lần cuối (135.000đ) nhân 65 túi thì ra 8.775.000đ; lấy giá đầu kỳ (120.000đ) thì ra 7.800.000đ — chênh nhau gần một triệu chỉ trên một mặt hàng.

Cách tínhGiá vốn mỗi túiGiá vốn 65 túiKhi nào dùng
Bình quân di động (sau mỗi lần nhập)126.000 rồi 132.0008.430.000Có sổ nhập xuất theo ngày, cần lãi từng đơn
Bình quân cuối kỳ (cả tháng)13.050.000 ÷ 100 = 130.5008.482.500Chỉ tổng kết cuối tháng, ít nghiệp vụ
Giá nhập lần cuối135.0008.775.000Không nên — làm lãi thấp hơn thực tế khi giá tăng
Bình quân cuối kỳ: tổng giá trị tồn đầu + các lần nhập (2.400.000 + 3.900.000 + 6.750.000) chia tổng số lượng (20 + 30 + 50).

Bẫy hay gặp: lấy trung bình cộng các giá nhập

(120.000 + 130.000 + 135.000) ÷ 3 = 128.333đ là sai, vì lô 50 túi và lô 20 túi bị tính nặng ngang nhau. Luôn chia tổng tiền cho tổng số lượng.

Công thức giá vốn bình quân trong Google Sheets

Mỗi mặt hàng một bảng nhập xuất, mỗi nghiệp vụ một dòng: A = ngày, B = loại ("Nhập" hoặc "Bán"), C = số lượng, D = đơn giá nhập (đã gộp phí ship, để trống ở dòng Bán). Dòng 2 là tồn đầu, ghi loại "Nhập". Các cột tự tính: E = tồn, F = giá trị tồn, G = giá bình quân, H = giá vốn xuất.

Dòng 2 (tồn đầu) — E2, F2, G2 lần lượt:
=C2
=C2*D2
=F2/E2
Dòng 3 trở xuống — E3 tồn, H3 giá vốn xuất, F3 giá trị tồn, G3 giá bình quân; kéo xuống cả cột:
=E2 + IF(B3="Nhập"; C3; -C3)
=IF(B3="Bán"; C3*G2; 0)
=F2 + IF(B3="Nhập"; C3*D3; -H3)
=IF(E3=0; G2; F3/E3)

Thử lại với ví dụ trên: dòng 3 nhập 30 × 130.000 → E3 = 20 + 30 = 50, F3 = 2.400.000 + 3.900.000 = 6.300.000, G3 = 126.000. Dòng 4 bán 25 → H4 = 25 × 126.000 = 3.150.000, E4 = 25, F4 = 3.150.000. Dòng 5 nhập 50 × 135.000 → E5 = 75, F5 = 9.900.000, G5 = 132.000. Dòng 6 bán 40 → H6 = 5.280.000. =SUM(H3:H6) ra 8.430.000 — khớp với tính tay.

Giá bình quân cuối kỳ của cả tháng (nếu bạn không cần lãi từng đơn):
=SUMPRODUCT((B2:B100="Nhập")*C2:C100*D2:D100) / SUMIFS(C2:C100; B2:B100; "Nhập")

Thử lại: (20 × 120.000 + 30 × 130.000 + 50 × 135.000) ÷ (20 + 30 + 50) = 13.050.000 ÷ 100 = 130.500.

Giới hạn của cách tự làm

Công thức trên chạy đúng khi mỗi mặt hàng một bảng và các dòng xếp đúng thứ tự ngày. Gõ bổ sung một phiếu nhập ngày cũ thì phải chèn dòng đúng chỗ, mọi dòng sau tự tính lại. Khi có vài trăm mã hàng, nhiều kho, hàng trả lại, bảng này nhanh chóng khó giữ — cách tổ chức sổ kho nhiều mã ở bài quản lý tồn kho bằng Excel.

Cách tính lãi gộp và biên lợi nhuận %

Doanh thu thuần = doanh thu bán hàng − giảm giá − hàng bị trả lại. Lãi gộp = doanh thu thuần − giá vốn hàng bán. Biên lãi gộp (gross margin) = lãi gộp ÷ doanh thu thuần.

Với túi hạt điều: doanh thu 65 × 180.000 = 11.700.000đ, giá vốn 8.430.000đ → lãi gộp 3.270.000đ, biên lãi gộp 3.270.000 ÷ 11.700.000 = 27,9%. Nghĩa là cứ 100.000đ khách trả, khoảng 27.900đ còn lại để trả mặt bằng, lương và các chi phí khác.

B2 = doanh thu thuần, C2 = giá vốn. Lãi gộp và biên lãi gộp (định dạng ô là %):
=B2-C2
=IFERROR((B2-C2)/B2; 0)

Tính biên lãi cho từng mặt hàng mới thấy món nào đang gánh cả shop. Món bán chạy nhất chưa chắc lãi nhiều nhất: một món biên 12% bán 300 cái có thể mang về ít lãi hơn món biên 40% bán 80 cái. Cách lập bảng doanh thu theo mặt hàng ở bài quản lý bán hàng bằng Google Sheets.

Định giá bán theo % lãi mong muốn: markup và margin

Câu "tôi muốn lãi 30%" có hai nghĩa, và hai nghĩa này cho ra hai giá bán khác nhau:

  • Markup — lãi tính trên giá vốn: giá bán = giá vốn × (1 + %). Giá vốn 100.000đ, markup 30% → bán 130.000đ.
  • Margin — lãi tính trên giá bán: giá bán = giá vốn ÷ (1 − %). Giá vốn 100.000đ, margin 30% → 142.857đ, làm tròn lên 143.000đ.
So sánh giá vốn 100.000đ: cộng 30% ra giá bán 130.000đ với biên lãi 23,1%; chia cho 0,7 ra 143.000đ với biên lãi 30,1%; bảng quy đổi margin 20, 25, 30, 40, 50% sang markup 25, 33,3, 42,9, 66,7, 100%
Báo cáo lãi lỗ luôn tính biên lãi trên doanh thu, nên muốn biên 30% thì phải chia, không phải cộng.

Bẫy nằm ở chỗ: bạn định giá bằng cách cộng 30% (markup), nhưng báo cáo cuối tháng lại tính biên lãi trên doanh thu (margin) — và thấy chỉ có 23,1%. Chênh 7 điểm phần trăm, trên doanh thu 100 triệu là 7 triệu lãi bạn tưởng có mà không có.

B2 = giá vốn, C2 = % lãi mong muốn. Giá bán theo margin, làm tròn lên nghìn:
=ROUNDUP(B2/(1-C2); -3)
Giá bán theo markup, và hai công thức quy đổi (margin → markup, markup → margin):
=ROUNDUP(B2*(1+C2); -3)
=C2/(1-C2)
=C2/(1+C2)

Thử lại: B2 = 100.000, C2 = 30%. Margin: 100.000 ÷ 0,7 = 142.857 → ROUNDUP(...; -3) = 143.000. Markup: 100.000 × 1,3 = 130.000. Quy đổi margin 30% → 0,3 ÷ 0,7 = 42,9% markup; markup 30% → 0,3 ÷ 1,3 = 23,1% margin.

Bán trên sàn hoặc có phí tính theo % giá bán (phí sàn, phí thanh toán, hoa hồng cộng tác viên): trừ luôn các % đó ở mẫu số. Ví dụ giả định giá vốn 100.000đ, muốn margin 30%, tổng phí 10% giá bán:

D2 = tổng % phí tính trên giá bán:
=ROUNDUP(B2/(1-C2-D2); -3)

Thử lại: 100.000 ÷ (1 − 0,3 − 0,1) = 166.667 → 167.000đ. Kiểm ngược: phí 10% = 16.700đ, lãi = 167.000 − 100.000 − 16.700 = 50.300đ = 30,1% giá bán. Mức phí thật của từng sàn thay đổi theo ngành hàng và thời điểm — lấy số trong trang người bán của bạn, đừng dùng số 10% này.

Cách tính lãi ròng: trừ chi phí vận hành

Lãi gộp đẹp chưa có nghĩa shop có lãi. Chi phí vận hành là các khoản phải trả dù bán được nhiều hay ít: mặt bằng, lương, điện nước, quảng cáo, phí sàn, vận chuyển giao khách, văn phòng phẩm, hàng hư hỏng, chênh lệch kiểm kê. Lãi ròng = lãi gộp − chi phí vận hành (+ thu nhập khác − chi phí khác nếu có).

Khoản mục tháng 10Số tiền (đ)% doanh thu thuần
Doanh thu bán hàng120.000.000
Giảm giá, trả hàng−2.000.000
Doanh thu thuần118.000.000100%
Giá vốn hàng bán−82.600.00070%
Lãi gộp35.400.00030%
Mặt bằng−8.000.000
Lương nhân viên−12.000.000
Điện nước−1.500.000
Quảng cáo−4.000.000
Phí sàn, vận chuyển−3.200.000
Khác−700.000
Lãi ròng6.000.0005,1%
Ví dụ shop bán lẻ một cửa hàng: biên lãi gộp 30% nhưng lãi ròng chỉ còn 5,1% doanh thu.

Hai điều nên rút ra từ bảng này. Một: giảm giá 5% cho một đơn hàng biên 30% là cắt mất 1/6 tiền lãi gộp của đơn đó, chứ không phải 5%. Hai: doanh thu hoà vốn = chi phí vận hành ÷ biên lãi gộp = 29.400.000 ÷ 30% = 98.000.000đ — dưới mức đó là tháng lỗ.

Chi phí vận hành tháng có ngày đầu tháng ở F1, lấy từ sổ thu chi (A = ngày, B = loại, C = số tiền):
=SUMIFS(ThuChi!C:C; ThuChi!B:B; "Chi phí vận hành"; ThuChi!A:A; ">="&F1; ThuChi!A:A; "<="&EOMONTH(F1;0))
Lãi ròng (B5 = lãi gộp, B6 = chi phí vận hành) và doanh thu hoà vốn (B7 = biên lãi gộp):
=B5-B6
=IFERROR(B6/B7; 0)

Thử lại: 35.400.000 − 29.400.000 = 6.000.000; 29.400.000 ÷ 0,3 = 98.000.000. Đừng quên lương của chính bạn nếu bạn đứng quầy cả ngày — không tính khoản này thì "lãi ròng" thật ra là tiền công của bạn.

Lãi ròng trong bài là trước thuế

Thuế của hộ kinh doanh và doanh nghiệp tính theo quy định riêng, và quy định cho hộ kinh doanh đã thay đổi trong năm 2026. Bài này không bàn chi tiết; hãy hỏi kế toán hoặc cơ quan thuế quản lý để biết shop của bạn thuộc trường hợp nào.

Khi nào nên để phần mềm tính giá vốn thay bạn

Một bảng tính tự làm đủ cho vài chục mặt hàng nhập vài lần mỗi tháng. Bắt đầu khó khi có nhiều kho, hàng nhập từng phần, trả hàng, sửa phiếu ngày cũ — mỗi lần như vậy giá bình quân của mọi phiếu sau đều đổi.

Báo cáo Lãi ròng tháng 9/2026 trong Bán hàng 360 PRO với dữ liệu DEMO: doanh thu thuần 741,2 triệu, lãi gộp 199,9 triệu (27%), chi phí vận hành 73,1 triệu, lãi ròng 125,5 triệu; bảng khoản mục so tháng 8, biểu đồ 6 tháng và lãi ròng theo cửa hàng
Báo cáo lãi ròng trong web app (dữ liệu DEMO cửa hàng mỹ phẩm): từ doanh thu, giá vốn tới từng khoản chi phí vận hành, so tháng trước và theo cửa hàng.

Đọc tiếp

Câu hỏi thường gặp

Giá vốn nên tính theo giá nhập lần cuối hay bình quân?

Bình quân. Giá nhập lần cuối làm lãi trông thấp hơn khi giá đang tăng và cao hơn khi giá giảm, nên báo cáo lãi lỗ từng tháng nhảy lung tung. Bình quân gia quyền phản ánh đúng số tiền bạn đã bỏ ra cho lượng hàng đang có.

Lãi 30% trên giá vốn là biên lợi nhuận bao nhiêu?

23,1%. Công thức quy đổi: margin = markup ÷ (1 + markup) = 0,3 ÷ 1,3. Ngược lại muốn biên lãi 30% trên giá bán thì markup phải là 0,3 ÷ 0,7 = 42,9%.

Hàng khuyến mãi, hàng tặng có tính vào giá vốn không?

Có. Hàng tặng kèm vẫn xuất kho nên giá vốn của nó cộng vào giá vốn của đơn bán (doanh thu của món tặng bằng 0). Bỏ qua khoản này thì đơn khuyến mãi trông lãi hơn thực tế.

Hàng hư, hết hạn, kiểm kê bị thiếu thì ghi vào đâu?

Ghi một phiếu xuất huỷ hoặc điều chỉnh kiểm kê theo giá bình quân lúc đó, và tính khoản này vào chi phí (hao hụt) khi tính lãi ròng — không trừ vào doanh thu.

Công thức có dùng được trên Excel không?

Được. IF, SUMIFS, SUMPRODUCT, ROUNDUP, EOMONTH, IFERROR đều có trong Excel. Nếu máy để vùng Hoa Kỳ thì đổi dấu chấm phẩy thành dấu phẩy.

Mẫu làm sẵn cho việc này

Đọc tiếp

Xem thêm mẹo và video hướng dẫn trên kênh YouTube HiTaVa, hoặc đọc các bài khác trong chủ đề Công việc & bán hàng.

Cần hỏi thêm?Zalo 0935077673 (Hải Vân)