Stripe 预授权以后,为什么还要看请款截止时间

预授权成功不等于钱已经到你账上。Stripe 的机制是:授权(authorization)在客户的支付方式上先占住一笔金额,保证这笔钱可用;请款(capture)才是真正把资金扣走。两者是分开的步骤,所以授权之后必须盯住一个时间点——授权有效期,也叫请款截止时间。超过它还没 capture,授权就会过期,占住的资金被释放,交易状态转为 canceled。

授权、可请款期限、capture
本文涉及的概念与核对环节。

先做这一步核对:在 Stripe 返回的 charge 对象里找到 payment_method_details.card.capture_before,这个字段直接告诉你该笔授权最晚什么时候必须请款。把它记进你的订单或履约系统,设为到期提醒,而不是凭经验估一个天数。因为有效期随卡组织和交易类型不同而变,没有一个通用天数可以套用。

为什么这个时间点值得单独看?因为它是一个“硬截止”。授权还在有效期内,你可以按业务节奏决定何时 capture,比如酒店常在客人入住前全额授权、退房时再请款。但一旦过期,资金释放和状态变更会按实际交易状态发生,你事后补 capture 已经来不及,需要重新发起支付并重新获得授权。对账时如果只看到“授权成功”就以为收入已锁定,很容易在对账日发现缺口。

举个可复算的例子(假设场景,仅为说明机制,非真实交易):假设某笔卡不在场交易在 1 日完成授权,capture_before 显示的具体截止时间落在 8 日。若你在 7 日发起 capture,资金按授权金额扣取;若拖到 9 日才操作,授权已过期,资金已释放,这笔 capture 不再成立,你需要重新发起支付并重新获得授权,之前那笔的状态应记为 canceled。这个例子里真正决定成败的不是“授权那天”,而是 capture_before 给出的那个截止时间。

需要说明的是,不同卡组织和交易类型的有效期窗口并不相同。以资料中的卡不在场交易为例,Visa 的商户发起交易与客户发起交易给出的窗口就不一样,且表中带有脚注条件,不能脱离条件当成通用规则。因此具体截止时间一律以 Stripe 返回的 capture_before 为准,不要引用统一天数。

可执行的核对动作: 1. 每笔授权成功后,读取 capture_before,写入订单时间字段。 2. 按该时间设内部截止提醒,留出履约和人工处理的缓冲。 3. 到期前未请款的订单,主动决定是 capture 还是放弃并重新收款,不要等系统自动过期。 4. 对账时把“已授权未请款”单独列一类,和“已请款”分开统计,避免把占用金额当收入。 5. 授权一旦过期,按实际状态处理,把该笔标为 canceled,不要假设还能补扣。

本文只解释机制与核对方法,不构成交易、法律或投资建议。

原始资料

docs.stripe.com

上一篇 Stripe 打款频率和资金到账速度有什么区别