Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stripe account capabilities set but still throws an error

I did create Stripe Account using the following parameters:

stripe.accounts.create({
      type: 'custom',
      business_type: 'individual',
      individual: {
        email: user.email,
        first_name: user.firstName,
        last_name: user.lastName
      },
      requested_capabilities: ['card_payments', 'transfers'],
      email: user.email,
      tos_acceptance: {
        date: Math.floor(Date.now() / 1000),
        ip: user.ip
      }
      })

But if I am trying to create transfer, I get the following error:

Your destination account needs to have at least one of the following capabilities enabled: transfers, legacy_payments

This is how I create the transfer:

stripe.transfers.create({amount, currency, destination, transfer_group})

It seems weird because the required capabilities are set as you can see. I do not know how to debug further. Any help is appreciated!

like image 887
Tarvo Mäesepp Avatar asked Feb 21 '20 10:02

Tarvo Mäesepp


People also ask

How do I activate capabilities on Stripe?

Create an account with capabilities Capabilities are set on the Account object. To find the list of available capabilities, use the list_capabilities endpoint. Account creation differs by account type. For more details on this, see Standard accounts, Express accounts, and Custom accounts.

Why is my Stripe account restricted?

Restricted means the account has payouts or payments disabled. Additional information usually needs to be collected to enable these accounts.

How do I know if my Stripe is active?

With standalone accounts you'd check details_submitted on the Account object. If it's true it means the account has been activated while if it's false it means it's been created but not activated yet.

How do I reconnect my Stripe?

1.) Go to Event > Payment Processor. 2.) Click on Stripe, then choose Reconnect/Get Started using Stripe.


1 Answers

The reason the transfer is failing is that onboarding is not complete - there are requirements for the "transfer" capability to be enabled. When creating the account you have only "requested" the correct capabilities but they are not yet granted.

Simply fetch the account based on the id and see what fields are are required and provide them - either on your end by updating the account through the API or in the Stripe web admin if you only want to quickly provide everything so you can test. (The stripe web admin has all the fields required for full onboarding of an account)

Once the transfers capability requirements are fulfilled, it will be granted and it will turn green. After that transfers will be allowed. (Similar thing goes for the "card payments" capability. Regarding the "legacy" capability you should not use that anymore since it will become deprecated in March 31 2020)

(you might even need to supply an external bank account, you can get that here)

like image 170
Roberto Avatar answered Sep 25 '22 05:09

Roberto