Enrolment: Stripe Payment with SCA and Coupon

Maintained by Picture of DualCube TeamDualCube Team
Now avail the much-awaited coupon functionality while enrolling students in Moodle courses using Stripe payment gateway for paid courses with Strong customer authentication (SCA). This plugin will help the admins and webmasters to offer their students a percent-off or amount-off discount for the paid courses. This plugin helps admins and webmasters use Stripe as the payment gateway.
480 sites
38 fans
Current versions available: 2

Stripe Payment: 

Introducing the newest offering from Team Dualcube: Stripe Payment!

Now avail the much-awaited coupon functionality while enrolling students in Moodle courses using Stripe payment gateway for paid courses with Strong customer authentication (SCA).

This plugin will help the admins and webmasters to offer their students a percent-off or amount-off discount for the paid courses.

Stripe Payment:

1. Registered users can login to the Moodle site and happily apply the promo codes for a discount before payment. On successful payment, they can access the course.

2. Admins and Webmasters, now, can create, manage and keep track of all promotional codes directly in their Stripe dashboard.

3. Strong customer authentication (SCA) implemented with 4 layers of complex security to comply with EU Revised Directive on Payment Services (PSD2) on payment service providers within the European Economic Area.

4. The first of it's kind to use Payment intent method for Stripe-coupon. 

5. Works with all stable versions of Moodle till v 3.8.1

6. Latest Stripe SDK

Stripe Payment Documentation:

This plugin has all the settings for development as well as for production usage. Its easy to install, set up and effective.

Creating Merchant Account :

1) Create account at https://stripe.com.

2) Complete your merchant profile details from https://dashboard.stripe.com/account.

3) Now set up secret key and publishers key at https://dashboard.stripe.com/account/apikeys.

4) For test mode use test api keys and for live mode use live api keys.

Now you are done with merchant account set up.

Installation Guidance : 

Login to your moodle site as an “admin user” and follow the steps.

1) Upload the zip package from Site administration > Plugins > Install plugins. Choose Plugin type 'Enrolment method (enrol)'. Upload the ZIP package, check the acknowledgement and install.

2) Go to Enrolments > Manage enrol plugins > Enable 'Stripe' from list

3) Click 'Settings' which will lead to the settings page of the plugin

4) Provide merchant credentials for Stripe. Note that, you will get all the details from your merchant account. Now select the checkbox as per requirement. Save the settings.

5) Select any course from course listing page.

6) Go to Course administration > Users > Enrolment methods > Add method 'Stripe' from the dropdown. Set 'Custom instance name', 'Enrol cost' etc and add the method.

Adding coupons:

Go to your Stripe Dashboard >  Billing > Coupons > Create a coupon.

Type in the coupon’s name: it can be anything and for your reference only.
Type in the Coupon’s ID : This is the Coupon code which your students will need to enter if they want to avail the discount.

Choose Coupon Type: 
1. Percentage discount : offers % off on the course price 
2. Fixed amount discount : Offers a fixed amount off on the course price.

Duration: For duration, when using the value repeating, also specify duration in months as the number of months for which the coupon should repeatedly apply. Otherwise the coupon can be set to apply only to a single invoice or to them all.

Redemption : The max_redemptions and redeem_by values apply to the coupon across every customer you have. For example, you can restrict a coupon to the first 50 customers that use it, or you can make a coupon expire by a certain date. If you do the latter, this only impacts when the coupon can be applied to a customer. If you set a coupon to last forever when used by a customer, but have it expire on January 1st, any customer given that coupon will have that coupon’s discount forever, but no new customers can apply the coupon after January 1st.

If a coupon has a max_redemptions value of 50, it can only be applied among all your customers a total of 50 times, although there’s nothing preventing a single customer from using it multiple times. (You can always use logic on your end to prevent that from occurring.)


This completes all the steps from the administrator end. Now registered users can login to the Moodle site and view the course after a successful payment of the discounted price. 


After years of not getting it just right, our excellent design and development team combined craft, care, love and experience to deliver two impeccable Moodle Themes i.e “Nalanda” and “University” , blend with a smooth and rich UI.

It was mostly our clients who inspired us for this venture. Their constant feedback and appreciation led us to build this for the countless Moodle lovers.

You can view the demo of Nalanda here: http://nalanda.dualcube.com/

** Much awaited Dark mode is coming with the new update.

You can view the demo of University here:


