It's just an invoicing program. There are lots of those. Intuit's is widely used. Oracle is also in that business. There's "Anytime Collect", "Zencash", "Esker", "Celtrino". and many others.<p>The more advanced players support electronic data interchange (EDI), where your accounts receivable system connects to the buyer's accounts payable system. Many large companies require EDI for suppliers who generate a lot of invoices, so they aren't re-entering invoice data into their own systems.[1] Any new system should have EDI interchange with at least all Fortune 1000 companies.<p>There are "gateway" companies which handle talking to large numbers of other companies.[2] Once you get this all working, your invoice goes out to the gateway, the gateway formats it and sends it to the paying company, the paying company's systems validate the bill, and they do a funds transfer to your bank account, which is matched to another EDI transaction indicating payment. For most routine transactions, there's no human intervention.<p>Make that all work for small/medium businesses, and you have a unique product.<p>The API is "dead simple" because it doesn't handle any of the hard cases.
Like "We ordered 1000 but 200 didn't arrive. We're paying for only 800".<p>[1] <a href="http://www.aepedi.com/apay.htm" rel="nofollow">http://www.aepedi.com/apay.htm</a>
[2] <a href="http://www.b2bgateway.net/" rel="nofollow">http://www.b2bgateway.net/</a>
I really like the clean API docs, well done! Did you build it on your own or is that some REST doc framework?<p>The only thing I was missing from the API (maybe those are there but left out in the docs, which would be totally fine) are links between your resources (to make it a bit more actual REST). You already more promimently documented the usecase ("create an invoice") instead of listing URL endpoints, but with links between the resources, the API becomes even more discoverable for new developers.<p>Oh, one more minor thing: "Paid uses UTC unix timestamps for all dates and times." -- I was under the impression that unix timestamps are always UTC anyway (i.e. it's defined as "seconds since 1970-01-01 UTC")? If I'm wrong, please correct me :)
This is pretty cool. So, I am using Stripe, which is great, but has a few drawbacks right now. I'm also using churnbuster, which is nice (does your "chase" feature do what they do?)<p>Here's my problems:<p>1. Some of my customers pay by check<p>2. Sometimes my customers have an out of date credit card, or haven't given it to me yet, and Stripe won't let me change their subscription to one that charges them.<p>3. I occasionally do both charges, credits and invoiceitems for in Stripe<p>4. I have written a lot of Stripe specific code, and would prefer to gradually try out your solution (it might not work, no offense) Can I try it out without moving completely over?
It should be noted that this is a pivot of a failed YC startup: <a href="http://blog.shoptheorem.com/post/109312542795/an-end-and-a-beginning" rel="nofollow">http://blog.shoptheorem.com/post/109312542795/an-end-and-a-b...</a>
I'm curious, on the technical side, what stack/technologies have you used? Also, did you scaffold the typical crud endpoints or manually wrote them, for each resource?<p>I'm trying to gain experience in building APIs and yours seems like a good model for doing so :)
Does the laptop in the splash photo bother anyone else? It looks like they photoshopped the keyboard to be much shorter. Look how tall the screen is, then imagine you folded that down to meet the keyboard. That's no laptop I've ever seen!