Could you assist with the setup you are describing?
It's fairly straight forward - although the exact configuration will depend on whether you want non-paying members to be able to access any of the forum content (eg pre-sales discussions etc), or whether everything is private.
It will also depend on how you want users to pay for upgrades - if you want to use the built in forum upgrade mechanism, you're going to need to have fully "approved" members because user awaiting approval can't use upgrades. If paying externally - that won't matter.
The way I was going to set it up was to have the "Unregistered / Unconfirmed" usergroup permissions set to "No" for everything (use the Quick set function) except the "Use contact form" option:
... then it's a pretty simple matter of approving members to give them access - but that's because we were going to have an external payment system in place.
If you want to have XenForo payments, then you'd need to do things a bit differently and it becomes slightly more complicated - and again, it would depend on whether non-paying members get access to any topics. Generally, I'd use Node permissions instead - have your main category nodes all set to "Private node" and then have a "[Paid upgrade]" usergroup which is automatically assigned once payment is received - and give that user group view access to the private nodes.
Either way - it's all standard XenForo functionality, just a matter of learning which options to use.
I also suggest you install XenForo into a subdirectory so that you can front-end the members-only forum with a public-facing CMS (WordPress or similar) - either that, or install XenForo on a subdomain - which would probably be easier if you have an existing website you'll be using to attract users to your forum.