I was exploring some solution around your question, i have found a way to do the same.. below are the steps.. have a look and let me know if it works for you..
Solution in short:
1) Run Aged balances job to calculate the credit limit available.
2) Create Collection letter to block the customers having zero credit limit using the advanced filter option.
2) After posting the collection letter, it will set the customer blocked = Invoice. It will stop from creating the sales order at beginning.
Steps:
1) Create Ageing definition (or you can use the existing one)
2) Setup batch job for running Age customer balances.
3) Check the credit limit availability.
4) Navigate to "Create collection letter" and set the advanced filter to get the customers having zero or negative credit limit.
5) To do the filteration: i am sharing the screenshots
6) Setup collection letter sequence with option to Block, it will block the customer blocked = Invoice.

7) Configure the collection letter sequence in Customer posting profile basis different group or as the case may be.
8) Once the batch job is completed.. You can see the collection letter generated for those customers.
9) Set the batch job for auto-posting of collection letter.
10) Validate the status from Customer page:
11) Test by creating a sales order:
We have created three batch jobs with desired filters, you can play around the filters to be more specific about the records.
If this helped, please mark it as "Verified" for others facing the same issue Keep in mind that it is possible to mark more than one answer as verified
Regards,
Neeraj Kumar