diff --git a/app/templates/courses/courses.jade b/app/templates/courses/courses.jade
index 997c9f5ba..119b21b0f 100644
--- a/app/templates/courses/courses.jade
+++ b/app/templates/courses/courses.jade
@@ -9,6 +9,8 @@ block content
   br
   if state === 'enrolling'
     .alert.alert-info Enrolling in course..
+  else if state === 'ppc_logged_out'
+    .alert.alert-success Log in or create an account to join this course.
   else
     if state === 'unknown_error'
       .alert.alert-danger.alert-dismissible= stateMessage
diff --git a/app/views/courses/CoursesView.coffee b/app/views/courses/CoursesView.coffee
index d00c46764..84969fa1d 100644
--- a/app/views/courses/CoursesView.coffee
+++ b/app/views/courses/CoursesView.coffee
@@ -26,7 +26,11 @@ module.exports = class CoursesView extends RootView
     @courseInstances = new CocoCollection([], { url: "/db/user/#{me.id}/course_instances", model: CourseInstance})
     @listenToOnce @courseInstances, 'sync', @onCourseInstancesLoaded
     @supermodel.loadCollection(@courseInstances, 'course_instances')
-    @courseEnroll(prepaidCode) if prepaidCode = utils.getQueryVariable('_ppc', false)
+    if prepaidCode = utils.getQueryVariable('_ppc', false)
+      if me.isAnonymous()
+        @state = 'ppc_logged_out'
+      else
+        @courseEnroll(prepaidCode)
 
   getRenderData: ->
     context = super()
@@ -75,7 +79,7 @@ module.exports = class CoursesView extends RootView
   onClickEnroll: (e) ->
     $('.continue-dialog').modal('hide')
     courseID = $(e.target).data('course-id')
-    prepaidCode = $(".code-input[data-course-id=#{courseID}]").val()
+    prepaidCode = ($(".code-input[data-course-id=#{courseID}]").val() ? '').trim()
     @courseEnroll(prepaidCode)
 
   onClickEnter: (e) ->