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

Mọi khoản hoàn tiền khi nâng cấp gói đăng ký là quyết định của cửa hàng, không phải của bạn, và nó trừ thẳng vào doanh thu của bạn

Khi khách hàng chuyển lên bậc cao hơn, cửa hàng phát hành khoản hoàn tiền nâng cấp gói đăng ký cho những ngày chưa dùng trên gói cũ, và nó tự động làm giảm doanh thu của bạn. Đây là cách hoàn tiền nâng cấp hoạt động trên App Store và Google Play, và lý do Apple giữ số tiền này khỏi máy chủ của bạn.

Một cần gạt bằng đồng được đẩy lên mức cao hơn trong khi những đồng xu trượt khỏi mép bàn vào bóng tối, minh họa khoản hoàn tiền nâng cấp gói đăng ký rời khỏi doanh thu của bạn

Điểm chính

  • Khoản hoàn tiền nâng cấp gói đăng ký là tự động. Khi khách hàng chuyển lên bậc cao hơn giữa chu kỳ, cửa hàng ghi có hoặc hoàn tiền cho những ngày chưa dùng trên gói cũ mà không hỏi bạn, và số tiền đó trừ vào doanh thu bạn đã ghi nhận.
  • Trên App Store, một lần nâng cấp có hiệu lực ngay và Apple hoàn lại phần tiền tính theo tỷ lệ của gói đăng ký ban đầu. Một lần hạ cấp chờ đến ngày gia hạn tiếp theo và không hoàn lại gì cả.
  • Apple không gửi số tiền hoàn của lần nâng cấp đến máy chủ của bạn. Giao dịch nâng cấp được đánh dấu isUpgraded, nhưng trường giá vẫn hiển thị giá đầy đủ của bậc mới, nên doanh thu bạn tính từ App Store Server Notifications bị cao hơn thực tế.
  • Báo cáo tài chính App Store Connect là nơi duy nhất ghi nhận khoản hoàn tiền nâng cấp theo tỷ lệ. Nhân viên Apple cho biết số tiền này không có sẵn qua App Store Server API, Notifications hay StoreKit.
  • Google Play không trả tiền về thẻ khi nâng cấp. Nó ghi có thời gian chưa dùng hoặc thu phần chênh lệch giá, và điều nào xảy ra phụ thuộc vào chế độ thay thế bạn đặt. Mặc định là WITH_TIME_PRORATION.
  • Khoản hoàn tiền nâng cấp không phải là yêu cầu hoàn tiền của khách hàng. Không có CONSUMPTION_REQUEST và không có phiên xem xét bồi hoàn, nên không có cửa sổ 12 hours hay 24 hours và không có gì để tranh biện. Bạn đối soát nó, bạn không chống lại nó.
  • Chế độ thay thế là một quyết định về doanh thu. WITH_TIME_PRORATION trao cho khách hàng thời gian trả phí tăng thêm mà bạn cung cấp với chi phí của bậc cao hơn, còn CHARGE_PRORATED_PRICE tính phần chênh lệch ngay bây giờ, nên mặc định sai làm rò rỉ biên lợi nhuận từng chút một, mỗi lần một lượt nâng cấp.

Một khách hàng chạm nâng cấp, chuyển từ bậc five dollar của bạn sang bậc ten dollar của bạn, và bạn ghi nhận một khoản bán lớn hơn. Cùng lúc đó cửa hàng làm một việc khác, và bạn không bao giờ thấy nó. Nó trao cho khách hàng đó một khoản hoàn tiền nâng cấp gói đăng ký cho những ngày họ đã trả trên gói cũ, và số tiền đó trừ vào doanh thu của bạn. Không ai hỏi bạn. Trên App Store, bạn thậm chí sẽ không tìm thấy số tiền này trong các sự kiện mà máy chủ của bạn nhận được.

Đây không phải khoản hoàn tiền bạn có thể chống lại. Nó không phải Apple CONSUMPTION_REQUEST và không phải phiên xem xét bồi hoàn của Google Play. Nó là việc tính theo tỷ lệ, được cài sẵn trong cách cả hai cửa hàng cho người dùng đổi gói, và nó tự chạy mỗi khi người đăng ký chuyển lên một bậc. Đây là bản chất thật của một khoản hoàn tiền nâng cấp trên mỗi cửa hàng, lý do Apple giữ số tiền này khỏi máy chủ của bạn, và cái giá phải trả cho một thiết lập Google Play sai.

Khoản hoàn tiền nâng cấp gói đăng ký thực chất là gì

Một khoản hoàn tiền nâng cấp là việc cửa hàng quyết toán cho khoảng thời gian khách hàng đã trả nhưng sẽ không dùng. Nó chẳng liên quan gì đến khiếu nại, tranh chấp, hay chính sách hoàn tiền của bạn. Nó kích hoạt chỉ dựa trên cơ chế của việc đổi gói.

