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.