无法为美国USD币种Stripe Connect账户添加澳大利亚AUD银行账户
问题背景
初始创建的Custom Connect账户为美国(US)地区、美元(USD)币种,已绑定美国美元银行账户。测试"no_account"转账失败场景符合预期,现在尝试添加澳大利亚(AU)地区、澳元(AUD)币种的外部银行账户时触发错误。
错误信息
后端报错:
"Invalid currency: aud. You can use these currencies for transfers for an account in US: usd"
尝试操作
前端通过Stripe JS生成澳大利亚银行账户的token,传入后端调用ExternalAccountService.create()方法执行添加操作。
代码示例
前端代码
// client side const accountParams = { account_number: '000123456', country: 'AU', currency: 'aud', routing_number: '110000' }; this.stripeService.createToken('bank_account', accountParams).subscribe((result) => { if (result.token) { if (accountType === 'bank_account') { this.updateExternalAccount(result.token.id); } else { this.updateAccount(result.token.id, false); } } else if (result.error) { this.alertService.danger(result.error.message); this.loadingAccount = false; } }, error => { console.log(error); });
后端代码
// server side try { StripeConfiguration.ApiKey = _config["StripeSettings:SecretKey"]; var options = new ExternalAccountCreateOptions(); options.ExternalAccount = updateStripeDto.Token; options.DefaultForCurrency = true; var service = new ExternalAccountService(); var newExternalAccount = await service.CreateAsync(stripeAccount.AccountId, options); } catch (StripeException ex) { _logger.LogWarning(ex, ex.StripeError.Message); return BadRequest(new ApiResponse(400, "Error creating external account. " + ex.StripeError.Message)); }
解决方案
Stripe Custom Connect账户的转账币种限制由账户所属地区决定,美国地区账户默认仅支持美元(USD)作为转账币种,无法直接添加其他币种的外部账户用于转账。可通过以下方式解决:
开启多币种转账功能
美国地区的Connect账户可在Stripe后台申请开启多币种支付功能,完成账户验证后,即可接收多币种资金并转账到对应币种的外部账户,此时添加澳元银行账户即可正常使用。移除默认币种设置(仅关联账户,不用于转账)
若仅需将澳元账户关联到Connect账户(不用于接收转账),需删除后端代码中的options.DefaultForCurrency = true配置。但此设置下该澳元账户无法用于接收转账,仅作为账户关联的外部账户存在。币种转换后转账
若无法开启多币种功能,可先将资金转换为美元,再转账到用户的美元账户。此方式会产生币种转换手续费,且用户需持有美元账户。
注意:添加澳大利亚银行账户时,需确保使用有效的BSB号码(示例中的110000为Stripe测试用BSB),符合当地账户验证要求。
内容的提问来源于stack exchange,提问作者chuckd

