I had an OEM commercial refrigeration customer who was "loyal" to me, but only because nobody else would put up with his payment terms and delay tactics. I agreed to give him 60 day terms, then knew he would delay another 30-45 days. So I added 25% to every job I quoted to him to cover the cost of money. Every now and then I lost orders to new competitors who didn't know about him yet, then they would never do work for him again and he would come back. We got into a dance on pricing too so I'd always start 50% high and "let" him work me down 25% for being a "good" customer...
I can't imagine he didn't know what was happening, but he created the game, I just made sure it didn't cost me money (after the first couple of learning experiences). I know it sounds like a lot of trouble, but he actually gave me quite a lot of business over the years and his customers would see my name on the equipment and call me for other work, so I put up with it. But eventually, he went out of business because he did this with all of his suppliers and ran out of them. Toward the end, he wanted me to buy his stainless steel for him, that's where I drew the line.