You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多卖家电商平台Stripe资金分账:无需预充余额的实现方案咨询

问题解答

首先明确:完全可以实现信用卡支付资金到账后再分发给卖家,无需预充账户或手动提现设置。

初始方案的误区

你用transfer_group的方案属于「分离式转账(Separate Transfers)」,这种模式下Stripe会先从你的平台账户余额扣款打给卖家,所以需要预充资金,还要把卖家账户的提现设为手动(避免资金未到账就被提走),这确实是痛点。

更新后方案的问题

你更新后的代码用source_transaction关联Charge来转账的方向是对的,但存在两个关键问题:

  • 未在PaymentIntent阶段明确平台手续费,剩余资金会留在你的Stripe平台账户,需要手动提现,无法自动转入你的银行账户
  • 缺少转账时机控制,应在支付成功后再触发转账,避免支付失败时的无效操作

正确实现方式

步骤1:创建PaymentIntent时指定手续费与首个卖家转账

创建PaymentIntent时,通过application_fee_amount设置平台手续费,同时用transfer_data关联第一个卖家的转账,剩余卖家后续通过source_transaction关联同一Charge:

// 创建PaymentIntent,总金额100USD(单位为分)
const paymentIntent = await stripe.paymentIntents.create({
  amount: 10000,
  currency: 'usd',
  payment_method_types: ["card"],
  application_fee_amount: 2000, // 平台直接收取20USD手续费,自动进入你的平台账户
  transfer_data: {
    destination: "example1", // 第一个卖家的Stripe关联账户ID
    amount: 4000 // 打给第一个卖家40USD
  }
});

步骤2:支付成功后给第二个卖家转账

需在PaymentIntent状态变为succeeded后,获取对应Charge,再用source_transaction给第二个卖家转账(建议通过Webhook监听事件,避免同步调用的网络风险):

// 确认PaymentIntent支付成功
if (paymentIntent.status === 'succeeded') {
  // 获取本次支付对应的Charge
  const charges = await stripe.charges.list({
    payment_intent: paymentIntent.id,
  });
  const charge = charges.data[0];

  // 给第二个卖家转账
  await stripe.transfers.create({
    amount: 4000, // 打给第二个卖家40USD
    currency: 'usd',
    destination: "example2", // 第二个卖家的Stripe关联账户ID
    source_transaction: charge.id, // 关联本次支付的Charge,用买家支付资金转账,不占用平台余额
  });
}

关键说明

  • application_fee_amount会在支付成功后自动从总金额中扣除,直接进入你的平台Stripe账户,后续可设置自动提现到银行账户,无需手动操作
  • 用source_transaction发起的转账,资金直接来自买家的信用卡支付,不会动用你的平台账户余额,无需预充资金
  • 务必通过Webhook监听payment_intent.succeeded事件触发后续转账,避免前端或同步调用的网络问题导致转账失败

内容的提问来源于stack exchange,提问作者jmecs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:24:46