You'd be amazed at how terrible something can be and yet still provide enough value to the user to make them feel it's worth paying for. Based on that I'd say charge as early as you possibly can - as soon as users are getting value.
Are you building this for users or customers? If customers, why would you want to test and develop it against people who aren't your customer?