You have to be really blunt with people like that.
I have a friend just like that. All through University she forgot her purse or just didn't reach for it. We all somehow assumed she was even more skint than the rest of us, and paid for everything, but when we all left and she got a good job and still didn't pay, it was clear it was just a character flaw.
It did seem bizarre as she's otherwise good company.
I decided that ultimately I'd rather not be friends with her than have every occasion marred by her being so tight. The unfairness of it really bothered me, and my DH was refusing to see her after she asked to bring a +1 to our wedding then didn't even bring a card, let alone a gift.
I was really blunt and texted, when she suggested meeting up. 'I'd like to meet up for lunch but I paid the last three times. It's your turn.'
She wasn't embarrassed by this at all - just went, oh have you? Okay then...
Then at the restaurant she went 'Oh, we're going halves aren't we?'
'I said, 'No. You're paying. I got the last three. Don't be a sponger.'
And she paid.
We're alt 30's now and we're still friends. She's famously tight, as is the bloke she married, and lots of people let them get away with it then moan behind their back, or phase out friendships with them. I insist on them paying every other time, or if I invite them over I ask specifically for something I'd like them to bring, and they do it.