Ruby implementation of the SagePay payment gateway protocol.
Pull request Compare This branch is 2 commits behind mathie:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status Code Climate Dependency Status Coverage Status


This is a Ruby library for integrating with SagePay. SagePay is a payment gateway for accepting credit card payments through your web app. It offers three different integration modes:

  • Form, which is the simplest, and just involves crafting an HTML form that submits information to SagePay. This is not something you're going to need much help with, so this gem currently doesn't help you out there.

  • Server, which is the sweet spot: you can do most of the transaction types that you'd want to do, but you don't have to take/store credit card numbers, so you don't have to worry too much about PCI compliance.

  • Direct, the full-on integration where you take the credit card numbers directly on your app and the client need never know you're talking to SagePay to do the payment.

The current client app I'm writing is using SagePay Server, so that's where the current implementation will be focused. Direct will follow when I (or somebody else) has the impetus to do so.


You should be able to install the gem directly from Rubygems. Simply do:

(sudo) gem install sage_pay

and you're good to go. If you're adding it as a dependency to an existing project and you're using bundler, simply add:

gem 'sage_pay'

to your Gemfile and you're also good to go.


This gem currently implements SagePay protocol version 2.23. The client app I'm writing is in Rails, so there are probably some assumptions around that, too.

Test Configuration

For running the integration tests, you'll need a valid SagePay account on the simulator. If you want to run the integration tests, pass in your vendor name with the environment variable VENDOR_NAME. If you don't supply a vendor name, the integration tests will be skipped. For example:

VENDOR_NAME=rubaidh bundle exec rake spec

Please note that you need to include your current IP address in the Sage Pay Simulator portal. The Simulator only accepts calls from white listed IP addresses.