Hoàn tiền non-consumable là trường hợp hiếm hoi bạn thật sự có thể lấy lại, nên một lifetime unlock chỉ khiến bạn mất đúng giá bán chứ không hơn
Hoàn tiền non-consumable, trên một lifetime unlock, một bản nâng cấp gỡ quảng cáo, hay một tầng pro vĩnh viễn, là khoản hoàn tiền duy nhất bạn thật sự có thể đảo ngược, vì bạn lấy lại được tính năng. Đây là chi phí của nó trên App Store và Google Play, vì sao Apple không bao giờ hỏi bạn trước, và làm sao để revoke có hiệu lực chắc chắn.

Điểm chính
- Non-consumable là một giao dịch mua một lần mà khách hàng giữ mãi mãi, một bản gỡ quảng cáo, một lifetime pro unlock, một tính năng vĩnh viễn. Khác với consumable, không có gì bị tiêu hao khi giao, nên hoàn tiền non-consumable là khoản hoàn tiền duy nhất mà bạn có thể vừa trả lại tiền vừa lấy lại tính năng cùng lúc.
- Điều đó khiến hoàn tiền non-consumable là khoản lỗ gọn gàng nhất bạn sẽ gặp. Bạn mất giá bán và cửa hàng đảo ngược khoản hoa hồng của chính nó, nhưng không có chi phí tính toán, không có lệnh gọi API, và không có sản phẩm đã giao mà bạn đã trả tiền và không thể thu hồi. Khoản lỗ bị giới hạn ở giá bán.
- Cái bẫy nằm ở giá. Một lifetime unlock thường là sản phẩm có giá đơn lẻ cao nhất của bạn, thường gấp mười đến ba mươi lần một gói đăng ký hàng tháng, nên một lần hoàn tiền non-consumable là cú đánh đơn lẻ lớn hơn gần như mọi khoản hoàn tiền khác trên tài khoản của bạn.
- Trên App Store, Apple tự mình quyết định mọi khoản hoàn tiền non-consumable qua reportaproblem.apple.com, và không có CONSUMPTION_REQUEST cho non-consumable. Apple chỉ gửi yêu cầu bằng chứng đó cho consumable và gói đăng ký tự động gia hạn, nên với non-consumable bạn không có cửa sổ để tranh luận và hoàn toàn không có kênh gửi bằng chứng nào.
- Apple vẫn báo cho bạn biết là nó đã xảy ra. Một REFUND App Store Server Notification được kích hoạt cho consumable, non-consumable, và gói đăng ký không gia hạn, và transaction đã ký mang theo một revocationDate và revocationReason. StoreKit cũng loại sản phẩm khỏi Transaction.currentEntitlements, đó là tín hiệu để bạn tắt tính năng.
- Trên Google Play bạn có thể tự hoàn tiền một non-consumable từ Play Console hoặc orders.refund API, và đặt revoke thành true sẽ chấm dứt quyền truy cập ngay lập tức. Cơ chế hoàn tiền tự phục vụ 48 giờ của Google chạy mà không hỏi bạn, và một giao dịch mua một lần chưa được acknowledge sẽ tự động được hoàn tiền và revoke sau 3 ngày.
- Cái bẫy là quyết định quyền truy cập ở phía client. Nếu một non-consumable đã hoàn tiền vẫn được đánh dấu owned trong một hóa đơn được cache hoặc một cờ chỉ ở phía client, khách hàng vẫn giữ tính năng sau khi tiền đã đi, nên bạn mất giá bán mà vẫn tiếp tục cung cấp bản mở khóa. Hãy xác minh entitlement trên máy chủ của bạn đối chiếu với việc thu hồi, mỗi lần khởi động.
Bán một lifetime unlock, một bản nâng cấp gỡ quảng cáo, hay một tầng pro vĩnh viễn, tức là bạn đang bán một non-consumable, giao dịch mua duy nhất mà khoản hoàn tiền thật sự có thể đảo ngược những gì bạn đã trao. Hoàn tiền consumable lấy lại số tiền bạn đã chi để giao xu hoặc tín dụng. Hoàn tiền gói đăng ký đảo ngược quyền truy cập mà dù sao bạn cũng đang cho thuê. Hoàn tiền non-consumable thì khác, và theo một nghĩa hẹp, đây là khoản hoàn tiền tử tế nhất bạn sẽ nhận: khách hàng không giữ lại gì cả. Bạn trả lại giá, bạn lấy lại tính năng, và khác với consumable, không có hóa đơn tính toán nào còn nằm lại ở phía sổ sách của bạn. Đó là tin tốt. Tin xấu là non-consumable thường là thứ đắt nhất mà bạn bán, nên khoản hoàn tiền duy nhất bạn có thể đảo ngược một cách gọn gàng cũng là một trong những khoản lớn nhất.
Non-consumable là gì, và vì sao khoản hoàn tiền của nó hành xử khác đi
Cửa hàng phân loại mọi giao dịch mua vào một kiểu, và kiểu đó quyết định khoản hoàn tiền có thể và không thể hoàn tác điều gì. Non-consumable nằm ở đầu đối lập với consumable.
Non-consumable được mua một lần và giữ mãi mãi
Một giao dịch mua trong ứng dụng non-consumable là một entitlement vĩnh viễn. Khách hàng mua nó một lần và sở hữu nó suốt vòng đời tài khoản: một bản gỡ quảng cáo, một tầng pro trọn đời, một bản mở khóa phiên bản đầy đủ, một gói tính năng vĩnh viễn. Apple khôi phục nó trên các thiết bị của khách hàng miễn phí, và Google Play gắn nó với tài khoản. Không có gia hạn và không có hết hạn, nên giá trị không được chia theo thời gian và không bị tiêu hao khi kích hoạt. Nó chỉ bật lên và giữ nguyên.
Không có gì bị tiêu hao khi giao, nên khoản hoàn tiền có thể đảo ngược gọn gàng
Đây chính là toàn bộ lý do khiến hoàn tiền non-consumable khác biệt. Khi bạn giao một gói xu, số xu bị tiêu và hóa đơn tính toán của bạn là có thật và đã mất. Khi bạn giao một non-consumable, bạn chỉ lật một cờ. Không có chi phí theo lượt dùng gắn với giao dịch bán, nên khi tiền được đảo ngược bạn có thể lật cờ trở lại và gần như nguyên vẹn. Cửa hàng còn giúp bạn: trên cả hai nền tảng, một non-consumable đã hoàn tiền sẽ bị revoke, khách hàng mất quyền truy cập, và họ không thể mua lại rồi hoàn tiền lần thứ hai.
Hoàn tiền non-consumable thật sự khiến bạn tốn bao nhiêu
Con số hiện ra trong báo cáo của bạn là giá bán đang quay ngược ra. Với một non-consumable, con số đó gần như là toàn bộ câu chuyện, và đó chính là điều khiến nó khác với consumable, nơi giá bán chỉ là khởi đầu của khoản lỗ.
| Chi phí | Khi nào bạn trả nó | Có quay lại khi hoàn tiền |
|---|---|---|
| Giá mua | Khi mua | Không, toàn bộ số tiền được đảo ngược về khách hàng |
| Hoa hồng của cửa hàng trên giao dịch bán | Khi mua | Thường là có, cửa hàng đảo ngược phần cắt của chính nó |
| Tính toán hoặc lệnh gọi API để giao bản mở khóa | Không có, bạn chỉ lật một cờ | Không có gì để thu hồi, không mất gì |
| Chính tính năng đó | Bạn đã cấp quyền truy cập | Có, revoke lấy nó lại |
| Phí chargeback ngân hàng, nếu tranh chấp đi đến ngân hàng | Sau khi tính phí | Không, và trên Google Play giờ bạn cũng phải trả nó |
Khoản lỗ là giá bán, và giá bán chính là vấn đề
Vì không có chi phí giao hàng bị mắc kẹt, hoàn tiền non-consumable chỉ khiến bạn mất giá bán và ít thứ khác. Rắc rối nằm ở quy mô. Hoàn tiền một gói đăng ký hàng tháng trả lại vài đô la. Một lifetime unlock thường được định giá 30, 60, hoặc 120 đô la chính vì khách hàng chỉ trả một lần, nên một lần hoàn tiền non-consumable có thể bằng cả một năm doanh thu đăng ký từ một người dùng khác. Bạn sẽ thấy chúng ít hơn nhiều so với hoàn tiền gói đăng ký, nhưng mỗi lần lại nặng nề hơn, và một cụm nhỏ các khoản hoàn tiền trọn đời có thể lấn át cả một tháng bận rộn với churn thông thường.

