- Notes on Solopreneurship Engineering
- Posts
- Issue #13: Invoicing compliance nightmare! š®š¹š¤Æ
Issue #13: Invoicing compliance nightmare! š®š¹š¤Æ
Having the application ready for launch and realizing that you're not compliant with how you invoice
The first half of the week has mostly been about ensuring everything works smoothly: onboarding, subscriptions, moving from beta user to normal user, etc.
It was quite some work, but everything is fully working now! š
BUTā¦
Just yesterday I realized that the way Iām invoicing is not compliant with the Italian laws. š®š¹š¤Æ
Last week I already discussed technically how I integrated Stripe for handling subscriptions. Since this week was mostly about finalization, it has been mostly about low-level details that would better fit in a dedicated post.
(I started thinking that probably I should start writing side-posts dedicated to specific topics š¤)
Today I'm going to share the invoicing nightmare that I faced. This is very specific to Italian businesses, so if youāre not an Italian resident feel free to skip this issue and have a nice weekend! š
Otherwise, if youāre an Italian resident, or just curious to know more about this nightmare, get ready! š
Table of Contents
Realizing that Iām not compliant
July is tax month in Italy! š®š¹š„³
Taxes in Italy are high, but this is another story⦠š
Yesterday morning I was talking on the phone with my accountants to finalize some paperwork and some numbers. Since last month I also had some subscriptions for NextCommit I ended up asking if those were all fine.
The answer was: āWhat are you talking about?ā
š¤£
NextCommit is also integrated with Stripe and everything works as youād expect from any other SaaS:
a customer subscribes to a plan,
weekly/monthly you get payment,
the customer receives the email with the invoice from Stripe.
Everyoneās happy! š
EXCEPTā¦
for the Italian Revenue Agency. š
I shared everything that I could find on Stripe with my accountants. I was expecting Stripe to automatically send the e-invoice automatically and for my accountants to be able to automatically see them in their accounting software.
I was wrong.
What is an e-invoice or a āfattura elettronicaā?
The e-invoice or āfattura elettronicaā is a digital document that replicates exactly whatās in the invoice, the data about the entity emitting the invoice, the data about the client, etc., but in a digital form. This document is an XML form with a specific schema and MUST be sent to the Italian Revenue Agency through a specific protocol.
The usage of e-invoice in Italy became mandatory on Jan 1st of this year for the majority of businesses, and this also covers mine.
Indeed, when I was working as a consultant, I was doing that. Every time Iād need to bill my clients, Iād go to my accounting software, create the invoice, and send it as an e-invoice through it.
For some reason, I was expecting Stripe to do this automatically for NextCommit and EchoWords. š
Ok Marvin, why you even thought that itās done automatically?
I indeed read that Stripe was doing that automatically, BUT it was actually referring to the e-invoice that THEY need to send me for the fees that I pay on top! This means that theyāre indeed compliant, but Iām not. š¤£
My accountants didnāt initially see the problem as there were only 3 of them and just told me to create the ones that I was missing manually, and the problem was solved. Well, thatās true butā¦
The whole idea of having a SaaS is to have a way higher volume than 3. š Assuming that each e-invoice would take around 5 mins to fill, then having just 50 monthly customers means more than 4 hours spent just doing that every month.
Cāmon man, itās just 4 hours a month!
True, but itās very error-prone, as there are many different cases: private person, Italian business, intra-EU business, extra-EU business. š¤Æ
Each case has different rules on how you need to fill out the e-invoice. I donāt want to know what happens if you mess this up. š
Possible solutions
There are a few possible solutions to move forward:
continue doing that manually,
find an integration for my accounting software to Stripe,
use another accounting software integrated with Stripe,
switch to a Merchant of Record like Lemon Squeezy,
implement that integration myself.
I ended up with solution number 5!
You need to focus on your core business! This is just a distraction!
I agree, but let me cover all these solutions one by one
Manual invoicing
This is how it looks like creating an e-invoice in my accounting software.

UX for creating an e-invoice
You need to fill in the data of the client, the line items, the amount of VAT to apply, calculate the net price depending on the VAT you apply, etc.
As I mentioned before, there are many cases and each case has to be done with specific rules and values.
For sure it can be done, but I really donāt want to do it. š
Iād rather solve this once and for all.
Stripe integration for accounting software
Iām using FattureInCloud and the good thing is that it has a marketplace for integrations! š
The bad thing is that thereās no integration for Stripe! š

No Stripe integration
I found some other accounting software that supports Stripe, but it would conflict with the work done by my accountants, so that was also not an option.
Switching to a Merchant of Record
This is an interesting one. Merchants of records like Lemon Squeezy are entities that act as a sort of proxy between you and the clients. This means that Iād just need to emit a single e-invoice at the end of the month. š
That would make the manual invoicing more than fine! Even having multiple projects all using different accounts would be bearable!
However, thereās a big problem. The implementation of EchoWords related to how subscriptions are managed (creating, expiration, renewal, etc.) is tightly coupled with how Stripe works. This means that Iād need to re-implement that part again! š¤Æ
This is not an option.
Using Zapier
I found a pre-made Zap from Stripe to FattureInCloud.
But it was just creating the e-invoice and nothing else. There was no way to distinguish based on client type, compute differently the net cost, etc. It was just not offering the flexibility required.
This is not an option as well.
Implementing the integration myself
So, I didnāt choose this option because I wanted to. But it seems to be the least shitty one tbh. š¤£
The good news is that:
Stripe API is awesome,
Iām already integrated with the Stripe webhook to listen for subscription changes,
FattureInCloud also has a good API.
The integration consists of attaching to the Stripe webhook event invoice.payment_succeeded
, reading the Invoice
object attached to the event, and transform it in a way that suits the corresponding object in FattureInCloud.
Hence the integration itself itās quite easy, I just needed to get from my accountants the spec for all the different cases so that I know how to fill the different fields of the FattureInCloud object.
This is definitely another thing that will be part of my own boilerplate! š
(Iām not sharing the specs here because every case is different, and there might be some differences also depending on your specific business. If youāre facing the same situation, itās better for you to ask for clarifications from your tax advisor!)
Conclusion
This is another obstacle that I was not expecting, but itās another lesson learned! š
Iām not gonna hide that this was a huge bummer, but it is what it is. š
In the next few days, Iāll try to finalize this integration, cover and test all the possible scenarios, and ask my accountants to verify the correctness of the fields.
Starting next week Iāll be on vacation! šļø
Unless something crazy happens, the next issue will either be the 9th or the 16th of August.
Iāll bring my laptop with me so that I can still do some work especially related to hearing from the beta users of EchoWords and hopefully be ready for launch once Iām back. š¤
I hope you enjoyed this weekās updates! š
If youāre interested in following my journey, make sure to subscribe or follow me on X/Twitter and LinkedIn!
Appendix
Personal branding
X

X Premium analytics

Beehiiv Analytics
Reply