> when a source is charged, any unused bitcoin received in excess will be returned to the customer automatically
Wait, what?!
That seems like a pretty big flaw. Incoming transactions to a platform provider like Coinbase go to addresses that belong the the wallets of individuals. Once confirmed, they're then typically consolidated into shared wallets owned by the service, most of which should be offline.
When the customer send Bitcoin outside the platform, the actual address from which the coins are sent is arbitrary - it's just whichever storage wallet is currently hot. If, as a recipient, you send money back to the originating address, there is no way to figure out for certain which wallet on the platform it should go to. The money isn't "lost" - it's incorporated back into the hot wallet - but it's not routable to a customer within the platform.
In short, this seems like Stripe's fault. They should be assume that an overspend should be sent back to the address from which it came. There are all kinds of reasons this is a bad practice.
We do not send funds back to the originating address but instead allow merchants to programmatically supply a refund address or alternatively handle this part for them by contacting the customer over email to provide a refund address to send the over-payments to.
Hope that clarifies this particular point.
Additionally, to compute over-payments, we rely on Coinbase notifying us of the amounts received on a receiver bitcoin address. In that instance Coinbase erroneously notified us that they received BTC .00231463 (~$5 at the time) instead of BTC 0.1154481, leading to our overpayments logic to not be triggered.
We're investigating with Coinbase on what happened on their end and we'll make sure that the root cause gets fixed.
Does Coinbase really use the same hot wallet for multiple users? Because that is a really bad practice that I thought we had stamped out long ago. You should never send payment to a third party directly from a shared wallet, you must always transfer it to a wallet controlled by the user first. You don't even have to wait for a confirmation, because you're only trusting yourself. Honestly, I expected better from a company with over $100 million in VC funding. It's not like they're some sketchy Russian exchange incorporated in the Cayman Islands.
Wait, what?!
That seems like a pretty big flaw. Incoming transactions to a platform provider like Coinbase go to addresses that belong the the wallets of individuals. Once confirmed, they're then typically consolidated into shared wallets owned by the service, most of which should be offline.
When the customer send Bitcoin outside the platform, the actual address from which the coins are sent is arbitrary - it's just whichever storage wallet is currently hot. If, as a recipient, you send money back to the originating address, there is no way to figure out for certain which wallet on the platform it should go to. The money isn't "lost" - it's incorporated back into the hot wallet - but it's not routable to a customer within the platform.
In short, this seems like Stripe's fault. They should be assume that an overspend should be sent back to the address from which it came. There are all kinds of reasons this is a bad practice.