Ecommerce plugin for Tutor

This is a plugin for Tutor that integrates the Ecommerce application in an Open edX platform.


This plugin was developed and open sourced to the community thanks to the generous support of E-ducation. Thank you!


This plugin requires tutor>=10.0.0 and the Discovery plugin tutor-discovery. If you have installed Tutor by downloading the pre-compiled binary, then both plugins should be automatically installed. You can confirm by running:

tutor plugins list

But if you have installed tutor from source, then you also need to install the plugin from source:

pip install tutor-ecommerce

Then, in any case you need to enable the plugins:

tutor plugins enable discovery ecommerce

Services will have to be re-configured and restarted, so you are probably better off just running quickstart again:

tutor local quickstart

Note that this plugins is compatible with Kubernetes integration, so if deploying to a Kubernetes cluster, run instead:

tutor k8s quickstart


Creating a user

The ecommerce user interface will be available at for a local instance, and at ECOMMERCE_HOST (by default: http(s)://ecommerce.<yours lms host>) in production. In order to run commands from the UI, a user with admin rights must be created:

tutor local run ecommerce ./ createsuperuser
  • ECOMMERCE_HOST (default: "ecommerce.{{ LMS_HOST }}")
  • ECOMMERCE_PAYMENT_PROCESSORS (default: {cybersource: {...}, paypal: {...}} See below for details.)
  • ECOMMERCE_ENABLED_PAYMENT_PROCESSORS: (default: ["cybersource", "paypal"])
  • ECOMMERCE_MYSQL_PASSWORD: "{{ 8|random_string }}")
  • ECOMMERCE_SECRET_KEY (default: "{{ 20|random_string }}")
  • ECOMMERCE_OAUTH2_SECRET (default: "{{ 8|random_string }}")
  • ECOMMERCE_API_KEY (default: "{{ 20|random_string }}")
  • ECOMMERCE_DOCKER_IMAGE (default: "{{ DOCKER_REGISTRY }}overhangio/openedx-ecommerce:{{ TUTOR_VERSION }}")
  • ECOMMERCE_WORKER_DOCKER_IMAGE (default: "{{ DOCKER_REGISTRY }}overhangio/openedx-ecommerce-worker:{{ TUTOR_VERSION }}")
  • ECOMMERCE_MYSQL_DATABASE (default: "ecommerce")
  • ECOMMERCE_MYSQL_USERNAME (default: "ecommerce")
  • ECOMMERCE_OAUTH2_KEY (default: "ecommerce")
  • ECOMMERCE_API_TIMEOUT (default: 5)
  • ECOMMERCE_WORKER_JWT_ISSUER (default: "ecommerce-worker")

You will need to modify the ECOMMERCE_PAYMENT_PROCESSORS parameter to configure your payment providers credentials. By default, it is equal to:

  access_key: SET-ME-PLEASE
  cancel_checkout_path: /checkout/cancel-checkout/
  merchant_id: SET-ME-PLEASE
  profile_id: SET-ME-PLEASE
  receipt_page_url: /checkout/receipt/
  secret_key: SET-ME-PLEASE
  send_level_2_3_details: true
  sop_access_key: SET-ME-PLEASE
  sop_profile_id: SET-ME-PLEASE
  sop_secret_key: SET-ME-PLEASE
  transaction_key: SET-ME-PLEASE
  cancel_checkout_path: /checkout/cancel-checkout/
  client_id: SET-ME-PLEASE
  client_secret: SET-ME-PLEASE
  error_url: /checkout/error/
  mode: sandbox
  receipt_url: /checkout/receipt/

We suggest you modify this configuration, save it to ecommerce-config.yml and then load it with:

tutor config save --set "ECOMMERCE_PAYMENT_PROCESSORS=$(cat ecommerce-config.yml)"
Image customisation

Ecommerce implementations vary a lot from one country to another. If all you need are the Paypal, Cybersource and Stripe payment processors, then it should not be necessary to customize the tutor-ecommerce docker image, which contains the vanilla Ecommerce platform. However, if you need to run a fork of Ecommerce, or install extra requirements, then you should re-build the docker image. To do so, first set the appropriate settings:

tutor config save \
  --set 'ECOMMERCE_EXTRA_PAYMENT_PROCESSOR_CLASSES=["myextension.payment.MyProcessor"]' \

Then, build the image, pointing to your fork if necessary:

tutor images build ecommerce \