3. Feature-by-Feature Scrutiny (Your Stated Candidates)
The idea was stated as four candidate APIs, not a feature list. This doc classifies each candidate and the features each would normally ship with.
Categories:
- Table stakes (TS): customers expect it. It earns nothing, but its absence costs you.
- Differentiator (D): a real reason to choose you over the alternatives.
- Distraction (X): built but unlikely to move revenue or retention.
- Liability (L): creates support, compliance, legal or trust risk.
Some features sit in two buckets. The primary bucket comes first.
3.1 The four candidates
| # | Your candidate | Category | Reasoning |
|---|---|---|---|
| 1 | Invoice and business-document PDF generation from templates | TS as stated → D when narrowed to mandated e-invoices | Generic HTML-to-PDF is table stakes. DocRaptor, PDFMonkey, APITemplate.io, CraftMyPDF and free Puppeteer/Gotenberg all do it, and generic documents churn at ~5% a month or more. Narrowed to EN 16931 e-invoices (ZUGFeRD / Factur-X hybrid PDF + XRechnung), it becomes a differentiator with a legal deadline. None of the main PDF APIs advertise it, and Stripe says it doesn't generate e-invoices itself. |
| 2 | EU VAT and company-ID validation | TS / X | Stripe validates EU VAT IDs against VIES automatically. VIES is free, VATcomply is free, paid APIs start at $9.99/mo, and clones are multiplying. The job does recur, but revenue per customer is tiny (under $25 ARPA → ~6% median churn). Keep it as a free feature inside the invoice API, since invoices need the buyer's VAT ID for reverse charge. |
| 3 | Address validation for a region | L / X | It needs licensed data: the PAF licence is £7,525 a year for one website, and solutions-provider fees scale with use. Google charges $17 per 1,000 with 5,000 free a month. Using unlicensed data is a proven legal risk: GetAddress.io lost in the High Court and shut down in Feb 2026. A licensed version has thin margins. |
| 4 | A niche data feed | X | It's only defensible if you own the data. Exchange rates and holidays compete with free official sources. Open Exchange Rates shows the model can last for 15 years with 1 person, but no revenue is disclosed and the moat is thin. |
3.2 Features the document candidate would normally ship with
| # | Feature | Category | Reasoning |
|---|---|---|---|
| 5 | HTML/CSS templates → PDF | TS | Expected. Use a proven renderer (headless Chromium or WeasyPrint) and 3 good default invoice layouts. |
| 6 | Drag-and-drop template designer | X | Months of work. CraftMyPDF already has it. Developers are happy with HTML and a live preview. |
| 7 | JSON → ZUGFeRD / Factur-X EN 16931 hybrid PDF | D | The core. It embeds the XML in a PDF/A-3 so the same file is readable by humans and machines. Hybrid invoices are accepted under ViDA and in Germany (EN 16931 profile or above). |
| 8 | JSON → XRechnung (CII and UBL) | D | Required by public-sector buyers and preferred by many German receivers. It's the same data mapping, so the marginal cost is low. |
| 9 | Validation against the official rules on every document (KoSIT validator, EN 16931 schematron) | D | This is the product. Return pass/fail, the rule version and readable errors. Never return a document marked valid that isn't. |
| 10 | Plain-language error messages (German and English) | D | Raw schematron errors ("BR-DE-17") are why developers give up on the free libraries. Turning them into "the seller's tax number is missing, add seller.tax_id" is cheap to build and valued highly. |
| 11 | No-code integrations (Zapier, Make, n8n) | X now / TS later | They bring the project-based buyers who churn. Add them later as a channel once the core retains. |
| 12 | Screenshots / "any URL to PDF" | X | ScreenshotOne's market and churn. Leave it alone. |
| 13 | Sending invoices by email or Peppol on the customer's behalf | L now / D via partner later | Sending makes you part of their invoicing process and liability. Peppol transmission needs an access point. Partner with one (e-invoice.be, Recommand) from month 12 if Belgian demand appears. |
| 14 | Becoming a Peppol access point or French certified platform (PA) | L | Certification, audits and security obligations are enterprise-scale. It isn't a job for a solo founder at ~15 hrs/week. |
| 15 | "Guaranteed compliant" or "tax advice" positioning | L | You can guarantee validation against a named rule version, not tax correctness (VAT rates, exemptions, reverse-charge wording). |
| 16 | "All document types" positioning (contracts, certificates, reports, labels) | L (positioning) | It puts you back into the generic PDF market and blurs the one message that sells: "valid e-invoices". |
3.3 Scoreboard
| Category | Count | Items |
|---|---|---|
| Table stakes | 3 | HTML templates → PDF, VAT validation (as a free feature), no-code integrations (later) |
| Differentiator | 5 | JSON → ZUGFeRD / Factur-X, JSON → XRechnung, validation on every document, plain-language errors, (partner) Peppol sending later |
| Distraction | 5 | Drag-and-drop designer, screenshots, niche data feed, address API, no-code as the core |
| Liability | 4 | Unlicensed address data, becoming an access point or PA, "guaranteed compliant" claims, "all documents" positioning |
About 30% of the combined candidate list is a reason to buy, and all of it sits in the e-invoice slice. The rest is table stakes, distraction or risk.
3.4 Feature bloat and "building to avoid selling": explicit call-outs
- The template designer. It looks great in a demo and teaches nothing about whether a German SaaS will pay you instead of using Mustang.
- Four APIs at once. VAT, addresses and a data feed look like "more revenue lines". They're four markets, four sets of competitors and four support queues.
- Many countries at launch. Each country is a new rulebook. Germany alone has XRechnung (two syntaxes) and ZUGFeRD profiles.
- Becoming an access point. It feels like building a moat. It's actually a certification project that delays your first paying customer by a year.
3.5 What a disciplined v1 looks like
- Keep: JSON → ZUGFeRD EN 16931 hybrid PDF, JSON → XRechnung (CII), validation with readable errors, 3 HTML invoice templates, free VAT-ID check (VIES with retries), API keys, usage dashboard, EU hosting, DPA, German + English docs.
- Defer: inbound parsing (month 3–4), Stripe connector and App (month 6–9), XRechnung UBL, archive, Factur-X for France (after $5k MRR).
- Cut: designer, screenshots, address API, data feeds, sending or transmission, "any document" positioning.