Tất cả bài viết
Deep diveĐọc trong 8 phút

Khoản hoàn tiền ứng dụng trả phí không bao giờ đến được máy chủ của bạn, nên chính ứng dụng phải tự phát hiện

Hoàn tiền cho ứng dụng trả phí trả trước bỏ qua mọi thông báo mà máy chủ của bạn lắng nghe. Google cho người mua hai giờ để trả lại và gỡ cài đặt ứng dụng, Apple có thể hoàn tiền trong vòng 90 ngày theo thỏa thuận với bạn, và không bên nào yêu cầu bằng chứng. Dưới đây là những gì mỗi store cho bạn biết, chi phí thực tế, và cách kiểm tra ngay trong ứng dụng.

Một chiếc điện thoại thông minh trên bàn gỗ bên cạnh hóa đơn cửa hàng bị xé và vài đồng xu, minh họa việc hoàn tiền ứng dụng trả phí

Điểm chính

  • Hoàn tiền ứng dụng trả phí áp dụng cho giá tải chính ứng dụng, không phải giao dịch mua trong ứng dụng, và cả Apple lẫn Google đều không ghi nhận thông báo máy chủ nào cho loại hoàn tiền này.
  • Trang trợ giúp Play Console của Google cho biết người mua có tối đa hai giờ sau khi mua ứng dụng trả phí để trả lại và được hoàn tiền đầy đủ, và mỗi ứng dụng chỉ được trả lại một lần.
  • Chính sách hoàn tiền của Google Play nêu rằng ứng dụng bị gỡ cài đặt như một phần của việc hoàn tiền, và người mua lại cùng ứng dụng đó không thể được hoàn tiền lần thứ hai.
  • Loại REFUND trong App Store Server Notifications V2 của Apple bao gồm consumable, non-consumable, gói đăng ký tự động gia hạn và gói đăng ký không gia hạn. Giao dịch mua ứng dụng không nằm trong danh sách đó.
  • Developer Program License Agreement của Apple, Schedule 2 mục 6.3, cho phép Apple hoàn tiền cho người mua hủy trong vòng 90 ngày kể từ khi tải xuống, và nhà phát triển phải bồi hoàn khoản đó cho Apple.
  • Tài liệu StoreKit của Apple liệt kê revocationDate trên AppTransaction, bản ghi có chữ ký của giao dịch mua ứng dụng, mà ứng dụng có thể kiểm tra ngay trên thiết bị.
  • Cả CONSUMPTION_REQUEST lẫn orders.reviewrefund của Google Play đều không được ghi nhận cho giao dịch tải ứng dụng, nên hoàn tiền ứng dụng trả phí được quyết định mà không có bằng chứng từ nhà phát triển.

Ứng dụng trả phí trả trước được hoàn tiền qua một cửa hông mà hầu hết công cụ xử lý hoàn tiền không bao giờ theo dõi. Khi người mua trả lại chính ứng dụng, không phải thứ mua bên trong nó, Apple và Google lấy lại tiền từ khoản thanh toán của bạn mà không gửi một thông báo nào đến máy chủ của bạn. Ít nhất Google còn gỡ cài đặt ứng dụng. Trên iOS, các nhà phát triển trên diễn đàn chính thức của Apple cho biết người mua đã được hoàn tiền vẫn tiếp tục sử dụng nó. Nếu bạn bán ứng dụng trả phí, hoàn tiền ứng dụng trả phí là loại hoàn tiền duy nhất bạn chỉ thấy dưới dạng một dòng số âm trong báo cáo, trừ khi ứng dụng tự kiểm tra trên thiết bị.

Quy định hoàn tiền ứng dụng trả phí trên Google Play và App Store

Cả hai store đều coi giao dịch tải xuống là một sản phẩm riêng với quy định riêng. Đây là những gì tài liệu của từng store nêu.

Quy địnhGoogle PlayApp Store
Tự trả lại nhanhTối đa hai giờ sau khi mua, hoàn tiền đầy đủKhông có tài liệu
Thời hạn yêu cầu dài hơnNgười mua có thể yêu cầu trong 48 giờ, sau đó liên hệ nhà phát triểnApple có thể hoàn tiền trong vòng 90 ngày kể từ khi tải xuống, theo Schedule 2 của thỏa thuận nhà phát triển
Số lầnMột lần mỗi ứng dụng. Lần mua lại không được hoàn tiền nữaKhông có tài liệu
Điều gì xảy ra với ứng dụngBị gỡ cài đặt như một phần của việc hoàn tiềnKhông có tài liệu. Nhà phát triển cho biết người mua đã được hoàn tiền vẫn giữ quyền truy cập
Nhà phát triển có thể hoàn tiềnCó, chỉ hoàn tiền đầy đủ, từ Play ConsoleKhông
Thông báo máy chủ gửi cho bạnKhông có tài liệuKhông có tài liệu
Yêu cầu bằng chứng gửi cho bạnKhông có tài liệuKhông có tài liệu

