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 |
| 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 |
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