Μετάβαση στο περιεχόμενο

Πληρωμή με κάρτα / IRIS

Με την απόφαση Α.1155/2023, όταν το τερματικό POS μιας επιχείρησης είναι «κλειδωμένο» (διασυνδεδεμένο), η χρέωση της κάρτας ή του IRIS γίνεται μόνο με Υπογραφή Παρόχου. Ο Πάροχος δίνει την υπογραφή, το POS τη χρησιμοποιεί για να χρεώσει, και μετά ολοκληρώνετε το παραστατικό.

Ποιος το χρειάζεται

Μόνο όσοι έχουν POS υποχρεωμένο σε διασύνδεση. Αυτό το ορίζει η ΑΑΔΕ ανά επιχείρηση και τερματικό, και ο Πάροχος δεν μπορεί να το γνωρίζει. Γι' αυτό υπάρχει η παράμετρος skipSignature.

skipSignature: ο διακόπτης

SendInvoices?skipSignature= Τι γίνεται με πληρωμή type 7 (κάρτα) ή 8 (IRIS)
true (default) Το παραστατικό εκδίδεται αμέσως (MARK, UID, AuthCode). Δεν επιστρέφεται υπογραφή. Για POS που δεν είναι κλειδωμένο.
false Το παραστατικό μένει σε αναμονή, δεν πάει ακόμη στην ΑΑΔΕ. Επιστρέφεται providerSignature για το POS. Για κλειδωμένο POS.

Αν το παραστατικό δεν έχει πληρωμή 7 ή 8, το skipSignature δεν έχει καμία επίδραση.

Ροή 1: έκδοση και πληρωμή μαζί (ταμείο)

sequenceDiagram
    autonumber
    participant APP as Ταμείο / ERP
    participant NP as Novus Provider
    participant POS as POS / NSP (τράπεζα)
    participant AADE as ΑΑΔΕ
    APP->>NP: SendInvoices?skipSignature=false<br/>paymentMethods: type 7, terminalId, posNspId
    NP-->>APP: providerSignature[].signatures[].token (+ data)
    APP->>POS: χρέωση με το token
    POS-->>APP: transactionId, τελικό paymentType (κάρτα ή IRIS)
    APP->>NP: CompletionPosInvoices [ signatureToken, transactionId, paymentAmount, paymentType ]
    NP->>AADE: διαβίβαση παραστατικού + πληρωμής
    NP-->>APP: MARK, UID, AuthCode, invoiceUrl

Βήμα 1: στείλτε το παραστατικό με skipSignature=false και, στην πληρωμή, τα terminalId και posNspId:

"paymentMethods": [ { "type": 7, "amount": 124.00, "terminalId": "TID00001", "posNspId": 1 } ]

Βήμα 2: η απάντηση έχει την υπογραφή:

"providerSignature": [
  {
    "invoiceUid": "5E1F953760F9496F5520A961DA3BE07B30ED07F8",
    "signatures": [
      {
        "token": "3045022100F0B3EAEAAC535A0C6549B42619C65895...",
        "data": "5E1F953760F9496F5520A961DA3BE07B30ED07F8;;20260924155441;10000;2400;12400;12400;TID00001",
        "createdDate": "2026-09-24T12:54:41Z",
        "expiryDate": "2026-09-25T12:54:41Z",
        "isExpired": false,
        "paymentBalance": 124,
        "issuerVatNumber": "123456789"
      }
    ]
  }
]
  • token: το περνάτε αυτούσιο στο API του NSP/τράπεζας. Είναι ήδη στη μορφή που θέλει ο NSP (HEX ή BASE64, βάσει του posNspId). Μην το μετατρέπετε.
  • data: τα δεδομένα που υπογράφηκαν. Μερικοί NSP τα ζητούν μαζί με το token.
  • Ισχύς: 24 ώρες. Για συναλλαγές εστίασης (specialInvoiceCategory = 12) η ισχύς είναι 2 ώρες.

