We sell prepaid credits and nothing renews. This was not a pricing experiment, it was forced by the market: a customer paying in birr uploads a bank receipt and cannot hold a recurring card.
One path, two rails
Credits behave identically whether they arrived from a card payment or a hand-verified transfer, so the inference path never has to know which. There is one balance, one ledger and one failure mode when it runs out.
The alternative was two billing systems with a shared vocabulary, which is the kind of thing that works until the first refund.