Insufficient fund in stripe account

17,518

Solution 1

Your Stripe account only has a HKD bank account, and thus it only has a HKD balance. You can't create transfers in USD because your account doesn't have a USD balance.

In order for your account to have a USD balance, you'd need to link a USD bank account to it. However, at this time, HK Stripe accounts can only have HKD bank accounts, as noted here.

Solution 2

You can do one more thing to add funds to your test account.

Just login into your stripe account and go to Payments and click on Create your first payment or new payment button.
When you click on it you can see a popup window that opens, here you can fill your amount.
Just remember to use card number: 4000000000000077
and click on Create payment button.

Your payment will be added directly (bypassing the pending state) and you can make transfers with your stripe testing account.

Solution 3

\Stripe\Stripe::setApiKey("sk_test_vKA2W1UsnAfPfDsA1dfdK04n3dfr6");

\Stripe\Charge::create(array(
    'currency' => 'USD',
    'amount'   => 10000,
    'card'     => 4000000000000077
));

You can use this code and add balance for make transfer operation for your test account.

Solution 4

If you are getting Insufficient funds error then you can use the below card number to transfer the payment in Test mode. Card Number : 4000000000000077

Share:
17,518
Pathik Vejani
Author by

Pathik Vejani

successful achiever.

Updated on June 02, 2022

Comments

  • Pathik Vejani
    Pathik Vejani about 2 years

    My stripe account has following balance in test mode:

    $958,395.72
    Available balance
    
    $2,659.48
    Pending balance
    
    $3,010,474.35
    Total volume (HKD)
    

    This balance is in HKD.
    Now I have to transfer money in USD.
    If I try to transfer USD $4.25 then it gives me following error:

    Type: Stripe\Error\InvalidRequest

    Message: Insufficient funds in Stripe account. In test mode, you can add funds to your available balance (bypassing your pending balance) by creating a charge with 4000 0000 0000 0077 as the card number. You can use the the /v1/balance endpoint to view your Stripe balance (for more details, see stripe.com/docs/api#balance).

    Transfer Code:

    $check_balnace = \Stripe\Balance::retrieve();
    $balanceArr = $check_balnace->__toArray(true);
    $available_amount = $balanceArr['available']['0']['amount'];
    echo $available_amount; // $958,395.72
    $amount = 4.25*100;
    $amount = 425;
    \Stripe\Transfer::create(array("amount" => $amount, "currency" => "usd", "destination" => 'stripr_uid', "description" => 'test'));
    

    Why this error is occurring even I have enough balance?

  • Sujal Patel
    Sujal Patel over 6 years
    hey, Manish, I'm trying but still, show zero balance and in the transfer, API shows insufficient balance error.
  • lasec0203
    lasec0203 almost 6 years
    A link to the docs showing why 4000000000000077 is the magic card number would be helpful
  • Mahesh Yadav
    Mahesh Yadav almost 6 years
    Showing error as below No Such Token:4000000000000077
  • Adrian
    Adrian over 5 years
    Here is the doc: stripe.com/docs/testing Scroll down to this part: Testing for specific responses and errors
  • sequielo
    sequielo over 4 years
    You must use the associated card token, not the card number. For example, that card has a token tok_bypassPending. So you must use 'source' => 'tok_bypassPending' Source: stripe.com/docs/testing#cards-responses
  • TharakaNirmana
    TharakaNirmana over 2 years
    This solution worked for me in the testing environment. What happens in the live environment?