Cơ chế trả lại trong hai giờ của Google Play

Trang trợ giúp Play Console của Google nói rất rõ: sau khi mua ứng dụng trả phí, người dùng có tối đa hai giờ để trả lại và được hoàn tiền đầy đủ, và họ chỉ có thể trả lại một ứng dụng một lần. Chính sách hoàn tiền cho người tiêu dùng của Google bổ sung rằng trong vòng 48 giờ, người mua có thể được hoàn tiền tùy theo giao dịch, rằng ứng dụng bị gỡ cài đặt như một phần của việc hoàn tiền, và rằng người mua lại cùng ứng dụng đó không thể được hoàn tiền cho nó. Sau 48 giờ, Google chuyển người mua sang nhà phát triển.

Cách Apple hoàn tiền cho ứng dụng trả phí

Trên App Store, người mua gửi yêu cầu đến Apple qua reportaproblem.apple.com, chọn lý do và chọn ứng dụng. Apple cho biết người mua sẽ nhận cập nhật trong vòng 24 đến 48 giờ. Bạn không thể tự hoàn tiền một giao dịch mua trên App Store. Hợp đồng của bạn đặt ra giới hạn ngoài cùng. Mục 6.3 của Schedule 2 trong Apple Developer Program License Agreement quy định rằng nếu người mua muốn hủy trong vòng chín mươi ngày kể từ khi tải xuống, hoặc ứng dụng không phù hợp với thông số của bạn hay luật hiện hành, Apple có thể hoàn lại toàn bộ giá, và bạn bồi hoàn cho Apple hoặc cấp cho Apple một khoản tín dụng tương ứng.

Vì sao máy chủ của bạn không bao giờ biết về một khoản hoàn tiền ứng dụng trả phí

Mọi tín hiệu hoàn tiền mà hai store gửi đi đều được thiết kế cho giao dịch mua trong ứng dụng. Apple mô tả notificationType là sự kiện In-App Purchase hoặc giao dịch mua bên ngoài đã kích hoạt thông báo. Loại REFUND của họ bao gồm consumable, non-consumable, gói đăng ký tự động gia hạn hoặc gói đăng ký không gia hạn. Get Refund History trả về các giao dịch mua trong ứng dụng đã được hoàn tiền của khách hàng. Lượt tải ứng dụng không có trong bất kỳ danh sách nào.

Google cũng vậy. Real-time developer notifications bao gồm gói đăng ký, sản phẩm mua một lần và giao dịch bị hủy, và productType của giao dịch bị hủy chỉ là gói đăng ký hoặc giao dịch mua một lần. Voided Purchases API nêu rằng nó áp dụng cho đơn hàng mua một lần trong ứng dụng và gói đăng ký, và chỉ truy ngược được 30 ngày.

Hoàn tiền ứng dụng trả phí có kích hoạt CONSUMPTION_REQUEST không?

Không. Tài liệu của Apple nêu rằng CONSUMPTION_REQUEST được gửi khi khách hàng yêu cầu hoàn tiền cho In-App Purchase dạng consumable hoặc gói đăng ký tự động gia hạn. Đó là một trong hai luồng hoàn tiền duy nhất ở cả hai store có yêu cầu bằng chứng từ nhà phát triển. Luồng còn lại là quy trình xem xét chargeback của Google Play, được phản hồi qua orders.reviewrefund trong vòng 24 giờ, và đến qua cùng luồng thông báo dành cho giao dịch trong ứng dụng. Không luồng nào được ghi nhận cho lượt tải ứng dụng. Hoàn tiền ứng dụng trả phí được quyết định mà không có bất cứ thứ gì bạn có thể gửi.

Người mua đã được hoàn tiền có tiếp tục dùng ứng dụng không?

Trên Google Play, chính sách nêu rằng ứng dụng bị gỡ cài đặt. Trên iOS, diễn đàn của Apple có nhiều chủ đề từ nhà phát triển hỏi đúng câu này. Một chủ đề từ tháng 3 năm 2025 viết: "Khi người dùng hoàn tiền một ứng dụng trả phí trả trước, họ vẫn có quyền truy cập ứng dụng." Một chủ đề khác, từ năm 2022, nghi ngờ người mua mua, cài đặt, hoàn tiền rồi tiếp tục dùng. Chủ đề thứ ba, từ tháng 6 năm 2025, hỏi liệu App Store Server Notifications V2 có báo cáo hoàn tiền ở cấp ứng dụng hay không. Cả ba đều chưa có câu trả lời từ Apple.

Hoàn tiền ứng dụng trả phí khiến bạn tốn bao nhiêu tiền

