Apple giờ bán gói đăng ký của bạn cho cả doanh nghiệp theo từng suất, và hoàn tiền gói đăng ký multiseat diễn ra theo cách khác
Apple đã bật gói đăng ký multiseat cho doanh nghiệp và trường học vào ngày 22 tháng 10 năm 2026, bật sẵn theo mặc định. Một giao dịch mua giờ bao phủ nhiều người, việc thu hồi suất đến dưới dạng thông báo REVOKE, và endpoint gửi bằng chứng hoàn tiền từ chối các suất được chỉ định. Đây là những gì thay đổi và chi phí của nó.

Điểm chính
- Từ ngày 22 tháng 10 năm 2026, các tổ chức dùng Apple Business hoặc Apple School Manager có thể mua số lượng lớn gói đăng ký tự động gia hạn của một ứng dụng qua một In-App Purchase duy nhất của Apple, chỉ định các suất bằng công cụ quản lý thiết bị của họ, và thêm hoặc bớt suất bất cứ lúc nào.
- Apple bật sẵn tính năng mua multiseat theo mặc định trong App Store Connect. Các gói đăng ký tạo trước ngày 14 tháng 9 năm 2026 không dùng StoreKit 2 hoặc đã bật Family Sharing sẽ bắt đầu ở trạng thái không tham gia, còn gói đăng ký trong ứng dụng tùy chỉnh thì hoàn toàn không thể từ chối tham gia.
- Với giao dịch mua multiseat, trường quantity trong payload giao dịch của Apple cho biết số suất, và mỗi người nhận suất sẽ có một giao dịch với inAppOwnershipType là ASSIGNED.
- Khi một tổ chức gỡ gói đăng ký đã chỉ định cho ai đó, Apple gửi thông báo REVOKE và giao dịch mang revocationType là ASSIGNMENT_REVOKE, giá trị này có mặt trên môi trường production từ ngày 23 tháng 10 năm 2026.
- Endpoint Send Consumption Information của Apple, tức phản hồi cho một CONSUMPTION_REQUEST, trả về InvalidAssignedTransactionNotSupportedError khi được gọi với một giao dịch được chỉ định, nên bằng chứng hoàn tiền chỉ có thể gửi cho giao dịch của người mua.
- Trường revocationType của Apple phân biệt REFUND_FULL với REFUND_PRORATED, và revocationPercentage cho biết phần được hoàn theo đơn vị phần nghìn, nên 40000 nghĩa là 40 phần trăm.
- Group Purchases, cho phép một khách hàng App Store mua nhiều suất và mời người khác, có thể thử nghiệm trong sandbox từ tháng 11 năm 2026 và lên App Store vào mùa đông này.
Apple bắt đầu bán gói đăng ký ứng dụng cho các tổ chức theo từng suất vào ngày 22 tháng 10 năm 2026, và bật tùy chọn này cho phần lớn nhà phát triển mà không hỏi trước. Doanh nghiệp và trường học dùng Apple Business hoặc Apple School Manager giờ có thể mua số lượng lớn gói đăng ký tự động gia hạn của bạn qua một In-App Purchase duy nhất. Điều đó thay đổi cách một khoản hoàn tiền gói đăng ký multiseat hiện ra trên máy chủ của bạn. Một giao dịch giờ có thể trả tiền cho hàng chục người, một suất có thể biến mất mà không hề có hoàn tiền, và endpoint bạn dùng để bảo vệ một vụ hoàn tiền lại từ chối nói về chính những người đang dùng ứng dụng.
Apple đã bật gì, và công bố ở đâu
Việc ra mắt đến qua một bài đăng ngắn trên Apple Developer news với tiêu đề "Offer your subscriptions to businesses and schools." Bài viết nói các tổ chức có thể mua số suất cần thiết qua một In-App Purchase, sau đó chỉ định và quản lý các suất đó bằng công cụ quản lý thiết bị sẵn có, và thêm hoặc bớt suất bất cứ lúc nào. Cũng bài viết đó cho biết tính năng mua multiseat được bật mặc định trong App Store Connect, trừ khi bạn đã thay đổi cài đặt từ trước.
Phần hạ tầng đã đến trong tháng trước đó qua các changelog, không phải trên sân khấu. App Store Server API 1.22, ngày 28 tháng 9, thêm các trường về suất và các endpoint nhóm, chỉ trong sandbox. Ngày 23 tháng 10, một bản cập nhật máy chủ dài đúng một dòng đã đưa các endpoint nhóm và giá trị ASSIGNMENT_REVOKE lên production. Nếu trình xử lý thông báo của bạn chưa thay đổi từ mùa hè, giờ nó đang nhận dữ liệu mà nó chưa bao giờ được viết để đọc.
| Ngày | Điều gì thay đổi | Apple công bố ở đâu |
|---|---|---|
| Tháng 6 năm 2026 | Gói đăng ký multiseat được công bố tại WWDC26 | Phiên 391, Offer subscriptions to groups and organizations |
| 16 tháng 9 năm 2026 | Mua multiseat được bật mặc định trong App Store Connect | Apple Developer news |
| 28 tháng 9 năm 2026 | quantity báo số suất, thêm ASSIGNED và ASSIGNMENT_REVOKE, chỉ trong sandbox | Changelog App Store Server API, phiên bản 1.22 |
| 22 tháng 10 năm 2026 | Volume Purchasing (mua số lượng lớn) hoạt động cho Apple Business và Apple School Manager | Apple Developer news |
| 23 tháng 10 năm 2026 | ASSIGNMENT_REVOKE và các endpoint nhóm hoạt động trên production | Changelog Server API và Server Notifications |
| Tháng 11 năm 2026 | Group Purchases (mua theo nhóm) có thể thử nghiệm trong sandbox | Apple Developer news |
| Mùa đông này | Group Purchases lên App Store | Apple Developer news |
Ai được tham gia theo mặc định
Gần như tất cả. Trang trợ giúp App Store Connect của Apple cho biết các gói đăng ký tạo trước ngày 14 tháng 9 năm 2026 chỉ bắt đầu ở trạng thái không tham gia nếu không dùng StoreKit 2 hoặc đã bật Family Sharing. Gói đăng ký trong ứng dụng tùy chỉnh tự động được đưa lên Apple Business và Apple School Manager, và bạn không thể rút chúng ra. Muốn đổi cài đặt cần vai trò Account Holder, Admin hoặc App Manager, còn gỡ Apple Business hoặc Apple School Manager khỏi một gói đăng ký đã được duyệt thì cần Account Holder.
Giao dịch mua multiseat hiện ra trên máy chủ của bạn thế nào
Giờ có hai loại giao dịch cho cùng một gói đăng ký. Giao dịch mua của tổ chức là một giao dịch, và trường quantity của nó cho biết đã mua bao nhiêu suất. Mỗi người nhận suất có giao dịch riêng, điều mà phiên WWDC của Apple mô tả là App Store chỉ định một giao dịch cho từng thành viên. Các giao dịch thành viên này mang inAppOwnershipType là ASSIGNED, bên cạnh các giá trị PURCHASED và FAMILY_SHARED mà có thể bạn đã xử lý.
Apple rất rõ ràng về việc bản ghi nào quyết định quyền truy cập. Tài liệu Get Customer Groups nói tư cách thành viên nhóm tách biệt với quyền sử dụng, và để mở khóa nội dung, bạn nên đọc các giao dịch của khách hàng thay vì dựa vào tư cách thành viên nhóm. Hãy cấp quyền dựa trên giao dịch. Chỉ dùng các endpoint nhóm cho những tính năng như giao diện quản trị.
| Trường hoặc giá trị | Ý nghĩa | Thêm vào |
|---|---|---|
| quantity | Số suất trong một giao dịch mua multiseat | 28 tháng 9 năm 2026 |
| inAppOwnershipType = ASSIGNED | Người này có quyền truy cập thông qua tổ chức hoặc nhóm | 28 tháng 9 năm 2026 |
| revocationType = ASSIGNMENT_REVOKE | Người mua đã gỡ gói đăng ký khỏi người này | 28 tháng 9 năm 2026, production ngày 23 tháng 10 |
| revocationType = REFUND_FULL hoặc REFUND_PRORATED | Giao dịch được hoàn tiền toàn bộ hoặc một phần | 10 tháng 12 năm 2025 |
| revocationPercentage | Phần được hoàn, theo đơn vị phần nghìn (40000 = 40%) | 10 tháng 12 năm 2025 |
Một suất bị gỡ không phải là hoàn tiền
Đây là chỗ phần lớn trình xử lý sẽ làm sai. Khi một tổ chức lấy lại suất từ một nhân viên, Apple gửi thông báo REVOKE, cùng loại mà Apple dùng khi người mua Family Sharing ngừng chia sẻ. revocationType của giao dịch là ASSIGNMENT_REVOKE, và chỉ dẫn của Apple rất thẳng: thu hồi quyền truy cập của khách hàng vào nội dung mà giao dịch cung cấp.
Không có gì trong sự kiện đó cho thấy tiền đã dịch chuyển. Nếu code của bạn coi mọi lần thu hồi là hoàn tiền, tỷ lệ hoàn tiền, doanh thu ròng và mọi cảnh báo bạn xây dựng dựa trên chúng sẽ tính việc thay đổi nhân sự thông thường thành doanh số bị mất. Hãy rẽ nhánh theo revocationType trước tiên.
- ASSIGNMENT_REVOKE: chấm dứt quyền truy cập của người này. Không ghi nhận hoàn tiền.
- FAMILY_REVOKE: chấm dứt quyền truy cập của thành viên gia đình. Không ghi nhận hoàn tiền.
- REFUND_FULL: chấm dứt quyền truy cập và ghi nhận toàn bộ giao dịch là đã hoàn tiền.
- REFUND_PRORATED: ghi nhận phần theo revocationPercentage, rồi quyết định quyền truy cập nào còn lại.

