如何将Stripe Connect退款转为客户账户信用用于后续消费?
实现Stripe Connect目的地费用退款转为客户信用的方案
不要直接调用退款(Refund)和撤销转账(Transfer Reversal),这会让资金退回客户银行账户。你可以通过**客户余额(Customer Balance)**功能实现信用留存,同时调整服务商的转账金额,具体步骤如下:
1. 给客户添加账户余额信用
调用Stripe API创建客户余额交易,将退款金额转为客户的平台信用:
stripe.Customer.create_balance_transaction( "cus_XXXXXX", # 客户ID amount=1000, # 退款金额,单位为最小货币单位(比如10美元=1000美分) type="credit", description="退款信用 - 用于未来平台消费" )
这会直接在客户的Stripe账户余额中增加对应额度,资金不会退回客户银行。
2. 调整服务商的转账金额
根据转账状态处理:
- 转账未完成(pending):更新转账金额,扣除退款部分:
stripe.Transfer.update( "tr_XXXXXX", # 原转账ID amount=原转账金额 - 退款金额 ) - 转账已完成:通过反向转账收回对应资金,或从服务商未来收入中抵扣:
- 反向转账(只针对退款部分):
stripe.Transfer.create_reversal( "tr_XXXXXX", amount=退款金额 ) - 后续抵扣:在服务商下一次收款时,通过应用费用(Application Fee)扣除对应金额,避免重复转账。
- 反向转账(只针对退款部分):
3. 客户后续消费时使用余额
当客户进行未来消费时,创建付款时指定使用客户余额抵扣:
stripe.PaymentIntent.create( amount=2000, currency="usd", customer="cus_XXXXXX", payment_method_types=["customer_balance"], confirm=True )
也可以结合其他支付方式,让余额抵扣部分金额,剩余用银行卡支付。
注意事项
- 在你的平台系统中同步记录这笔信用的明细(来源、有效期、适用范围),和Stripe的余额交易保持一致。
- 确保服务商的资金调整准确,避免出现资金纠纷。
- 客户余额仅可用于向你的平台付款,完全符合“未来消费”的需求。
内容的提问来源于stack exchange,提问作者Houssam
相关产品推荐
相关产品推荐

