Wow, I certainlyunderstand your pain, and overall I think you are getting some good advice. However, with that said, I am manage a large online store (Local business, not a chain) and also a much smaller businesses shipping and online ordering, along with my own company. I have a different take on this situation.
First, did you offer the customer a written policy (on a website, via a cataolg or other means) to cover this situation?
Second, I had a customer who was VERY unreasonable once, and demanding things we could not, or rather should not have done. My employees took the hardline statement that we were sticking with the store policies, I gave the customer what they wanted. Since that time they have spent over $60,000 with us, and have never been a pain again.
This is my advice, remember that customer service is a dead art in America, and take the aproach that you are the customer and they are telling the truth, then think, what would I expect of this person that sold me this item if it was me?
Too often I see people in these situations demand something of the person they purchased something from, then deny it to the person they sell something to. (I am not saying this is you, or anyone here)
You are certainly not responcible for this, you did live up to your end of the bargain. But small business gets most of its money from word of mouth. Is this a teacher who does this every year, a farmer who will order regulary, or a one time deal from someone who will not appreciate this and help you find more business?
I guess what I am saying is this, we all spend time and effort (Which equates to money, and sometimes we even spend money) to drum up new business. Sometimes a refund should be written off, even in taxes, as advertising and it helps to grow our businesses.
I am not thinking you owe them anything, and not even suggesting you give away the bank, it may be too late to do anything at this point also, just wanting to give everyone here a slightly different perspective, a way to think outside the box. I may have offered a partial refund, or contacted the post office for the customer to demand they pay the customer. We ALWAYS ship our items insured even if the customer doesnt want us to, then we can make the shipper pay for these errors and WE look good to the customer, and gain their business and confidence. Remember, a bad experience, even if it is someone elses fault, costs us money.
Thanks for reading this, and good luck in the future no matter how this all plays out. (And in the very least set up a web page you can direct future customers to with a written policy, this will help you a lot and can be done for free).
Chris