Vì sao bạn không thể bảo vệ một khoản hoàn tiền trên suất được chỉ định
Apple vẫn quyết định mọi khoản hoàn tiền trên App Store. Khi khách hàng yêu cầu, Apple gửi CONSUMPTION_REQUEST và cho bạn 12 giờ để trả lời qua Send Consumption Information. Với multiseat, người dùng ứng dụng và người trả tiền là hai người khác nhau, và API của Apple giờ vạch một ranh giới cứng giữa họ.
Send Consumption Information từ chối giao dịch được chỉ định
Gọi Send Consumption Information, phiên bản V1 của nó, hoặc Set App Account Token với một giao dịch được chỉ định, Apple sẽ trả về InvalidAssignedTransactionNotSupportedError. Lời khuyên của Apple là kiểm tra inAppOwnershipType có phải ASSIGNED trước khi gọi. Trên thực tế, bằng chứng của bạn chỉ có thể gắn vào giao dịch của người mua, hoặc không gắn vào đâu cả. Dữ liệu sử dụng mà ứng dụng ghi nhận cho tài khoản thành viên vẫn đáng lưu giữ, vì đó là cách duy nhất để biết các suất có được dùng hay không.
Hoàn tiền theo tỷ lệ trông như thế nào
Apple thêm REFUND_PRORATED và revocationPercentage vào tháng 12 năm 2025. Yêu cầu tiêu thụ cho phép bạn đề xuất kết quả đó bằng refundPreference là GRANT_PRORATED. Với gói đăng ký tự động gia hạn, Apple dặn không gửi consumptionPercentage kèm GRANT_PRORATED, vì Apple tự tính tỷ lệ phần trăm. Nếu khoản hoàn tiền sau đó bị đảo ngược, revocationPercentage sẽ biến mất khỏi giao dịch.
Tôi có thể gia hạn gói đăng ký cho một nhân viên như một cử chỉ thiện chí không?
Không. Extend a Subscription Renewal Date trả về AssignedSubscriptionExtensionIneligibleError cho gói đăng ký được chỉ định. Lý do của Apple là gói đăng ký được chỉ định gia hạn theo cùng lịch với gói mà người mua đã mua, nên không thể dời riêng một thành viên.
Hoàn tiền gói đăng ký multiseat khiến bạn tốn bao nhiêu
Quy mô là rủi ro mới. Phiên WWDC của Apple trình bày cách định giá theo số lượng với tối đa năm bậc giá. Ví dụ của Apple bán mỗi suất $19.99 một tháng cho tới 20 suất, $13.99 cho suất thứ 21 đến thứ 40, và $10.99 từ suất thứ 41. Với những con số đó, một đơn 50 suất bị tính $789.50 mỗi tháng, khoảng $15.79 một suất. Một REFUND_FULL trên giao dịch đó trả lại toàn bộ $789.50, chứ không phải giá của một gói đăng ký.
Chi phí vận hành cũng tăng theo cùng cách. Năm mươi suất nghĩa là năm mươi người chạy phiên làm việc trên máy chủ của bạn, thực hiện các lệnh gọi API bên thứ ba mà tính năng của bạn phải trả tiền, và lấp đầy dung lượng lưu trữ bạn bị tính phí. Nếu những người giữ suất của một đơn đã hoàn tiền vẫn giữ quyền truy cập vì trình xử lý của bạn chỉ nhìn vào giao dịch của người mua, bạn sẽ tiếp tục trả tiền cho từng người trong số họ. Một ASSIGNMENT_REVOKE bị bỏ sót thì nhỏ hơn nhưng thường xuyên hơn: giao dịch mua không còn chi trả cho người đó, và mọi yêu cầu họ gửi là chi phí không có doanh thu nào phía sau.
| Sự kiện | Tiền dịch chuyển | Quyền truy cập cần chấm dứt | Bằng chứng bạn có thể gửi |
|---|---|---|---|
| ASSIGNMENT_REVOKE trên một thành viên | Không có báo cáo | Thành viên đó | Không áp dụng |
| REFUND_FULL trên giao dịch mua multiseat | Toàn bộ giao dịch, mọi suất trong đó | Người mua và mọi người giữ suất | Chỉ giao dịch của người mua, trong vòng 12 giờ kể từ CONSUMPTION_REQUEST |
| REFUND_PRORATED trên giao dịch mua multiseat | Phần theo revocationPercentage | Tùy vào phạm vi hoàn tiền | Chỉ giao dịch của người mua |
| Phản hồi tiêu thụ trên giao dịch được chỉ định | Không được chấp nhận | Không áp dụng | Bị từ chối với InvalidAssignedTransactionNotSupportedError |
Những luồng hoàn tiền nào thực sự hỏi ý kiến của bạn
Multiseat không thay đổi danh sách ngắn này. Chỉ có hai luồng hoàn tiền yêu cầu nhà phát triển cung cấp bằng chứng: CONSUMPTION_REQUEST của Apple, trả lời qua Send Consumption Information trong vòng 12 giờ, và quy trình xem xét chargeback của Google Play, trả lời qua orders.reviewrefund trong vòng 24 giờ. Mọi thứ khác được quyết định mà không cần bạn, và với đơn hàng Google Play đặt sau ngày 3 tháng 8 năm 2026, một chargeback khiến nhà phát triển mất giá mua hàng, trừ phí dịch vụ của Play, cộng thêm phí chargeback của ngân hàng. RefundHalt trả lời các yêu cầu tiêu thụ của Apple trong khung 12 giờ, dùng dữ liệu sử dụng bạn vốn đã thu thập.
Những gì cần thay đổi trong trình xử lý App Store của bạn tuần này
- Đọc quantity trên mọi giao dịch gói đăng ký và lưu cùng giao dịch mua.
- Lưu inAppOwnershipType, và coi ASSIGNED là một trường hợp riêng bên cạnh PURCHASED và FAMILY_SHARED.
- Rẽ nhánh xử lý REVOKE theo revocationType, để ASSIGNMENT_REVOKE chấm dứt quyền truy cập mà không ghi nhận hoàn tiền.
- Ghi nhận REFUND_PRORATED theo phần revocationPercentage, không phải hoàn tiền toàn bộ.
- Kiểm tra ASSIGNED trước khi gọi Send Consumption Information, Set App Account Token hoặc Extend a Subscription Renewal Date.
- Quyết định trong App Store Connect xem bạn có muốn bán cho tổ chức hay không, trước khi có ai đó mua 50 suất.
Câu hỏi thường gặp
- Gói đăng ký multiseat của Apple có đang bật cho ứng dụng của tôi không?
- Nhiều khả năng là có. Apple bật sẵn tính năng mua multiseat theo mặc định trong App Store Connect. Các gói đăng ký tạo trước ngày 14 tháng 9 năm 2026 chỉ bắt đầu ở trạng thái không tham gia nếu không dùng StoreKit 2 hoặc đã bật Family Sharing, và gói đăng ký trong ứng dụng tùy chỉnh không thể từ chối tham gia. Bạn có thể kiểm tra trong mục Purchase Options trên trang của từng gói đăng ký.
- Thông báo REVOKE kèm ASSIGNMENT_REVOKE có nghĩa là tôi mất tiền không?
- Không. ASSIGNMENT_REVOKE nghĩa là tổ chức hoặc người mua nhóm đã gỡ gói đăng ký khỏi một người. Apple yêu cầu bạn chấm dứt quyền truy cập của người đó, nhưng sự kiện này không báo cáo hoàn tiền. Chỉ ghi nhận hoàn tiền khi có REFUND_FULL hoặc REFUND_PRORATED.
- Tôi có thể gửi thông tin tiêu thụ cho một nhân viên đang dùng suất được chỉ định không?
- Không. Endpoint Send Consumption Information của Apple trả về InvalidAssignedTransactionNotSupportedError cho các giao dịch mà tổ chức hoặc nhóm chỉ định cho khách hàng. Hãy kiểm tra inAppOwnershipType có phải ASSIGNED trước, và gửi bằng chứng trên giao dịch của người mua.
- Làm sao tôi biết Apple đã hoàn bao nhiêu trong một giao dịch mua multiseat?
- Đọc revocationType và revocationPercentage trên giao dịch. REFUND_FULL nghĩa là toàn bộ giao dịch đã được hoàn tiền. REFUND_PRORATED đi kèm revocationPercentage theo đơn vị phần nghìn, nên 40000 nghĩa là 40 phần trăm của giao dịch.
- Khi nào Group Purchases của Apple ra mắt?
- Apple cho biết Group Purchases, cho phép một khách hàng App Store mua nhiều suất và mời người khác, có thể cấu hình và thử nghiệm trong sandbox từ tháng 11 năm 2026 và sẽ có trên App Store vào mùa đông này. Volume Purchasing cho doanh nghiệp và trường học đã ra mắt vào ngày 22 tháng 10 năm 2026.
Nguồn và tài liệu đọc thêm
- Apple Developer News: Offer your subscriptions to businesses and schools (October 22, 2026)
- App Store Connect Help: Manage purchase options for an auto-renewable subscription
- WWDC26 Session 391: Offer subscriptions to groups and organizations
- App Store Server Notifications changelog
- App Store Server API: revocationType
- App Store Server API: revocationPercentage
- App Store Server API: InvalidAssignedTransactionNotSupportedError
- App Store Server API: ConsumptionRequest
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 quá mức có thể khiến bạn mất nhiều hơn chính khoản hoàn tiền, vì cả hai kho ứng dụng đều coi đó là tín hiệu chất lượng
Hướng dẫn 5.6.4 của Apple nêu rõ yêu cầu hoàn tiền quá mức là dấu hiệu ứng dụng không đạt chuẩn chất lượng, còn Thỏa thuận phân phối của Google cho phép gỡ ứng dụng của nhà phát triển mới dựa trên tỷ lệ hoàn tiền. Đây là những gì mỗi kho quy định, cái giá khi bị gỡ và cách tránh rủi ro.
Hãy xác minh thông báo máy chủ App Store trước khi xử lý hoàn tiền, vì bất kỳ ai cũng có thể gửi yêu cầu đến URL webhook của bạn
Một thông báo hoàn tiền chỉ là một yêu cầu HTTPS cho đến khi bạn kiểm tra chữ ký của nó. Bài viết này hướng dẫn cách xác minh thông báo máy chủ App Store và tin nhắn RTDN của Google Play, mỗi cửa hàng ký những gì, và một khoản hoàn tiền giả mạo hoặc bị từ chối nhầm khiến bạn tốn bao nhiêu.