Đây là tính theo tỷ lệ, không phải khiếu nại của khách hàng

Khi một người đăng ký chuyển lên bậc cao hơn giữa kỳ thanh toán, họ đã trả đến hết kỳ đó theo giá cũ. Cửa hàng bù lại cho họ phần chưa dùng. Apple phát hành một khoản hoàn tiền theo tỷ lệ của gói đăng ký ban đầu. Google Play ghi có giá trị chưa dùng vào gói mới. Không cái nào đi qua một luồng mà bạn có thể phản hồi, và không cái nào chờ bạn phê duyệt.

Chỉ nâng cấp mới kích hoạt nó

Hướng của thay đổi quyết định số tiền. Trên App Store, một lần nâng cấp là chuyển sang sản phẩm được xếp hạng cao hơn trong cùng nhóm đăng ký, và chỉ lần chuyển đó mới tức thời và được hoàn tiền. Một lần hạ cấp là chuyển xuống hạng thấp hơn, và nó có hiệu lực ở lần gia hạn tiếp theo mà không hoàn tiền. Một lần chuyển ngang là chuyển giữa các sản phẩm cùng hạng, và thời điểm của nó phụ thuộc vào các thời hạn liên quan. Xếp hạng sản phẩm sai trong App Store Connect và một thay đổi bạn nghĩ là nâng cấp sẽ hành xử như một thứ khác.

Thay đổi trên App StoreKhi nào có hiệu lựcĐiều gì xảy ra với số tiền
Nâng cấp lên bậc cao hơnNgay lập tứcApple hoàn lại phần tiền theo tỷ lệ của gói đăng ký ban đầu
Hạ cấp xuống bậc thấp hơnVào ngày gia hạn tiếp theoKhông hoàn tiền, gia hạn với giá thấp hơn
Chuyển ngang, cùng thời hạn đã trả trướcNgay lập tứcGói đăng ký mới bắt đầu, dịch vụ trả phí tiếp tục
Chuyển ngang, thời hạn khác nhauVào ngày gia hạn tiếp theoKhông hoàn tiền giữa chu kỳ

Vì sao App Store giấu khoản hoàn tiền nâng cấp khỏi máy chủ của bạn

Đây là phần làm hỏng việc báo cáo doanh thu. Apple phát hành khoản hoàn tiền nâng cấp, nhưng không bao giờ báo cho máy chủ của bạn biết đã hoàn bao nhiêu.

isUpgraded là tín hiệu duy nhất, và giá thì sai

Giao dịch mới đến với isUpgraded được đặt thành true, cho bạn biết đã có một thay đổi gói. Trường giá trên giao dịch đó vẫn hiển thị giá niêm yết đầy đủ của bậc mới, không phải số tiền Apple đã đòi lại từ bậc cũ. Không một App Store Server Notification nào mang theo con số hoàn tiền. Theo chính lời Apple trên các diễn đàn nhà phát triển, số tiền hoàn theo tỷ lệ không có sẵn qua App Store Server API, Notifications hay StoreKit, và báo cáo App Store Connect là nguồn của bạn cho mọi mục đích kế toán tài chính.

Báo cáo tài chính là bản ghi trung thực duy nhất

Báo cáo tài chính và báo cáo bán hàng App Store Connect ghi nhận khoản hoàn tiền nâng cấp theo tỷ lệ, vì chính các báo cáo đó quyết định số tiền Apple thực sự trả cho bạn. Điều đó khiến chúng trở thành nguồn sự thật cho bất kỳ người đăng ký nào từng chuyển lên bậc cao hơn. Hãy dựng kế toán của bạn từ các báo cáo, và coi các sự kiện máy chủ là tín hiệu về quyền sử dụng, không phải doanh thu.

Hai thẻ bậc đăng ký trên bàn với một bàn tay đẩy con trỏ đánh dấu lên phía thẻ cao hơn trong khi những đồng xu được nhấc khỏi thẻ cũ, minh họa khoản hoàn tiền nâng cấp gói đăng ký rời khỏi doanh thu của bạn

Nó tốn của bạn bao nhiêu, tính bằng tiền

Khoản hoàn tiền nâng cấp không phải lỗi làm tròn. Đó là doanh thu thật, và trên Google Play bạn còn chọn cho đi bao nhiêu thời gian chưa dùng.

Khoản hoàn tiền là doanh thu bạn đã ghi nhận