Βήμα 3: χρεώστε στο POS. Ο πελάτης μπορεί να αλλάξει τρόπο (π.χ. από κάρτα σε IRIS). Κρατήστε το transactionId και τον τελικό τύπο πληρωμής.

Βήμα 4: ολοκληρώστε:

POST /api/v1/Provider/CompletionPosInvoices
[
  {
    "signatureToken": "<providerSignature[0].signatures[0].token από το SendInvoices>",
    "transactionId": "123456788555",
    "paymentAmount": 124,
    "tipAmount": 0,
    "paymentType": 7
  }
]
Πεδίο Υποχρεωτικό Σημείωση
signatureToken ναι Το token του βήματος 2.
transactionId ναι Από το POS/NSP.
paymentAmount ναι > 0 και όχι μεγαλύτερο από το paymentBalance της υπογραφής.
tipAmount όχι Φιλοδώρημα.
paymentType όχι Ο τελικός τύπος από το POS: 7 ή 8. Αν λείπει, θεωρείται 7.

Η απάντηση έχει την ίδια μορφή με το SendInvoices, με MARK, UID, AuthCode και invoiceUrl.

Ροή 2: πληρωμή παλιού παραστατικού (επί πιστώσει)

Το παραστατικό εκδόθηκε νωρίτερα (π.χ. type: 5, επί πιστώσει) και τώρα εξοφλείται με κάρτα.

  1. POST /api/v1/Provider/AskSignatureForOldInvoice?terminalId=TID00001&posNspId=1. Το body είναι σκέτο το MARK: 400001930000001. Η απάντηση επιστρέφει token, data, paymentBalance.
  2. Χρέωση στο POS με το token.
  3. POST /api/v1/Provider/CompletionAskSignatureForOldInvoice?signatureToken=…&transactionId=…&paymentAmount=…&tipAmount=0&paymentType=7. Το body είναι πάλι σκέτο το MARK.

Λεπτομέρειες: Other endpoints.

Σφάλματα που θα δείτε

Μήνυμα Τι σημαίνει
If one of the payment methods requires pos then the Terminal Id (tid) field is required. Λείπει το terminalId με skipSignature=false.
If one of the payment methods requires pos then the Pos Nsp Id fields is required. Λείπει το posNspId.
The transactionId field is required. Completion χωρίς transactionId.
One ore more of the tokens is not verified. Λάθος ή αλλοιωμένο token.
One ore more of the signature token balance is not enough. Το paymentAmount ξεπερνά το υπόλοιπο της υπογραφής.
The paymentType field only accepts values 7 or 8. Άλλος τύπος στο completion.

Καλό να ξέρετε

  • Κάθε γραμμή πληρωμής με υπογραφή χρεώνει 0,25 credits επιπλέον (Credits).
  • Το ζητούμενο paymentType στο SendInvoices δεν είναι οριστικό. Το τελικό δηλώνεται στο completion.
  • Αν τυπώνετε δικό σας παραστατικό, γράψτε το transactionId και την υπογραφή που χρησιμοποιήθηκε, για κάθε ποσό (κανόνες εκτύπωσης).
  • Σε μελλοντική έκδοση το skipSignature θα καταργηθεί και η υπογραφή θα επιστρέφεται πάντα για τύπους 7/8.

Αποδείξεις POS (8.4 / 8.5)

Για επιχειρήσεις που εισπράττουν ή επιστρέφουν ποσά μέσω POS (π.χ. για λογαριασμό τρίτων, με thirdPartyCollection).

11.1 με πληρωμή κάρτας (για skipSignature=false)

Λήψη

