That's spot on how I do it as well.
I actually set a php time() timestamp that amounts to 32 days. I figure, why not give 'em an extra day to get their funds in order should paypal notify them that their charge didn't go through.
I have a question in regards to the "on0" custom inputs.
I'm using this php code (works) ...
Code:<input type="hidden" name="on0" value="' . $account . '">
My question is ... will this value appear in my IPN every time a subscription payment goes through?
If so, that's very convenient. If not, I'll have to use the subscription ID or some other source to identify the username associated with the account.