Related question: https://news.ycombinator.com/item?id=23704861
You can earn quite a bit if you're efficient, though this model is not that scalable beyond that e.g. it's difficult to build an agency / consultancy with full-time billing and very low negotiating overhead. Your role will turn more into that of a manager + salesperson as you hire more people.
Sometimes it's a negotiation tactic to try to squeeze a freebie. Say a company commissions 10 training sessions, which by contract is paid after the 10th. They'll rush through 9 sessions in 2019 and never get around to the 10th one, saying that the previously trained team were no longer around and that the new team need some practice to get up to par.
Chasing and suing clients is simply not profitable, exhausting, time consuming. Writing better contracts is time consuming and often that time is not billable. The trick is to filter clients who won't pay, and basically handle marketing in such a way that you don't get these clients. A lot of it is spotting patterns in bad clients and sometimes refusing someone who could potentially be a profitable client just because they could also potentially be a trouble client.
Late payments are a huge symptom of this.
Another pattern is tire kicking. This is usually bundled with boasting that they are a legitimate business. One guy I know would talk about how he had to move our meeting because he had to meet with his company secretary and a had a meeting with this giant telco. Another one set a meeting to unreasonable times because she had to take an interview with a media outlet, then refused to change it to some other reasonable hour.
Lack of empathy is another, or dumb haggling. These will find ways out of paying you in your contract, and there's plenty of gray area to haggle over.
And then, for apps, watch out for people who don't know why they're doing what they do. They want an app. It has no business purpose. Maybe it collects big data for AI later. They tend to suffer buyer's remorse later and will not pay you.
Unspecified functionality/design:
My clients are often non-technical (not developers) and UI/graphic designers. So there can easily be a lack of understanding and rigorous communication if you don’t take the time to write things down and keep an updated version of that thing as you figure out the unknowns.