Apple 開始按席位把你的訂閱賣給整間公司,多席位訂閱的退款方式也跟著改變
Apple 於 2026 年 10 月 22 日為企業與學校開放多席位訂閱,而且預設啟用。一筆購買現在可以涵蓋許多人,席位被移除時會以 REVOKE 通知送達,退款證據端點則會拒絕已指派的席位。本文說明哪些地方變了,以及要付出什麼代價。

重點摘要
- 自 2026 年 10 月 22 日起,使用 Apple Business 或 Apple School Manager 的機構,可以透過一筆 Apple App 內購買項目大量購買 App 的自動續訂型訂閱,用裝置管理工具指派席位,並可隨時增減席位。
- Apple 在 App Store Connect 中預設開啟了多席位購買。2026 年 9 月 14 日之前建立、且未使用 StoreKit 2 或已開啟家人共享的訂閱,初始狀態為不參與;客製化 App 中的訂閱則完全無法選擇退出。
- 在多席位購買中,Apple 交易資料裡的 quantity 欄位代表席位數量,每位獲得席位的人都會得到一筆 inAppOwnershipType 為 ASSIGNED 的交易。
- 當機構收回指派給某人的訂閱時,Apple 會傳送 REVOKE 通知,交易的 revocationType 為 ASSIGNMENT_REVOKE。這個值已於 2026 年 10 月 23 日在正式環境上線。
- Apple 的 Send Consumption Information 端點用來回覆 CONSUMPTION_REQUEST。若以已指派的交易呼叫,它會傳回 InvalidAssignedTransactionNotSupportedError,因此退款證據只能針對購買者的交易提交。
- Apple 的 revocationType 欄位區分 REFUND_FULL 與 REFUND_PRORATED,revocationPercentage 以千分單位回報退款比例,所以 40000 代表 40%。
- Group Purchases(群組購買)讓一位 App Store 顧客購買多個席位並邀請他人使用,將從 2026 年 11 月起可在沙盒中測試,並於今年冬季登上 App Store。
Apple 於 2026 年 10 月 22 日開始按席位把 App 訂閱賣給機構,而且沒有事先詢問,就替大多數開發者開啟了這個選項。使用 Apple Business 或 Apple School Manager 的企業與學校,現在可以透過一筆 App 內購買項目大量購買你的自動續訂型訂閱。這改變了多席位訂閱退款在你伺服器上的樣貌。一筆交易現在可能替幾十個人付費,一個席位可能在完全沒有退款的情況下消失,而你用來替退款案件申辯的端點,拒絕討論真正在使用 App 的那些人。
Apple 開啟了什麼,又是在哪裡宣布的
這次上線是以一篇簡短的 Apple Developer 新聞公布,標題為「Offer your subscriptions to businesses and schools」。文中表示,機構可以透過一筆 App 內購買項目購買所需席位,再用現有的裝置管理工具指派與管理這些席位,並可隨時增減席位。同一篇文章也提到,除非你先前已變更過設定,否則多席位購買在 App Store Connect 中預設為開啟。
相關的底層改動是在前一個月透過更新紀錄陸續到位,而不是在發表會上。9 月 28 日的 App Store Server API 1.22 新增了席位欄位與群組端點,但僅限沙盒。10 月 23 日,一則只有一行的伺服器更新把群組端點和 ASSIGNMENT_REVOKE 值推上了正式環境。如果你的通知處理程式從夏天之後就沒改過,它現在收到的資料,是它當初從未設計要讀取的。
| 日期 | 變更內容 | Apple 的公布管道 |
|---|---|---|
| 2026 年 6 月 | 在 WWDC26 宣布多席位訂閱 | Session 391,Offer subscriptions to groups and organizations |
| 2026 年 9 月 16 日 | App Store Connect 中預設開啟多席位購買 | Apple Developer 新聞 |
| 2026 年 9 月 28 日 | quantity 代表席位數,新增 ASSIGNED 與 ASSIGNMENT_REVOKE,僅限沙盒 | App Store Server API 更新紀錄,1.22 版 |
| 2026 年 10 月 22 日 | Volume Purchasing(大量購買)對 Apple Business 與 Apple School Manager 上線 | Apple Developer 新聞 |
| 2026 年 10 月 23 日 | ASSIGNMENT_REVOKE 與群組端點在正式環境上線 | Server API 與 Server Notifications 更新紀錄 |
| 2026 年 11 月 | Group Purchases 可在沙盒中測試 | Apple Developer 新聞 |
| 今年冬季 | Group Purchases 登上 App Store | Apple Developer 新聞 |
哪些訂閱預設參與
幾乎全部。Apple 的 App Store Connect 說明頁面指出,2026 年 9 月 14 日之前建立的訂閱,只有在未使用 StoreKit 2 或已開啟家人共享時,初始狀態才是不參與。客製化 App 中的訂閱會自動提供給 Apple Business 與 Apple School Manager,且無法選擇退出。變更這項設定需要帳號持有人、管理員或 App 管理角色;要從已核准的訂閱中移除 Apple Business 或 Apple School Manager,則需要帳號持有人。
多席位購買在你的伺服器上會呈現什麼
同一個訂閱現在有兩種交易。機構的購買是一筆交易,它的 quantity 欄位回報購買了多少席位。每位獲得席位的人會收到各自的交易,Apple 的 WWDC 講座將此描述為 App Store 替每位成員指派一筆交易。這些成員交易的 inAppOwnershipType 為 ASSIGNED,與你可能已經在處理的 PURCHASED 和 FAMILY_SHARED 值並列。
對於由哪一筆紀錄決定存取權,Apple 的立場很明確。它的 Get Customer Groups 文件指出,群組成員資格與權益是分開的;要解鎖內容,應讀取顧客的交易,而不是依賴群組成員資格。請依據交易授予存取權。群組端點只用於管理員檢視之類的功能。
| 欄位或值 | 代表的意義 | 新增時間 |
|---|---|---|
| quantity | 多席位購買的席位數量 | 2026 年 9 月 28 日 |
| inAppOwnershipType = ASSIGNED | 此人透過機構或群組取得存取權 | 2026 年 9 月 28 日 |
| revocationType = ASSIGNMENT_REVOKE | 購買者已從此人身上收回訂閱 | 2026 年 9 月 28 日,10 月 23 日進入正式環境 |
| revocationType = REFUND_FULL 或 REFUND_PRORATED | 交易已全額或部分退款 | 2025 年 12 月 10 日 |
| revocationPercentage | 退款比例,以千分單位表示(40000 = 40%) | 2025 年 12 月 10 日 |
被移除的席位不等於退款
這是大多數處理程式會出錯的地方。當機構收回某位員工的席位時,Apple 會傳送 REVOKE 通知,與家人共享購買者停止共享時使用的是同一種類型。交易的 revocationType 為 ASSIGNMENT_REVOKE,而 Apple 的指示很直接:撤銷該顧客對這筆交易所提供內容的存取權。
這個事件中沒有任何內容表示有金流發生。如果你的程式把每次撤銷都當成退款,你的退款率、淨營收,以及建立在它們之上的任何警示,都會把正常的人員異動算成銷售損失。請先依 revocationType 分流處理。
- ASSIGNMENT_REVOKE:終止此人的存取權。不要記為退款。
- FAMILY_REVOKE:終止該家庭成員的存取權。不要記為退款。
- REFUND_FULL:終止存取權,並將整筆交易記為已退款。
- REFUND_PRORATED:依 revocationPercentage 的比例入帳,再決定保留哪些存取權。