We also have a premium version of the MooWoodle plugin (https://wordpress.org/plugins/moowoodle/) on Dualcube with Single Sign-On feature.

This is to be installed in Moodle.

To get any of these products: https://dualcube.com/shop/

Please any product or service related query contact us on suman.d@dualcube.com

Thank you.


Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4


Picture of DualCube Team
DualCube Team (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS


  • Picture of Melvyn Gomez
    Fri, Mar 20, 2020, 3:06 PM
    I'm using Stripe since 2018, i think the problem with "Something else happened, completely unrelated to Stripe" is related directly with the table.
    In my case i have previous payments from users where is not info stored on the fields receiver_email & receiver_id, it says NULL, from the Stripe previous versions; don't know why.
    But i found other interesting thing in my sandbox environment, an user with 3 records of previous payments had info in the 3 records on the receiver_email field but just info in 2 records on the receiver_id field, when i was doing some tests it was throwing the same error
    I changed manually the third value of receiver_id from NULL to the same value from the other 2 records and it worked; of course this is not a solution but maybe it can help to dig more about this.
    I'm scared about what will happen when an user with a record from previous payments try to pay, with info in the receiver_email and NULL info on the receiver_id, it will fail? For the moment, my answer is Yes!

  • Picture of Dominik Stuerzer
    Fri, Mar 20, 2020, 6:12 PM
    Thanks for this plugin!
    Is it possible to have more than one signup inscances with this? I need to charge different prices for different enrolment durations.
    Is it possible to use SEPA payment with this or only credit card payments?

    I failed to set these up.
  • Picture of Sys Admin
    Fri, Mar 20, 2020, 11:08 PM
    Hello Melvyn, we worked with Suman at Dualcube and they determined that it was the currency that was causing the issue. The latest update fixes the issue. We are in the U.S. and changing the currency to dollar versus Euro was the culprit.
  • Picture of Melvyn Gomez
    Sat, Mar 21, 2020, 12:50 AM
    hello Sys Admin, ohhh ok but i found that little bug in my side, it can be great if the people from Dualcube can test those cases.
  • Picture of DualCube Team
    Tue, Mar 24, 2020, 6:09 PM
    Dear Melvyn,

    Please send your suggestions to suman.d@dualcube.com

    Thank you.
  • Picture of Melvyn Gomez
    Wed, Mar 25, 2020, 1:05 AM
    I will do DualCube Team, check your mail today
  • Picture of Dave Foord
    Tue, Mar 31, 2020, 6:41 PM
    We have been using the updated plugin for the last week, and have noticed a significant drop in sales. Looking at the Stripe logs, there appears to be a lot of attempted payments, that never complete. We think that users are struggling with the new interface. At the moment to enter the card number, you have to click on the text that say 'card number' but this is currently greyed out and quite small, making it look like it isn't live. Also if someone fails to enter all the details, it doesn't show an error message, it just highlights the next required item in red, which if someone is colour blind is not good, and finally if someone enters a full set of details, but these details are not correct, it doesn't show any sort of error message, so the user doesn't know that they have made a mistake. I think the user interface could be significantly improved, to make it easier for people to pay for things. And finally, if a course isn't using coupons, could it be possible to remove the 'coupon code' option from the payment screen, as this also confuses users. Thanks in advance, Dave
  • Picture of Jean Columeau
    Thu, Apr 2, 2020, 5:03 PM
    Hi DualCube Team,
    First, thanks for the plugin !
    But from yesterday evening (in France) I receive payment but students are not enrolled in course.
    I have latest Moodle version and latest Stripe Plugin version.
    Anyone have the same issue ?
    Best regards,
  • Picture of Jean Columeau
    Thu, Apr 2, 2020, 7:42 PM
    Well, after few more test, this issue do not appear for all student. Really don't know what happened.
  • Picture of DualCube Team
    Fri, Apr 3, 2020, 2:29 PM
    Thanks, Jean.
    We could not reproduce the issue either.

    Thank you.
  • Picture of Dave Foord
    Tue, Apr 7, 2020, 6:13 PM
    I can see from a comment on the 28th of Feb, that there is no mechanism currently to enter an email address so a user can be sent an email receipt - does this mean that no email receipts are being sent at all? A site that I support, since we updated this plugin, the users don't get a receipt emailed to them, which I am sure is not right. Are we doing something wrong, or does the new plugin not send receipts - if so can it be updated so as to send them again please.
  • Picture of DualCube Team
    Tue, Apr 7, 2020, 7:19 PM
    Dear Dave,

    The emails are being sent. You need to just check the Stripe plugin settings. There you have the option to select who you want to send the email notification.

    Thank you.
  • Picture of Dave Foord
    Wed, Apr 8, 2020, 2:10 AM
    Dear DualCube team - thanks for responding to my earlier request - within the plugin settings we have 'Notify students', 'Notify teachers' and 'Notify admins' all ticked - is this what you mean? If my understanding is correct this informs them of the enrolment, but doesn't send the actual receipt to these people. Where should I be finding the setting for the sending of the receipt?
    Thanks in advance.
  • Picture of DualCube Team
    Thu, Apr 9, 2020, 7:14 PM
    Dear Dave,
    I am sorry to say that, right now we only send enrolment emails. We did not add the payment receipt email code for the Payment Intent method. We will add it in the next release. Thank you.
  • Picture of Dave Foord
    Thu, Apr 9, 2020, 7:31 PM
    Thanks for responding - do you know when the next release is likely to be?
Please login to post comments