Skip to content

SendInvoices

Issues a document, transmits it to myDATA of AADE (the Greek tax authority), generates the PDF and sends it to the recipient.

POST {baseUrl}/api/v1/Provider/SendInvoices?skipSignature={true|false}

Authentication Header API-KEY
Content-Type application/json
Documents per call 1. The body is an array for compatibility with the AADE schema, but the API accepts exactly one document per call.
Cost Credits depend on the document type. See Credits.
Retries Based on the UID. AADE computes it from the issuer's VAT number (ΑΦΜ), date, branch, type, series and number. If you send the same document again, it is rejected with AADE error 228, and the message contains the MARK of the original.

Query parameters

Name Type Default Description
skipSignature boolean true Applies only to payments with type 7 (card) or 8 (IRIS). true: the document is issued immediately, without a provider signature. false: the document is not transmitted yet. The response contains a provider signature, you charge the card on the POS, and then you complete the document with CompletionPosInvoices. See Card / IRIS payment.

Request body

{
  "invoice": [                      ← exactly one item
    {
      "issuer":            PartyType        (required)
      "counterpart":       PartyType        (B2B: required)
      "invoiceHeader":     InvoiceHeader    (required)
      "paymentMethods":    PaymentMethod[]  (required, except 8.6 / 9.x / 10.x)
      "invoiceDetails":    InvoiceRow[]     (required)
      "taxesTotals":       TaxTotal[]       (optional)
      "invoiceSummary":    InvoiceSummary   (required)
      "packingsDeclarations": [...]         (optional, goods movement documents only)
      "transmissionFailure": 1              (optional)
      "providerAdditionalInvoiceDetails":   (required, PDF data)
    }
  ]
}

Legend: required must be sent · optional may be omitted · new new in myDATA 2.0.x · PDF = used only on the printed document, not sent to AADE · Novus = a field of the certified e-invoicing provider (Novus), not of AADE.

invoice

Field Type Description
issuer PartyType required The issuer. issuer.vatNumber must be active in your account.
counterpart PartyType optional The recipient. AADE requires it on invoices (1.x, 2.x, 5.x …). Omit it on retail receipts (11.x).
invoiceHeader InvoiceHeader required
paymentMethods PaymentMethod[] required Required for all types except 8.6, 9.1, 9.2, 9.3, 10.1, 10.2. Not allowed on 8.6. The sum of amount must equal invoiceSummary.totalGrossValue.
invoiceDetails InvoiceRow[] required At least one line.
taxesTotals TaxTotal[] optional Taxes other than VAT, at document level. If you use it, do not also send the same taxes per line.
invoiceSummary InvoiceSummary required
packingsDeclarations new PackingsDeclaration[] optional Only on goods movement documents.
transmissionFailure integer optional 1 = the document was issued while your application could not reach the Provider, and you are sending it now. Send it within 1 day of issueDate. The Provider sets 2 itself, and rejects it if you send it. See Offline.
providerAdditionalInvoiceDetails ProviderAdditionalInvoiceDetails required Data for the PDF only: names, addresses, labels, recipients.

Fields you do NOT send

uid, mark, authenticationCode, qrCodeUrl and downloadingInvoiceUrl are filled in by AADE or the Provider. In paymentMethods, transactionId, ProvidersSignature, tipAmount and ECRToken are rejected: the POS flow fills them in.

PartyType

Used for issuer, counterpart and otherCorrelatedEntities[].entityData. All fields are sent to AADE.

Field Type Description
vatNumber string required VAT number. No leading or trailing spaces: the Provider rejects a counterpart.vatNumber that contains them.
country string required ISO 3166-1 alpha-2, e.g. GR.
branch integer required Branch number as registered in Taxis. Head office = 0.
name string optional Company name. AADE does not accept it for Greek entities (country GR), so send it only for foreign recipients.
address Address optional For the issuer: not accepted for Greek entities. For a foreign recipient: required, with postalCode and city.
documentIdNo string(100) optional Number of the recipient's official identity document (e.g. passport). Only for tax free (specialInvoiceCategory = 4).
supplyAccountNo string(100) optional Electricity supply number. Only on fuel invoices (fuelInvoice = true).
countryDocumentId string optional Country that issued the documentIdNo. Only for tax free.

