This is possible to achieve now. I think we had a discussion on other topic, just cannot find it now.]
You setup the plan with some speed, for example 10 Mbps. In CAP you set monthly CAP to 10 MB.
Customer connects and can use only 10MB and is immediately blocked. Now he has to buy Data - using Top UP feature, no other option and he is able to use internet only when he has Data.