所有文章
Deep dive阅读需 9 分钟

续订失败的频率高于用户主动取消,而这种非自愿流失是你仍然可以赢回的收入

让大量订阅终结的,是一张被拒付的银行卡,而不是用户点击取消,并且商店会持续尝试收款数周。本文说明 App Store 和 Google Play 上的账单宽限期、账单重试和账户保留是如何运作的,以及非自愿流失究竟让你损失了多少。

一只手拿着手机,屏幕上显示订阅付款失败的横幅,旁边放着一张过期的银行卡,展示因续订被拒付而产生的非自愿流失

要点

  • 非自愿流失指的是订阅因续订扣款失败而终结,通常是银行卡过期或被拒付,而不是用户主动选择取消。这是一个支付问题,两家商店都在设计上帮你把它挽回。
  • 当续订失败时,两家商店都不会立即终止订阅。Apple 会对银行卡重试最多 60 天,Google Play 则保留一个 60 天的挽回窗口,分为宽限期和账户保留两个阶段。
  • 在账单宽限期内,订阅者保留完整访问权限,同时商店进行重试。在任一商店的宽限期内挽回成功,都不会有任何中断,不会损失任何天数,账单日期也不会变动。
  • 宽限期结束后,订阅者会失去访问权限,但重试仍在继续。此时挽回成功,Apple 会从挽回当天开始一个新的账单周期,Google 则重置账单日期,因此你会以全新的计时重新获得该订阅者。
  • 这个挽回过程在后台运行,对你不收取任何费用。你无需支付处理商来重试,Apple 甚至会承担宽限期内免费提供的天数成本。你损失的收入,通常是你自己让它溜走的:关掉宽限期,或把一个本可挽回的订阅者误判为已流失。
  • 这些信号会通过你已经在用于退款的同一批 App Store Server Notifications 和 Google Play RTDN 数据流送达:DID_FAIL_TO_RENEW 和 SUBSCRIPTION_IN_GRACE_PERIOD、SUBSCRIPTION_ON_HOLD,然后在银行卡扣款成功时收到 BILLING_RECOVERY 或 SUBSCRIPTION_RECOVERED。
  • 处于宽限期或保留期的订阅者还没有流失。只有当 60 天窗口在没有挽回的情况下关闭时,才把他们算作损失,否则你的流失率会显得比实际更糟,而你的挽回率会看起来像零。

一张卡过期了,一家银行拒付了一次续订,一个你从未失去的订阅者停止了付款。他们并没有打开你的应用点击取消。只是他们的支付方式失败了,而除非你了解接下来会发生什么,否则他们会悄无声息地从你的收入中消失。这就是非自愿流失,而在 App Store 和 Google Play 上,商店都不会在这笔付款失败时就放弃。它会保留这个订阅者,继续对银行卡重试,并且在大多数情况下会保持一个持续数周的窗口,钱仍然可能到账。这种挽回大部分无论你是否行动都会发生。正确解读它,决定了你是在统计一次真正的取消,还是把一笔商店即将替你收到的款项一笔勾销。

这不是退款,也不是拒付。没有任何东西被逆转,没有钱离开你的账户。收入只是从未到账,而在你的报表里,它看起来就像一次普通的到期。这正是它悄悄流失的原因。一个取消的用户会告诉你他们要走了。一个卡失败的用户什么都不会告诉你,而如果你对他们一视同仁,你就会失去那些商店本要替你赢回的人。

非自愿流失究竟是什么

流失有两种形态,它们不是同一个问题。自愿流失是一个决定:用户取消,因为他们不再想要这个订阅。非自愿流失是一次意外:续订扣款失败,通常是因为卡过期、达到额度上限,或被银行以定期扣款或跨境扣款为由标记。前者是一个产品问题,你用产品去解决。后者是一个支付问题,也正是商店在设计上替你解决的那一个。

为什么它比看起来更严重