Phía khoản thanh toán thì dễ đoán. Trang trợ giúp Play Console của Google cho biết Google hoàn lại phí dịch vụ khi bạn hoàn tiền, nên khoản bị trừ khỏi thanh toán của bạn là phần của bạn, không phải giá niêm yết. Khoản hoàn tiền phát sinh sau khi Google đã thanh toán cho bạn sẽ bị trừ vào lần thanh toán sau, và nếu số dư của bạn âm trong ít nhất 48 giờ, Google có thể ghi nợ tài khoản ngân hàng của bạn. Về phía Apple, hợp đồng quy định bạn bồi hoàn một khoản bằng với giá bán. Trên thực tế, RevenueCat báo cáo năm 2022 rằng Apple trừ con số sau hoa hồng hiển thị là Extended Partner Share, nghĩa là Apple không giữ lại phần của mình.

Những chi phí không quay lại là những khoản bạn đã bỏ ra để phục vụ người mua đó. Đây là một ví dụ minh họa. Một ứng dụng ảnh trả phí giá $6.99 chạy bộ lọc qua một mô hình trên đám mây và đồng bộ dự án lên kho lưu trữ đám mây. Bạn đã trả tiền cho quảng cáo đưa người mua đến.

Khoản chi phíĐược hoàn lại trên Google PlayĐược hoàn lại trên App Store
Phần của bạn trong $6.99Bị lấy lại từ khoản thanh toán của bạnBị lấy lại từ khoản thanh toán của bạn
Phí dịch vụ hoặc hoa hồng của storeGoogle hoàn lại cho bạnKhông bị tính, theo báo cáo của RevenueCat
Suy luận trên đám mây và lệnh gọi API đã dùngKhôngKhông
Lưu trữ cho các dự án đã đồng bộKhôngKhông
Chi phí quảng cáo để có người muaKhôngKhông
Chi phí máy chủ liên tục nếu người mua vẫn dùng ứng dụngChấm dứt, ứng dụng bị gỡ cài đặtTiếp diễn cho đến khi ứng dụng của bạn kiểm tra

Dòng cuối cùng chính là nơi iOS trở nên tốn kém. Người mua đã được hoàn tiền mà vẫn giữ ứng dụng sẽ tiếp tục gọi backend của bạn, và mọi yêu cầu suy luận, đồng bộ và lệnh gọi API sau khi hoàn tiền đều là chi phí không có doanh thu đi kèm. Với ứng dụng trả phí không có chi phí máy chủ, hoàn tiền là mất một lượt bán. Với ứng dụng có backend, nó có thể biến thành một hóa đơn kéo dài.

Cách phát hiện hoàn tiền ứng dụng trả phí ngay trong ứng dụng

Vì máy chủ không nhận được gì, việc kiểm tra phải bắt đầu trên thiết bị rồi báo cho máy chủ của bạn.

Trên iOS, đọc revocationDate trên AppTransaction

AppTransaction là bản ghi có chữ ký của App Store về giao dịch mua ứng dụng của khách hàng. Tài liệu StoreKit của Apple hiện liệt kê thuộc tính revocationDate trên đó, được mô tả là ngày thu hồi giao dịch mua ứng dụng. Đọc AppTransaction.shared khi khởi chạy, xác minh kết quả, và coi revocationDate khác nil là một lượt tải đã được hoàn tiền. Gửi giá trị có chữ ký đó đến máy chủ để máy chủ ngừng phục vụ tài khoản đó.

  • Theo Apple, appTransactionID giữ nguyên cho một Apple Account ngay cả sau khi hoàn tiền hoặc mua lại, vì vậy hãy dùng nó làm khóa cho bản ghi của bạn và người mua trả tiền lại sẽ được nhận diện.
  • AppTransaction.refresh() lấy bản ghi mới từ App Store, nhưng sẽ hiện lời nhắc đăng nhập. Apple khuyên chỉ gọi nó sau một thao tác rõ ràng của người dùng, chẳng hạn chạm vào nút Restore.
  • Giá trị có chữ ký nằm trên thiết bị. Tài liệu của Apple không mô tả thông báo máy chủ nào cho nó, nên máy chủ của bạn chỉ biết những gì ứng dụng báo lên.
Một nhà phát triển cầm điện thoại có biểu tượng ổ khóa trên màn hình trước một chiếc laptop, kiểm tra quyền truy cập sau khi hoàn tiền ứng dụng trả phí

Trên Android, hỏi Play Integrity về kết quả cấp phép

