15/03/2026
When I built a custom content system for a media company, our payment terms were simple:
• 30% upfront
• 40% after the beta version
• Final 30% within two weeks of launch
But from the start, the client was difficult.
They delayed payments, kept changing requirements, and constantly pushed deadlines.
So before delivering the beta version, I quietly added a license check to the system.
Every week, the software would contact my server.
If everything was fine, it continued running.
But if the server returned one specific response…
The entire system would lock with a message:
“License expired. Renew your subscription.”
Two weeks after launch, the final payment still hadn’t arrived.
Then three weeks passed.
So I flipped the switch.
Suddenly their entire system stopped working.
Within hours, the CEO was calling me in a panic.
The next morning?
Full payment arrived… plus a 50% emergency fee.
Sometimes the best way to deal with bad clients is to build a reminder directly into the code.