续订失败很常见,而且与你的应用有多好毫无关系。卡按计划过期,余额耗尽,银行拒付它们认定看起来有风险的定期扣款。每一个续订周期,都有一部分扣款会因订阅者从未选择的原因而失败。因为这些订阅者从未宣布他们要离开,所以很容易被误读为普通的到期,也很容易被跟丢,可挽回的收入就是这样被记为呆账的。

App Store 会持续尝试 60 天

当一个自动续订订阅扣款失败时,Apple 不会终止它。它会进入一个账单重试期,持续最多 60 天,Apple 会在这个窗口内不断尝试银行卡。在这 60 天里订阅者的体验,取决于一个由你控制的设置:账单宽限期。

账单宽限期在 Apple 重试期间保留访问权限

开启账单宽限期,订阅者会在宽限期长度内保留对你付费内容的完整访问权限,月度和年度计划最长可达 16 天,同时 Apple 对银行卡进行重试。在宽限期内挽回成功,就完全没有任何中断:账单日期不变,服务没有损失任何天数,你的收入也没有缺口。Apple 甚至会承担它在宽限期内免费提供的那些天数的成本。这是那种几乎纯粹有利的罕见设置,因为一个被挽回的订阅者甚至不会注意到扣款失败过。

宽限期之后,访问权限停止,但重试不会停

一旦宽限期结束仍未成功扣款,订阅者会失去访问权限,但 Apple 会在这 60 天窗口剩余的时间里继续重试银行卡。在这段时间里挽回成功,订阅者会在挽回当天续订,开始一个新的账单周期,而 Apple 不会对已经免费给出的宽限天数收费。只有当整整 60 天过去仍无成功付款时,订阅才会彻底到期。关掉宽限期,订阅者会在续订失败的那一刻立即失去访问权限,而那正是把一扇上锁的门递给一个付费用户的最糟时机。

标记每一步的通知

你的 App Store Server Notifications 数据流会讲述整个过程。DID_FAIL_TO_RENEW 告诉你一次续订失败了,当订阅者仍在宽限期内并应保留访问权限时,它会带有 GRACE_PERIOD 子类型。GRACE_PERIOD_EXPIRED 标记宽限期结束,也就是撤销访问权限的时点。带有 BILLING_RECOVERY 子类型的 DID_RENEW 意味着银行卡终于扣款成功,订阅者回来了。带有 BILLING_RETRY 子类型的 EXPIRED 意味着 60 天用尽,订阅者真正流失了。处理好这四个,你的访问权限就始终与真实状态一致。

一本日历标出了一段日期范围,上面放着一个小沙漏,展示商店在续订失败时保持开放的挽回窗口

Google Play 把同样的 60 天一分为二

Google Play 以不同的形态和自己的一套术语运行同样的思路。一次失败的续订会让订阅先后经过宽限期和账户保留,两者合起来构成一个 60 天的挽回窗口。

宽限期保留访问权限,账户保留则收回它

在宽限期内,订阅者保留访问权限,同时 Google 对银行卡进行重试,到期时间会随着重试的进行而顺延。如果银行卡扣款成功,订阅会挽回,原有的续订日期完好无损,就好像失败从未发生过。如果宽限期用尽,订阅会进入账户保留。这时访问权限停止,并一直关闭直到付款问题被修复。从账户保留中挽回成功,访问权限会恢复,但账单日期会重置为挽回当天,而不是原来的日期。

这 60 天的算法在 2025 年底发生了变化

自 2025 年 12 月 1 日起,Google 将账户保留时长计算为 60 天减去你的宽限期。16 天的宽限期留下 44 天的保留,而合并后的挽回窗口仍保持 60 天。选择更长的宽限期,你就是在用保留时间换取访问时间,但总窗口不会改变。Google 建议通过其 API 读取实时订阅状态,而不是假定一个固定的保留时长,因为这个划分现在是推算出来的,而不是固定的。

你需要处理的 RTDN 类型

