How long you can still reverse a transfer
A transfer reversal depends on funds being reachable, not on a deadline. What actually determines whether one succeeds, and what to do when it will not.
What a reversal actually needs
People ask for the deadline. There is not really one — there is a balance.
A transfer reversal moves funds out of the connected account's Stripe balance and back to the platform. It is a real movement of real money, which means the question is never "has the window expired" but "is the money still reachable". Those behave very differently: a deadline is a cliff you can plan around, and a balance is a slope that gets worse quietly.
await stripe.transfers.createReversal(transferId, {
amount: 73100,
refund_application_fee: false,
});
That call succeeds if the account can cover it. If it cannot, you are into the cases below.
One clarification worth making early, because it changes the arithmetic. The amount at stake is the transfer, not the charge. On a destination charge the connected account received the charge amount minus your application fee — your fee never left your balance. Treating the full charge as recoverable overstates what you can get back by exactly your own revenue, and if you feed that number into an automated reversal it will simply fail, because you cannot reverse more than was transferred.
Three things that close the door
The funds have been paid out
The most common one, and the one on a schedule you control. Connected accounts pay out on a cadence — daily, weekly, manually — and once funds have left Stripe for a bank account they are no longer in the balance a reversal draws from.
This is why payout timing is a risk decision as much as a seller-experience decision. Daily payouts are popular with sellers and they shorten your recovery window to hours.
The account balance is already negative
If the account has had refunds, disputes or earlier reversals against a thin balance, it may already be underwater. A further reversal is still permitted — it drives the balance further negative — but you have now converted a recovery into a receivable that depends on the seller continuing to trade.
The account is restricted, closed, or gone
A seller who has been offboarded, whose account was restricted for compliance reasons, or who simply stopped selling is the case where recovery is genuinely finished. There is no balance and no future earnings to net against.
On the day of the refund the funds are usually there. Three months later they frequently are not.
What to do with the ones you cannot reverse
Net against future transfers
Reduce what you send on the seller's next sale by the outstanding amount. This avoids a negative balance, it is gentler than a clawback, and it is generally easier to explain — provided your seller agreement allows it and the seller has been told before it happens rather than after.
const owed = 73100;
const nextPayable = grossForSale - platformFee;
const adjusted = Math.max(0, nextPayable - Math.min(owed, nextPayable));
Keep the outstanding balance in your own ledger, not in your head, and settle it in visible increments.
Write it off, and fix the code first
For small amounts, dormant accounts and anything old enough that the seller would reasonably dispute it, the answer is to write it off. That is not defeat — it is the correct treatment of an uncollectable receivable, and it is cheaper than the support conversation.
The part that matters is the sequencing: fix the refund path before you work through the backlog. Recovering historical losses while continuing to generate new ones is the most common way this project stalls, because the backlog stops shrinking and everyone loses interest.
Prioritise by recoverability, not by size
The instinct is to start with the biggest numbers. The better order is by how likely the money is to still be there — recent transfers to active sellers with healthy balances, first. A large loss against a closed account is a write-off whatever order you reach it in; a medium one against an active seller is money you will actually collect.
Common questions
Is there a hard time limit from Stripe?
There are practical limits on reversing very old transfers, but the constraint you will hit long before any of them is the balance. Treat "can the account cover it" as the operative question and you will be right almost every time.
Does reversing a transfer also refund my application fee?
Only if you ask. The reversal and the fee refund are separate decisions, and on a dispute in particular you usually do not want to refund your own fee reflexively — you have already been debited the disputed amount and a dispute fee, and giving back your revenue on top compounds the loss rather than correcting it.
Should I reverse when a dispute is opened, or wait until it is lost?
Reversing at charge.dispute.created is far more likely to succeed, because the funds are more likely to still be in the account than they will be weeks later when the dispute closes. The cost is that you may reverse on a dispute you go on to win, and have to make the seller whole again. Which way that trade falls depends on your win rate and your relationship with the seller — but it should be a decision you have made, rather than one that defaults to waiting.
FeeGuard is an independent product and is not affiliated with, endorsed by, or sponsored by Stripe, Inc. "Stripe" and "Stripe Connect" are trademarks of Stripe, Inc., referenced descriptively.