Address

Field Type Description
street string optional Street
number string optional Street number
postalCode string required Postal code
city string required City

invoiceHeader

Field Type Description
series string(50) required Series. "0" if the document has no series.
aa string(50) required Sequential number within the series.
issueDate date yyyy-MM-dd required Today's date for documents issued through a Provider (AADE error 238). Exception: transmissionFailure = 1.
invoiceType string required Document type. Through a Provider, only types 1.1 to 11.5 are allowed. Types 12.x to 17.x are never transmitted by a Provider.
vatPaymentSuspension boolean optional VAT payment suspension.
currency string optional ISO 4217, e.g. EUR.
exchangeRate decimal(5) optional Only when currency is not EUR.
correlatedInvoices long[] optional MARKs of the correlated documents, e.g. the original invoice of a 5.1 credit note.
correlatedInvoicesLabel string optional PDF. The printed reference to the correlated documents. Required when you send correlatedInvoices.
correlatedInvoicesUids string[] optional Novus. UIDs of the correlated documents, which the Provider converts to MARKs. For now, this applies only when completing POS payments and when resending offline documents. In a normal call, use correlatedInvoices.
selfPricing boolean optional Self-billing.
dispatchDate date optional Planned dispatch date. Since myDATA 2.0, the carrier declares the actual transport details in the digital delivery note flow.
dispatchTime time HH:mm:ss optional Planned dispatch time.
vehicleNumber string optional Planned vehicle registration number.
movePurpose integer optional Purpose of movement. Values 6, 15, 16, 17 and 18 are no longer accepted.
movePurposeLabel string optional PDF. The printed text of the purpose of movement.
otherMovePurposeTitle string optional Only when movePurpose = 19.
fuelInvoice boolean optional Fuel sales document.
specialInvoiceCategory integer optional Special invoice category.
invoiceVariationType integer optional Invoice variation type. Not allowed through a Provider.
otherCorrelatedEntities EntityType[] optional Other correlated entities: carrier, tax representative, etc.
otherDeliveryNoteHeader OtherDeliveryNoteHeader optional Required on delivery notes (9.x) and on invoices with isDeliveryNote = true.
isDeliveryNote boolean optional The invoice is also a delivery note, e.g. a 1.1 with transport details.
thirdPartyCollection boolean optional Only on 8.4 / 8.5.
multipleConnectedMarks long[] optional Multiple connected MARKs. Mainly for closing 8.6 order slips. Not accepted on 1.6, 2.4 and 5.1.
multipleConnectedUids string[] optional Novus. The same, with UIDs. Useful for 8.6 order slips issued while AADE was offline.
tableAA string (GUID) optional Table identifier. Required on 8.6, and used when the table is closed. See Food service.
totalCancelDeliveryOrders boolean optional Only on 8.6: cancels all order slips in multipleConnectedMarks.
reverseDeliveryNote boolean optional Only on 9.3: reverse movement.
reverseDeliveryNotePurpose integer optional Purpose of reverse movement. Required when reverseDeliveryNote = true.
toWeigh new boolean optional "To be weighed". Only on 9.1, 9.2 and 9.3.
receivingNotePurpose new integer optional Purpose of the quantitative receiving note. Required on 10.1 and 10.2, and accepted only there.
otherReceivingNotePurposeTitle new string optional Only when receivingNotePurpose = 7.
nonObligatedRecipient new boolean optional Only on goods movement documents: the recipient is not obliged to take part in digital goods movement.
withoutDigitalTransportTracking new boolean optional Only on goods movement documents: the document does not take part in digital transport tracking. Its status becomes Completed when it is issued.

EntityType

Field Type Description
type integer required Correlated entity type.
entityData PartyType required

OtherDeliveryNoteHeader

Field Type Description
loadingAddress Address required Loading address.
deliveryAddress Address required Delivery address.
startShippingBranch integer optional The issuer's branch where the movement starts, if it differs from the issuing branch.
completeShippingBranch integer optional The recipient's branch where the movement ends, if it differs.