Việc Google gỡ cài đặt xử lý được hầu hết trường hợp, nhưng một bản sao có thể tồn tại lâu hơn, chẳng hạn bản được cài từ bản sao lưu. Play Integrity API trả về appLicensingVerdict cho tài khoản đang đăng nhập. LICENSED nghĩa là người dùng có quyền sử dụng ứng dụng. UNLICENSED nghĩa là không có, và Google gợi ý hiển thị hộp thoại GET_LICENSED. UNEVALUATED nghĩa là Google không thể kiểm tra, ví dụ vì người dùng chưa đăng nhập Google Play. Google cũng lưu ý rằng trên một số thiết bị cũ, người dùng vẫn giữ quyền sử dụng sau khi gỡ cài đặt, nên LICENSED không phải bằng chứng về một giao dịch mua còn hiệu lực trên mọi thiết bị.

Để máy chủ làm người gác cổng

Các bước kiểm tra phía client có thể bị vá bỏ. Phần đáng bảo vệ là công việc tốn tiền mà backend của bạn thực hiện, vì vậy hãy để backend từ chối lệnh gọi từ tài khoản có báo cáo gần nhất là hoàn tiền, kết quả UNLICENSED, hoặc không có kết quả nào sau thời gian ân hạn do bạn chọn. Đó là cách giữ cho một khoản hoàn tiền không biến thành tài nguyên tính toán miễn phí.

Khi nào ứng dụng trả phí nên chuyển sang mua trong ứng dụng

Chính hướng dẫn của Apple về thay đổi mô hình kinh doanh mô tả việc chuyển từ ứng dụng trả phí sang ứng dụng miễn phí có In-App Purchases, và dùng originalAppVersion trên AppTransaction để tiếp tục cung cấp tính năng cao cấp cho những người đã mua phiên bản trả phí. Lợi ích về hoàn tiền của bước chuyển này rất cụ thể. Khi giá được đặt vào một non-consumable hoặc một gói đăng ký, các khoản hoàn tiền đến dưới dạng thông báo REFUND và giao dịch bị hủy mà máy chủ của bạn có thể xử lý, và yêu cầu hoàn tiền gói đăng ký trên App Store sẽ kích hoạt CONSUMPTION_REQUEST. Đó là những tín hiệu mà RefundHalt lắng nghe và phản hồi trong khung thời gian 12 giờ và 24 giờ. Một lượt tải trả phí không cho bạn tín hiệu nào trong số đó.

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

Người mua có bao lâu để trả lại ứng dụng trả phí trên Google Play?
Tối đa hai giờ sau khi mua để được hoàn tiền đầy đủ, theo trang trợ giúp Play Console của Google, và chỉ một lần mỗi ứng dụng. Chính sách hoàn tiền của Google cũng nêu rằng người mua có thể được hoàn tiền trong vòng 48 giờ, sau đó Google chuyển họ sang nhà phát triển. Ứng dụng bị gỡ cài đặt như một phần của việc hoàn tiền.
Apple có thông báo cho máy chủ của tôi khi có người hoàn tiền ứng dụng trả phí của tôi không?
Không có thông báo nào được ghi nhận. App Store Server Notifications của Apple bao gồm các sự kiện In-App Purchase, và loại REFUND chỉ liệt kê consumable, non-consumable, gói đăng ký tự động gia hạn và gói đăng ký không gia hạn. Ứng dụng có thể đọc revocationDate trên AppTransaction ngay trên thiết bị và báo về máy chủ của bạn.
Người mua đã được hoàn tiền có giữ quyền truy cập ứng dụng iOS trả phí không?
Các nhà phát triển trên diễn đàn của Apple cho biết là có, và tài liệu của Apple không mô tả bước nào gỡ ứng dụng sau khi hoàn tiền. Hãy kiểm tra revocationDate trên AppTransaction khi khởi chạy và để máy chủ ngừng phục vụ các tài khoản báo cáo lượt tải đã được hoàn tiền.
Tôi có thể tự hoàn tiền ứng dụng trả phí không?
Trên Google Play, có. Play Console cho phép bạn hoàn tiền đầy đủ cho ứng dụng trả phí, không bao giờ hoàn một phần, và Google hoàn lại phí dịch vụ. Trên App Store, không. Chỉ Apple mới có thể hoàn tiền giao dịch mua trên App Store.
Tôi có thể khiếu nại hoàn tiền ứng dụng trả phí bằng bằng chứng sử dụng không?
Không. CONSUMPTION_REQUEST của Apple được ghi nhận cho consumable và gói đăng ký tự động gia hạn, còn quy trình xem xét chargeback của Google Play qua orders.reviewrefund đến qua các thông báo dành cho sản phẩm trong ứng dụng và gói đăng ký. Không store nào ghi nhận luồng bằng chứng cho chính giao dịch mua ứng dụng.

Nguồn và tài liệu đọc thêm

RefundHalt

Chế độ tự động xử lý hoàn tiền cho App Store và Google Play

Đọc tiếp

Yêu cầu hoàn tiền tiếp theo đã đang trên đường đến.

Thiết lập RefundHalt trong khoảng thời gian bạn cần để đọc thêm một email hỗ trợ về khoản hoàn tiền mà mình chưa kịp phản biện.