We built Volta between April and June 2026, a subscription platform for creators selling access to an audience. It shipped three payment rails - Stripe cards, Telegram Stars and crypto through NOWPayments - and then we retired it in August. The part that took the most code was never taking the money. It was giving it back.
Every rail can undo a sale. None of them undo it the same way, none of them cost the same to do it, and on cards the cost changes by the hour. If you are choosing a rail, the give-it-back path deserves more of your attention than the percentage on the front of the pricing page, because it is where the real money and the real support load live.
Refund, reversal, chargeback: three different events
These three words get used interchangeably. They are not the same transaction and they do not cost the same.
A refund is you sending money back on purpose. You decide, you click, the buyer gets credited.
A reversal is a refund issued so soon after the charge that the network cancels the original instead of crediting a second time. In Stripe's words, "the original charge drops off the customer's statement, and a separate credit isn't issued."[1] The buyer sees the line item vanish rather than a refund appear.
A chargeback is the buyer going to their bank instead of to you. Stripe calls it a dispute and treats the two words as identical. The issuer "immediately reverses the payment," pulling the amount and the network fees, "after which Stripe debits your balance for the payment amount and dispute fee."[2] You find out after the money is already gone.
The difference between the second and the third is mostly time and who moved first.
What a refund keeps, and the hour where it doesn't
Refund a $10 card sale and you do not get back to zero. Stripe's documentation is flat about it: "Stripe's processing fees from the original transaction aren't returned."[1] You paid roughly 2.9% + 30 cents to take the payment,[3] so you are out about $0.59 on a sale you no longer have. At a 5% refund rate that is another third of a percent on your real cost of processing, on top of the headline rate, and it only goes one way.
There is one exception and it is worth building for. A refund issued shortly after the charge goes through as a reversal, and "Stripe doesn't withhold any fees for payment reversals."[1] Same buyer, same $10 back in their account, but the 59 cents stays with you. Stripe does not publish how long that window is, and in our testing it was short - same day, often same hour. So the same refund genuinely costs more on Tuesday than it did on Monday.
We wired our refund button to attempt the reversal path first and fall back to a normal refund, and told support to action refund requests within the hour or batch them for review, never to sit on one for a day. That is not a policy about generosity. It is a policy about which side of the fee window the refund lands on.
What a chargeback costs on a $10 sale
A dispute is a different animal. The buyer contacts their bank, the bank reverses the payment, and Stripe pulls the sale amount plus a $15 dispute received fee from your balance the same day.[3] On a $10 product you are now $25 down before you have read the dispute.
You can challenge it. Countering costs a further $15.[3] If you win, you get both fees back and the sale is reinstated; if you lose, "you don't get this fee back."[3] So the best realistic outcome on a contested $10 dispute is that you spend an hour assembling evidence to recover $10, and the worst is that you are out $40 and the hour.
For anything cheap and digital, the math says accept disputes rather than fight them, and price a dispute rate into the product from the start. Two disputes a month on a $10 item need fifty clean sales just to break even on the fees.
Chargebacks are counted, and winning doesn't uncount them
The per-dispute fee is the small problem. The card networks run monitoring programs that count how many chargebacks you take, and past a threshold they fine you monthly until you bring the rate down. Mastercard's Excessive Chargeback Merchant program starts at 100 disputes and a 1.5% chargeback rate in a single month, with fines beginning in the second consecutive month.[4] Visa's program flags a merchant at a 0.5% ratio.[4]
Two details compound it. Monitoring programs "don't consider dispute outcomes" - they are "more interested in how successfully you prevent disputes than in whether you win them,"[4] so a chargeback you fought and won still counts against your ratio. And early fraud warnings, which are just the issuer flagging a payment as suspect, feed Visa's ratio even though they are not disputes and carry no fee.[4]
A late refund does not clean the record either. Issuers "are required to report possible fraud for a captured payment, even if it gets refunded."[4] The only move that keeps a suspect payment out of the fraud count entirely is catching it before capture and reversing the authorization - which is the same "act fast" instinct as the reversal window, for a different reason.
Stars: free refunds, no chargebacks, one API call
Telegram Stars have no card issuer behind them, which removes the entire category. There is no bank for a buyer to appeal to, so there are no disputes, no $15 fees and no monitoring program.
The refund itself is a single call. Telegram's terms say a bot "is able to return the
Stars to the purchaser in full via the relevant Telegram Bot API method, with no
penalty."[5] That method is refundStarPayment, and the only
thing you have to have done in advance is store the telegram_payment_charge_id from the
SuccessfulPayment when the sale went through.[6] We
refunded a Star payment from inside a bot handler in one line. The card equivalent is a
dashboard, a support ticket and a retained fee.
Two caveats keep this from being a free lunch. The documented method returns the payment "in full" - partial Star refunds are not described, so a half-refund is something you build around rather than call. And Stars can be unavailable "for up to 21 days after their receipt,"[5] so an early refund comes out of a balance you could not have withdrawn yet anyway, and the Stars you are sitting on expire three years out.[5] The refund is clean; the float is still there.
Crypto: there is no undo, so you build the queue
Crypto is the opposite trade. NOWPayments takes 1% to bring the payment in,[7] and then a refund is not a status change, it is a fresh outbound transaction that somebody has to authorise and send. We built an approval queue where an operator reviewed each crypto refund by hand, because there was no honest way to automate sending money to an address with no take-backs.
The blockchain also produces states the other rails do not have. A buyer can pay less than
the invoice; NOWPayments reports that as partially_paid, which is neither success nor
failure, and somebody has to decide what a three-quarters-paid order is worth. A buyer can
overpay, and now you owe a refund nobody asked for. The price you quoted in dollars drifted
against the coin while the buyer found their wallet, so the amount you send back is not the
amount you received. And when NOWPayments told us a payment had been refunded on their
side, our webhook handler deliberately did nothing to the buyer's access - it raised an
alert for a human, because revoking someone's membership on an event whose meaning you
cannot verify is how you lock out a paying customer at 3am.
No chargeback mechanism cuts both ways. You will never be fined for a crypto dispute rate, and a buyer who was genuinely wronged has no recourse through the rail, so whatever trust the transaction needs has to come from somewhere else.
Which rail survives your refund rate
Let the give-it-back path decide this before the percentage does.
If you refund often, Stars are the only rail where that is free, and on cards your job is to catch refunds inside the reversal window so you are not paying the processing fee a second time on every one. Crypto is the worst fit here - every refund is manual work.
If you sell something cheap on cards, one chargeback on a $10 sale removes $25 from your balance the same day and challenging it costs more than the sale. Price a dispute rate in, accept rather than fight, and keep an eye on the 100-dispute, 1.5% line before it becomes a monthly fine.
If you sell subscriptions, Stars are out - they are one-time purchases - so you are on cards and you own dunning, disputes and the monitoring math. The most common dispute on a subscription is a renewal the buyer forgot about, which makes an in-app cancel button and a pre-renewal email chargeback-prevention features, not niceties.[4]
Across all of them, the reversal window is the cheapest lever you have and it closes fast. Wire your refund action to try the reversal first, and treat "we'll get to it tomorrow" as the expensive choice it is.
Disclosure. The reversal-first refund logic, the within-the-hour support rule, the
crypto refund approval queue, the partially_paid handling and the no-auto-revoke webhook
rule are all from our own build of Volta rather than anyone's documentation, so they carry
no citation below. Volta was our product, it is retired, and none of this is a
recommendation to use it. Every external figure is cited to the provider's own terms or
pricing page.
