调用stripe.payouts.create报错No such external account求助
Stripe Payout 创建报错:No such external account 解决方案
问题原因
你遇到的核心问题是调用payouts.create时没有指定正确的账户上下文:
- 你通过
stripe.accounts.listExternalAccounts(userSensitiveData.stripe_account_id.S!)查询到的银行账户,属于指定的Connect托管账户(acct_1QDbLpEAwtXI7T4Q)。 - 但调用
payouts.create时,默认使用的是你的平台主账户,主账户中不存在这个ba_xxx银行账户,因此报错“找不到外部账户”。
解决方案
1. 指定Connect账户上下文调用Payout接口
修改payouts.create的调用代码,添加stripeAccount参数,指定银行账户所属的托管账户ID:
const payout = await stripe.payouts.create({ amount: combined[i].amount * 100, // 最小货币单位金额 currency: 'jpy', destination: userSensitiveData.stripe_bank_id.S, source_type: 'bank_account' }, { stripeAccount: userSensitiveData.stripe_account_id.S! // 关键:指定托管账户ID });
这样Stripe会在你指定的托管账户下查找对应的银行账户,而不是在平台主账户中查找。
2. 确认银行账户归属与状态
- 核对
destination的银行账户ID(ba_1QDbLrEAwtXI7T4QpEC3MaB0),确保它确实属于stripeAccount指定的托管账户(从listExternalAccounts返回的account字段可以确认归属)。 - 检查银行账户的
status字段:当前你的账户状态是new,需要确保账户已完成Stripe要求的所有验证步骤(查看返回结果中的requirements字段,处理未完成的验证项),否则后续提现可能会触发其他错误。
关于外部账户的疑问
你通过listExternalAccounts获取的银行账户属于外部账户(External Account),Stripe中的外部账户就是指绑定到账户的银行账户、支付卡片等第三方收款渠道。报错的原因不是账户类型问题,而是调用Payout接口时的账户上下文错误。
内容的提问来源于stack exchange,提问作者CTU
相关产品推荐
相关产品推荐