Google Play 的 Real-time Developer Notifications 会点明每个阶段。SUBSCRIPTION_IN_GRACE_PERIOD 意味着保留访问权限并提示用户修复银行卡。SUBSCRIPTION_ON_HOLD 意味着立即撤销访问权限。SUBSCRIPTION_RECOVERED 意味着付款扣款成功,访问权限恢复。SUBSCRIPTION_CANCELED 然后 SUBSCRIPTION_EXPIRED 意味着窗口在未修复的情况下关闭,订阅者已经流失。这些会落在你已经在用于作废购买和退款的同一条 RTDN 管道上。

阶段App StoreGoogle Play
续订失败,保留访问账单宽限期,最长 16 天宽限期,长度由你设定
续订失败,失去访问宽限期之后,直到 60 天余下的时间账户保留
总挽回窗口最长 60 天60 天,宽限期加保留
宽限期内挽回账单日期不变,不损失天数续订日期不变,无中断
宽限期后挽回从挽回当天开始新的账单周期账单日期重置为挽回当天
彻底终结EXPIRED,子类型 BILLING_RETRYSUBSCRIPTION_EXPIRED

非自愿流失让你损失了什么

这里的成本不是退款那种,把你已入账的钱追回去。它是从未出现的收入,藏在你的数字里,看起来像一次普通的到期。

一次你早已付出代价去赢得的续订

每一个定期订阅者都花了你真金白银去赢得:获取他们的广告投放和创意,引导流程,以及此后每个周期你为他们运行的算力、存储和 API 调用。一个因死卡而失去的订阅者,会带着所有这些沉没成本无法收回地离开,而为了补上这笔收入,你要为一个新用户重新支付一遍获客成本。一个被商店挽回的订阅者,重新获取的成本为零。这两者之间的差距,完整的重新获客对零,正是非自愿流失真正撬动的那笔钱。

这个挽回过程在免费运行,只要你允许它

这里就是那个被忽略的部分。在宽限期和重试期间,商店在替你收款,对你不收取任何费用。你不用运行催缴,你不用为每次重试向处理商付费,你也不用发送哪怕一封邮件。挽回在后台跨越一个 60 天的窗口进行。当这笔收入终究还是损失了,通常可以追溯到两个自己造成的错误之一:关掉宽限期,让订阅者在卡失败的那一刻被锁在门外;或者把一个仍在挽回窗口内的订阅者当作硬性取消,放弃了商店尚未放弃的收入。

如何真正把非自愿流失保持在低位

把你的精力花在少数几个能推动挽回的设置和信号上,让商店去做它本就做得很好的重试。

开启账单宽限期

在两家商店上,都启用宽限期。它会在商店重试期间把付费订阅者留在你的应用里,因此一个被挽回的订阅者不会损失一天,这也是这里杠杆最高的单一控制项。在 App Store 上,它是 App Store Connect 里的一个开关。在 Google Play 上,自动续订的基础计划默认开启宽限期,所以你要做的就是保持它开启,并设定一个你愿意免费提供的长度。

让访问权限在宽限期和保留期与真实状态一致

在宽限期内保留访问权限,对应 Apple 带 GRACE_PERIOD 子类型的 DID_FAIL_TO_RENEW 和 Google 的 SUBSCRIPTION_IN_GRACE_PERIOD。在 Apple 的宽限期到期时以及 Google 发送 SUBSCRIPTION_ON_HOLD 时撤销访问权限。在挽回到来的那一刻恢复它,对应 BILLING_RECOVERY 或 SUBSCRIPTION_RECOVERED。在一个方向上弄错,你会白送数周的免费访问。在另一个方向上弄错,你会锁住一个只差一次重试就会再次付款给你的订阅者。

把挽回与流失分开统计

一个处于宽限期或账户保留的订阅者还没有流失。在挽回窗口未经成功扣款而关闭之前,不要把他们记为损失。如果你的分析把续订失败和用户取消揉进一个数字,你的流失率读起来会比实际更糟,你的挽回率读起来会像什么都没发生。把非自愿流失单独分出来,并追踪它的挽回率,因为这个比率是一个你真的可以用一个设置和一次提示去改变的数字。

提示修复,然后让开路

