Tax & compliance
Greek myDATA e-invoicing
Indicative price, not an offer: €99–199/month (Greece-specific)
Generated from docs/plan/paid/greek-mydata-e-invoicing/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.
Paid module (EUR 99–199/month) for Greece: real-time e-invoicing to AADE (Hellenic Ministry of Finance) myDATA platform. Every B2B and B2C invoice is transmitted in real time via XML, AADE validates and returns a unique reference number, and receipt stores the reference. Non-compliance is a criminal offense in Greece (daily fines + potential jail time for officers). This is the highest-risk jurisdiction for AstroCMS merchants. [DUPLICATE ENTRY: See ‘greece-mydata-e-invoicing’ above for full details.]
The problem
Greek myDATA e-invoicing is mandatory for B2B transactions in Greece. AstroBaaS merchants operating in Greece have no integration and cannot comply. Non-compliance is a criminal offense with daily fines and potential jail time for officers.
What it does
- Real-time e-invoicing to AADE myDATA via XML transmission
- Certificate-based authentication (merchant provides AADE-issued PKCS#12 certificate)
- Invoice transmission on order capture; AADE validates and returns mark (unique reference)
- Audit log of all transmissions (request/response/mark/timestamp)
- Error handling and automatic retry for failed transmissions
- Invoice receipt displays AADE mark and transmission timestamp
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.
- No certificate provisioning (merchant must obtain from AADE)
- No multi-language legal templates
- No support for edge cases (special tax regimes, reverse charge, etc.)
Data model
Settings: aade_certificate_file, aade_certificate_password (encrypted). Order: aade_mark, aade_transmission_date, aade_transmission_status. AuditLog: aade_transmission events with response details.
API
- POST /api/settings/aade/upload-certificate
- POST /api/orders/:id/transmit-to-aade (manual retry)
- GET /api/orders/:id/aade-status
- GET /api/aade/transmission-log
Every route added here must also appear in src/pages/openapi.json.ts — a test
fails the build if it does not.
Admin
Settings → Greece AADE myDATA: certificate upload, test button, certificate expiry warning. Orders table: AADE Mark column. Order detail: transmission timestamp, mark, XML/response log.
The seam — why this is paid
Paid module owns AADE API and transmission. Core owns order and receipt. Merchant owns certificate.
Per-country legal obligation. Requires PSP name and merchant docs; high support commitment.
Dependencies
- Order entity (core)
- Invoice/receipt generation (core)
- AADE myDATA API (third-party)
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.
- Order checkout transmits to AADE; mark is assigned within 2 seconds
- Receipt displays mark and transmission timestamp
- Failed transmission retries automatically
- Manual retry available in admin UI
- Transmission audit log tracks all events
Risks
Certificate expiry, network downtime, API schema changes, logs deleted, wrong certificate uploaded
Commercial context
| Suggested price | €99–199/month (Greece-specific) |
| Rival anchor | Magento free; requires third-party connector. AstroBaaS deliberately does not support it. |
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.