paymentMethods

Field Type Description
type integer required Payment method.
amount decimal(2) required The amount paid with this method. The amounts of all methods must add up to totalGrossValue.
paymentMethodInfo string optional Additional information sent to AADE, e.g. an IBAN.
terminalId string(200) optional Novus. POS terminal ID (TID). Required for type 7/8 with skipSignature=false. Also accepted under its AADE name, tid.
posNspId integer optional Novus. POS provider / NSP of the terminal. Required for type 7/8 with skipSignature=false. Determines the signature format.

invoiceDetails

Field Type Description
lineNumber integer required Line number, starting at 1.
lineCode string optional PDF. Printed item code.
lineDescription string required PDF. Printed line description.
recType integer optional Line type. 7 (negative sign) is used for partial cancellation of an 8.6.
TaricNo string(10) optional TARIC code. Only on invoices that are also delivery notes, and on goods movement documents.
itemCode string(50) optional Item code sent to AADE. Same restriction as TaricNo.
itemDescr string(300) optional Item description sent to AADE. Tax free, goods movement documents and 8.6.
fuelCode integer optional Fuel code. Only when fuelInvoice = true.
quantity decimal optional Quantity (≥ 0).
measurementUnit integer optional Unit of measurement.
measurementUnitLabel string optional PDF. The printed unit, e.g. τεμ. (pcs).
otherMeasurementUnitQuantity integer optional Required when measurementUnit = 7.
otherMeasurementUnitTitle string optional Required when measurementUnit = 7, e.g. 3_Παλέτες (3 pallets).
invoiceDetailType integer optional Line designation. For 1.5 settlement invoices.
lineUnitPrice decimal required PDF. Unit price.
totalNetPriceBeforeDiscount decimal required PDF. lineUnitPrice × quantity.
totalDiscountValue decimal required PDF. Total line discount (0 if none).
netValue decimal(2) required Net value of the line, after discount.
vatCategory integer required VAT category.
vatCategoryPercent decimal required PDF. The printed VAT rate, e.g. 24.00.
vatAmount decimal(2) required VAT amount of the line.
vatExemptionCategory integer optional VAT exemption reason. Required when vatCategory = 7.
vatExemptionCategoryLabel string optional PDF. The printed exemption text.
dienergia Ship optional Declaration of activity (article 27, POL 1177/2018, ships).
discountOption boolean optional Discount option.
withheldAmount / withheldPercentCategory decimal / integer optional Withholding tax (categories).
stampDutyAmount / stampDutyPercentCategory decimal / integer optional Digital transaction fee, formerly stamp duty (categories).
feesAmount / feesPercentCategory decimal / integer optional Fees (categories).
otherTaxesAmount / otherTaxesPercentCategory decimal / integer optional Other taxes (categories).
deductionsAmount decimal(2) optional Deductions.
lineComments string optional Comments sent to AADE (not printed).
incomeClassification Classification[] optional Income classification of the line.
expensesClassification Classification[] optional Expense classification, e.g. in self-billing.
quantity15 decimal optional Quantity at 15 °C. Only on fuel invoices.
notVAT195 new boolean optional The line amounts are not included in the VAT return (output VAT). Only on types 1.1 to 11.5.
movePurposeLine new integer optional Purpose of movement of the line, when it differs from the header.
otherMovePurposeLineTitle new string(150) optional Required when movePurposeLine = 19.

Ship (dienergia)

Field Type Description
applicationId string required Number of the declaration of activity.
applicationDate date required Declaration date.
doy string optional Tax office (ΔΟΥ) of the declaration.
shipId string required Ship details.

Classification

Field Type Description
classificationType string optional Income type (E3_…) or expense type (E3_…, VAT_…).
classificationCategory string required Income category (category1_…, category3) or expense category (category2_…).
amount decimal(2) required The classified amount.
vatAmount, vatCategory, vatExemptionCategory optional Only in expense classification.
id integer optional Sequential number of the classification.

taxesTotals

Withholding tax, fees, other taxes, digital transaction fee and deductions for the whole document. On B2G invoices, this is the only allowed way.

