Pick one of the firm-but-smiley lines in this thread, and decide that’s what you’ll do. Have a chat to your other colleague to clue her in. That way you’re not having a bitch about CF, you’re kindly telling your other friend out of courtesy that you’ll be following a certain strategy from now on with these nights out. Find an approach that she can join in on, rather than just ‘paying your own’ and leaving her in an awkward position.
Be prepared to both walk away from the social event if CF holds her ground. Realise that this may take some time- she’s pretty hard-skinned. Personally I’d go for a short-sharp-shock approach and be done with it, but that’s obviously not your style!
I’d likely bring it up as soon as she suggests going out. I’d say ‘Jenny, it sounds fun, but I feel I must tell you I don’t think many people will say yes. You’re getting a reputation for not paying your share, and not paying people back afterwards. It’s been noticed.’ No one is going to blame you, they’ll think you honest and actually kind.
If she flies off the handle, you look shocked and say ‘Wow, defensive much? This reaction only makes it look even more like you knew what you were doing. I was kinda holding out some hope you’d done it unconsciously and would be gagging to apologise and rectify it. My mistake.’ Trust me, your colleagues will back you. There’s no chance at all they’ve not noticed her CFery.