Skip to content
Go to file
This branch is 41 commits behind spree-contrib:2-0-stable.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Spree PayPal Express


This is a "re-do" of the official spree_paypal_express extension. The old extension is extremely hard to maintain and complex.

This extension purposely only uses PayPal's sandbox and never the live system. Please attempt to use this extension only in development and report issues.

Behind-the-scenes, this extension uses PayPal's Merchant Ruby SDK.


  1. Add this extension to your Gemfile with this line:

     gem 'spree_paypal_express', :github => "radar/better_spree_paypal_express", :branch => "2-0-stable"
  2. Install the gem using Bundler:

     bundle install
  3. Copy & run migrations

     bundle exec rails g spree_paypal_express:install

Sandbox Setup


Go to PayPal's Developer Website, sign in with your PayPal account, click "Applications" then "Sandbox Accounts" and create a new "Business" account. Once the account is created, click on the triangle next to its email address, then "Profile". The "API Credentials" tab will provide your API credentials (probably). If this tab is blank, try refreshing the page.

You will also need a "Personal" account to test the transactions on your site. Create this in the same way, finding the account information under "Profile" as well. You may need to set a password in order to be able to log in to PayPal's sandbox for this user.

Spree Setup

In Spree, go to the admin backend, click "Configuration" and then "Payment Methods" and create a new payment method. Select "Spree::Gateway::PayPalExpress" as the provider, and click "Create". Enter the email address, password and signature from the "API Credentials" tab for the Business account on PayPal.

Production setup


Sign in to PayPal, then click "Profile" and then (under "Account Information" on the left), click "API Access". On this page, select "Option 2" and click "View API Signature". The username, password and signature will be displayed on this screen.

If you are unable to find it, then follow PayPal's own documentation.

Spree Setup

Same as sandbox setup, but change "Server" from "sandbox" to "live".


Caveat venditor

Paypal will refuse any order with a zero cost item. Any such item will be skipped and not displayed.

PayPal will also refuse any order where item total (before taxes and shipping costs) is zero. In this case the PayPal checkout page will simply display "Current order".


In the spirit of free software, everyone is encouraged to help improve this project.

Here are some ways you can contribute:

  • by using prerelease versions
  • by reporting bugs
  • by suggesting new features
  • by writing or editing documentation
  • by writing specifications
  • by writing code (no patch is too small: fix typos, add comments, clean up inconsistent whitespace)
  • by refactoring code
  • by resolving issues
  • by reviewing patches

Starting point:

  • Fork the repo
  • Clone your repo
  • Run bundle install
  • Run bundle exec rake test_app to create the test application in spec/dummy
  • Make your changes
  • Ensure specs pass by running bundle exec rspec spec
  • Submit your pull request

Copyright (c) 2013 Spree Commerce and contributors, released under the New BSD License


(An attempt at) A better Spree PayPal Express Extension. Currently in beta.




No releases published


No packages published