BBSA, I can assure you that doing this for Topup is way more complex than for contract. Even though Topup looks like a contract offer, the billing and session control is done in a realtime fashion on the prepaid platform. So in reality Topup is really more like prepaid from a network perspective.
The prepaid billing is done on a basis of quota reservations that happen in the background while you are on a call. The quota reservation is done in advance for the period it represents. Let's say your call is set up (initiated). There is a quota reservation of let's say 10 seconds (not sure what the real quota is). This means that 10 seconds' worth of money is deducted from your prepaid account. The network will now allow you 10secs worth of talking. Just before the 10 seconds have elapsed, another quota is reserved. This happens continuously while you are on the call until you terminate the call or you run out of money.
The same happens for data. However, if you have multiple sessions (consumers of the data bundle) it gets way more complicated. Each session continually reserves quotas to allow you to use a block of data. Now, when you run out of money, the session for which the quota reservation failed, will terminate. But the fact is that the other session still has some quota and may even not be using it. The effect is that you still have some quota available in the 2nd session, but the 1st one terminated due to insufficient data bundle. This is the kind of customer experience you want to avoid.
The above is a very simplified view of how (I think) it works, just to illustrate the complexity in the prepaid environment.
Contract (post-paid) billing is easy. The (data) usage events come from the network into the billing system. Regardless of which of your SIMs originated the event, the cost is accrued to the associated account and the usage deducted from any data bundle you may have. Because a contract subscriber pays for it after use, there is no need for complex in-session control, quota reservations, etc, etc.