Lấy một người đăng ký ở bậc 9.99 mỗi tháng của bạn, người nâng cấp lên 19.99 vào day 20 của một 30 day cycle. Khoảng một phần ba tháng chưa dùng, nên Apple hoàn lại khoảng 3.33 trong số 9.99 ban đầu. Bạn không mất toàn bộ khoản bán. Bạn trả lại phần khách hàng đã trả trước và sẽ không dùng. Điều quan trọng là việc trả lại này là tự động và nó rơi vào khoản bán cũ, nên doanh thu bạn đã tính bị co lại sau đó. Nhân điều đó với mỗi người đăng ký chuyển lên bậc cao hơn giữa chu kỳ và đó là một dòng bạn nên nhìn thấy được, không phải một khoảng chênh bạn phát hiện trong lần chi trả.

Trên Google Play, chế độ thay thế là đòn bẩy chi phí thật sự

Google Play không trả tiền về thẻ khi nâng cấp. Nó quyết toán thời gian chưa dùng theo một trong vài cách, và bạn chọn cách nào bằng cách truyền một chế độ thay thế khi khởi chạy luồng mua. Lựa chọn đó quyết định bạn trao cho khách hàng thời gian trả phí hay tính cho họ phần chênh lệch. Google khuyến nghị CHARGE_PRORATED_PRICE cho nâng cấp và DEFERRED cho hạ cấp, nhưng mặc định của thư viện là WITH_TIME_PRORATION, nên một luồng bạn chưa bao giờ cấu hình lại lặng lẽ ghi có thời gian.

Chế độ thay thế Google PlayKhi nào có hiệu lựcĐiều gì xảy ra với thời gian chưa dùng
WITH_TIME_PRORATION (mặc định)Ngay lập tứcĐược ghi có thành thời gian thêm trên gói mới, ngày thanh toán tiếp theo bị đẩy lùi
CHARGE_PRORATED_PRICE (chỉ nâng cấp)Ngay lập tứcPhần chênh lệch giá cho kỳ còn lại được thu ngay, ngày thanh toán không đổi
WITHOUT_PRORATIONNgay lập tứcKhông quyết toán gì lúc này, giá mới bắt đầu ở lần gia hạn tiếp theo
CHARGE_FULL_PRICENgay lập tứcGiá đầy đủ của gói mới được thu ngay, giá trị còn lại được chuyển tiếp hoặc tính theo tỷ lệ
DEFERREDVào lần gia hạn tiếp theoGói hiện tại chạy đến khi hết hạn, rồi gói mới bắt đầu

Cách để hoàn tiền nâng cấp không làm sổ sách của bạn bất ngờ

Bạn không thể tắt việc tính theo tỷ lệ, và bạn cũng sẽ không muốn thế, vì đó chính là điều khiến việc đổi gói công bằng với khách hàng. Điều bạn có thể làm là nhìn thấy nó, định giá nó, và giữ nó tách khỏi những khoản hoàn tiền mà bạn thực sự có thể tranh biện.

Đối soát các lần nâng cấp Apple với báo cáo tài chính

Vì số tiền hoàn không bao giờ đến được máy chủ của bạn, báo cáo tài chính và báo cáo bán hàng App Store Connect là nơi duy nhất một khoản hoàn tiền nâng cấp theo tỷ lệ xuất hiện. Đối soát doanh thu người đăng ký với các báo cáo đó mỗi kỳ, và đừng tính doanh thu từ một tổng cộng dồn của Server Notifications. Cờ isUpgraded cho bạn biết đã có thay đổi. Báo cáo cho bạn biết nó tốn bao nhiêu.

Chọn chế độ thay thế Google Play một cách có chủ đích

Hãy truyền một chế độ thay thế cho mỗi lần đổi gói một cách có chủ đích. Dùng CHARGE_PRORATED_PRICE khi bạn muốn thu phần chênh lệch giá ngay trong một lần nâng cấp. Chỉ để nguyên WITH_TIME_PRORATION khi bạn thực sự muốn cho khách hàng phần thời gian còn dư. Dùng DEFERRED cho hạ cấp để bạn giữ doanh thu hiện tại đến khi hết kỳ hạn. Mặc định là một quyết định, và mặc định sai cho đi biên lợi nhuận từng chút một, mỗi lần một lượt nâng cấp.

Giữ khoản hoàn tiền nâng cấp tách khỏi những khoản hoàn tiền bạn có thể tranh biện

Một khoản hoàn tiền nâng cấp là tự động và chung cuộc theo thiết kế. Nó không phải một khách hàng đòi lại tiền của mình. Những khoản hoàn tiền bạn thực sự có thể tác động là những khoản do khách hàng khởi tạo, khi Apple gửi một CONSUMPTION_REQUEST và cho bạn 12 hours để phản hồi, và khi Google Play mở một phiên xem xét bồi hoàn qua orders.reviewrefund với cửa sổ 24 hours. Hãy gắn nhãn dữ liệu của bạn sao cho hai loại này không bao giờ lẫn vào nhau. Một dòng bạn đối soát. Dòng kia bạn trả lời, khi đồng hồ đang chạy.

