Skip to content

How it works

Your app (ERP, POS, e-shop, PMS) sends the document as JSON to the Novus Provider, a certified e-invoicing provider. The provider:

  1. runs its own checks (permissions, credits, food service/POS rules, etc.),
  2. transmits it to AADE (myDATA), the Greek tax authority, and gets a MARK, UID and Authentication Code,
  3. generates the PDF with the QR code and all mandatory provider details,
  4. emails it to the recipients you specified and archives it,
  5. returns all of the above in the response, in the same call.

Which documents go through the provider

Only types 1.1 to 11.5 (invoices, receipts, credit notes, special documents, delivery notes, retail). Types 12.x to 17.x (recipient documents, expenses, adjustment entries) are not transmitted by a provider.

sequenceDiagram
    autonumber
    participant APP as Your app<br/>(ERP / POS)
    participant NP as Novus Provider API
    participant AADE as AADE myDATA
    participant C as Customer (recipient)
    APP->>NP: POST /api/v1/Provider/SendInvoices (JSON, API-KEY)
    NP->>NP: Novus checks (permissions, credits, rules)
    alt Novus checks fail
        NP-->>APP: HTTP 400 / 401 { "errors": [...] }
    else Success
        NP->>AADE: SendInvoices (XML, signed by the provider)
        AADE-->>NP: MARK, UID, AuthenticationCode or errors
        NP->>NP: PDF + QR, archiving
        NP-->>APP: HTTP 200 { response: [ statusCode, invoiceMark, invoiceUid, invoiceUrl, ... ] }
        NP-)C: Email with the PDF (if a recipient was specified)
    end

Key concepts

Term What it is Where you find it
MARK Unique Registration Number of the document in myDATA. response[].invoiceMark
UID Document identifier: SHA-1 of the issuer's VAT number (ΑΦΜ), date, branch, type, series and number. Unique: a second submission with the same details is rejected. response[].invoiceUid
Authentication Code Authentication string, mandatory for documents issued through a provider. response[].authenticationCode
QR / invoiceUrl Link to the PDF and the provider's verification page. Printed as a QR code on the document. response[].invoiceUrl, qrUrl
aadeQrUrl AADE's official verification link. For information only; no action needed. response[].aadeQrUrl
Provider signature Provider signature for card/IRIS payments through a POS terminal (A.1155/2023). Card / IRIS payment
Credits The charge for each call, taken from your account balance. response[].credits, Credits

Who does what

  • Your app


    • Correct amounts, VAT, income/expense classifications and document type.
    • Numbering (series + number) with no gaps and no duplicates.
    • The print details (providerAdditionalInvoiceDetails).
    • Error handling and resending where needed.
  • The Novus Provider


    • Transmission to myDATA as a certified provider.
    • PDF with QR code, MARK, UID, Authentication Code and provider details.
    • Email to the recipient and archiving.
    • Automatic transmission later, if AADE is down (statusCode = Offline).

The provider does not "fix" data

The provider forwards the data to AADE exactly as it receives it. Amounts, VAT categories and classifications are the responsibility of the app that issues the document.

The three possible outcomes of a submission

Outcome How you recognize it What you do
Issued HTTP 200 and statusCode = "Success" Store MARK, UID, AuthenticationCode, invoiceUrl.
Issued, AADE was offline HTTP 200 and statusCode = "Offline" Do not send it again. The provider transmits it automatically. See Offline.
Not issued HTTP 4xx/5xx or HTTP 200 with statusCode = ValidationError / XMLSyntaxError / TechnicalError Fix it and send it again. See Errors & status codes.