{
  "invoice": [
    {
      "issuer": {
        "vatNumber": "123456789",
        "country": "GR",
        "branch": 0
      },
      "invoiceHeader": {
        "series": "A",
        "aa": "1101",
        "issueDate": "2026-09-24",
        "invoiceType": "11.1",
        "currency": "EUR"
      },
      "paymentMethods": [
        {
          "type": 7,
          "amount": 124,
          "terminalId": "TID00001",
          "posNspId": 1
        }
      ],
      "invoiceDetails": [
        {
          "lineNumber": 1,
          "lineCode": "655-000023",
          "quantity": 1,
          "measurementUnitLabel": "ΤΜΧ",
          "lineUnitPrice": 120,
          "totalNetPriceBeforeDiscount": 120,
          "totalDiscountValue": 20,
          "netValue": 100,
          "vatCategory": 1,
          "vatCategoryPercent": 24,
          "vatAmount": 24,
          "lineDescription": "Αντικατάσταση Λέβητα",
          "incomeClassification": [
            {
              "classificationType": "E3_561_003",
              "classificationCategory": "category1_1",
              "amount": 100
            }
          ]
        }
      ],
      "invoiceSummary": {
        "totalNetValue": 100,
        "totalVatAmount": 24,
        "totalWithheldAmount": 0,
        "totalFeesAmount": 0,
        "totalStampDutyAmount": 0,
        "totalOtherTaxesAmount": 0,
        "totalDeductionsAmount": 0,
        "totalGrossValue": 124,
        "incomeClassification": [
          {
            "classificationType": "E3_561_003",
            "classificationCategory": "category1_1",
            "amount": 100
          }
        ]
      },
      "providerAdditionalInvoiceDetails": {
        "issuer": {
          "name": "TEST ISSUER ΙΚΕ",
          "profession": "Εμπόριο ειδών θέρμανσης",
          "taxoffice": "Α' Αθηνών",
          "addressStreet": "Οδός Δοκιμής",
          "addressNumber": "1",
          "addressPostalCode": "10431",
          "addressCity": "Αθήνα",
          "addressCountry": "Ελλάδα",
          "phone": "2100000000",
          "email": "info@example.com",
          "webSite": "www.example.com",
          "registryNumber": "ΓΕΜΗ: 000000000000",
          "emtyLine2": "IBAN: GR00 0000 0000 0000 0000 0000 000"
        },
        "additionalDetails": {
          "documentLabel": "Απόδειξη Λιανικής Πώλησης",
          "documentLanguageCode": "EL",
          "documentSizeCode": 1,
          "documentComments": "Εξόφληση εντός 30 ημερών.",
          "paymentMethodInvoiceLabel": "Κάρτα"
        }
      }
    }
  ]
}

8.4 — Απόδειξη Είσπραξης POS

Λήψη

{
  "invoice": [
    {
      "issuer": {
        "vatNumber": "123456789",
        "country": "GR",
        "branch": 0
      },
      "invoiceHeader": {
        "series": "A",
        "aa": "1012",
        "issueDate": "2026-09-24",
        "invoiceType": "8.4",
        "currency": "EUR",
        "multipleConnectedMarks": [
          400001930000001
        ]
      },
      "paymentMethods": [
        {
          "type": 7,
          "amount": 10,
          "terminalId": "TID00001",
          "posNspId": 1
        }
      ],
      "invoiceDetails": [
        {
          "lineNumber": 1,
          "lineCode": "#0001",
          "quantity": 1,
          "measurementUnitLabel": "LT",
          "lineUnitPrice": 20,
          "totalNetPriceBeforeDiscount": 20,
          "totalDiscountValue": 10,
          "netValue": 10,
          "vatCategory": 8,
          "vatCategoryPercent": 0,
          "vatAmount": 0,
          "lineDescription": "Είδος δοκιμής",
          "incomeClassification": [
            {
              "classificationCategory": "category1_95",
              "amount": 10
            }
          ]
        }
      ],
      "invoiceSummary": {
        "totalNetValue": 10,
        "totalVatAmount": 0,
        "totalWithheldAmount": 0,
        "totalFeesAmount": 0,
        "totalStampDutyAmount": 0,
        "totalOtherTaxesAmount": 0,
        "totalDeductionsAmount": 0,
        "totalGrossValue": 10,
        "incomeClassification": [
          {
            "classificationCategory": "category1_95",
            "amount": 10
          }
        ]
      },
      "providerAdditionalInvoiceDetails": {
        "issuer": {
          "name": "TEST ISSUER ΙΚΕ",
          "profession": "Εμπόριο ειδών θέρμανσης",
          "taxoffice": "Α' Αθηνών",
          "addressStreet": "Οδός Δοκιμής",
          "addressNumber": "1",
          "addressPostalCode": "10431",
          "addressCity": "Αθήνα",
          "addressCountry": "Ελλάδα",
          "phone": "2100000000",
          "email": "info@example.com",
          "webSite": "www.example.com",
          "registryNumber": "ΓΕΜΗ: 000000000000",
          "emtyLine2": "IBAN: GR00 0000 0000 0000 0000 0000 000"
        },
        "additionalDetails": {
          "documentLabel": "Απόδειξη Είσπραξης POS",
          "documentLanguageCode": "EL",
          "documentSizeCode": 0,
          "paymentMethodInvoiceLabel": "POS"
        }
      }
    }
  ]
}

