FlexyΤεκμηρίωση API

Σχήμα αιτημάτων

Υπογραφή πληρωμής (signature)

Κάθε πεδίο του σώματος του POST /api/v1/signatures/, με τις τιμές και τους περιορισμούς του.

Τα πεδία παρακάτω είναι το σώμα του POST /api/v1/signatures/, τυλιγμένο σε {"signature": …} — η υπογραφή που δένει μια πληρωμή με κάρτα σε τερματικό POS με το παραστατικό, όπως στο βήμα 3.

Σώμα αιτήματοςPOST /api/v1/signatures/{ "signature": … }

  • Υποχρεωτικότο API απορρίπτει το αίτημα χωρίς αυτό.
  • Υπό προϋπόθεσηυποχρεωτικό μόνο στις περιπτώσεις που γράφει μέσα το πεδίο.
  • Προαιρετικόμπορείτε να το παραλείψετε.
  • Δεν χρησιμοποιείται από το flexyτο πεδίο γίνεται δεκτό, αλλά η Flexy δεν το διαβάζει.
providerstringΥποχρεωτικόΟ πάροχος υπογραφής πληρωμής που θα εκδώσει την υπογραφή: `flexy` σημαίνει η Flexy ως Υπογραφή Πληρωμής Ταμειακού Συστήματος ΥΠΑΗΕΣ (με δικό μας κλειδί, Α.1112 άρθρο 8), ενώ `oxygen` σημαίνει τον τρίτο πάροχο Oxygen, που διατηρείται για παλαιότερες υπογραφές.#

Ο πάροχος υπογραφής πληρωμής που θα εκδώσει την υπογραφή: `flexy` σημαίνει η Flexy ως Υπογραφή Πληρωμής Ταμειακού Συστήματος ΥΠΑΗΕΣ (με δικό μας κλειδί, Α.1112 άρθρο 8), ενώ `oxygen` σημαίνει τον τρίτο πάροχο Oxygen, που διατηρείται για παλαιότερες υπογραφές.

Πότε χρησιμοποιείται

Στείλτε `flexy` για νέες υπογραφές· το `oxygen` παραμένει διαθέσιμο αλλά προορίζεται μόνο για την επαλήθευση παλαιότερων υπογραφών.

  • έως 50 χαρακτήρες

Επιτρεπτές τιμές

ΤιμήΣημασία
flexyFlexy (ΥΠΑΗΕΣ με δικό μας κλειδί, Α.1112 άρθρο 8)
oxygenOxygen (τρίτος πάροχος, για παλαιότερες υπογραφές)

Παράδειγμα

{
  "provider": "flexy"
}
nspstringΥποχρεωτικόΟ πάροχος δικτύου πληρωμών (NSP) που θα εκτελέσει τη χρέωση στο POS· δέχεται όνομα (`Viva`, `WebEcr`, `WorldLine`, `Edps`, `EpaySoftPos`) ή τον αριθμό του (1-5), χωρίς διάκριση πεζών και κεφαλαίων.#

Ο πάροχος δικτύου πληρωμών (NSP) που θα εκτελέσει τη χρέωση στο POS· δέχεται όνομα (`Viva`, `WebEcr`, `WorldLine`, `Edps`, `EpaySoftPos`) ή τον αριθμό του (1-5), χωρίς διάκριση πεζών και κεφαλαίων. Η επιλογή αλλάζει τη σειρά των ποσών και τη μορφή του `unsigned_text` που υπογράφεται.

Πότε χρησιμοποιείται

Στείλτε τον NSP που θα χρεώσει την κάρτα στο POS· με τον πάροχο `flexy` η τιμή αλλάζει τη σειρά των ποσών και τη μορφή ημερομηνίας στο `unsigned_text`.

  • έως 50 χαρακτήρες

Επιτρεπτές τιμές

Γίνονται δεκτά και τα ονόματα (`Viva`, `WebEcr`, `WorldLine`, `Edps`, `EpaySoftPos`) και οι αριθμοί 1-5, με πεζά ή κεφαλαία. Οτιδήποτε άλλο δίνει 400 «Unknown nsp». Στο sandbox του Oxygen επιβεβαιώθηκε live στις 04/10/2026 ότι αναγνωρίζονται τα ίδια ονόματα και νούμερα, χωρίς διάκριση πεζών και κεφαλαίων, και ό,τι άλλο απορρίπτεται με 422 «The selected nsp is invalid».

ΤιμήΣημασία
1Viva: PAYMENT;NET;VAT;TOTAL, λεπτά, YYYYMMDDHHMMSS
2WebEcr: NET;VAT;TOTAL;PAYMENT, λεπτά, YYYYMMDDHHMMSS
3WorldLine: NET;VAT;TOTAL;PAYMENT, λεπτά, YYYYMMDDHHMMSS
4Edps: PAYMENT;NET;VAT;TOTAL, λεπτά, YYYYMMDDHHMMSS
5EpaySoftPos: PAYMENT;NET;VAT;TOTAL, ευρώ («0.62»), YYYY-MM-DDTHH:MM:SS.000

