my app https://timologio.zite.so/
✔ Ελληνικό flow (ΑΦΜ / ΔΟΥ / VAT σωστά)
✔ Invoice structure συμβατό με αγορά✔ myDATA-ready λογική
✔ JSON/local-first (πολύ σωστό για αρχή)
✔ Modular (φαίνεται ότι μπορεί να πάει React εύκολα)
το επίσημο σύστημα ΑΑΔΕ timologio είναι απλό tool
εσύ πας προς mini ERP (πολύ καλύτερο)
λογιστές + μικρές επιχειρήσεις = κινητό
✔ πλήρες invoicing system
✔ ελληνικό VAT logic
✔ myDATA-ready structure
✔ portable (JSON → DB εύκολα)
✔ SaaS-ready design
Now work with No database no backet no paid dll , work localy using json / browser cash and json backup/ restore jsom
Από το υπόδειγμα τιμολογίου της εικόνας, τα βασικά πεδία που απαιτούνται για μια εφαρμογή έκδοσης τιμολογίων χωρίζονται στις εξής ενότητες:
Στοιχεία Εκδότη (Εταιρεία)
- Επωνυμία εταιρείας
- Διεύθυνση
- Πόλη / ΤΚ
- Α.Φ.Μ.
- Δ.Ο.Υ.
- Τηλέφωνο
- Λογότυπο / QR Code (προαιρετικό)
Στοιχεία Παραστατικού
-
Τύπος παραστατικού
- π.χ. Τιμολόγιο Πώλησης
- Σειρά
- Αριθμός παραστατικού
- Ημερομηνία έκδοσης
-
Τρόπος πληρωμής
- Μετρητά
- Πίστωση
- Κάρτα
- Τραπεζική κατάθεση
Στοιχεία Πελάτη
- Κωδικός πελάτη
- Επωνυμία πελάτη
- Επάγγελμα / Δραστηριότητα
- Α.Φ.Μ.
- Δ.Ο.Υ.
- Διεύθυνση
- Πόλη / ΤΚ
- Τηλέφωνο
- Email (προαιρετικό)
Στοιχεία Διακίνησης
- Τόπος φόρτωσης
- Τόπος προορισμού
- Μέσο μεταφοράς
Γραμμές Ειδών / Υπηρεσιών
Για κάθε γραμμή:
- Περιγραφή
- Ποσότητα
- Μονάδα μέτρησης (προαιρετικό)
- Τιμή μονάδας
- Έκπτωση %
- Καθαρή αξία
- Συντελεστής ΦΠΑ
- Ποσό ΦΠΑ
- Παρακράτηση φόρου %
Ανάλυση ΦΠΑ
- Συντελεστής ΦΠΑ
- Καθαρό ποσό
- Ποσό ΦΠΑ
Συγκεντρωτικά Σύνολα
- Σύνολο καθαρής αξίας
- Σύνολο ΦΠΑ
- Σύνολο με ΦΠΑ
- Παρακρατήσεις
- Πληρωτέο ποσό
Παρακρατήσεις
- Ποσοστό παρακράτησης
- Ποσό παρακράτησης
Λοιπά Στοιχεία
- Σχόλια
- Απαλλαγή ΦΠΑ
- Νομική αιτιολογία απαλλαγής
Τραπεζικά Στοιχεία
- IBAN
- Τράπεζα
Στοιχεία myDATA / ΑΑΔΕ
- MARK
- UID παραστατικού
- QR verification
- Χρόνος διαβίβασης
Επιπλέον χρήσιμα πεδία για εφαρμογή
-
Κατάσταση τιμολογίου
- Πρόχειρο
- Εκδομένο
- Ακυρωμένο
- Εξοφλημένο
- Ημερομηνία λήξης
- Νόμισμα
- Γλώσσα
- Συνημμένα αρχεία
- Ιστορικό αλλαγών
- Χρήστης που το εξέδωσε
Ενδεικτικό μοντέλο βάσης δεδομένων
Πίνακας invoices
- id
- series
- number
- issue_date
- customer_id
- payment_method
- subtotal
- vat_total
- withholding_total
- total
- payable_total
- status
- mark
Πίνακας invoice_items
- id
- invoice_id
- description
- quantity
- unit_price
- vat_rate
- vat_amount
- withholding_rate
- line_total
Πίνακας customers
- id
- name
- vat_number
- tax_office
- address
- phone
Αν πρόκειται για ελληνική εφαρμογή
Θα χρειαστεί επίσης:
- Διασύνδεση με myDATA ΑΑΔΕ
- Χαρακτηρισμοί εσόδων
- Τύποι παραστατικών ΑΑΔΕ
- Ηλεκτρονική υπογραφή
- QR επαλήθευσης
- XML generation για myDATA API
Η διασύνδεση με το myDATA της ΑΑΔΕ γίνεται μέσω REST API. Η εφαρμογή σου πρέπει να στέλνει τα τιμολόγια σε XML/JSON format στην πλατφόρμα και να λαμβάνει πίσω το MARK (μοναδικό αριθμό καταχώρησης).
Τι χρειάζεται τεχνικά
1. Εγγραφή στο myDATA REST API
Από την ΑΑΔΕ:
Παίρνεις:
- subscription key
- credentials
- access στο sandbox
Βασική Ροή
Βήμα 1 — Δημιουργία τιμολογίου
Παράδειγμα object:
{
"invoiceType": "1.1",
"series": "ΤΠ",
"aa": 15,
"issueDate": "2026-05-20",
"vatNumber": "099999999",
"customerVatNumber": "012345678",
"netValue": 100,
"vatAmount": 24,
"totalValue": 124
}
Βήμα 2 — Μετατροπή σε myDATA schema
Η ΑΑΔΕ απαιτεί συγκεκριμένο schema XML/XSD.
Παράδειγμα:
<InvoicesDoc>
<invoice>
<issuer>
<vatNumber>099999999</vatNumber>
</issuer>
<counterpart>
<vatNumber>012345678</vatNumber>
</counterpart>
<invoiceHeader>
<series>ΤΠ</series>
<aa>15</aa>
<issueDate>2026-05-20</issueDate>
<invoiceType>1.1</invoiceType>
</invoiceHeader>
</invoice>
</InvoicesDoc>
Βήμα 3 — Αποστολή στο API
Endpoint:
POST /SendInvoices
Headers:
aade-user-id
ocp-apim-subscription-key
Content-Type: application/xml
Βήμα 4 — Λήψη MARK
Απάντηση:
{
"invoiceMark": 400001829501179
}
Το αποθηκεύεις στη βάση.
Τα βασικά endpoints
| Endpoint | Χρήση |
|---|---|
| SendInvoices | Αποστολή τιμολογίων |
| CancelInvoice | Ακύρωση |
| RequestDocs | Ανάκτηση |
| SendIncomeClassification | Χαρακτηρισμοί εσόδων |
| SendExpensesClassification | Χαρακτηρισμοί εξόδων |
Υποχρεωτικά πεδία
Εκδότης
- ΑΦΜ
- Χώρα
- Υποκατάστημα
Πελάτης
- ΑΦΜ
- Χώρα
Παραστατικό
- Τύπος
- Σειρά
- Αριθμός
- Ημερομηνία
Γραμμές
- Καθαρή αξία
- ΦΠΑ
- Συντελεστής
- Κατηγορία είδους
Χαρακτηρισμοί
- category1_1
- E3 classifications
- VAT category
Τύποι παραστατικών
Παραδείγματα:
| Κωδικός | Περιγραφή |
|---|---|
| 1.1 | Τιμολόγιο Πώλησης |
| 2.1 | Τιμολόγιο Παροχής |
| 11.1 | Απόδειξη Λιανικής |
| 5.2 | Πιστωτικό |
Αρχιτεκτονική εφαρμογής
Backend
Συνήθως:
- Node.js
- Laravel
- .NET
- Java Spring
Βάση
- PostgreSQL
- MySQL
Queue
Για retries:
- RabbitMQ
- Redis queue
Τι πρέπει να αποθηκεύεις
invoices
- uuid
- series
- aa
- issue_date
- mark
- status
- xml_payload
- send_status
mydata_logs
- request
- response
- errors
- timestamps
Πολύ σημαντικό
Το myDATA:
- απορρίπτει invalid VAT calculations
- θέλει σωστά rounding
- θέλει classification mapping
- έχει throttling/rate limits
Sandbox περιβάλλον
Η ΑΑΔΕ δίνει test environment για δοκιμές.
Χρήσιμα links
Documentation
Εκδόσεις API
Τεχνικές Προδιαγραφές Εκδόσεων myDATA
Κεντρική σελίδα
Αν θες, μπορώ επίσης να σου δώσω:
- πλήρες database schema
- Laravel implementation
- Node.js implementation
- C# implementation
- έτοιμο myDATA service layer
- XML generator
- invoice classifications
- mapping τύπων παραστατικών ΑΑΔΕ
- πλήρες ERP architecture
- έτοιμο API design για SaaS τιμολόγησης
ΥΠΟΔΕΙΓΜΑ ΤΙΜΟΛΟΓΙΥ ΣΥΜΒΑΤΟ ΜΕ ΜΥ ΑΔΕ ΜΥ DATA -

