All posts
Guides··7 min read

Stripe payout failed: what each failure code means and how to get your money back

Your Stripe Dashboard says a payout failed, or you got the "payout failed" email. Here is what the failure code means, where the money is now, and the exact steps to get the next payout through.

Founder, OneSol

Coins and a pen on a desk

You open the Stripe Dashboard and a payout that should be in your bank is marked "Failed". Or an email arrives saying your payout failed, sometimes days after the Dashboard already showed it as paid. Your customers paid, Stripe sent the money, and it still never reached your account.

A failed payout almost always comes down to one of three things: the bank account details on file are wrong, the account itself can no longer receive money (closed, frozen, restricted or not set up for Stripe's debits), or the bank cannot accept the payout for another reason, such as its currency. Stripe tells you which one with a failure code, and the fix depends on it.

First: where your money is right now

Stripe's payouts documentation is clear on this: if your bank account cannot receive a payout for any reason, your bank returns the funds to Stripe. It can take up to 5 additional business days for the bank to return the payout and inform Stripe that it failed. When that happens you are notified by email and in the Dashboard.

Stripe's API reference adds that the funds from a failed payout are returned to your Stripe balance, through a balance transaction that reverses the original payout. It also explains a confusing pattern: a payout's status normally moves from pending to in transit to paid, but some payouts that fail initially show as paid and only change to failed within 5 business days. So a payout marked paid that never arrived is not necessarily lost; it may simply not have bounced back yet.

Tell which case you're in: the failure codes

Open the failed payout in the Dashboard to see the reason. These are the failure codes Stripe documents in its Payout object reference, with Stripe's own description of each:

  • account_closed: the bank account has been closed.
  • no_account: the bank account details on file are probably incorrect; no bank account could be located with those details.
  • invalid_account_number: the routing number seems correct, but the account number is invalid.
  • invalid_account_number_length: your bank says the account number is too long.
  • account_frozen: the bank account has been frozen.
  • bank_account_restricted: the account has restrictions on the type or number of payouts allowed, which normally means it is a savings or other non-checking account.
  • bank_account_unusable: the bank notified Stripe that the account is unusable.
  • bank_ownership_changed: the account is no longer valid because its branch has changed ownership.
  • debit_not_authorized: debit transactions are not approved on the account. Stripe requires bank accounts to be set up for both credit and debit payouts.
  • incorrect_account_holder_name, incorrect_account_holder_address, incorrect_account_holder_tax_id, incorrect_account_type: your bank says that piece of information on file is wrong. Account type is usually checking or savings.
  • invalid_currency: the bank could not process the payout because of its currency, probably because the account cannot accept that currency.
  • declined: the bank declined the transfer; Stripe says to contact the bank before retrying.
  • could_not_process: the bank could not process this payout.
  • insufficient_funds: your Stripe account did not have enough funds to cover the payout.
  • unsupported_card: the bank no longer supports payouts to this debit card.

Wrong details: no_account, invalid_account_number, incorrect holder name or type

These codes mean the account you typed in either does not exist or does not match what your bank has. The fix is to re-enter the details. Stripe's docs say you can add a bank account or update an existing one in Payout settings in the Dashboard: click Edit next to the bank account. The bank account currency must match the currency in your payout settings.

Once you have re-entered correct details, Stripe reattempts the payout at the next scheduled payout interval. Stripe's help article on bank-issued notifications of change adds an important detail: if you are on an automatic payout schedule, Stripe resends the payout automatically after the bank details are updated; if you use manual payouts, you need to retry the payout yourself through the Dashboard or the API.

Take care while typing. Stripe warns that it sends funds using the information you enter, and if you mistype an account or routing number it might send payouts to the wrong bank account and might not be able to recover the funds. Fees or losses from incorrect details are your responsibility.

The account can't take money: account_closed, account_frozen, restricted or unusable

Here the details are right, but the account itself is the problem. If you closed the account or moved banks, add the new account in Payout settings. If you did not close it, the conversation is with your bank, not Stripe: ask why the account is frozen or restricted. Stripe says a bank_account_restricted code normally indicates a savings or other non-checking account, so check which type of account you added. A debit_not_authorized code means your bank blocks debits from Stripe, and Stripe needs the account to accept both credits and debits, because it may need to debit your account if your Stripe balance goes negative.

After you sort things out with your bank, Stripe's docs say you can reactivate payouts by clicking Resume Payouts. If you click Resume Payouts and neither a payout nor a failure notice arrives within a reasonable time, contact Stripe Support.

"Your bank notified us that they could not process this payout"

This message, and the could_not_process code, is the vaguest one. Stripe's bank accounts and payouts FAQ says the email for it is titled "Action required to resume payouts from your Stripe balance", and that it indicates your bank account may have been denylisted because of an underlying issue: the account was closed, frozen or restricted; the details are invalid or incorrect; or the account is unusable or has not authorised debits from Stripe.

Stripe's steps are to confirm that the bank account details on your Stripe account are correct, then work with your bank to make sure the account is active and that the bank has allowlisted Stripe's ACH IDs. If you still cannot pay out to that account, contact Stripe Support with one of these documents:

  • A letter from your bank stating the account is still active, showing the full routing number, account number and account holder name.
  • A voided cheque showing the full routing number, account number and account holder name.
  • A bank statement showing recent debit activity, including the full routing number.
  • A recent screenshot of your online banking portal showing the full routing number.
  • Written confirmation from your bank that Stripe's ACH ID was added to the allowlist.

Changing your bank account won't redirect a payout already on its way

A common assumption is that updating your bank details pulls back a payout that is already moving. Stripe's help centre says otherwise: if a payout is already in transit, it is paid to the previous bank account, and changes only apply to the next payout. If the old account is closed, that payout will fail and come back to your balance, which takes up to the 5 business days described above, and then go out again to the new account on the next attempt.

Stripe's FAQ for late payouts gives one more rule of thumb: if a payout is less than 5 business days late, the funds have left Stripe and your bank is still processing them. If it is more than 5 business days late, contact your bank with the payout details, including the trace ID.

Failed payouts are not the same as paused payouts

The two look alike from the outside (no money in the bank) but they are different problems. A failed payout is one specific transfer that your bank rejected and sent back. Paused payouts means Stripe is not sending any money out. Stripe's help centre says that when payouts are paused you cannot transfer funds to your bank account, debit card or any other external destination, although you can still receive payments.

Stripe gives these reasons for a pause: it is missing required information about your tax status, or you have other outstanding account requirements. Separately, when Stripe withdraws money from your bank to cover a negative balance, upcoming payouts in that currency are paused until the withdrawal completes, and the Dashboard shows a banner saying a withdrawal from your bank account is pending. A pause is fixed by completing what Stripe asks for in the Dashboard (or waiting for the withdrawal to clear); a failure is fixed by correcting the bank account or sorting it out with your bank.

If you get paid through a platform (Stripe Express)

If you sell through a marketplace or platform and log in to Stripe Express rather than the full Dashboard, the steps are slightly different. Stripe's Express help says to log in to the Stripe Express dashboard, go to Settings, and scroll down to Payout details under the Business details tab. If your account has already received a successful payout, you need your previous bank account details and a 6-digit SMS verification code to make changes. Stripe's Express help also notes that funds from a failed payout can appear missing for a few business days while they return to Stripe.

Where OneSol fits

OneSol doesn't move your money: on the Pro plan you connect your own Stripe, PayPal, Razorpay or Square account, so payouts stay between you, the payment provider and your bank. If a Stripe payout fails, the fix is always in your own Stripe Dashboard and with your bank, using the steps above. Alongside payments, OneSol also gives you a free page with one link for all your profiles, forms that don't make people sign in, and digital business cards with a QR code.

Want a second way to get paid?Sell from your OneSol page with your own Stripe, PayPal, Razorpay or Square account, so one processor's hold doesn't stop every sale. Payments come with Pro.Start free →

Still stuck? More fixes

Frequently asked questions

What happens to my money when a Stripe payout fails?

Your bank sends the funds back to Stripe and they are returned to your Stripe balance. Stripe's docs say it can take up to 5 additional business days for the bank to return the payout and tell Stripe it failed. You are notified by email and in the Dashboard, along with a failure code that explains why.

Why did my Stripe payout show as paid and then change to failed?

Stripe's API reference says some payouts that fail can initially show as paid and then change to failed within 5 business days. The money left Stripe, your bank rejected it, and the status updated once the bank reported the return.

How do I fix a failed Stripe payout?

Check the failure code, then re-enter your bank account details in Payout settings in the Stripe Dashboard (click Edit next to the bank account). Stripe reattempts the payout at the next scheduled payout interval. If you use manual payouts, you need to retry the payout yourself from the Dashboard or the API. If your details are correct, contact your bank, then click Resume Payouts.

What does the Stripe failure code could_not_process mean?

Stripe defines could_not_process as "The bank could not process this payout." Stripe's help centre says this can mean the bank account was denylisted because it was closed, frozen or restricted, the details were wrong, or the account has not authorised debits from Stripe. Confirm the details with your bank; if it keeps failing, Stripe Support may ask for a bank letter, voided cheque or statement.

Is a failed payout the same as paused payouts on Stripe?

No. A failed payout means your bank could not receive the money and returned it to Stripe. Paused payouts means Stripe is not sending money out at all, usually because required information such as tax details or other account requirements is outstanding, or because a negative balance is being withdrawn. You can still receive payments while payouts are paused.

If I change my bank account, will a payout already on the way go to the new one?

No. Stripe's help centre says a payout that is already in transit is paid to the previous bank account, and bank detail changes only apply to the next payout.

Written by

Founder, OneSol · Karachi, Pakistan

Hasnain Saleem is the founder of OneSol. He is a full-stack developer based in Karachi, Pakistan, and runs the web studio Web Newbiz, where he has spent more than four years building websites, online stores and booking systems for small businesses — more than twenty client sites in Laravel, WordPress and WooCommerce.

Run all of this from one link.

Free to start — no card required.