你能加上的唯一有用的东西,就是一次轻推。两家商店都允许你提示订阅者更新他们的支付方式,Apple 在应用内进行,Google 通过其 In-App Messaging API 和 Play 通知进行。宽限期内一次时机得当的提示会提升挽回,因为这些用户大多仍然想要订阅,只是需要修复一张卡。除了这次轻推之外,就让商店去重试。它已经在替你做那个昂贵的部分,免费,持续数周。

RefundHalt 已经在为退款监听的那同一批 App Store Server Notifications 和 RTDN 数据流,也承载了每一个这些账单信号。宽限期、保留、挽回和非自愿流失会落在你的仪表盘里,紧挨着你的退款,因此你可以看着挽回窗口发挥作用,而不是去猜测哪些失败的续订已经走了,哪些正在回来。

简短版本

一次失败的续订不是一次取消,而商店会在数周内都这样对待它。Apple 会对银行卡重试最多 60 天,并且在宽限期开启时,在重试的同时把订阅者留在你的应用里。Google Play 把同样的 60 天分成一个保留访问的宽限期和一个收回访问的账户保留。开启宽限期,处理好宽限期和保留期的通知让访问权限与现实一致,提示用户修复他们的卡,并且只有在窗口空手关闭之后才把订阅者算作流失。非自愿流失是商店正在主动替你堵上的那一个收入漏洞。你的工作大多是别挡路,并把你的数字读得足够好,以便知道损失什么时候是真的。

常见问题解答

自愿流失和非自愿流失有什么区别?
自愿流失是用户选择取消一个订阅。非自愿流失是订阅因续订扣款失败而终结,通常是卡过期或被拒付,而用户并没有决定离开。非自愿流失是一个支付问题,商店会尝试替你挽回,所以不应该像对待一次真正的取消那样去统计或处理它。
当续订付款失败时,订阅者还能保留访问权限吗?
这取决于所处阶段。在账单宽限期内,订阅者保留完整访问权限,同时商店对银行卡进行重试,App Store 和 Google Play 都是如此。宽限期结束后,访问权限停止:Apple 会在 60 天窗口剩余的时间里继续重试,此时访问关闭,而 Google 会把订阅移入账户保留,在付款修复之前访问权限被收回。
商店会对一个失败的订阅持续尝试扣款多久?
两家商店都最长 60 天。Apple 运行一个最长 60 天的账单重试期,账单宽限期就坐落在其中。Google Play 保留一个 60 天的挽回窗口,分为宽限期和账户保留,其中自 2025 年 12 月 1 日起,账户保留被计算为 60 天减去你的宽限期长度。
我应该开启账单宽限期吗?
对大多数应用来说,应该。宽限期会在商店重试一张失败的卡时把付费订阅者留在你的应用里,因此任何在其中挽回成功的人都不会损失一天,也不会注意到这次失败。代价是给那些永远不会挽回的订阅者几天的免费访问。好处是留住那些本会因突然被锁定而离开的人。
一个处于宽限期或账户保留的订阅者是不是已经流失了?
不是。他们在挽回窗口之内,商店仍在尝试收款。把他们算作流失会夸大你的流失率,并掩盖你的挽回率。只有当 60 天窗口在没有成功付款的情况下关闭时,才把一个订阅者记为损失,两家商店会通过 Apple 上的 EXPIRED(账单重试)通知和 Google Play 上的 SUBSCRIPTION_EXPIRED 来发出这个信号。
非自愿流失会产生退款或拒付吗?
不会。没有任何东西被逆转,没有钱离开你的账户。一次失败的续订是从未到账的收入,而不是一笔被拉回的付款。这与退款或拒付恰好相反,也正是它为什么会在你的报表里藏成一次普通的到期,而不是显示为一笔支出。

来源和延伸阅读

RefundHalt

App Store 和 Google Play 退款自动驾驶

继续阅读

下一项退款请求已经在路上。

读完又一封关于未能申辩退款的支持邮件所需的时间,足够您完成 RefundHalt 设置。