Field Type Description
taxType integer required Tax type: 1 withholding tax, 2 fees, 3 other taxes, 4 digital transaction fee, 5 deductions.
taxCategory integer optional The category from the table that matches the taxType.
underlyingValue decimal optional The amount the tax is calculated on.
taxAmount decimal(2) required Tax amount.
id integer optional Sequential number.
reducesPayable boolean optional PDF. true if the amount reduces the amount payable, e.g. withholding tax.
taxTypeLabel string required PDF. The printed label of the tax, e.g. Φόρος διαμονής 4* (accommodation tax, 4-star).

invoiceSummary

Field Type Description
totalNetValue decimal(2) required Sum of netValue.
totalVatAmount decimal(2) required Sum of vatAmount.
totalWithheldAmount decimal(2) required 0 if none.
totalFeesAmount decimal(2) required 0 if none.
totalStampDutyAmount decimal(2) required Total digital transaction fee. 0 if none.
totalOtherTaxesAmount decimal(2) required 0 if none.
totalDeductionsAmount decimal(2) required 0 if none.
totalGrossValue decimal(2) required net value + VAT − withholding tax + fees + digital transaction fee + other taxes − deductions. Must equal the sum of paymentMethods[].amount.
incomeClassification Classification[] optional Sum of the line classifications, per type and category.
expensesClassification Classification[] optional The same, for expenses.

packingsDeclarations new

Only on goods movement documents. Each item has a Packages list:

Field Type Description
Packages[].packagingType integer required Packaging type (1–6). See the AADE "Ψηφιακό Δελτίο Αποστολής" (digital delivery note) specification, table 8.23.
Packages[].quantity integer required Number of packages.
Packages[].otherPackagingTypeTitle string(150) optional Title for "other" packaging.

providerAdditionalInvoiceDetails

Everything here is used only for the PDF and the email to the recipient. Nothing is sent to AADE.

issuer (required)

Field Description
name, profession, taxoffice required Company name, business activity and tax office.
addressStreet, addressNumber, addressPostalCode, addressCity, addressCountry required The address as printed.
phone, fax, email, webSite, registryNumber optional registryNumber = GEMI number (Greek business registry).
emtyLine, emtyLine2 optional Two free-text lines below the issuer, e.g. an IBAN. (The names are spelled emty….)

counterpart (optional)

Field Description
code optional Your customer code.
vat optional VAT number printed on retail documents (11.1/11.2) when the customer asks for it.
name, profession, taxoffice optional On invoices (B2B), we recommend that you always fill them in.
addressStreet, addressNumber, addressPostalCode, addressCity, addressCountry, phone, email optional

additionalDetails (required)

Field Type Description
documentLabel string required The printed document title, e.g. Τιμολόγιο Πώλησης (sales invoice).
paymentMethodInvoiceLabel string required The printed payment method, e.g. Μετρητά (cash).
documentSizeCode integer optional PDF template: A4, A5, 80mm, 57mm. Default 0 (A4).
documentLanguageCode string optional EL (default) or EN.
documentComments string optional Free-text comments that are printed. Use \n for a line break.
recipients.email string optional The email address the PDF is sent to after issue. The PDF is also sent to the reception addresses that AADE returns, if the recipient has declared that they receive documents electronically. The sender, subject and text of the email are fixed.
digitsQty integer 2–5 optional Decimal places for quantities. Default 3.
digitsItemPrice integer 2–5 optional Decimal places for unit prices. Default 2.
dispatchPlaceFrom, dispatchPlaceTo string optional Place of loading / destination, printed on goods movement documents.
logoId GUID optional A logo you uploaded in the portal.
oldLogoId integer optional Legacy. Only for old accounts.

Provider checks (before AADE)

The Provider runs these checks before it transmits the document. If any check fails, the document is not sent to AADE and no credits are charged. The response is HTTP 400/401 with the body {"errors": ["<message>"]}. Messages are in English, as shown in the "Message" column.

