Well, This can be achieved with the Liscensed Bucket system , which is used in order to identify the DND numbers and fail them on the application level itself and not to reach the operator in order to allow admin to save the credits for DND numbers which are anyway going to fail from the operator end. The status for the failure of messages can be designed in the Bucket Logic itself, which gives you privelge to decide the error code to be set and the status to be displayed.
However, the user will be charged according to the rate plan assigned.