Παράδειγμα

{
  "nsp": "Viva"
}
markstringΠροαιρετικόΤο ΜΑΡΚ του παραστατικού myDATA, που μπαίνει ως δεύτερο πεδίο του `unsigned_text`, αμέσως μετά το UID.#

Το ΜΑΡΚ του παραστατικού myDATA, που μπαίνει ως δεύτερο πεδίο του `unsigned_text`, αμέσως μετά το UID. Αν δεν το έχετε ακόμη (το ΜΑΡΚ αποδίδεται μόνο μετά την έκδοση), στείλτε `null` ή κενή συμβολοσειρά και ο πάροχος προωθεί κενή τιμή στον Oxygen.

Πότε χρησιμοποιείται

Προαιρετικό· στείλτε το αν το παραστατικό έχει ήδη εκδοθεί και έχετε ΜΑΡΚ, αλλιώς αφήστε το κενό ή `null`.

  • έως 50 χαρακτήρες
  • δέχεται null

Παράδειγμα

{
  "mark": ""
}
issuer_vat_numberstringΥποχρεωτικόΤο ΑΦΜ του εκδότη, εννιαψήφιο ελληνικό και χωρίς το πρόθεμα `EL`.#

Το ΑΦΜ του εκδότη, εννιαψήφιο ελληνικό και χωρίς το πρόθεμα `EL`. Χρησιμοποιείται για τον υπολογισμό του UID του παραστατικού (πρώτο πεδίο του `unsigned_text`) και πρέπει να είναι **ίδιο** με το ΑΦΜ που θα μπει στο παραστατικό που εκδίδεται μετά.

  • έως 20 χαρακτήρες

Παράδειγμα

{
  "issuer_vat_number": "<ΑΦΜ>"
}
branch_codeintegerΠροαιρετικόΟ κωδικός υποκαταστήματος του εκδότη, με `0` για την έδρα.#

Ο κωδικός υποκαταστήματος του εκδότη, με `0` για την έδρα. Χρησιμοποιείται στον υπολογισμό του UID του παραστατικού, οπότε πρέπει να ταιριάζει με τον κωδικό υποκαταστήματος που θα μπει στο παραστατικό που εκδίδεται μετά.

Πότε χρησιμοποιείται

Στείλτε `0` για την έδρα ή τον κωδικό υποκαταστήματος αν η υπογραφή αφορά υποκατάστημα, με την ίδια τιμή που θα έχει το παραστατικό που ακολουθεί.

  • ελάχιστη τιμή -2147483648
  • μέγιστη τιμή 2147483647

Παράδειγμα

