Official Dwolla for Spree

This is the official Dwolla OAuth / REST extension for Spree.

Important: Please use one of the stable branches.




Add spree_dwolla to your Gemfile:

gem 'spree_dwolla'

Bundle your dependencies and run the installation generator:

bundle exec rails g spree_dwolla:install


To use this extension, you'll need a Dwolla API application.

In order to run the extension on test mode, you'll need a Dwolla UAT account. Contact Dwolla's dev support to obtain access to that environment.

Here's an overview of the configuration parameters:

  • "Dwolla ID": Where you want the money to go to (Your Dwolla ID?)
  • "Key": Your Dwolla API application key
  • "Secret": Your Dwolla API application secret
  • "OAuth Scope": The OAuth permissions you'd like to ask your users for; Defaults to 'Send|Funding|AccountInfoFull'; See further documentation here
  • "Allow Funding Sources": Check this if you'd like your users to be able to select a funding source other than the default source
  • "Default Funding Source": The default funding source to use; Defaults to 'Balance' for Dwolla Balance
  • "Allow ACH": Wether or not to allow ACH (slow bank-funded transactions) checkouts; Must have "Allow Funding Sources" enabled
  • "Your OAuth Token": Used for refunding transactions; Enter your account's OAuth token. You can generate a token using our Token Generator page
  • "Your PIN": Used for refunding transactions; Enter your account's 4 digit PIN
  • "Sandbox": Check this if you were granted access to Dwolla's UAT/Sandbox env
  • "Enable Debug": Check this if you wish to log operations using rail's


In order to keep transaction statuses updated, we recommend using Dwolla's Webhooks system. Simply set your Dwolla API application's TransactionStatus webhook to

If you're running on localhost, you can easily create a tunnel using "ngrok".



  • Use popup for OAuth dialog
  • Clean up spree_dwolla.js
  • Clean up the Dwolla Webhook controller


  • Fix source type, make non-controller action methods private, use conditional logging method (by @sohara)


  • Added debugging info around DwollaController#update


  • Fix translation file missing label ("dwolla_funding_source")
  • Auto approve instant-type transactions (Credit and Balance)
  • Only pass the "R" order ID to the Dwolla notes field (as opposed to having the payment ID as well)
  • Change payment provider to auto capture


  • Add the ability to manually poll Dwolla for transaction updates


  • Add sleep delay to webhook listener


  • Simplify payment creation logic
  • Switch logic to after_filter


  • Move payment creation logic to Spree/CheckoutController#update before_filter
  • Remove custom payment action


  • Clean up some debug puts


  • Initial release


Copyright (c) 2013 Michael Schonfeld / Dwolla, released under the New BSD License


No comments yet

Please login to add comment.