Tóm lại

Khi một khách hàng nâng cấp gói đăng ký, cửa hàng tự động quyết toán thời gian chưa dùng thay cho họ. Apple hoàn lại phần tiền theo tỷ lệ của gói cũ ngay lập tức và không bao giờ gửi con số đó đến máy chủ của bạn, nên báo cáo tài chính App Store Connect là bản ghi chính xác duy nhất. Google Play ghi có thời gian hoặc thu phần chênh lệch tùy theo chế độ thay thế bạn đặt, và mặc định trao cho khách hàng thời gian trả phí mà bạn cung cấp bằng chi phí của mình. Không cái nào trong số đó đi qua một CONSUMPTION_REQUEST hay một phiên xem xét bồi hoàn, nên không có gì để tranh biện. Hãy đối soát khoản hoàn tiền nâng cấp, đặt chế độ Google Play của bạn một cách có chủ đích, và giữ nó tách khỏi những khoản hoàn tiền bạn vẫn có thể chống lại.

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

Một khoản hoàn tiền nâng cấp gói đăng ký có hỏi sự phê duyệt của tôi không?
Không. Một khoản hoàn tiền nâng cấp gói đăng ký là tự động. Khi một khách hàng chuyển lên bậc cao hơn giữa chu kỳ, cửa hàng tự quyết toán thời gian chưa dùng trên gói cũ, không có yêu cầu gửi đến bạn và không có cửa sổ để phản hồi. Apple hoàn lại phần tiền theo tỷ lệ của gói đăng ký ban đầu, và Google Play ghi có thời gian chưa dùng hoặc thu phần chênh lệch giá tùy theo chế độ thay thế bạn đặt.
Vì sao doanh thu App Store của tôi không khớp với khoản chi trả sau các lần nâng cấp?
Vì Apple không gửi số tiền hoàn của lần nâng cấp đến máy chủ của bạn. Giao dịch nâng cấp mang isUpgraded được đặt thành true, nhưng trường giá vẫn hiển thị giá đầy đủ của bậc mới, và không một App Store Server Notification nào bao gồm khoản hoàn tiền. Doanh thu tính từ các sự kiện máy chủ đếm khoản bán mới và bỏ sót khoản hoàn tiền trên gói cũ, nên nó bị cao cho đến khi bạn đối soát với báo cáo tài chính App Store Connect.
Google Play có trả tiền về thẻ khi một khách hàng nâng cấp không?
Không. Google Play xử lý thời gian chưa dùng như một khoản ghi có, không phải hoàn tiền mặt. Tùy theo chế độ thay thế, nó hoặc ghi có thời gian còn lại vào gói mới và đẩy lùi ngày thanh toán tiếp theo, hoặc thu phần chênh lệch giá cho kỳ còn lại. Chế độ mặc định là WITH_TIME_PRORATION, vốn ghi có thời gian.
Tôi có thể tranh biện một khoản hoàn tiền nâng cấp gói đăng ký không?
Không. Một khoản hoàn tiền nâng cấp không phải là yêu cầu hoàn tiền của khách hàng. Không có CONSUMPTION_REQUEST từ Apple và không có phiên xem xét bồi hoàn từ Google Play, nên không có cửa sổ 12 hours hay 24 hours và không có gì để gửi. Một khoản hoàn tiền nâng cấp thì bạn đối soát. Bạn chỉ tranh biện những khoản hoàn tiền và bồi hoàn do khách hàng khởi tạo.
Một lần hạ cấp có cho khách hàng một khoản hoàn tiền không?
Không. Trên App Store, một lần hạ cấp có hiệu lực vào ngày gia hạn tiếp theo và không hoàn lại gì cả, vì khách hàng giữ mức cao hơn cho đến khi kỳ đã trả phí kết thúc. Trên Google Play, cách được khuyến nghị để xử lý một lần hạ cấp là chế độ thay thế DEFERRED, giữ gói hiện tại đến khi hết hạn rồi bắt đầu gói thấp hơn.
Tôi nên dùng chế độ thay thế Google Play nào cho một lần nâng cấp?
Google khuyến nghị CHARGE_PRORATED_PRICE cho nâng cấp, vốn thu phần chênh lệch giá cho kỳ còn lại ngay lập tức và giữ nguyên ngày thanh toán. WITH_TIME_PRORATION mặc định thì thay vào đó ghi có thời gian chưa dùng thành dịch vụ thêm ở bậc cao hơn, nên chỉ dùng nó khi bạn có ý định cho đi phần thời gian đó.

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.