{
  "branch_code": 0
}
invoice_seriesstringΥποχρεωτικόΗ σειρά του παραστατικού (π.χ.#

Η σειρά του παραστατικού (π.χ. `A`). Πρέπει να είναι **ίδια** με τη σειρά του παραστατικού που θα εκδοθεί μετά· οποιαδήποτε απόκλιση αλλάζει το UID και η ΑΑΔΕ απορρίπτει το παραστατικό.

  • έως 50 χαρακτήρες

Παράδειγμα

{
  "invoice_series": "A"
}
invoice_numberstringΥποχρεωτικόΟ αριθμός του παραστατικού (ΑΑ, π.χ.#

Ο αριθμός του παραστατικού (ΑΑ, π.χ. `20261004171639` σε μορφή `YYYYMMDDHHMMSS`). Πρέπει να είναι **ίδιος** με τον αριθμό του παραστατικού που θα εκδοθεί μετά· οποιαδήποτε απόκλιση αλλάζει το UID.

  • έως 50 χαρακτήρες

Παράδειγμα

{
  "invoice_number": "20261004171639"
}
invoice_issued_atdatetimeΥποχρεωτικόΗ ημερομηνία και ώρα έκδοσης του παραστατικού, με ζώνη ώρας (ISO 8601, π.χ.#

Η ημερομηνία και ώρα έκδοσης του παραστατικού, με ζώνη ώρας (ISO 8601, π.χ. `2026-10-04T17:16:39+03:00`). Πρέπει να είναι **ίδια** με την ημερομηνία του παραστατικού που θα εκδοθεί μετά· οποιαδήποτε απόκλιση αλλάζει το UID.

Παράδειγμα

{
  "invoice_issued_at": "2026-10-04T17:16:39+03:00"
}
invoice_typestringΥποχρεωτικόΟ κωδικός είδους παραστατικού myDATA (π.χ.#

Ο κωδικός είδους παραστατικού myDATA (π.χ. `1.1` Τιμολόγιο Πώλησης, `11.1` Απόδειξη Λιανικής, `11.4` Απόδειξη Επιστροφής Λιανικής και εστίαση). Πρέπει να ταιριάζει με το είδος του παραστατικού που θα εκδοθεί μετά, αλλιώς αλλάζει το UID.

Πότε χρησιμοποιείται

Στείλτε το ίδιο είδος με το παραστατικό που θα εκδοθεί· για εστίαση (`11.4`) το παράθυρο ισχύος είναι 2 ώρες αντί για 60.

  • έως 10 χαρακτήρες

Παράδειγμα

{
  "invoice_type": "1.1"
}
invoice_net_amountdecimalΥποχρεωτικόΗ καθαρή αξία του παραστατικού, χωρίς ΦΠΑ, σε ευρώ.#

Η καθαρή αξία του παραστατικού, χωρίς ΦΠΑ, σε ευρώ. Μπαίνει στο `unsigned_text` σε λεπτά ως ακέραιος για τους NSP `Viva`, `WebEcr`, `WorldLine` και `Edps`, ή σε ευρώ με 2 δεκαδικά για τον `EpaySoftPos`, και πρέπει να ταιριάζει με την αντίστοιχη τιμή του παραστατικού.

  • 12 ψηφία συνολικά
  • 2 δεκαδικά ψηφία

Παράδειγμα

{
  "invoice_net_amount": "10.00"
}
invoice_vat_amountdecimalΥποχρεωτικόΤο ποσό ΦΠΑ του παραστατικού, σε ευρώ.#

Το ποσό ΦΠΑ του παραστατικού, σε ευρώ. Μπαίνει στο `unsigned_text` σε λεπτά ως ακέραιος για τους NSP `Viva`, `WebEcr`, `WorldLine` και `Edps`, ή σε ευρώ με 2 δεκαδικά για τον `EpaySoftPos`, και πρέπει να ταιριάζει με το αντίστοιχο ποσό ΦΠΑ του παραστατικού.

  • 12 ψηφία συνολικά
  • 2 δεκαδικά ψηφία

Παράδειγμα

{
  "invoice_vat_amount": "2.40"
}
invoice_total_amountdecimalΥποχρεωτικόΗ συνολική αξία του παραστατικού, με ΦΠΑ, σε ευρώ.#

Η συνολική αξία του παραστατικού, με ΦΠΑ, σε ευρώ. Μπαίνει στο `unsigned_text` σε λεπτά ως ακέραιος για τους NSP `Viva`, `WebEcr`, `WorldLine` και `Edps`, ή σε ευρώ με 2 δεκαδικά για τον `EpaySoftPos`, και πρέπει να ταιριάζει με την αντίστοιχη τιμή του παραστατικού.

  • 12 ψηφία συνολικά
  • 2 δεκαδικά ψηφία

Παράδειγμα

{
  "invoice_total_amount": "12.40"
}
payment_amountdecimalΥποχρεωτικόΠοσό που χρεώνεται στο POS για αυτή την υπογραφή· στο `unsigned_text` μπαίνει σε λεπτά για τους NSP `Viva`, `WebEcr`, `WorldLine`, `Edps` και σε ευρώ με 2 δεκαδικά για τον `EpaySoftPos`.#

Ποσό που χρεώνεται στο POS για αυτή την υπογραφή· στο `unsigned_text` μπαίνει σε λεπτά για τους NSP `Viva`, `WebEcr`, `WorldLine`, `Edps` και σε ευρώ με 2 δεκαδικά για τον `EpaySoftPos`. Συνήθως ισούται με το `invoice_total_amount`, αλλά μικραίνει σε πληρωμή μέρους με μετρητά ή σε πολλές χρεώσεις.

  • 12 ψηφία συνολικά
  • 2 δεκαδικά ψηφία

Παράδειγμα

{
  "payment_amount": "12.40"
}
durationintegerΥποχρεωτικόΔεν χρησιμοποιείται από το flexyΗ διάρκεια ισχύος του payment token σε **ημέρες** (π.χ.#

Η διάρκεια ισχύος του payment token σε **ημέρες** (π.χ. `1` για μία ημέρα), που προωθείται ως έχει στον Oxygen. Με τον πάροχο `flexy` η πραγματική ισχύς καθορίζεται από το `invoice_type`: 60 ώρες κανονικά και 2 ώρες για τον τύπο `11.4` (εστίαση).

Πότε χρησιμοποιείται

Υποχρεωτικό από το API, αλλά ο πάροχος `flexy` το αγνοεί και η πραγματική ισχύς προκύπτει από το `invoice_type`· στείλτε `1` για συμβατότητα με τον Oxygen.

  • ελάχιστη τιμή -2147483648
  • μέγιστη τιμή 2147483647

Παράδειγμα

{
  "duration": 1
}
terminal_idstringΥποχρεωτικόΤο αναγνωριστικό του τερματικού POS που θα χρεώσει την κάρτα, το οποίο μπαίνει ως τελευταίο πεδίο του `unsigned_text`, μετά τα ποσά.#

Το αναγνωριστικό του τερματικού POS που θα χρεώσει την κάρτα, το οποίο μπαίνει ως τελευταίο πεδίο του `unsigned_text`, μετά τα ποσά. Με τον πάροχο `flexy` αποθηκεύεται και ως `issued_to_terminal_id` (άρθρο 8 §5: το EFT/POS στο οποίο παραδόθηκε η υπογραφή).

  • έως 100 χαρακτήρες

Παράδειγμα

{
  "terminal_id": "<TID>"
}