Vì sao payout Shopify không khớp với doanh số bán hàng
Phí xử lý, hoàn tiền, chargeback, khoản giữ lại, quy đổi tiền tệ và lịch payout khiến số tiền về ngân hàng khác doanh số bán hàng.
Shopify Payments trả tiền theo lịch riêng của nó, và con số về đến ngân hàng gần như không bao giờ trùng với con số merchant thấy trên dashboard doanh số cho cùng một khoảng thời gian. Shopify có hẳn một bài hướng dẫn riêng cho việc này — “Navigating your Shopify Payments payouts to resolve lower or missing payouts” — và kiểu vướng mắc này lặp đi lặp lại trong các thảo luận của merchant: một payout mất tới cả tuần mới về, một khoản giữ lại (hold) viện lý do chargeback tăng trong khi shop chưa từng bị chargeback, hoặc một kế toán viên bỏ cuộc không khớp từng giao dịch nữa mà chỉ so tổng PayPal với Shopify mỗi quý một lần. Không cái nào trong số đó có nghĩa là có gì sai. Một payout là một con số ròng, tính theo lịch riêng của nó, và nó trừ đi nhiều khoản mà dashboard doanh số không hề hiện ra. Tôi đang xây Settled, một app Shopify đọc dữ liệu payout của chính merchant và giải thích khoản lệch đó bằng ngôn ngữ dễ hiểu. App chưa ra mắt và chưa có merchant nào dùng; bài này là quá trình tìm ra chính xác lời giải thích đó cần nói gì.
Vì sao một payout không khớp với doanh số bán hàng?
Vì payout là phần còn lại của doanh số gộp sau nhiều khoản trừ riêng biệt, tính theo lịch thanh toán (settlement) hiếm khi trùng khít với một tuần lịch của doanh số. Bài hướng dẫn xử lý payout thấp hoặc thiếu của chính Shopify liệt kê các nguyên nhân: phí xử lý, hoàn tiền, chargeback và phí của nó, quy đổi tiền tệ, khoản giữ lại (reserve), số dư âm, payout bị giữ, các khoản điều chỉnh, và thuế trên phí. Một payout nhỏ hơn con số doanh số đứng cạnh nó là kết quả bình thường của danh sách đó, không phải dấu hiệu có gì hỏng.
Những gì tách doanh số ra khỏi một payout

| Khoản mục | Ý nghĩa |
|---|---|
| Phí xử lý (processing fees) | Bị trừ trên mọi giao dịch trước khi phần còn lại về tay merchant; mức phí phụ thuộc gói Shopify và quốc gia, nên không có một con số phần trăm chung nào để nêu ở đây |
| Hoàn tiền (refund) | Bị trừ vào payout kế tiếp, không phải payout chứa đơn hàng gốc — nên một khoản hoàn tiền cho đơn tháng trước có thể làm giảm payout tuần này |
| Chargeback và dispute | Số tiền bị tranh chấp bị trừ vào payout kế tiếp, và phí chargeback có thể hiện thành một khoản điều chỉnh; nếu thắng, merchant được trả lại số tiền, và Shopify có thể hoàn phí tùy quốc gia hoặc khu vực |
| Khoản giữ lại (reserve/hold) | Shopify giữ lại một số tiền cố định hoặc một phần trăm giao dịch trong một khoảng thời gian nhất định, để có sẵn tiền cho dispute và hoàn tiền; phần không còn cần tới được trả lại đầy đủ khi hết hạn, trong các payout sắp tới |
| Quy đổi tiền tệ | Áp dụng khi tiền tệ nhận payout khác với tiền tệ lúc bán hàng |
| Điều chỉnh (adjustment) | Các khoản có thể làm payout tăng hoặc giảm, chẳng hạn phí chargeback, chargeback protection và điều chỉnh thuế |
| Lịch payout và số dư đang chờ (pending) | Doanh số được gom theo khung thanh toán chỉ tính ngày làm việc trước khi đủ điều kiện vào một payout, và số dư quá nhỏ sẽ ở trạng thái chờ (pending) cho tới khi đạt mức tối thiểu của quốc gia đó |
Một ví dụ minh hoạ, với số liệu giả định
Các con số dưới đây không phải dữ liệu thật của shop nào — đó là số tròn được chọn để minh hoạ cách tính, theo thứ tự này: doanh số gộp, trừ phí, trừ hoàn tiền, trừ điều chỉnh, trừ chargeback, trừ khoản giữ lại, ra payout ròng.
| Khoản mục (giả định) | Số tiền | Số dư luỹ kế |
|---|---|---|
| Doanh số gộp trong kỳ payout | $10.000,00 | $10.000,00 |
| Phí xử lý | −$300,00 | $9.700,00 |
| Hoàn tiền | −$450,00 | $9.250,00 |
| Điều chỉnh | −$25,00 | $9.225,00 |
| Chargeback cộng phí dispute | −$165,00 | $9.060,00 |
| Khoản giữ lại mới cho kỳ này | −$500,00 | $8.560,00 |
| Payout ròng | $8.560,00 |
$10.000 doanh số và $8.560 về ngân hàng là một khoảng lệch $1.440 — tức 14,4% doanh số — và mỗi đồng trong đó đều truy được về một trong năm dòng, không có gì nằm ngoài giải thích. Chỉ nhìn dashboard doanh số và khoản tiền về ngân hàng, merchant chỉ thấy hai đầu mút, không thấy năm dòng ở giữa.
Hôm nay merchant có thể kiểm tra gì trong Shopify admin?
Shopify đã hiện phần lớn các dòng trên, rải trên vài màn hình:
- Trang chi tiết của từng payout hiện tổng số tiền, trạng thái, tài khoản ngân hàng nhận, một mã tham chiếu chuyển khoản (transfer reference number) nếu có, và bảng chia nhỏ các khoản charge, refund, adjustment và reserve bên trong nó — kèm file CSV xuất ra liệt kê loại giao dịch, số đơn hàng, phí và số tiền ròng của từng dòng.
- Shopify Payments activity report và payout reconciliation report đều cho một bảng chia nhỏ hoạt động số dư theo kỳ, dùng để rà soát cuối tháng hoặc đưa cho kế toán.
- Bài hướng dẫn về payout thấp hoặc thiếu chính là checklist của Shopify cho đúng câu hỏi này.
Không cái nào trong ba thứ trên tự giải thích giúp merchant — chúng chỉ đưa ra con số và để phần khớp lại cho người đọc, mà trên thực tế là một bookkeeper hoặc chính merchant tự làm bằng tay.
Shopify đã tự đối soát payout với khoản tiền về ngân hàng chưa?

