<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
Hi,<br>
<br>
disclaimer: this mail is completely full of shameless self-promotion
<br>
<br>
<blockquote cite="mid:op.wannweydg5awvh@macintosh.local" type="cite">
<div>can people recommend an online invoicing solution (for home
businesses doing smallish gigs like myself and co.)</div>
</blockquote>
<br>
We offer this service at <a class="moz-txt-link-freetext" href="https://invoicefu.com">https://invoicefu.com</a><br>
<br>
It's oriented to freelances and small companies with simple
invoicing needs and also to application developers who want to use
invoicing as a service instead of rolling their own solution.<br>
<br>
You can basically create proformas (estimates) and invoices, share
them with your clients or accountant via read-only URIs or just
sending a PDF, keep client records, see pending payments and get
some reports (well, we are going to deploy the reports feature this
week :p). Taxes and currencies are configurable and the resulting
PDF can be used as an electronic invoice in the UK. There's a quite
small but handy mobile app available that we hope to improve soon.<br>
<br>
If you are on Heroku and you want to access programatically to the
API, there's an extension available. <br>
<br>
If you want to do something fancy with your data, you can use the
API and get JSON/XML quite easily. Examples for getting all your
invoices or client records from the command line would be<br>
<br>
<span style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">curl
<a class="moz-txt-link-freetext" href="https://invoicefu.com/api/accounts/3-javier-ramirez/invoices?api_key=">https://invoicefu.com/api/accounts/3-javier-ramirez/invoices?api_key=</a></span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">8</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">5374e0e</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">a4c</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">eefa03b8</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">5374e0ef1b</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">69a3b</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">37b96d</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">4c</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">eefa</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">0bbdb23f&format=json</span><br>
<span style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">curl
<a class="moz-txt-link-freetext" href="https://invoicefu.com/api/accounts/3-javier-ramirez/clients?api_key=">https://invoicefu.com/api/accounts/3-javier-ramirez/clients?api_key=</a></span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">8</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">5374e0e</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">a4c</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">eefa03b8</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">5374e0ef1b</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">69a3b</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">37b96d</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">4c</span><span
style="color: rgb(0, 0, 0); font-family: 'dejavu sans
mono',monospace; font-size: 11px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: 2; text-indent: 0px; text-transform:
none; white-space: pre-wrap; widows: 2; word-spacing: 0px;
background-color: rgb(255, 255, 255); display: inline ! important;
float: none;">eefa</span><span style="color: rgb(0, 0, 0);
font-family: 'dejavu sans mono',monospace; font-size: 11px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: 2;
text-indent: 0px; text-transform: none; white-space: pre-wrap;
widows: 2; word-spacing: 0px; background-color: rgb(255, 255,
255); display: inline ! important; float: none;">0bbdb23f&format=json</span><br>
<br>
<br>
The API is fully RESTful, including the HATEOAS constraint, and if
you were attending the session on usable APIs at LRUG, all the
usability tips I was talking about are implemented there.<br>
<br>
It's developed in Rails 3.0.x and all the tests are green at the
moment of sending this e-mail.<br>
<br>
Cheers,<br>
<br>
j<br>
<br>
<br>
<div class="moz-signature">-- <br>
<p>javier ramÃrez</p>
<p> ..i do ruby on rails development in madrid, spain, at <a
href="http://www.aspgems.com">http://www.aspgems.com</a>
</p>
<p> <a href="http://javier-ramirez.com" title="javier ramirez">javier
ramirez's home page (http://javier-ramirez.com)</a><br>
<a href="http://formatinternet.com" title="format internet :
ruby on rails blog by javier ramirez">javier ramirez's blog
(http://formatinternet.com)</a><br>
</p>
</div>
</body>
</html>