AstroBaaS

Tax & compliance

EU Tax Compliance Pack

Paid pluginsize Lplanned, not built

Indicative price, not an offer: €14.99-24.99/mo for VAT rates; +€9.99/mo for OSS filing — owns the per-country obligation and quarterly maintenance commitment

Generated from docs/plan/paid/eu-tax-compliance-pack/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.

Merged from duplicate proposals: “Global Tax & Compliance”

A paid service that maintains VAT rates for all 27 EU countries with quarterly updates, integrates with OSS filing, and includes support for rate interpretation and quarterly compliance checks. Merchants never need to manually hunt for updated rates.

The problem

A French merchant sells to 27 EU countries. VAT rates change every quarter, and she spends 4 hours per quarter hunting rate documents, cross-referencing council directives, and updating rate tables. She’s missed updates twice and been fined. She pays a tax consultant €3k per year to do this.

What it does

  • Maintain a canonical rate table for all 27 EU member states (standard, reduced, super-reduced, zero)
  • Automatic quarterly sync to shops (push, not pull) when rates change
  • Support for temporary rate reductions (e.g., Italy Q4 2024)
  • Reverse-charge category rules (e.g., certain goods are always reverse-charged to German buyers)
  • OSS reporting: monthly export of sales by destination country, ready to file
  • Email alert on new rate changes before they take effect
  • Audit trail: merchant can see exactly which version was applied to each order
  • Integration with tax-categories: auto-tag products as standard/reduced/super-reduced on first upload
  • Ireland/Luxembourg special rules (zero VAT on digital goods, etc.)
  • Support ticket channel: merchant can ask ‘is this product rate X or rate Y?’ and get answer within 24h

What it deliberately does NOT do

Each boundary carries its reason. A boundary without a reason gets crossed by the next person who reads this.

  • Non-EU VAT (UK VAT, Swiss VAT, Norway)—handled separately or out of scope for now
  • Actual filing to tax authorities (e.g., submitting to France’s MyAE)—merchant or accountant must file; we provide the report
  • Tax deduction tracking or VAT reclaim on inputs—outside the scope of a sales-tax service
  • Goods classification auditing (is this product actually reduced-rate?)—merchant responsibility, we just apply what they tag
  • Corporate tax, income tax, payroll tax—out of scope, VAT-focused only

Data model

Extends destination-based-tax with: RateSubscription(shopId, startDate, tier, auto_renew); RateUpdate(version, effective_date, changelog_url); OSSReport(shopId, period, sales_by_country_json, status). No migration; subscription is stored in plugins table.

API

  • GET /eu-tax/rates — current canonical rate table (read-only)
  • GET /eu-tax/updates — history of rate changes (for audit)
  • POST /eu-tax/sync — manual trigger to pull latest rates
  • GET /eu-tax/oss-report/:period — monthly export ready for OSS filing
  • POST /eu-tax/support-ticket — open ticket re: rate classification

Every route added here must also appear in src/pages/openapi.json.ts — a test fails the build if it does not.

Admin

Compliance hub: shows current EU rate version, next scheduled update date, historical rate changes, monthly OSS export, support ticket queue, rate change email alerts toggle

The seam — why this is paid

Core owns: local rate storage, line-item calculation, audit trail. Paid pack owns: maintaining 27 rate tables, quarterly updates, OSS filing format, rate interpretation support, classification guidance.

a paid pack owns the credential, the per-country obligation, or the support commitment — we maintain 27 rate tables, auto-update them, verify correctness, and integrate OSS filing.

Dependencies

  • destination-based-tax (core must be live first)
  • plugin infrastructure (subscriptions stored in plugin key/value)
  • email layer (for rate-change alerts)

Acceptance checks

Each of these must be able to fail. Before claiming this is done, break the code deliberately and watch each one go red.

  • A rate change for Italy (Jan 2025, new 4% temporary on food) syncs to all shops within 48 hours
  • An order placed Jan 15, 2025 uses the new 4% Italy rate; one placed Jan 10 uses the old 5%
  • Monthly OSS report for December 2024 shows sales to Germany, France, Spain broken down by rate
  • A merchant can open a support ticket (‘Is olive oil standard or reduced rate?’) and receive an answer within 24h
  • Unsubscribing does not delete rate history; merchant can still see which rates were applied to old orders
  • Rate changelog URL is live and links to EU council directive or official memo

Risks

If rate sync breaks, shops will use stale rates for days or weeks. Merchants relying on this assume correctness and don’t double-check—wrong rate = fines. Support ticket backlog during quarter-end. Reverse-charge logic edge case: some goods are reverse-charged in some countries but not others.

Commercial context

Suggested price€14.99-24.99/mo for VAT rates; +€9.99/mo for OSS filing — owns the per-country obligation and quarterly maintenance commitment
Rival anchorAvalara (€50-500/mo); Shopify Tax (€0.01/txn); TaxJar (€99-199/mo); manual consultant (€2k-5k/year)

The anchor is what the nearest equivalent charges on Shopify or Magento today. It is context for a pricing decision, not the decision.


Generated from the commerce plan. See docs/COMMERCE-PLAN.md for the full catalogue and ../../AI-GUIDE.md for how to work on this repository.