Harvest recently introduced native integration with Stripe, so this application is no longer needed or maintained.
The portions of this application that are my code are in the public domain.
A quick, open source app for accepting credit card payments for invoices online. You can easily run it on Heroku for free (or your own Rails-capable server). Stripe handles the credit card transactions.
Features include:
- Personalized, letter-style online payment forms for your clients
- Email your clients links to payment forms with one click
- Track when your clients view payment forms
- Dashboard listing unpaid invoices
- Add any convenience fee to invoice totals to help cover Stripe's 2.9% fee
- Plesant typography
Here's a screenshot of an invoice payment form:
See a complete example invoice payment form.
Made by Max Masnick for himself and other like-minded consultants. Anyone with basic command line skills can set up Combine for themselves.
Getting paid by check is slow, unreliable, and generally annoying. PayPal might steal your hard-earned money.
It's relative easy to set up a website to accept credit card payments with Stripe (like this one), but there's no need for every contractor or freelancer reinvent the wheel.
For more, see my blog post.
-
First, make sure you have the following on your computer:
- Ruby and rubygems (check with
which ruby
andwhich gem
; Google for installation instructions if needed). - Heroku gem (check with
which heroku
; install with `gem install heroku).
- Ruby and rubygems (check with
-
Then, you'll need some (free) accounts:
-
Next, clone this repository to your computer.
-
cd
into your local clone and runheroku create example
, which will create your app atexample.herokuapp.com
. If you're having trouble naming your app, I'd recommendyourname-payments.herokuapp.com
. -
Set up Mailgun:
- Go to your mailboxes page.
- Click on
postmaster@you.mailgun.org
. - Create a password and note it for the next step.
-
Run the following command, replacing the values for all the config vars with your own. See
config/initializers/combine.rb
for more information.heroku config:set STRIPE_API=ETPdHzvFZ1LFbwrIskXDLrZiudilJvig STRIPE_API_PUBLIC=pk_cD9uLyh2HOG7c2OA1lQBeqrmG1nvR BUSINESS_NAME="Your Name, Inc." SUPPORT_EMAIL=you@email.com APP_URL=example.herokuapp.com MAILGUN_MAILBOX=postmaster@you.mailgun.org MAILGUN_PASSWORD=password RAILS_SECRET_TOKEN=longrandomstring
You can start out with your test API keys.
-
Run
git push heroku master
to deploy the app to your server. -
Run
heroku run rake db:load:schema
to set up your database. -
Run
heroku run console
to enter the Heroku console and then run the following command to create an admin user (you can create as many as you'd like by running this command multiple times).AdminUser.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password')
-
Test your app:
- Go to
example.herokuapp.com
and make sure you see a page with your business name on it. - Go to
example.herokuapp.com/admin
and log in with the credentials you set up above. You should be able to create a client and then an invoice, etc. in the admin panel. - Try charging an invoice with the Stripe test data.
- Try emailing yourself: create a client with your email address, add an invoice, and click the "email" link on the admin dashboard.
- Go to
If you have any trouble, file an issue and then ping me on twitter to make sure I see it.
This is a pretty standard Rails setup. The only differences are:
- Use pow.cx for your local server -- the app should be at
http://combine.dev
. - Use MailCatcher for local email testing.
Improvements are welcome. Submit a pull request and then ping me on twitter to make sure I see it.
Things I'd like to do include:
- Integrate with Harvest, maybe emailing Harvest's PDF invoices as attachments and/or automatically creating invoices
- Add tracking of email opens
- Less silly icon
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.