Need help with zipsell?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

503 Stars 105 Forks MIT License 96 Commits 10 Opened issues


A free open source platform for selling digital downloads such as ebooks

Services available


Need anything else?

Contributors list

# 122,835
87 commits
# 422,421
1 commit
# 377,033
1 commit
# 352,261
1 commit
# 428,130
1 commit

Zipsell intro


Zipsell helps you set up an online store for selling digital products such as ebooks, music, videos, source code etc.

Zipsell handles payment processing via stripe and sends customers secure expiring Amazon S3 links to the files they have purchased. Since it is self-hosted, you receive payments directly and avoid paying commissions to 3rd party marketplaces.

Zipsell is built with Ruby on Rails.

Demo site -

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.


Zipsell is a Ruby on Rails app. These instructions assume you have run a rails app on your local machine before.


Clone the project into a local folder and run the included setup file:

git clone
cd zipsell


During local setup above, a git-ignored config file is generated at


Populate this with your local and production config for Amazon AWS, Stripe etc. You can have environment-specific values for local, test and production.

config is handled by the Figaro gem.

The config template looks like this:

#general - all required
shop_name: My Shop
shop_domain: localhost:3000
shop_email_support: [email protected]
shop_email_noreply: [email protected]

#email - all required, for email delivery in production SMTP_host: SMTP_port: SMTP_username: SMTP_password:

#payments - all required, for processing payments stripe_api_key: stripe_publishable_key:

#file storage - all required, for storing files securely AWS_REGION: AWS_BUCKET: AWS_ACCESS_KEY_ID: AWS_SECRET_ACCESS_KEY:

#file management - all required file_expiry_hours: "24" file_max_downloads: "10"

#cdn host - optional, for faster static asset serving in production cdn_host_assets: cdn_host_s3_bucket:

#analytics - optional, in the format UA-XXXXXXXX-XX google_analytics_id:




These should be self explanatory except for the optional

cdn host

cdnhostassets: This is the optional Rails asset pipeline cdn host. Use this if you want to serve css / js faster. Include the protocol you want to use e.g.

cdnhosts3_bucket: This is the optional Amazon Cloudfront cdn host for your S3 bucket. Use this if you want to serve uploaded image files faster. Do not include the protocol, use only the hostname e.g.

Running locally

Start your rails server:

rails s

Your shopfront is at:

Your admin dashboard is at:

Deployment on Heroku

To deploy to heroku for the first time:

heroku create git push heroku master heroku run rails db:migrate figaro heroku:set -e production ```

The last line updates the remote heroku server with the

config in

You will need to run this command again if you change your production config.


In general, we follow the "fork-and-pull" Git workflow.

  1. Fork the repo on GitHub
  2. Clone the project to your own machine
  3. Commit changes to your own branch
  4. Push your work back up to your fork
  5. Submit a Pull request so that we can review your changes

NOTE: Be sure to merge the latest from "upstream" before making a pull request!

Built With

  • Amazon S3 is used as the file store. All downloadable files have non-public access rights and download links are securely signed with a configurable expiry time.
  • Bulma is used as the css framework.
  • Figaro is used to set production configuration without commiting files or storing sensitive information in databases.
  • Heroku is used as the production environment in my readme, although you are free to deploy it anywhere else.
  • Paperclip is used for file attachments. I purposely removed Active Storage from the app as it is currently not suitable for serving files via CDN. Zipsell needs flexibility - image previews can be served from a CDN while private, downloadable files are served directly from the S3 bucket.
  • Ruby on Rails is used as the web application framework.
  • Stripe is used as the payment processor. You use your own Stripe account with Zipsell and all payments go directly to you.


This project is licensed under the MIT License - see the LICENSE file for details

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.