Forcing a discourse subscription to be a one-off payment

It most definitely is possible! If you uncheck the recurring checkbox in the plan creation screen, it will be a one time payment.

However, you cannot change existing plans once they’re created.