HTTP Rule Message
401 API-KEY is missing or invalid. (empty body)
400 invoice is empty. There is no invoice in the request.
400 More than one document in invoice[]. At this moment you can send only one invoice per request.
401 The account is not allowed to issue documents (e.g. it is suspended). You don't have the authority to send invoices this time.
400 Type 8.6 with paymentMethods. Invoice type 8.6 can't have payment methods.
400 No paymentMethods (types other than 8.6, 9.x, 10.x). Invoice needs to have payment methods.
400 Schema / required field errors. One message per field, e.g. The DocumentLabel field is required.
400 transmissionFailure = 2. You have transmissionFailure with value 2 in one or more invoices.
400 counterpart.vatNumber has leading or trailing spaces. Counterpart VAT number should not contain leading or trailing spaces.
400 transmissionFailure = 1 and issueDate is more than 1 day old. If you have one or more invoices with transmissionFailure = 1, the invoice issue date cannot be more than 1 day old.
400 Σ paymentMethods[].amount ≠ totalGrossValue. The sum of the payment methods amount must be equal to the total gross value of the invoices.
400 skipSignature=false, payment 7/8 without terminalId/tid. If one of the payment methods requires pos then the Terminal Id (tid) field is required.
400 skipSignature=false, payment 7/8 without posNspId. If one of the payment methods requires pos then the Pos Nsp Id fields is required.
400 transactionId, ProvidersSignature, tipAmount or ECRToken is filled in. The transactionId, ProvidersSignature, tipAmount, ECRToken fields is not allowed to be filled.
401 issuer.vatNumber is not active in your account. You don't have the authority to send for this vat numbers ...
401 Food service: the branch has an 8.6 table open for more than 24 hours. You don't have the authority to send invoices for this branch becouse you have open table more than 24h.
400 Food service: inconsistent cancellation with recType = 7. You can't send this invoice because it includes inconsistent recType 7 details, ...
400 Food service: the closing document does not match the open order slips. Multiple connected marks are not as invoice details. ... / The total quantity of products and the total net value in the closing order invoice ... do not match ...
400 Not enough credits. You don't have enough balance to send this request.

Response

HTTP 200 means that the Provider processed the call. Whether the document was issued is shown in response[0].statusCode.

{
  "response": [
    {
      "index": 1,
      "statusCode": "Success",
      "invoiceUid": "C10262E0AE13C6AFD7DD2C980900BB0DF266D9C5",
      "invoiceMark": 400001939576037,
      "authenticationCode": "1D0F38488D532D3BB715408E01283D39E8D56A3A",
      "invoiceUrl": "https://provider.timologisi.online/api/v1/Provider/GetInvoicePdf/671899191d6d0b3d947bc4bb.pdf",
      "qrUrl": "https://provider.timologisi.online/api/v1/Provider/GetInvoicePdf/671899191d6d0b3d947bc4bb.pdf",
      "aadeQrUrl": "…",
      "credits": "1,00",
      "paymentMethodMark": 0,
      "providerSignature": null,
      "receptionProviders": null,
      "receptionEmails": null,
      "errors": null
    }
  ]
}
Field Type Description
index integer Position of the document in the call (from 1).
statusCode string Success, Offline, ValidationError, XMLSyntaxError, TechnicalError. See statusCode.
invoiceUid string(40) The UID. Also returned with Offline.
invoiceMark long The MARK. 0 with Offline or on error.
authenticationCode string The Authentication Code. Empty with Offline.
invoiceUrl string Link to the PDF. Print it as a QR code, or use it to view and download the document.
qrUrl string Same as invoiceUrl. Kept for compatibility.
aadeQrUrl string The official AADE verification link. For information only.
credits string Credits charged, with a comma as decimal separator, e.g. "0,50".
paymentMethodMark long MARK of the payment method record (POS flows).
providerSignature array Only with skipSignature=false and a card / IRIS payment. See Card / IRIS payment.
receptionProviders object The Providers through which the recipient receives e-invoices, when AADE returns them.
receptionEmails object The email addresses the recipient has declared for receiving e-invoices, when AADE returns them.
errors array [{ "error": [ { "code": "…", "message": "…" } ] }] when statusCode is an error. See AADE error codes.

See also: Errors & statusCode · AADE error codes · Credits