I do exactly what HunkyBill says.
I loop over all the shops through a scheduler that runs every 24 hours that does the Billing API call to check if the shop has an active charge.
I also do that every time the user goes through the app directly through shopify (not the inner pages). I then set the Recurring charge_id to null in my DB if they have no active charge.
This way if they go to the inner pages of the app, I check for if the Recurring charge_id is null in the database and avoid doing an API call on every page.