Một phần. Payout có một mã tham chiếu ngân hàng, còn gọi là Trace ID, mà merchant có thể đưa cho ngân hàng khi một payout đã báo là đã chuyển mà chưa thấy về, và payout reconciliation report chia nhỏ dòng tiền qua Shopify Payments theo một khoảng ngày, để đối soát cuối tháng hoặc đưa cho kế toán. Đó là một bước tiến thật: có cách lần theo một khoản tiền về, và có bản tổng hợp theo kỳ để đối chiếu.
Nhưng nó không phủ hết phần còn lại của bài này. Reconciliation report không gồm phí nền tảng Shopify và các cổng thanh toán bên thứ ba, dữ liệu của nó trễ ba ngày, và vì payout đi theo lịch riêng, tổng số theo một khoảng ngày có thể không khớp với tiền về ngân hàng trong đúng khoảng đó. Nó xác nhận một payout đã về; nó không nói, ngay cạnh con số, vì sao con số đó nhỏ hơn doanh số đã tạo ra nó.
Settled nằm ở đâu trong bức tranh này
Đây chính là khoảng trống Settled đang được xây để lấp vào. Nó bắt đầu từ tháng 6/2026, là sản phẩm đầu tiên trong tám sản phẩm nhỏ tôi đang xây có code thật. Nó đọc đúng dữ liệu payout và balance-transaction mà Shopify đã cung cấp qua API, rồi biến mỗi nguyên nhân ở trên thành một trong vài câu giải thích cố định, viết bằng ngôn ngữ thường: một giao dịch bán chưa gắn được với đơn hàng nào, phí xử lý chưa gắn được vào khoản tiền nào, một khoản hoàn tiền về sau payout mà nó thuộc về, một khoản dư quá nhỏ chỉ có thể là làm tròn tiền tệ, hoặc tiền bị giữ lại và không nằm trong khoản payout này. Reserve và dispute được đánh dấu kèm ngày, số tiền và loại. Với shop bán thêm qua PayPal hoặc Stripe, app nhận file CSV xuất từ đó và cố khớp các giao dịch này với những gì Shopify đã báo cáo.
App không kết nối vào tài khoản ngân hàng, và nó không phải phần mềm kế toán — nó giải thích những con số mà Shopify và các file CSV đó đã có sẵn. Nó không hứa khớp được mọi giao dịch hay đảm bảo sổ sách sẽ cân; khi có gì không khớp, nó nói ra thay vì giấu đi. Settled chưa ra mắt. Chưa có merchant nào dùng, nên mọi điều ở trên là những gì app được xây để làm, không phải kết quả nó đã tạo ra.
Viết bởi Brandon Ta
Solo dev ở Việt Nam, xây mười sản phẩm nhỏ một cách công khai, phần lớn cho doanh nghiệp ở Mỹ và Anh.
Bình luận
Tham gia thảo luận: chia sẻ suy nghĩ, đặt câu hỏi, hoặc trò chuyện với những người đọc khác ở bên dưới.