8.5 — Απόδειξη Επιστροφής POS

Λήψη

{
  "invoice": [
    {
      "issuer": {
        "vatNumber": "123456789",
        "country": "GR",
        "branch": 0
      },
      "invoiceHeader": {
        "series": "A",
        "aa": "1013",
        "issueDate": "2026-09-24",
        "invoiceType": "8.5",
        "currency": "EUR"
      },
      "paymentMethods": [
        {
          "type": 7,
          "amount": 10,
          "terminalId": "TID00001",
          "posNspId": 1
        }
      ],
      "invoiceDetails": [
        {
          "lineNumber": 1,
          "lineCode": "#0001",
          "quantity": 1,
          "measurementUnitLabel": "LT",
          "lineUnitPrice": 20,
          "totalNetPriceBeforeDiscount": 20,
          "totalDiscountValue": 10,
          "netValue": 10,
          "vatCategory": 8,
          "vatCategoryPercent": 0,
          "vatAmount": 0,
          "lineDescription": "Είδος δοκιμής",
          "incomeClassification": [
            {
              "classificationCategory": "category1_95",
              "amount": 10
            }
          ]
        }
      ],
      "invoiceSummary": {
        "totalNetValue": 10,
        "totalVatAmount": 0,
        "totalWithheldAmount": 0,
        "totalFeesAmount": 0,
        "totalStampDutyAmount": 0,
        "totalOtherTaxesAmount": 0,
        "totalDeductionsAmount": 0,
        "totalGrossValue": 10,
        "incomeClassification": [
          {
            "classificationCategory": "category1_95",
            "amount": 10
          }
        ]
      },
      "providerAdditionalInvoiceDetails": {
        "issuer": {
          "name": "TEST ISSUER ΙΚΕ",
          "profession": "Εμπόριο ειδών θέρμανσης",
          "taxoffice": "Α' Αθηνών",
          "addressStreet": "Οδός Δοκιμής",
          "addressNumber": "1",
          "addressPostalCode": "10431",
          "addressCity": "Αθήνα",
          "addressCountry": "Ελλάδα",
          "phone": "2100000000",
          "email": "info@example.com",
          "webSite": "www.example.com",
          "registryNumber": "ΓΕΜΗ: 000000000000",
          "emtyLine2": "IBAN: GR00 0000 0000 0000 0000 0000 000"
        },
        "additionalDetails": {
          "documentLabel": "Απόδειξη Επιστροφής POS",
          "documentLanguageCode": "EL",
          "documentSizeCode": 0,
          "paymentMethodInvoiceLabel": "POS"
        }
      }
    }
  ]
}