Stripe Connect直连扣款、目的地扣款、分离扣款与转账有什么区别?
Stripe Connect的直连扣款(direct charge)在关联账户上创建支付,款项进入关联账户余额,平台通常通过application fee收费;目的地扣款(destination charge)在平台账户上创建支付,并把指定金额立即转给一个关联账户;分离扣款与转账(separate charges and transfers)先在平台收款,再用独立Transfer把资金分给一个或多个关联账户。
本文目录(29 节)
直接答案
Stripe Connect的直连扣款(direct charge)在关联账户上创建支付,款项进入关联账户余额,平台通常通过application fee收费;目的地扣款(destination charge)在平台账户上创建支付,并把指定金额立即转给一个关联账户;分离扣款与转账(separate charges and transfers)先在平台收款,再用独立Transfer把资金分给一个或多个关联账户。
三者最关键的差异不是API参数写法,而是支付对象属于哪个账户、客户在与谁交易、资金何时移动、谁承担Stripe手续费、退款与争议从谁的余额扣除,以及一笔订单能否分给多方。选错模型会导致平台看不到对象、退款没有追回卖家资金,或在跨境路径上直接失败。
一、三种资金流快速对比
| 模式 | Charge与PaymentIntent归属 | 首次入账 | 典型场景 | 多方分账 |
|---|---|---|---|---|
| 直连扣款 | 关联账户 | 关联账户余额 | SaaS为独立商家提供收款工具 | 通常单一商家 |
| 目的地扣款 | 平台账户 | 平台收款后立即转至一个关联账户 | 网约车、单服务方市场 | 一笔对应一个目的地 |
| 分离扣款与转账 | 平台账户 | 平台余额,再独立Transfer | 多卖家购物车、平台稍后决定收款方 | 支持一个或多个账户 |
Stripe官方把后两者归为间接扣款,因为客户付款首先发生在平台账户。
二、直连扣款是什么
直连扣款是在关联账户上下文中创建PaymentIntent、Checkout Session或Charge。支付对象、客户对象和余额交易都属于该关联账户,而不是平台账户。
API调用通常通过Stripe-Account请求头或SDK中的关联账户选项指定账户。平台若只用自己的密钥查询平台作用域,会找不到这些支付对象。
三、直连扣款的资金怎样走
客户付款成功后,款项进入关联账户余额。平台可以在支付上收取application fee,这部分进入平台余额。对客户而言,提供商品或服务的关联账户通常是交易主体。
这种结构适合独立商户各自经营、平台主要提供软件能力的模式,例如店铺建站或预约系统。
四、目的地扣款是什么
目的地扣款在平台账户上创建支付,同时通过transfer_data[destination]指定一个关联账户。款项完成后,Stripe把指定金额转入该目的地账户,平台可保留差额或显式收取application fee。
PaymentIntent和Charge保存在平台作用域,所以平台能在同一账户中查看和处理相关支付。
五、目的地扣款为何不是直连扣款
尽管最终资金到达关联账户,支付仍由平台创建并首先计入平台资金流。Stripe手续费、退款和争议通常落在平台一侧,除非平台再执行相应资金追回动作。
直连扣款则把支付本身创建在关联账户。两者不能仅凭“卖家最终收到钱”判断相同。
六、分离扣款与转账是什么
该模式先在平台账户创建支付,之后再创建一个或多个Transfer,把平台余额移动到关联账户。Charge与Transfer是解耦的对象,可通过transfer_group等方式建立业务关联。
因为转账可以延后,平台能够在支付时尚不知道最终服务方,或把一笔付款拆给多个参与者。
七、何时必须考虑多方拆分
如果一个购物车包含多个卖家,或订单收入要同时分给商家、配送员和服务方,目的地扣款的单一destination通常不够。分离扣款与转账更符合一对多资金流。
平台必须自行保存每个订单的分账明细、转账状态和可重试规则,复杂度也随之提高。
八、PaymentIntent到底在哪个账户
直连扣款的PaymentIntent存在于关联账户;目的地扣款和分离扣款的PaymentIntent存在于平台账户。对象ID看起来都以pi_开头,但不能跨账户作用域直接读取。
排查“No such payment_intent”时,先确认创建它的账户,再核对请求是否带了正确的关联账户上下文。
九、Customer和PaymentMethod会自动共享吗
不会因为平台连接了账户就自动成为全局对象。Customer、PaymentMethod和PaymentIntent有账户作用域,直连扣款中使用的对象必须在正确账户可用。
不要把平台账户保存的Customer ID直接当成关联账户Customer ID。需要跨账户复用支付方式时,应按Stripe当前支持的Connect流程设计,而不是复制ID字符串。
十、application fee与保留差额有什么区别
直连扣款通常用application_让关联账户向平台支付费用。目的地扣款既可明确设置application fee,也可能只把部分金额转给目的地,从而让平台保留差额。
二者在报表、退款和会计语义上可能不同。平台应选择与合同和收入确认方式一致的方案,不能只看净到账金额。
十一、on_behalf_of参数做什么
在间接扣款中,on_behalf_of可指定关联账户作为结算商户,并影响结算国家、费用结构、账单信息和付款安排。它不是单纯的备注字段。
跨地区目的地扣款在部分情况下要求设置该参数,但支持范围取决于平台与关联账户所在区域及能力状态。
十二、merchant of record为什么重要
交易主体关系会影响客户账单描述、税务、退款沟通、争议材料和合规责任。技术团队不能仅凭哪个账户收到净额来决定谁是merchant of record。
应让支付架构与用户协议、结账页展示和实际履约关系一致,并让法律与财务团队确认。
十三、Stripe手续费由谁承担
目的地扣款和分离扣款通常由平台账户承担Stripe处理费。直连扣款的费用承担方式与关联账户配置和平台责任设置有关。
费率计算不能只用“订单金额减卖家所得”。还要核对处理费、application fee、换汇、退款和争议费用分别记在哪个账户。
十四、退款为什么不会自动追回所有资金
对间接扣款发起退款时,退款金额从平台余额扣除。目的地扣款可在退款时选择反转关联Transfer;application fee是否退回也需要对应参数或单独处理。
若只创建Refund而不反转转账,客户拿回资金,但卖家可能仍保留原转入金额,损失由平台承担。
十五、分离扣款退款怎样处理
Charge与Transfer相互独立,因此退还客户并不会天然撤销已经发给一个或多个关联账户的Transfer。平台需要按订单分账记录逐笔创建Transfer Reversal,或按合同决定由平台吸收损失。
部分退款还要定义各参与方按比例还是按商品行项目退回,不能简单反转全部转账。
十六、争议和拒付落在哪一侧
直连扣款的支付和争议通常属于关联账户。间接扣款的争议金额与相关费用通常从平台余额扣除,平台负责响应并可能向关联账户追回资金。
这直接影响风险准备金。高风险卖家若使用间接扣款,平台需要监控负债,而不是等争议发生后才发现余额不足。
十七、异步支付方式有什么额外风险
某些支付方式不会立即最终成功。分离扣款模式若在支付仍处理中就先向卖家Transfer,后来支付失败,Stripe不会必然自动撤回已经独立创建的转账。
安全做法是等待对应的成功Webhook,再按幂等流程执行分账,并为失败、过期和退款维护状态机。
十八、跨境转账是否都支持
不是。Stripe Connect的跨境资金流受平台地区、关联账户地区、币种、账户能力和具体产品支持范围限制。官方文档列出的可用地区也可能更新。
在真实账户中上线前,应使用目标国家组合逐项核对,而不是根据测试模式一次成功推断所有地区可用。
十九、capability状态为何会导致失败
关联账户需要相应的收款或转账能力。直连卡支付常依赖card_payments能力,接收平台Transfer依赖相关转账能力;账户资料未完成或能力被暂停时,请求会失败或资金无法移动。
平台应监听账户更新事件,并在结账前检查业务所需能力,而不是只在创建账户时检查一次。
二十、平台报表为何出现“少了一笔支付”
直连扣款对象位于关联账户,平台级PaymentIntent列表不会自动包含它。数据仓库若只同步平台账户,会漏掉直连交易。
同步程序应按关联账户枚举数据,或采用支持Connect账户作用域的报表方案,同时记录账户ID作为主键的一部分。
二十一、Webhook应监听哪个账户
平台扣款事件出现在平台账户;直连扣款事件来自关联账户。Connect Webhook可以接收关联账户事件,但处理器必须读取事件中的账户上下文,再在正确账户查询对象。
事件ID和对象ID也应与账户ID组合去重,避免不同作用域下的标识被错误合并。
二十二、三种模式怎样选
独立商家直接面向自己的客户、平台收软件费时,优先评估直连扣款;平台统一面向客户且每笔订单只有一个服务方时,评估目的地扣款;需要多方拆分、延迟确定收款方或把支付与拨款解耦时,评估分离扣款与转账。
选择前还应确认地区支持、商户身份、风险承担、报表需求和退款流程,而不仅是开发工作量。
二十三、可以在同一平台混用吗
Stripe允许平台在合适场景使用多种扣款类型,但混用会产生不同对象作用域、费用归属、Webhook来源和对账逻辑。
每笔订单必须保存明确的charge model。退款服务不能凭关联账户是否存在来猜测原模式。
二十四、实现时应保存哪些字段
至少保存平台订单号、扣款模式、平台账户ID、关联账户ID、PaymentIntent、Charge、Transfer、application fee、Transfer Group、币种、总额、各方分配、退款和反转状态。
所有写操作都使用稳定幂等键,并把Webhook作为最终状态的重要来源。日志不得记录完整密钥、银行卡数据或不必要的个人信息。
二十五、上线前验证清单
分别测试成功、失败、异步完成、部分退款、全额退款、争议、关联账户余额不足和能力暂停;核对客户账单描述;验证平台与卖家报表;确认Transfer Reversal和application fee退款符合合同;再用目标国家与币种验证跨境支持。
测试模式能证明流程逻辑,但不能替代真实地区资格、费率和合规审核。
常见问题
1. 目的地扣款的钱是不是先进入平台?
支付对象创建在平台账户,并按指定设置把资金转到关联账户。它在责任和对象归属上仍属于间接扣款,不等同于直连扣款。
2. 一笔订单分给三个卖家应选哪种?
通常评估分离扣款与转账,因为它允许从一笔平台收款创建多个独立Transfer。
3. 创建Refund会自动撤销Transfer吗?
不能一概而论。间接扣款应显式设计Transfer Reversal;分离扣款的Charge与Transfer尤其是解耦的。
4. 为什么平台API查不到直连扣款的PaymentIntent?
因为它属于关联账户。查询时需要使用创建该对象的关联账户上下文。
5. 设置on_behalf_of就变成直连扣款了吗?
不会。它可改变结算商户等属性,但目的地扣款或其他间接扣款的对象仍在平台账户创建。
结论
直连扣款把支付归于关联账户,目的地扣款让平台收款后立即转给一个账户,分离扣款与转账则让平台先收款、再灵活分给一个或多个账户。正确选择必须同时对齐交易主体、对象作用域、资金流、退款争议责任、地区能力和对账架构。
参考来源
- Stripe:Understand how charges work in a Connect integration,https:
/ / docs. stripe. com/ connect/ charges - Stripe:Create direct charges,https:
/ / docs. stripe. com/ connect/ direct- charges - Stripe:Create destination charges,https:
/ / docs. stripe. com/ connect/ destination- charges - Stripe:Create separate charges and transfers,https:
/ / docs. stripe. com/ connect/ separate- charges- and- transfers - Stripe:Handle refunds and disputes,https:
/ / docs. stripe. com/ connect/ marketplace/ tasks/ refunds- disputes