Greece — myDATA / AADE Sandbox Onboarding
Operational guide for getting test credentials at AADE myDATA sandbox.
| Property | Value |
|---|---|
| Authority | AADE (Independent Authority for Public Revenue) |
| Sandbox base URL | https://mydata-dev.azure-api.net |
| Cost | Free |
| Time to provision | 1-3 days |
| Identity required | Greek AFM + TaxisNet personal login |
Steps
- Log into TaxisNet at
taxisnet.grwith your personal Greek tax credentials. - From the AADE portal
myaade.gov.gr → Manage Web Services Authentication Users, create a dedicated myDATA REST API user (sub-account, not the human login). - Note the new user's
aade-user-id— this is NOT your AFM, it's a separate API-user identifier. - Register on the AADE Azure APIM developer portal at
mydata-dev.developer.azure-api.netto get a Subscription Key. - Sandbox accepts header
Ocp-Apim-Subscription-Key; production usesSubscription-Key(note the difference). - Test with a
RequestDocscall against/RequestDocs?dateFrom=...&dateTo=....
GitHub secrets to set
GR_AADE_USER_ID
GR_AADE_SUBSCRIPTION_KEY_SANDBOX
GR_AADE_SUBSCRIPTION_KEY_PROD
GR_AADE_AFM
Gotchas
aade-user-id≠ AFM. This is the most common point of confusion. The aade-user-id is a separately-spawned API user; the AFM is your tax number.- Subscription key header name differs sandbox vs production —
Ocp-Apim-Subscription-Keyin sandbox,Subscription-Keyin production. Both must be configured if you want both environments tested. - TPS limits enforced at Azure APIM, not at certificate level. Default sandbox throughput is generous; production has tighter limits unless you're an accredited provider.
- Type B (counterpart-classification) requires a two-leg flow that sandbox-nightly should exercise — adapter at
rust/adapters/greece/src/state.rshas the state machine. - Provider-channel (
/myDataProvider/...) is for accredited e-invoicing providers; not Phase-1 scope.
Non-resident path
AADE has an explicit developer programme accessible to foreign software vendors.
- Subscription Key from the Azure APIM portal does NOT require a Greek AFM — it is software-vendor-bound, issued against the Azure account.
aade-user-idis a software-side TaxisNet sub-account. For sandbox you can spin one up without being a Greek taxpayer if you have any TaxisNet login. TaxisNet itself is open to non-residents on application.- Production constraint. The issuer AFM goes in the payload; the merchants we serve must be Greek taxpayers. The platform does not need a Greek entity for the sandbox or for serving merchants — it needs one only if Zyntem itself issues Greek invoices on its own books.
- Cheapest path: register on
mydata-dev.developer.azure-api.netas a software vendor. ~1 week. No local presence needed.
Related
- Research doc: greece.md
- Adapter crate:
rust/adapters/greece/ - Sandbox tests:
rust/adapters/greece/tests/sandbox.rs