I have clients that are huge pains in the ass, but if they overpaid me, I'd send them back the difference.
Everyone gets all butt-hurt these days for some reason. The guy was a dick, so what? You should have told him to hit the pavement, but instead you took his payment knowing that the deal was $3000.
The original agreement was for $3000 in cash. You and you alone decided to accept the check so that's a moot point. The agreement of $3,000 was never changed so why not give it back?