I'm developing a free Ruby Gem called Invoicing -- http://ept.github.com/invoicing/ -- it basically provides a miniature accounting and invoicing system inside your app, it's very powerful (flexible tax handling, multi-currency, support for resellers/affiliates) but easy to get started with too. At the moment it doesn't include particular payment method implementations out of the box, but I want to start including those soon. I am also working on integrating it with OAccounts http://oaccounts.org/ -- a (work-in-progress) open standard for exchanging financial data between different accounting systems.
The important thing is though that with the invoicing gem, you end up representing the data in an accountant-friendly structure, without having to think like an accountant. And that makes things a hell of a lot easier when you start scaling the business and need to know what's going on in your accounts for tax, legal and management reasons. Just taking payments won't do; you also need to know who is paying for what, keep statements of accounts etc. If you're a business in the EU, selling to another EU country, tax is different from selling within your own country. And so on.
Would love to hear your opinions on the Invoicing Gem; I agree that a standard framework is needed, and this is my attempt to contribute one to the community.
The important thing is though that with the invoicing gem, you end up representing the data in an accountant-friendly structure, without having to think like an accountant. And that makes things a hell of a lot easier when you start scaling the business and need to know what's going on in your accounts for tax, legal and management reasons. Just taking payments won't do; you also need to know who is paying for what, keep statements of accounts etc. If you're a business in the EU, selling to another EU country, tax is different from selling within your own country. And so on.
Would love to hear your opinions on the Invoicing Gem; I agree that a standard framework is needed, and this is my attempt to contribute one to the community.