Good LMS is a learning management system plugin for WordPress. You can find many great features for creating and selling online and onsite courses.
About payment, learner can choose to pay by Paypal, Stripe, Paymill or Authorized.net directly or they can choose to transfer by other methods(Admin can provide other methods such as bank transfer) then learners will have a submission from in backend to submit payment evidence(Bank transfer receipt for example). After learner submit, admin can check the evidence in admin’s backend and approve or reject the submission later.
For Onsite Course, learner can fill the amount of package in case of purchasing for friends. After purchasing, learner will get the reference code which be used for instructor to compare with the record in the date of studying.