The answer is in your response. Sometimes you have to pick your battles.. " a piddly $400" just isn't worth fighting for. No matter how little or how much is refunded, the clients perception is not going to change. Besides, the original specs were not met so....give it back and chalk it up to experience. If the client perception won't change, all the more reason to keep at least half the money. I would tell the client he's not getting all the money back because of the lost opportunity cost, or simply an administrative cancellation fee.