Starting from December 31st 2024, all point-of-sale systems in Greece must be integrated with a payment terminal and an e-invoicing system. This ensures that all in-person transactions are recorded, matched to the sales of goods, and invoiced to the tax authorities (AADE).
To stay compliant with the Greek tax regulations, we accept the unique signature generated by your selected e-invoicing system and attach it to the unique identifier of the transaction. You can then pass the result the tax authorities, therefore proving the sale of goods for that transaction.
In case of a loss of connection to the e-invoicing system, you can use autonomous mode to process transactions while remaining compliant with Greek tax regulations.
Requirements
Before you begin, take into account the following requirements, limitations, and preparations.
| Requirement | Description |
|---|---|
| Integration type | A Terminal API integration with payment terminals on software version 1.109.10 or later. |
| Limitations | Take into account the following limitations:
|
| Setup steps | Before you begin:
|
How it works
- You start a transaction from your POS app.
- From your POS app, you retrieve the signature from the e-invoicing system.
If you cannot retrieve the signature, you can still continue to make a payment with autonomous mode.
- Your POS app sends a payment request to the Adyen payment terminal with the e-invoicing signature.
- The payment terminal checks the e-invoicing signature using the public key of the e-invoicing system.
- We process the payment and the terminal returns the response with the unique transaction identifier for that e-invoicing signature.
- Your POS app sends the transaction result to the e-invoicing system which forwards the result to the Tax office.
Integrate with an e-invoicing provider
Adyen is able to receive the e-invoicing details in the Terminal API request and check them with the public key of the e-invoicing provider. However, you need to integrate your POS app with an e-invoicing system of your choice. How you retrieve the e-invoicing signature and send the transaction result is up to you.
Because e-invoicing systems use different message structures, you should refer to the integration documentation of the e-invoicing provider you selected.
Adyen supports the payment flow integrated through all the e-invoicing providers listed by AADE.
Make a payment
-
From your POS app, retrieve the signature from the e-invoicing system for the payment terminal you will use and the purchase amount of the transaction.
If you cannot connect to the e-invoicing provider to retrieve the signature, use autonomous mode.
-
Create a
aadeDataJSON object with:aadeProviderId: the unique identifier of the e-invoicing provider. Find the right provider code on the AADE website.aadeProviderSignature: the unique signature for the payment request retrieved from the e-invoicing system.Do not send
aadeProviderSignaturein any other request other than the payment request.aadeProviderSignatureData: the data used to verify the signature with the public key of the e-invoicing system.The e-invoicing timestamp inside
aadeProviderSignatureDatamust not be older than 24 hours.
TIDin theaadeProviderSignatureDatamust be set to thePOIIDof the payment terminal.
TheaadeProviderSignaturemust be unique for every transaction.
-
Encode the
aadeDataJSON object to Base64. You will pass the resulting string inSaleData.SaleToPOIData. -
Make a payment request with:
Parameter Required Description SaleToPOIData 
Your Base64-encoded JSON object. AmountsReq.RequestedAmount 
Must be equal to or lower than the amount payable in the aadeProviderSignature. -
If the payment is successful, from the
AdditionalResponseof the PaymentResponse save the following:aadeTransactionID: the unique identifier of the paymentaadeProviderSignature: the signature from the e-invoicing system
-
From your POS system, send the
aadeTransactionIDand theaadeProviderSignatureto the e-invoicing system.
Make a payment without e-invoicing signature
Autonomous mode allows payment terminals to be able to process transactions in case of a loss of connection to the e-invoicing system. You can still make a payment without the unique e-invoicing signature. Adyen reaches AADE with the JSON data you create to process payment without the signature. When you are able to retrieve the signature again, use the Make a payment flow that you would normally use to make a payment in Greece.
When you are unable to retrieve the e-invoicing signature:
-
Create the JSON object with:
-
Encode the
aadeDataJSON object to Base64. You will pass the resulting string inSaleData.SaleToPOIData. -
Make a payment request with:
Parameter Required Description SaleData.SaleToPOIData
Your Base64-encoded JSON object. -
The example result below indicates that the payment was successful.
If Adyen cannot reach AADE to process the payment without signature, note the following in the response:
Result: Failure- The
AdditionalResponseincludes the failure message Autonomous mode: Failed to connect to AADE.
Refunds
If you need to refund a payment to a shopper, you can do a standard referenced refund using the ReversalRequest. To make an unreferenced refund, you need to include another unique signature from the e-invoicing system inside the Base64-encoded aadeData JSON object in the SaleToPOIData.
In case of a loss of connection to the e-invoicing system, you can still process an unreferenced refund using autonomous mode. To make an unreferenced refund, you need to create a new Base64-encoded JSON object with unbound_pos, and include in the SaleData.SaleToPOIData.
Errors
During the payment flow, Adyen payment terminals perform the following validations:
- Checks if the
aadeProviderSignatureis unique for each payment request. - Checks if the timestamp in the
aadeProviderSignatureDatais older than 24 hours. - Checks if the transaction amount is lower or equal to the amount payable in the
aadeProviderSignatureData. - If the terminal identifier in the
aadeProviderSignatureData(TID) matches thePOIIDfrom theMessageHeader.
If any of these validations fails, the payment response returns an error with a Base64-encoded error message in the AdditionalResponse:
| Message | Description |
|---|---|
No AADE signature data received |
There is no AADE data provided or some elements are missing. |
Invalid AADE provider signature |
We cannot verify the signature using the public key of the e-invoicing provider. |
Untimely AADE provider signature |
The timestamp in the signatureData is either in the future or older than 24h. |
AADE amounts mismatch |
The transaction amount in the request is not lower or equal to the amount in the aadeProviderSignatureData. |
AADE Terminal ID mismatch |
The TID in the aadeProviderSignatureData doesn't match the POIID of the terminal. |
Reused AADE provider signature |
The unique signature has already been sent to the terminal. |