cheapskate
A person who is very stingy and hates spending money.
A cheapskate is someone who refuses to spend money even when they should, often in ways that seem petty or unfair to others. While being careful with money is usually wise, a cheapskate takes it too far. They might refuse to chip in for a group gift, leave tiny tips at restaurants, or always find excuses to avoid paying their fair share.
The word has a mildly insulting tone. If your friend calls you thrifty or frugal, that's a compliment about being smart with money. But if someone calls you a cheapskate, they're saying you're being unreasonably stingy in a way that affects other people.
There's an important difference between being a cheapskate and simply not having much money. Someone might skip buying something because they genuinely can't afford it, and that's just being responsible. A cheapskate, though, usually has the money but won't spend it out of extreme unwillingness to part with it. They might have plenty saved up but still try to get others to pay for everything.