We had a similar issue with my daughter last year (6 at that time) - she came home with some money one of her friends had given her. It was just change and less than a dollar as I recall, but I just didn't think it was a great idea. Kids do like to share and trade, which I think is probably OK for things like snacks or stickers, etc. I talked to my daughter about the fact that we don't want our friends to think that we only like them because they give us things, and that even though it was only a small amount of money something like that could get out of hand easily. At first she didn't want to talk much about it either, but I don't think she knew on her own that it wasn't a great thing - she quickly got that I wasn't thrilled with it though, and so I think she felt bad. I just stressed that I know she didn't tell her friend she had to give her money and that it was a nice gesture on her friend's part, but that it just wasn't a good idea. I also did contact the other mom, just to let her know the money would be coming back and she totally understood (she hadn't even known about the money).
The good thing in our case was that it opened up a discussion about what a real friend is, how we treat our friends, etc. I stressed to my daughter that she hadn't done anything wrong and helped her understand how to graciously decline similar offers in the future. We also have had kids in the class who say I'll only be your friend if you do what I want, and we just apply the same principles there - real friends like us for who we are and how we treat them, not what we give them or do for them, etc.
It can be a sticky situation, but go with your gut and just try to help your son understand where you're coming from. Maybe turn the situation around and see how he would feel if he were on the other side of it. Good luck.