Skip to content
Switch branches/tags

Latest commit


Git stats


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

Scanpay ruby client

The official Ruby client library for the Scanpay API (docs). You can always e-mail us at, or chat with us on IRC at Freenode #scanpay.


You need Ruby version >= 2.0 with httpclient. The code is published at rubygems and you can install it with:

gem install scanpay

And include it in your project:

require 'scanpay'
client ='API key')

Manual installation

Download the latest release and include in into your project:

require_relative 'lib/scanpay'
scanpay ='API key')


The API documentation is available here. Most methods accept an optional per-request object with options, here referred to as options.

newURL(Object, options)

Create a link to our hosted payment window (docs | example).

order = {
    'items' => [{ 'total' => '199.99 DKK' }]
puts "Payment url: #{scanpay.newURL(order, options)}"

seq(Integer, options)

Make a sequence request to get a hash with changes after a specified sequence number (docs | example).

localSeq = 921;
seqobj = scanpay.seq(localSeq, options)

handlePing(String, String)

Handle and validate synchronization pings. The method accepts two arguments, the body of the received ping and the X-Signature HTTP header. The method returns a hash (docs | example).

json = scanpay.handlePing(body, signature)


All methods, except handlePing, accept an optional per-request options hash. You can use this to:

  • Set the API key for this request (example)
  • Set HTTP headers, e.g. the highly recommended X-Cardholder-IP (example)
  • Change the hostname to use our test environment (example)
  • Enable debugging mode (example)


Everything in this repository is licensed under the MIT license.