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:
- runs its own checks (permissions, credits, food service/POS rules, etc.),
- transmits it to AADE (myDATA), the Greek tax authority, and gets a MARK, UID and Authentication Code,
- generates the PDF with the QR code and all mandatory provider details,
- emails it to the recipients you specified and archives it,
- 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. |