為什麼無法替已指派席位的退款申辯
每一筆 App Store 退款仍由 Apple 決定。顧客申請退款時,Apple 會傳送 CONSUMPTION_REQUEST,並給你 12 小時透過 Send Consumption Information 回覆。在多席位模式下,使用 App 的人和付款的人是不同的人,而 Apple 的 API 現在在兩者之間畫了一條硬界線。
Send Consumption Information 拒絕已指派的交易
以已指派的交易呼叫 Send Consumption Information、其 V1 版本或 Set App Account Token,Apple 會傳回 InvalidAssignedTransactionNotSupportedError。Apple 的建議是呼叫前先檢查 inAppOwnershipType 是否為 ASSIGNED。實務上,你的證據要不是提交在購買者的交易上,就是無處可交。App 在成員帳號上記錄的使用資料仍值得保留,因為這是了解席位到底有沒有被使用的唯一方法。
按比例退款長什麼樣子
Apple 於 2025 年 12 月新增了 REFUND_PRORATED 與 revocationPercentage。在消費資訊請求中,你可以用值為 GRANT_PRORATED 的 refundPreference 要求這個結果。對於自動續訂型訂閱,Apple 表示在 GRANT_PRORATED 時不要傳送 consumptionPercentage,因為比例由 Apple 自行計算。如果退款之後被撤回,revocationPercentage 會從交易中消失。
我可以延長某位員工的訂閱,當作補償嗎?
不行。對於已指派的訂閱,Extend a Subscription Renewal Date 會傳回 AssignedSubscriptionExtensionIneligibleError。Apple 的理由是,已指派的訂閱與購買者所購買的訂閱按照同一時程續訂,因此無法單獨調整某一位成員。
多席位訂閱退款會讓你付出什麼代價
規模是新的風險。Apple 的 WWDC 講座介紹了最多五個價格級距的大量定價。範例中,20 個席位以內每席每月 19.99 美元,第 21 到 40 個席位 13.99 美元,第 41 個起 10.99 美元。依這些數字,一筆 50 席的訂單每月收費 789.50 美元,約合每席 15.79 美元。這一筆交易若發生 REFUND_FULL,退回的是整整 789.50 美元,而不是一份訂閱的價格。
服務成本也以同樣方式放大。五十個席位代表五十個人在你的伺服器上執行工作階段,發出由你的功能付費的第三方 API 呼叫,並占用你要付費的儲存空間。如果因為處理程式只看了購買者的交易,導致已退款訂單的席位持有人仍保有存取權,你就得繼續替他們每個人付費。漏掉 ASSIGNMENT_REVOKE 的損失較小但更頻繁:這筆購買已不再涵蓋此人,而他發出的每個請求都是沒有營收支撐的成本。
| 事件 | 金流變動 | 需終止的存取權 | 可提交的證據 |
|---|---|---|---|
| 成員的 ASSIGNMENT_REVOKE | 未回報 | 該成員 | 不適用 |
| 多席位購買的 REFUND_FULL | 整筆交易,含其中每個席位 | 購買者及每位席位持有人 | 僅限購買者的交易,須在 CONSUMPTION_REQUEST 後 12 小時內 |
| 多席位購買的 REFUND_PRORATED | revocationPercentage 對應的比例 | 取決於退款涵蓋的範圍 | 僅限購買者的交易 |
| 針對已指派交易的消費資訊回覆 | 不被接受 | 不適用 | 以 InvalidAssignedTransactionNotSupportedError 拒絕 |
哪些退款流程會徵詢你的意見
多席位並沒有改變這份短名單。只有兩種退款流程會向開發者索取證據:Apple 的 CONSUMPTION_REQUEST,須在 12 小時內透過 Send Consumption Information 回覆;以及 Google Play 的退單審查,須在 24 小時內透過 orders.reviewrefund 回覆。其他一切都在你未參與的情況下決定。對於 2026 年 8 月 3 日之後成立的 Google Play 訂單,一次退單會讓開發者損失購買價格(扣除 Play 的服務費),再加上銀行的退單手續費。RefundHalt 運用你已經蒐集的使用資料,在 12 小時期限內回覆 Apple 的消費資訊請求。
這週要在 App Store 處理程式中修改的地方
- 讀取每筆訂閱交易的 quantity,並與購買紀錄一起儲存。
- 儲存 inAppOwnershipType,並把 ASSIGNED 當成與 PURCHASED、FAMILY_SHARED 並列的獨立情況處理。
- 依 revocationType 分流處理 REVOKE,讓 ASSIGNMENT_REVOKE 終止存取權而不記為退款。
- 依 revocationPercentage 的比例記錄 REFUND_PRORATED,而不是記為全額退款。
- 在呼叫 Send Consumption Information、Set App Account Token 或 Extend a Subscription Renewal Date 之前,先檢查是否為 ASSIGNED。
- 在某個機構一口氣買下 50 個席位之前,先在 App Store Connect 中決定你到底要不要賣給機構。
常見問題解答
- 我的 App 開啟了 Apple 多席位訂閱嗎?
- 很可能已開啟。Apple 在 App Store Connect 中預設開啟了多席位購買。2026 年 9 月 14 日之前建立的訂閱,只有在未使用 StoreKit 2 或已開啟家人共享時,初始狀態才是不參與;客製化 App 中的訂閱無法選擇退出。你可以在每個訂閱頁面的購買選項中查看。
- 帶有 ASSIGNMENT_REVOKE 的 REVOKE 通知,是否代表我損失了錢?
- 不是。ASSIGNMENT_REVOKE 代表機構或群組購買者從某個人身上收回了訂閱。Apple 要求你終止此人的存取權,但這個事件並未回報退款。只有在 REFUND_FULL 或 REFUND_PRORATED 時才記為退款。
- 我可以替使用已指派席位的員工傳送消費資訊嗎?
- 不行。對於機構或群組指派給顧客的交易,Apple 的 Send Consumption Information 端點會傳回 InvalidAssignedTransactionNotSupportedError。請先檢查 inAppOwnershipType 是否為 ASSIGNED,並在購買者的交易上提交證據。
- 我要怎麼知道 Apple 對多席位購買退了多少款?
- 讀取交易上的 revocationType 與 revocationPercentage。REFUND_FULL 代表整筆交易已退款。REFUND_PRORATED 會附帶以千分單位表示的 revocationPercentage,所以 40000 代表交易金額的 40%。
- Apple 的 Group Purchases 什麼時候推出?
- Apple 表示,Group Purchases 讓一位 App Store 顧客購買多個席位並邀請他人使用,從 2026 年 11 月起可在沙盒中設定與測試,並將於今年冬季在 App Store 推出。針對企業與學校的 Volume Purchasing 已於 2026 年 10 月 22 日上線。
資料來源與延伸閱讀
- 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
App Store 與 Google Play 的退款自動駕駛
繼續閱讀
過多的退款申請,代價可能遠超退款本身,因為兩大 App 商店都把它視為品質訊號
Apple 審查準則 5.6.4 把過多的退款申請列為 App 未達品質標準的跡象,Google 的開發人員發布協議也允許它依退款率下架新開發人員的 App。本文整理兩家商店的原文、下架的實際成本,以及如何避開風險。
在處理退款之前先驗證 App Store 伺服器通知,因為任何人都能向你的 webhook URL 發送請求
在檢查簽章之前,一則退款通知只不過是一個 HTTPS 請求。本文說明如何驗證 App Store 伺服器通知和 Google Play RTDN 訊息、各商店簽署的內容,以及偽造的退款或遭錯誤拒絕的退款會讓你付出什麼代價。