payment module final (not tested)