I bill monthly and almost always get paid on time. Right now I have only $70 over 30 days and that's at billing over $10,000 per month. One thing I make very clear with every new customer is that the bill is due upon receipt and that I expect to get paid within a week of billing. That seems to help because almost everyone does pay within a week.
I also have at the bottom of all my invoices that there is a 10% late charge for any balances over 30 days.
Service is stopped if any balance is over 30 days unless reasonable arrangments have been made or they have been a long time customer with a good payment record. If paying late becomes something that happens regularly then they are put on a pay as you go program. That means leave a check for me or the lawn doesn't get mowed.
All these things have made things fairly easy for me. I did not have to write off $1 in bad debt last year and only $125 the year before that.