Should I inform the user that its a paid service before or after he submits his email address.

On my old I had the Stripe payment box together with the account create, so people knew they would be paying for it.

In the new version, I let people create an account first, and then tell them the premium costs money. This way I can gather their email addresses (even if they don't become paid customers). But on Reddit people are complaining about this.

Should I let the user know in advance that its a paid premium service?

Seems fair. I would be annoyed if I would have to find out after I entered my email address. Hurts your credibility as well I think.

If you also offer a free service however then I think it's not strictly necessary.

The free service is there but also accessible without an account. So I think I should put up a notification for new users then, informing them in advance.

I think it is super annoying if you sign up for a free account and it is not clear that there is a paid tier, too and then you see that you have to pay.

Say it upfront and do not annoy your users.

If you don't let a potential new user know upfront, it can feel like a bait and switch, something that is annoying and can hurt your reputation.