Is there a standard procedure for refunding Bitcoin transactions? I work for an online retailer, and we're currently testing a Coinbase payment implementation for our checkout. One of our big concerns is being able to send a refund in the event that we're unable to ship an item on time, or if a customer cancels an order, or for whatever other reason.

There are a few things that I've managed to find out, but I'm still confused.


Coinbase's API (relevant docs here and here) doesn't seem to have a way for us to find the address of the wallet or account that the payment for an order was sent from.
Even if it did have a "Sender Address" response, this question/answer makes it pretty clear that using that would probably not be a good idea.


So what options do we have for issuing a refund? I can think of at least a few... each has its own downsides though.


If an order can't be delivered on time, contact them and ask for an address to send BTC to. 


We do get contact information (Phone, Email, and Address) when they check out - but we can't perfectly verify it.
We may be stuck in limbo if we can't get in touch with the customer.

At checkout, ask for an address to send any refunds to with a "just in case" note explaining why we're asking for that.


As far as I know, nobody does this.
Some users may have privacy concerns when they see us asking for a wallet address.

Mail a check for dollar value of the transaction to the address provided at checkout.


Again, we do get a customer's address - but we can't verify it to be 100% accurate.
Let's be honest, this really doesn't seem like a good idea at all.



Are there better ways? Is there, universe willing, a standard way of refunding transactions?
As of right now, there is not a standard way to return other than to ask the returnee for an address to which the returner can send. You could ask for them to verify the address by signing some text with its private key, however, users of web wallets are at a disadvantage because not all wallets provide this functionality.

It is too onerous to ask for a return address at the time of sale, because a conscientious user would have to create a new address for each sale's return address. Managing these would grow difficult over time.

Issuing store credit with the option to cash it out via a variety of methods is probably worth consideration, as it prioritizes consumer choice. If I'm ordering from a company from which I order frequently (e.g. Amazon) or I know that I'm going to reorder later, I'll take the store credit and save the management time. Otherwise, I'll cash out the bitcoin and find another vendor who can meet my needs.

Update 21 Feb 2014: Bitpay announced today that Bitpay is now supporting BIP70-73 payment protocol, which includes refund addresses.