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

Τεκμηρίωση API

Βήμα 2 – Έκδοση τιμολογίου

Εκδώστε ένα Τιμολόγιο Πώλησης (1.1) με πληρωμή σε μετρητά, συμπληρώνοντας μόνο τον ΑΦΜ του εκδότη.

Σε αυτό το βήμα εκδίδετε ένα πραγματικό παραστατικό στο περιβάλλον δοκιμών: ένα Τιμολόγιο Πώλησης (1.1) αξίας 12,40 €, πληρωμένο με μετρητά. Όλες οι τιμές είναι έτοιμες. Συμπληρώνετε μόνο τον ΑΦΜ του εκδότη.

1. Ετοιμάστε το σώμα του αιτήματος

Αποθηκεύστε το παρακάτω ως invoice.json:

{
  "document": {
    "provider": "flexy",
    "document_type": "invoice",
    "series": "A",
    "aa": "YYYYMMDDHHMMSS",
    "date": "YYYY-MM-DD",
    "provider_details": {
      "document_type": "1.1",
      "payment_method_type": 3
    },
    "issuer": {
      "legal_name": "Δοκιμαστικός Εκδότης",
      "legal_number": "<ΑΦΜ>",
      "address": {
        "address_line": "Πανεπιστημίου 123",
        "city": "Αθήνα",
        "zip": "10678",
        "country": "GR"
      }
    },
    "counterpart": {
      "legal_name": "Δοκιμαστικός Πελάτης",
      "legal_number": "801434350",
      "address": {
        "address_line": "Σταδίου 456",
        "city": "Θεσσαλονίκη",
        "zip": "54625",
        "country": "GR"
      }
    },
    "items": [
      {
        "title": "Προϊόν δοκιμής",
        "description": "Γραμμή δοκιμής",
        "quantity": "1",
        "unit_measure": "ΤΕΜ",
        "unit_value": "10.00",
        "unit_total": "10.00",
        "taxes": [
          {
            "title": "ΦΠΑ 24%",
            "value_type": "percentage",
            "value": "24.00",
            "tax_sign": "+",
            "on_vat": true,
            "provider_details": { "provider_code": "1" }
          }
        ],
        "provider_details": {
          "classification_category": "category1_1",
          "classification_type": "E3_561_001",
          "vat_classification_category": "1"
        }
      }
    ],
    "totals": {
      "line_extension_amount": "10.00",
      "tax_exclusive_amount": "10.00",
      "tax_amount": "2.40",
      "tax_inclusive_amount": "12.40",
      "payable_amount": "12.40"
    },
    "tax_breakdown": [
      {
        "tax_category_id": "S",
        "tax_rate_percent": "24.00",
        "taxable_amount": "10.00",
        "tax_amount": "2.40"
      }
    ]
  }
}

Συμπληρώνετε μόνο τον ΑΦΜ του εκδότη. Το date και το aa τα συμπληρώνει η σελίδα κάθε φορά που την ανοίγετε:

ΠεδίοΤιμή
issuer.legal_numberΕσείς: στη θέση του <ΑΦΜ> βάλτε τον ΑΦΜ της επιχείρησης που εκδίδει το τιμολόγιο (9 ψηφία).
dateΗ σελίδα: η σημερινή ημερομηνία (ώρα Ελλάδας), σε μορφή ΕΕΕΕ-ΜΜ-ΗΗ.
aaΗ σελίδα: η τρέχουσα ημερομηνία και ώρα με δευτερόλεπτα, π.χ. 20261004153012 για 4/10/2026 15:30:12. Έτσι κάθε αποστολή έχει νέο αύξοντα αριθμό· για νέα αποστολή, ανανεώστε τη σελίδα.

2. Στείλτε το

curl https://provider-staging.flexy.gr/api/v1/documents/ \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  --data-binary @invoice.json

3. Η απάντηση

Όταν η ΑΑΔΕ καταχωρήσει το παραστατικό, το API απαντά με HTTP 201:

{
  "document": {
    "document_type": "invoice",
    "aa": "20261004102731",
    "series": "A",
    "issue_date": "2026-10-04",
    "id": "969950c9-2bfa-48c8-ba15-ebe12d02b743",
    "provider": "flexy",
    "status": "success",
    "mydata_mark": 400001972081610,
    "mydata_uid": "A2C1DBB4600F9CF22CCE6370CEDF72036220B39A",
    "qr_code_url": "https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=…",
    "issuer_vat_number": "<ΑΦΜ>",
    "counterpart_vat_number": "801434350",
    "total_gross_value": "12.40"
    // … και άλλα πεδία, π.χ. το document_data με όλο το παραστατικό όπως το στείλατε
  }
}
ΠεδίοΤι σημαίνει
statussuccess: η ΑΑΔΕ καταχώρησε το παραστατικό.
mydata_markΟ ΜΑΡΚ (Μοναδικός Αριθμός Καταχώρησης) που έδωσε η ΑΑΔΕ.
mydata_uidΤο UID του παραστατικού στο myDATA.
qr_code_urlΟ σύνδεσμος του QR, που ανοίγει το παραστατικό στην ΑΑΔΕ.
idΤο αναγνωριστικό του παραστατικού στη Flexy.

Τι περιέχει το παράδειγμα

ΤιμήΣημασία
provider: "flexy"Η Flexy διαβιβάζει το παραστατικό στην ΑΑΔΕ ως πάροχος.
provider_details.document_type: "1.1"Τιμολόγιο Πώλησης.
provider_details.payment_method_type: 3Πληρωμή με μετρητά (κωδικός myDATA 3) για όλο το πληρωτέο ποσό.
issuerΗ επιχείρηση που εκδίδει το τιμολόγιο. Από τα στοιχεία της, η ΑΑΔΕ λαμβάνει τον ΑΦΜ· το όνομα και η διεύθυνση μπορούν να μείνουν ως έχουν.
counterpartΟ πελάτης του τιμολογίου: ένας δοκιμαστικός πελάτης (ΑΦΜ 801434350). Πρέπει να διαφέρει από τον εκδότη.
itemsΜία γραμμή: 1 τεμάχιο × 10,00 €, ΦΠΑ 24% (κατηγορία ΦΠΑ 1), χαρακτηρισμός εσόδων category1_1 / E3_561_001 (πωλήσεις χονδρικής).
totals, tax_breakdown10,00 € καθαρή αξία + 2,40 € ΦΠΑ = 12,40 €. Πρέπει να συμφωνούν με τις γραμμές.

Κάτι δεν πάει καλά

HTTPcodeΑιτίαΤι κάνετε
400requiredΛείπει πεδίο. Το attr λέει ποιο, π.χ. aa ή items.0.description.Προσθέστε το πεδίο.
400invalidΤα ποσά δεν συμφωνούν μεταξύ τους ή η ημερομηνία είναι μελλοντική. Το detail εξηγεί τι ακριβώς.Διορθώστε ό,τι αναφέρει το detail.
400provider_validation_errorΗ ΑΑΔΕ απέρριψε το παραστατικό· το detail έχει το μήνυμά της. Με It has already been sent for another invoice, αυτό το aa έχει ήδη σταλεί. Με Issuer must be different from counterpart, ο εκδότης έχει τον ΑΦΜ του πελάτη.Για νέο aa, ανανεώστε τη σελίδα και στείλτε ξανά. Αλλιώς διορθώστε ό,τι αναφέρει το detail.
403onboarding_not_approvedΗ εγγραφή σας δεν έχει εγκριθεί ακόμη.Γράψτε μας στο [email protected].
500errorΣφάλμα στη μεριά της Flexy, π.χ. ο λογαριασμός δοκιμών σας δεν έχει ρυθμιστεί πλήρως.Γράψτε μας στο [email protected].

Για σφάλματα 401 δείτε το βήμα 1.

Συνεχίστε στο βήμα 3: το ίδιο τιμολόγιο, πληρωμένο με κάρτα.