Phía App Store, nơi Apple không bao giờ hỏi bạn trước
Trên App Store bạn không có công tắc hoàn tiền, và với một non-consumable bạn cũng không có kênh gửi bằng chứng. Cả hai điều đó đều đáng nói cho chính xác, vì điều thứ hai làm ngạc nhiên những nhà phát triển từng nghĩ rằng luồng tiêu thụ bao trùm tất cả.
Không có CONSUMPTION_REQUEST cho một non-consumable
Apple tự quyết định mọi khoản hoàn tiền, mỗi lần một yêu cầu, qua reportaproblem.apple.com. Với một consumable, và từ 2024 với một gói đăng ký tự động gia hạn, Apple gửi đến máy chủ của bạn một CONSUMPTION_REQUEST và cho bạn 12 giờ để gửi lại thông tin tiêu thụ. Một non-consumable không được nhận gì trong đó. Không có yêu cầu tiêu thụ, không có cửa sổ 12 giờ, và không có trường nào để điền, vì Apple coi một bản mở khóa vĩnh viễn là owned hoặc not, không có gì để đo. Với một khoản hoàn tiền non-consumable bạn không có tiếng nói. Bạn nhận được một thông báo.
Thông báo REFUND là cách bạn biết nó đã xảy ra
Thứ bạn thật sự nhận được là một REFUND App Store Server Notification. Apple gửi nó cho consumable, non-consumable, và gói đăng ký không gia hạn, và transaction đã ký bên trong mang theo một revocationDate, tức dấu thời gian của khoản hoàn tiền, và một revocationReason. StoreKit đưa ra chính sự thật đó trên thiết bị: sản phẩm đã hoàn tiền rời khỏi Transaction.currentEntitlements, và StoreKit gọi trình xử lý thu hồi entitlement của bạn để ứng dụng có thể tắt tính năng. Hãy xem thông báo là yếu tố kích hoạt và việc kiểm tra entitlement là nguồn sự thật. Khi revocationDate được đặt, bản mở khóa đã kết thúc.
Phía Google Play, nơi bạn có thể hoàn tiền nhưng con đường nhanh lại bỏ qua bạn
Google Play trao cho nhà phát triển quyền kiểm soát trực tiếp hơn Apple, dù những khoản hoàn tiền gây đau nhất vẫn xảy ra mà không có bạn.
Bạn có thể tự hoàn tiền và revoke một non-consumable
Bạn có thể phát hành một khoản hoàn tiền non-consumable từ Play Console, hoặc với phương thức orders.refund trong Play Developer API, trên bất kỳ đơn hàng nào dưới ba năm tuổi. Lệnh gọi đó nhận một tham số revoke, và đặt nó thành true sẽ chấm dứt quyền truy cập vào món hàng trong ứng dụng ngay lập tức. Sau đó Google Play coi khách hàng như không còn sở hữu sản phẩm, gỡ cài đặt một ứng dụng đã hoàn tiền, và chặn vòng lặp mua lại rồi hoàn tiền trên cùng một món hàng. Đây là nơi duy nhất bạn có một đòn bẩy gọn gàng: hoàn tiền cộng revoke thật sự lấy lại một bản mở khóa vĩnh viễn.
Con đường 48 giờ và 3 ngày chạy mà không có bạn
Hai khoản hoàn tiền của Google Play trên một non-consumable xảy ra mà không có đầu vào từ bạn. Trong vòng 48 giờ sau khi mua, khách hàng có thể nhận một khoản hoàn tiền tự phục vụ ngay từ cửa hàng, và bạn không được hỏi. Riêng biệt, nếu máy chủ của bạn không bao giờ acknowledge giao dịch mua trong vòng 3 ngày, Google Play tự động hoàn tiền và revoke nó, dựa trên giả định rằng khách hàng đã trả tiền và không bao giờ nhận được hàng. Cả hai đều được quyết định trước khi bạn có ý kiến, và Voided Purchases API là cách bạn biết sau khi sự việc đã rồi để có thể bỏ entitlement.
Nó có nghĩa gì về tiền khi một non-consumable trở thành một chargeback
Hoàn tiền là phiên bản rẻ của việc mất một giao dịch bán non-consumable. Chargeback là phiên bản đắt, và trên một mức giá trọn đời thì khoảng cách rất rộng.
Con đường tranh chấp tốn nhiều hơn và trả lại ít hơn
Khi khách hàng tìm đến ngân hàng của họ thay vì cửa hàng, giao dịch bán quay lại dưới dạng một chargeback, và một chargeback là chung cuộc. Trên App Store bạn không có cửa sổ tiêu thụ để bảo vệ một non-consumable, nên không có gì để nộp. Trên Google Play, từ ngày 3 tháng 8 năm 2026, một chargeback chuyển giá mua trừ đi phí dịch vụ của Play, cộng phí chargeback của ngân hàng, sang nhà phát triển, trong khi Google vẫn tiếp tục gánh phí dịch vụ của chính nó. Trên một lifetime unlock giá 90 đô la, điều đó biến một khoản hoàn tiền gọn gàng mà lẽ ra bạn hấp thụ được thành một khoản lỗ lớn hơn, chung cuộc, kèm theo một khoản phí ngân hàng dập ghim vào.
Giữ khách hàng không hài lòng ở làn hoàn tiền
Bài học vẫn là điều mà mọi cửa hàng đều hướng bạn đến: một khoản hoàn tiền đảo ngược giao dịch bán và thường trả lại hoa hồng, một chargeback không làm cả hai và còn cộng thêm phí. Một khách hàng có thể nhận được khoản hoàn tiền dễ dàng thì hiếm khi gọi ngân hàng. Trên Google Play bạn có thể phản hồi một cuộc xem xét chargeback qua orders.reviewrefund trong vòng 24 giờ, và Google cung cấp một Review Refund API để chia sẻ chi tiết giao dịch nhằm có thể phản bác các tranh chấp gian lận thay cho bạn. Hãy dùng nó, nhưng đừng dựa vào nó. Nước đi rẻ hơn là làm cho khoản hoàn tiền trung thực trở nên dễ dàng trước khi tranh chấp bắt đầu.
Cách để mất ít hơn trên các khoản hoàn tiền non-consumable
Bạn không thể ngăn một cửa hàng hoàn tiền một bản mở khóa vĩnh viễn. Bạn có thể đảm bảo rằng khi điều đó xảy ra, bạn thật sự lấy lại tính năng và bạn có thể thấy được quy luật.
Xác minh entitlement trên máy chủ, mỗi lần khởi động
Hãy quyết định quyền truy cập từ một lần kiểm tra trên máy chủ đối chiếu với trạng thái giao dịch hiện tại, chứ không phải từ một hóa đơn được cache hay một cờ client được ghi một lần lúc mua. Khi một thông báo REFUND đến, hoặc entitlement biến mất, hoặc revoke được đặt trên Google Play, hãy tắt tính năng ở phía bạn. Một non-consumable đã hoàn tiền mà vẫn hoạt động là trường hợp duy nhất mà khoản hoàn tiền gọn gàng nhất trở thành một khoản lỗ ròng.
Theo dõi các sản phẩm trọn đời và mua một lần như một nhóm riêng
Vì các khoản hoàn tiền non-consumable hiếm nhưng lớn, chúng biến mất bên trong một tỷ lệ hoàn tiền pha trộn. Hãy theo dõi chúng riêng, theo sản phẩm. Một cụm trên một tầng trọn đời thường chỉ ra điều gì đó cụ thể: một mức giá vượt quá giá trị, một tính năng hỏng sau một bản cập nhật, hoặc một trang niêm yết trên cửa hàng hứa hẹn nhiều hơn những gì bản mở khóa mang lại. Hãy đọc các khoản hoàn tiền non-consumable đối chiếu với doanh số non-consumable và nguyên nhân thường dễ gọi tên.
Acknowledge nhanh, và xử lý gọn gàng các khoản hoàn tiền chính đáng
Hãy acknowledge mọi giao dịch mua đúng hạn để bạn không bao giờ vô tình kích hoạt một khoản tự động hoàn tiền sau 3 ngày, và khi một khoản hoàn tiền là thật, hãy lấy lại tính năng không chút cản trở thay vì để một khách hàng đã bực bội leo thang lên ngân hàng của họ. Hoàn tiền là khoản lỗ nhỏ hơn. Chargeback mới là khoản mang theo phí.
Bản tóm tắt ngắn
Hoàn tiền non-consumable là khoản hoàn tiền hiếm mà bạn thật sự có thể đảo ngược, vì một bản mở khóa vĩnh viễn không tốn gì để giao và có thể được lấy lại thẳng thừng. Bạn mất giá bán, cửa hàng đảo ngược phần cắt của nó, và không có hóa đơn tính toán bị mắc kẹt như trên một consumable. Điều phức tạp là một lifetime unlock thường là sản phẩm đắt nhất của bạn, nên mỗi khoản hoàn tiền là một cú đánh đơn lẻ lớn, Apple tự quyết định một mình mà không có yêu cầu tiêu thụ nào để trả lời, và Google Play sẽ hoàn tiền nó mà không có bạn trong vòng 48 giờ hoặc tại mốc acknowledgement 3 ngày. Hãy xác minh entitlement trên máy chủ của bạn, revoke gọn gàng, acknowledge nhanh, và giữ khách hàng không hài lòng ở làn hoàn tiền thay vì làn chargeback.
Câu hỏi thường gặp
- Tôi có thể tự hoàn tiền một giao dịch mua trong ứng dụng non-consumable không?
- Trên Google Play thì có. Bạn có thể hoàn tiền một non-consumable từ Play Console hoặc orders.refund API trên bất kỳ đơn hàng nào dưới ba năm tuổi, và đặt tham số revoke thành true sẽ chấm dứt quyền truy cập ngay lập tức. Trên App Store thì không. Apple quyết định mọi khoản hoàn tiền qua reportaproblem.apple.com, và với một non-consumable thì không có CONSUMPTION_REQUEST, nên bạn hoàn toàn không có cửa sổ gửi bằng chứng nào.
- Apple có gửi một CONSUMPTION_REQUEST cho một khoản hoàn tiền non-consumable không?
- Không. Apple chỉ gửi một CONSUMPTION_REQUEST cho consumable và, từ 2024, các gói đăng ký tự động gia hạn. Một non-consumable không nhận được yêu cầu tiêu thụ và không có cửa sổ 12 giờ, vì Apple coi một bản mở khóa vĩnh viễn đơn giản là owned hoặc not. Bạn biết về khoản hoàn tiền qua REFUND App Store Server Notification và revocationDate trên transaction, chứ không qua một yêu cầu để phản hồi.
- Làm sao tôi biết non-consumable của một khách hàng đã được hoàn tiền?
- Trên App Store, một thông báo REFUND được kích hoạt và transaction đã ký mang theo một revocationDate và revocationReason, trong khi StoreKit loại sản phẩm khỏi Transaction.currentEntitlements. Trên Google Play, Voided Purchases API báo cáo nó và các thông báo thời gian thực đánh dấu việc hủy. Trong cả hai trường hợp, hãy kiểm tra entitlement trên máy chủ của bạn và tắt tính năng khi giao dịch mua bị revoke.
- Tôi có lấy lại tiền một cách gọn gàng trên một khoản hoàn tiền non-consumable không?
- Gọn gàng hơn bất kỳ loại hoàn tiền nào khác. Giá mua được đảo ngược về khách hàng và cửa hàng thường trả lại hoa hồng của nó, nhưng vì một non-consumable không tốn gì để giao, không có hóa đơn tính toán hay API nào bị mắc kẹt ở phía bạn như với một consumable. Khoản lỗ của bạn về cơ bản là giá bán, miễn là bạn thật sự revoke tính năng.
- Điều gì xảy ra nếu tôi không acknowledge một giao dịch mua non-consumable trên Google Play?
- Google Play tự động hoàn tiền và revoke giao dịch mua nếu bạn không acknowledge nó trong vòng 3 ngày, dựa trên giả định rằng khách hàng đã trả tiền và không bao giờ nhận được món hàng. Hãy gọi purchases.products.acknowledge từ máy chủ của bạn ngay khi bạn xác minh giao dịch mua để không bao giờ kích hoạt một khoản hoàn tiền mà bạn không có ý định.
Nguồn và tài liệu đọc thêm
- Apple Developer: notificationType (App Store Server Notifications V2)
- Apple Developer: Handling refund notifications
- Apple: Request a refund at reportaproblem.apple.com
- Android Developers: One-time product lifecycle (acknowledge, 3-day auto-refund)
- Google Play Developer API: Method orders.refund (revoke parameter)
- Google Play Help: Apps, games, and in-app purchase refund policies
- Google Play Developer: Voided Purchases API
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility (August 3, 2026)
RefundHalt
Chế độ tự động xử lý hoàn tiền cho App Store và Google Play
Đọc tiếp
Các giao dịch mua trong ứng dụng trái phép do trẻ em thực hiện gần như luôn được hoàn tiền cho phụ huynh, và bạn là người gánh chi phí
Khi một đứa trẻ mua gói xu trên điện thoại của phụ huynh, cả Apple lẫn Google đều hoàn tiền và không bên nào hỏi bạn trước. Các cơ quan quản lý đã tạo ra nó theo cách đó. Đây là cách các khoản hoàn tiền cho giao dịch mua trong ứng dụng trái phép này hoạt động trên từng cửa hàng, khung 15 phút nơi tiền chuyển đi, và một khoản thực sự khiến bạn tốn bao nhiêu.
Bạn chưa bao giờ sở hữu khoản thuế hoàn tiền ứng dụng, nên một lần hoàn tiền chỉ lấy đi phần của bạn, không phải tổng số trên biên nhận
Hoàn tiền một giao dịch trong ứng dụng và biên nhận hiển thị giá cộng thuế được trả lại. Khoản thuế đó chưa bao giờ là tiền của bạn. Apple và Google thu và nộp nó với tư cách merchant of record, rồi đảo ngược nó khi hoàn tiền mà không chạm vào phần của bạn. Đây là chi phí thực sự của một lần hoàn tiền, và một trường hợp thiết lập duy nhất khiến khoản thuế trở thành của bạn.