Μενού τεκμηρίωσης: Documents
Documents
Preview and issue fiscal documents.
Η αναφορά API είναι διαθέσιμη μόνο στα αγγλικά, όπως και το API.
Σε αυτή τη σελίδα
Issue a document #
/api/v1/documentsIssue a document for a merchant. Tallio validates and classifies it at once, stores it as pending and issues it through the merchant's provider in the background.
- Bearer API key
- Idempotency-Key required
Header parameters
idempotency-keystringrequiredA key you choose (1-255 printable ASCII characters, e.g. a UUID) that makes a create request safe to retry: the same key with the same body returns the first result instead of creating a second document.
1 to 255 characters
Show patternHide pattern
^[\x21-\x7E]+$
Request body
merchantstringrequiredThe merchant issuing the document (mer_…), created under your account.
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$documentobjectrequiredTallio's canonical document (v0, GOBL-inspired): one shape for every provider. Amounts are integer minor units.
Show nested fields (9)Hide nested fields (9)
typestringrequiredAADE myDATA document type: 1.1 sales invoice, 2.1 service invoice, 5.1 credit note (associated), 5.2 credit note (non-associated), 11.1 retail sales receipt, 11.2 retail service receipt.
One of:
1.1,2.1,5.1,5.2,11.1,11.2issue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency. Only EUR for now.
Always
EURsupplierobjectrequiredThe merchant issuing the document, registered in Greece.
Show nested fields (4)Hide nested fields (4)
tax_idobjectrequiredGreek tax identity: GR plus the ΑΦΜ.
Show nested fields (2)Hide nested fields (2)
countrystringrequiredCountry of the tax registration: GR. Suppliers are Greek merchants.
Always
GRcodestringrequiredTax number without a country prefix: the 9-digit ΑΦΜ for GR, 2 to 30 letters and digits elsewhere. Spaces, hyphens and dots are removed and letters upper-cased before it is checked.
Up to 60 characters
namestringLegal name. Required outside Greece. Optional for Greek parties, whose name AADE holds; adapters drop it when they send a Greek party straight to myDATA, which rejects it.
1 to 200 characters
addressobjectPostal address. Required outside Greece.
Show nested fields (4)Hide nested fields (4)
streetstringStreet name.
1 to 150 characters
numberstringStreet number.
1 to 20 characters
postal_codestringrequiredPostal code.
1 to 20 characters
citystringrequiredCity.
1 to 150 characters
branchintegerBranch number in the AADE registry; omit or 0 for the head office.
From 0 to 9999
customerobjectThe customer. Required for 1.1, 2.1, 5.1, 5.2; not allowed on retail receipts (11.1, 11.2).
Show nested fields (4)Hide nested fields (4)
tax_idobjectrequiredTax identity: country plus tax number.
Show nested fields (2)Hide nested fields (2)
countrystringrequiredISO 3166-1 alpha-2 country of the tax registration: GR for Greece (not the VAT prefix EL).
Show patternHide pattern
^[A-Z]{2}$codestringrequiredTax number without a country prefix: the 9-digit ΑΦΜ for GR, 2 to 30 letters and digits elsewhere. Spaces, hyphens and dots are removed and letters upper-cased before it is checked.
Up to 60 characters
namestringLegal name. Required outside Greece. Optional for Greek parties, whose name AADE holds; adapters drop it when they send a Greek party straight to myDATA, which rejects it.
1 to 200 characters
addressobjectPostal address. Required outside Greece.
Show nested fields (4)Hide nested fields (4)
streetstringStreet name.
1 to 150 characters
numberstringStreet number.
1 to 20 characters
postal_codestringrequiredPostal code.
1 to 20 characters
citystringrequiredCity.
1 to 150 characters
branchintegerBranch number in the AADE registry; omit or 0 for the head office.
From 0 to 9999
original_marksstring[]MARKs of the documents a 5.1 credit note corrects. Required for 5.1 and allowed only there.
1 to 1000 items
Each item: MARK (AADE registration number) of an issued document.
Show patternHide pattern
^[1-9]\d{0,18}$linesobject[]requiredThe document's lines, from 1 to 1000.
1 to 1000 items
Each item: One line. Its net amount is quantity × unit_price, rounded half up to the cent, at most 1000000000000000.
Show nested fields (7)Hide nested fields (7)
descriptionstringrequiredWhat was sold, as printed on the document.
1 to 300 characters
quantitystringrequiredQuantity, a decimal string below 1000000000 with up to 3 decimals, greater than 0, e.g. "2" or "1.5" (kg).
Show patternHide pattern
^(0|[1-9]\d{0,8})(\.\d{1,3})?$unitstringUnit the quantity is measured in: piece (myDATA 1), kg (myDATA 2), litre (myDATA 3), metre (myDATA 4), square_metre (myDATA 5), cubic_metre (myDATA 6).
One of:
piece,kg,litre,metre,square_metre,cubic_metreunit_priceintegerrequiredNet price per unit in minor units (cents), at most 100000000000.
From 0 to 100000000000
vat_categorystringrequiredGreek VAT category of the line, which fixes its rate: standard 24% (myDATA 1), reduced 13% (myDATA 2), super_reduced 6% (myDATA 3), standard_island 17% (myDATA 4), reduced_island 9% (myDATA 5), super_reduced_island 4% (myDATA 6), exempt 0% (myDATA 7). An exempt line needs vat_exemption.
One of:
standard,reduced,super_reduced,standard_island,reduced_island,super_reduced_island,exemptvat_exemptionintegermyDATA VAT exemption cause (1-31), e.g. 14 for article 33 of the VAT code (Law 5144/2024). Required on exempt lines only.
From 1 to 31
income_classificationobjectExplicit myDATA income classification for the line. Omit it to have Tallio apply and report a default.
Show nested fields (2)Hide nested fields (2)
categorystringrequiredmyDATA income classification category, e.g. category1_1 sale of goods, category1_2 sale of products, category1_3 provision of services, category1_95 other income information.
One of:
category1_1,category1_2,category1_3,category1_4,category1_5,category1_6,category1_7,category1_8,category1_9,category1_10,category1_95typestringE3 income type. Required, except that category1_95 takes none or one of E3_596, E3_597.
One of:
E3_106,E3_205,E3_210,E3_305,E3_310,E3_318,E3_561_001,E3_561_002,E3_561_003,E3_561_004,E3_561_005,E3_561_006,E3_561_007,E3_562,E3_563,E3_564,E3_565,E3_566,E3_567,E3_568,E3_570,E3_595,E3_596,E3_597,E3_880_001,E3_880_002,E3_880_003,E3_880_004,E3_881_001,E3_881_002,E3_881_003,E3_881_004,E3_598_001,E3_598_003
paymentsobject[]How the document is paid, up to 10 entries.
1 to 10 items
Each item: One way the document is paid.
Show nested fields (2)Hide nested fields (2)
methodstringrequiredHow the document is paid: domestic_account (myDATA 1), foreign_account (myDATA 2), cash (myDATA 3), cheque (myDATA 4), on_credit (myDATA 5), web_banking (myDATA 6), pos (myDATA 7), iris (myDATA 8).
One of:
domestic_account,foreign_account,cash,cheque,on_credit,web_banking,pos,irisamountintegerrequiredAmount paid this way, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
totalsobjectrequiredDocument totals. Tallio rejects totals that do not add up.
Show nested fields (3)Hide nested fields (3)
netintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
Request
JSON{
"merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
"document": {
"type": "1.1",
"issue_date": "2026-10-10",
"currency": "EUR",
"supplier": {
"tax_id": {
"country": "GR",
"code": "555555559"
}
},
"customer": {
"tax_id": {
"country": "GR",
"code": "666666662"
},
"name": "Kafeneio Lemonia IKE"
},
"lines": [
{
"description": "Olive oil, bulk",
"quantity": "1.5",
"unit": "litre",
"unit_price": 1000,
"vat_category": "reduced",
"income_classification": {
"category": "category1_1",
"type": "E3_561_001"
}
},
{
"description": "Delivery",
"quantity": "1",
"unit_price": 1000,
"vat_category": "standard"
}
],
"payments": [
{
"method": "cash",
"amount": 2935
}
],
"totals": {
"net": 2500,
"vat": 435,
"gross": 2935
}
}
}| Status | Description |
|---|---|
201 | Accepted as pending; it is issued in the background. A replay returns the first document. |
| 4XX, 5XX | An error: see Errors below. |
Response body · 201
dataobjectrequiredA fiscal document Tallio issues through a provider, with its status and history.
Show nested fields (21)Hide nested fields (21)
idstringrequiredId of the document (doc_…).
Show patternHide pattern
^doc_[0-9A-Za-z]{22}$objectstringrequiredAlways "document".
Always
documentmerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for a document created with a live key, test for a test key.
One of:
live,testproviderstringrequiredThe licensed e-invoicing provider (or direct myDATA, or Tallio's sandbox) that issues the document.
One of:
sandbox,mydata,wrapp,impact,epsilon,softone,prosvasistypestringrequiredAADE myDATA document type: 1.1 sales invoice, 2.1 service invoice, 5.1 credit note (associated), 5.2 credit note (non-associated), 11.1 retail sales receipt, 11.2 retail service receipt.
One of:
1.1,2.1,5.1,5.2,11.1,11.2statusstringrequiredWhere the document stands: pending (Tallio accepted it; not yet issued, see stage), issued (has a MARK), rejected (the provider or AADE refused it), failed (Tallio could not deliver it to the provider).
One of:
pending,issued,rejected,failedstagestring | nullrequiredWhere a pending document is (queued, submitting, awaiting_mark, reconciling); null unless status is pending.
One of:
queued,submitting,awaiting_mark,reconcilingissue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency. Only EUR for now.
Always
EURnetintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
markstring | nullrequiredMARK (AADE registration number) once issued, as a digit string; null before.
Show patternHide pattern
^[1-9]\d{0,18}$uidstring | nullrequiredmyDATA uid: the SHA-1 (40 upper-case hex digits) AADE derives from the document's identifiers; null until known.
Show patternHide pattern
^[0-9A-F]{40}$qr_urlstring | nullrequiredURL the document's QR code points to; null until the provider returns one.
Format:
urierrorobject | nullrequiredWhy the document was rejected or failed; null otherwise.
Show nested fields (6)Hide nested fields (6)
codestringrequiredStable machine-readable error code. Branch on this, never on
message.One of:
validation_failed,unauthorized,not_found,idempotency_conflict,idempotency_in_progress,payload_too_large,unsupported_media_type,rate_limited,not_supported,provider_rejected,provider_unavailable,internal_errormessagestringrequiredHuman-readable explanation, safe to show to a developer.
provider_codestring | nullrequiredThe provider's own error code, or null when the error did not come from a provider.
provider_messagestring | nullrequiredThe provider's own error message, verbatim, or null when the error did not come from a provider.
retryablebooleanrequiredTrue when the same request may succeed if sent again later.
provider_rawanyThe provider's error response body as received, or a TruncatedProviderRaw marker when it exceeds 4096 bytes of JSON. Never holds request headers, credentials or the request payload.
classificationobjectrequiredHow the document was classified for myDATA.
Show nested fields (2)Hide nested fields (2)
sourcestringrequireddefault when any line took Tallio's default, else override when any line took the merchant's override, else line.
One of:
line,override,defaultwarningsstring[]requiredWhat to check before issuing, e.g. that defaults were applied.
timelineobject[]requiredThe document's events, oldest first, at most 100.
Up to 100 items
Each item: One event in a document's history. GET /events/{id} returns the full Event.
Show nested fields (3)Hide nested fields (3)
idstringrequiredId of the event (evt_…).
Show patternHide pattern
^evt_[0-9A-Za-z]{22}$typestringrequiredWhat happened: document.created (Tallio accepted a document), document.issued (it has a MARK), document.rejected (the provider or AADE refused it), document.failed (Tallio could not deliver it).
One of:
document.created,document.issued,document.rejected,document.failedcreatedstringrequiredWhen the event happened.
Format:
date-time
createdstringrequiredWhen Tallio accepted the document.
Format:
date-timeupdatedstringrequiredWhen the document last changed.
Format:
date-time
Example response · 201{
"data": {
"id": "doc_02y9O8rhJKVUXRvojdffcz",
"object": "document",
"merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
"mode": "test",
"provider": "sandbox",
"type": "1.1",
"status": "pending",
"stage": "queued",
"issue_date": "2026-10-10",
"currency": "EUR",
"net": 2500,
"vat": 435,
"gross": 2935,
"mark": null,
"uid": null,
"qr_url": null,
"error": null,
"classification": {
"source": "default",
"warnings": [
"No income classification on line 2; applied the 1.1 default category1_1/E3_561_001. Set it on the line, or as a merchant override, if that is wrong."
]
},
"timeline": [
{
"id": "evt_02y9O8rhJ2Z2v1fOH2XiSH",
"type": "document.created",
"created": "2026-10-11T09:30:00.000Z"
}
],
"created": "2026-10-11T09:30:00.000Z",
"updated": "2026-10-11T09:30:00.000Z"
}
}Response headers
x-request-idstringThe request's correlation id; quote it when reporting a problem. One of: req_ plus a uuid (Tallio made it), client: plus the x-request-id you sent (8-128 of A-Z a-z 0-9 . _ : -), or the hosting platform's id.
With every response
Show patternHide pattern
^(?:req_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|client:[A-Za-z0-9._:-]{8,128}|[A-Za-z0-9._-]{1,16}::[A-Za-z0-9._:-]{6,110})$ratelimit-limitintegerRequests allowed in the current window for the bucket this request counted against.
With 201, 400, 404, 409, 413, 415, 422, 429 · At least 1
ratelimit-remainingintegerRequests left in the current window; 0 means the next one is refused until the window resets.
With 201, 400, 404, 409, 413, 415, 422, 429 · At least 0
ratelimit-resetintegerSeconds until the current window resets.
With 201, 400, 404, 409, 413, 415, 422, 429 · At least 0
idempotent-replayedstringtrue when this answer replays an earlier request with the same Idempotency-Key (nothing new was created); absent on the request that created it.
With 201 · Always
truewww-authenticatestringThe bearer challenge: send a vendor secret key as
Authorization: Bearer <key>.With 401 · Always
Bearer realm="tallio"retry-afterintegerSeconds to wait before retrying a request refused with 429
rate_limited.With 429 · At least 1
| Code | Status | Retryable | Meaning |
|---|---|---|---|
validation_failed | 400 | No | Request validation failed. |
unauthorized | 401 | No | Authentication is required. |
not_found | 404 | No | The requested resource was not found. |
idempotency_conflict | 409 | No | This idempotency key was already used with a different request. |
payload_too_large | 413 | No | The request body is too large. |
unsupported_media_type | 415 | No | The request body must be JSON (Content-Type: application/json). |
not_supported | 422 | No | The provider or document type does not support this operation. |
rate_limited | 429 | Yes | A rate limit was reached. Retry later. |
internal_error | 500 | No | An unexpected server error occurred. |
Retrieve a document #
/api/v1/documents/{id}Returns a document with its status, MARK once issued, and its timeline of events.
- Bearer API key
Path parameters
idstringrequiredThe document's id (doc_…).
Request
curlcurl -X GET 'https://tallio.dev/api/v1/documents/doc_02y9O8rhJKVUXRvojdffcz' \
-H "Authorization: Bearer $TALLIO_API_KEY"| Status | Description |
|---|---|
200 | The document. |
| 4XX, 5XX | An error: see Errors below. |
Response body · 200
dataobjectrequiredA fiscal document Tallio issues through a provider, with its status and history.
Show nested fields (21)Hide nested fields (21)
idstringrequiredId of the document (doc_…).
Show patternHide pattern
^doc_[0-9A-Za-z]{22}$objectstringrequiredAlways "document".
Always
documentmerchantstringrequiredId of the merchant (mer_…).
Show patternHide pattern
^mer_[0-9A-Za-z]{22}$modestringrequiredlive for a document created with a live key, test for a test key.
One of:
live,testproviderstringrequiredThe licensed e-invoicing provider (or direct myDATA, or Tallio's sandbox) that issues the document.
One of:
sandbox,mydata,wrapp,impact,epsilon,softone,prosvasistypestringrequiredAADE myDATA document type: 1.1 sales invoice, 2.1 service invoice, 5.1 credit note (associated), 5.2 credit note (non-associated), 11.1 retail sales receipt, 11.2 retail service receipt.
One of:
1.1,2.1,5.1,5.2,11.1,11.2statusstringrequiredWhere the document stands: pending (Tallio accepted it; not yet issued, see stage), issued (has a MARK), rejected (the provider or AADE refused it), failed (Tallio could not deliver it to the provider).
One of:
pending,issued,rejected,failedstagestring | nullrequiredWhere a pending document is (queued, submitting, awaiting_mark, reconciling); null unless status is pending.
One of:
queued,submitting,awaiting_mark,reconcilingissue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency. Only EUR for now.
Always
EURnetintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
markstring | nullrequiredMARK (AADE registration number) once issued, as a digit string; null before.
Show patternHide pattern
^[1-9]\d{0,18}$uidstring | nullrequiredmyDATA uid: the SHA-1 (40 upper-case hex digits) AADE derives from the document's identifiers; null until known.
Show patternHide pattern
^[0-9A-F]{40}$qr_urlstring | nullrequiredURL the document's QR code points to; null until the provider returns one.
Format:
urierrorobject | nullrequiredWhy the document was rejected or failed; null otherwise.
Show nested fields (6)Hide nested fields (6)
codestringrequiredStable machine-readable error code. Branch on this, never on
message.One of:
validation_failed,unauthorized,not_found,idempotency_conflict,idempotency_in_progress,payload_too_large,unsupported_media_type,rate_limited,not_supported,provider_rejected,provider_unavailable,internal_errormessagestringrequiredHuman-readable explanation, safe to show to a developer.
provider_codestring | nullrequiredThe provider's own error code, or null when the error did not come from a provider.
provider_messagestring | nullrequiredThe provider's own error message, verbatim, or null when the error did not come from a provider.
retryablebooleanrequiredTrue when the same request may succeed if sent again later.
provider_rawanyThe provider's error response body as received, or a TruncatedProviderRaw marker when it exceeds 4096 bytes of JSON. Never holds request headers, credentials or the request payload.
classificationobjectrequiredHow the document was classified for myDATA.
Show nested fields (2)Hide nested fields (2)
sourcestringrequireddefault when any line took Tallio's default, else override when any line took the merchant's override, else line.
One of:
line,override,defaultwarningsstring[]requiredWhat to check before issuing, e.g. that defaults were applied.
timelineobject[]requiredThe document's events, oldest first, at most 100.
Up to 100 items
Each item: One event in a document's history. GET /events/{id} returns the full Event.
Show nested fields (3)Hide nested fields (3)
idstringrequiredId of the event (evt_…).
Show patternHide pattern
^evt_[0-9A-Za-z]{22}$typestringrequiredWhat happened: document.created (Tallio accepted a document), document.issued (it has a MARK), document.rejected (the provider or AADE refused it), document.failed (Tallio could not deliver it).
One of:
document.created,document.issued,document.rejected,document.failedcreatedstringrequiredWhen the event happened.
Format:
date-time
createdstringrequiredWhen Tallio accepted the document.
Format:
date-timeupdatedstringrequiredWhen the document last changed.
Format:
date-time
Example response · 200{
"data": {
"id": "doc_02y9O8rhJKVUXRvojdffcz",
"object": "document",
"merchant": "mer_02y9O8rh7F50tGi0QcWRrx",
"mode": "test",
"provider": "sandbox",
"type": "1.1",
"status": "issued",
"stage": null,
"issue_date": "2026-10-10",
"currency": "EUR",
"net": 2500,
"vat": 435,
"gross": 2935,
"mark": "900000000000001",
"uid": "4E1F0A6C2B9D8E7F6A5B4C3D2E1F0A9B8C7D6E5F",
"qr_url": "https://sandbox.tallio.invalid/qr/900000000000001",
"error": null,
"classification": {
"source": "default",
"warnings": [
"No income classification on line 2; applied the 1.1 default category1_1/E3_561_001. Set it on the line, or as a merchant override, if that is wrong."
]
},
"timeline": [
{
"id": "evt_02y9O8rhJ2Z2v1fOH2XiSH",
"type": "document.created",
"created": "2026-10-11T09:30:00.000Z"
},
{
"id": "evt_02y9O8s1a8ymJqpmAy0nLe",
"type": "document.issued",
"created": "2026-10-11T09:30:02.000Z"
}
],
"created": "2026-10-11T09:30:00.000Z",
"updated": "2026-10-11T09:30:02.000Z"
}
}Response headers
x-request-idstringThe request's correlation id; quote it when reporting a problem. One of: req_ plus a uuid (Tallio made it), client: plus the x-request-id you sent (8-128 of A-Z a-z 0-9 . _ : -), or the hosting platform's id.
With every response
Show patternHide pattern
^(?:req_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|client:[A-Za-z0-9._:-]{8,128}|[A-Za-z0-9._-]{1,16}::[A-Za-z0-9._:-]{6,110})$ratelimit-limitintegerRequests allowed in the current window for the bucket this request counted against.
With 200, 404, 429 · At least 1
ratelimit-remainingintegerRequests left in the current window; 0 means the next one is refused until the window resets.
With 200, 404, 429 · At least 0
ratelimit-resetintegerSeconds until the current window resets.
With 200, 404, 429 · At least 0
www-authenticatestringThe bearer challenge: send a vendor secret key as
Authorization: Bearer <key>.With 401 · Always
Bearer realm="tallio"retry-afterintegerSeconds to wait before retrying a request refused with 429
rate_limited.With 429 · At least 1
| Code | Status | Retryable | Meaning |
|---|---|---|---|
unauthorized | 401 | No | Authentication is required. |
not_found | 404 | No | The requested resource was not found. |
rate_limited | 429 | Yes | A rate limit was reached. Retry later. |
internal_error | 500 | No | An unexpected server error occurred. |
Preview a document #
/api/v1/documents/previewPreview a document without issuing it: Tallio validates it, applies classification defaults and returns the payload the provider would receive. Nothing is sent to the provider or to AADE.
- Bearer API key
Request body
typestringrequiredAADE myDATA document type: 1.1 sales invoice, 2.1 service invoice, 5.1 credit note (associated), 5.2 credit note (non-associated), 11.1 retail sales receipt, 11.2 retail service receipt.
One of:
1.1,2.1,5.1,5.2,11.1,11.2issue_datestringrequiredIssue date, YYYY-MM-DD.
Format:
datecurrencystringrequiredISO 4217 currency. Only EUR for now.
Always
EURsupplierobjectrequiredThe merchant issuing the document, registered in Greece.
Show nested fields (4)Hide nested fields (4)
tax_idobjectrequiredGreek tax identity: GR plus the ΑΦΜ.
Show nested fields (2)Hide nested fields (2)
countrystringrequiredCountry of the tax registration: GR. Suppliers are Greek merchants.
Always
GRcodestringrequiredTax number without a country prefix: the 9-digit ΑΦΜ for GR, 2 to 30 letters and digits elsewhere. Spaces, hyphens and dots are removed and letters upper-cased before it is checked.
Up to 60 characters
namestringLegal name. Required outside Greece. Optional for Greek parties, whose name AADE holds; adapters drop it when they send a Greek party straight to myDATA, which rejects it.
1 to 200 characters
addressobjectPostal address. Required outside Greece.
Show nested fields (4)Hide nested fields (4)
streetstringStreet name.
1 to 150 characters
numberstringStreet number.
1 to 20 characters
postal_codestringrequiredPostal code.
1 to 20 characters
citystringrequiredCity.
1 to 150 characters
branchintegerBranch number in the AADE registry; omit or 0 for the head office.
From 0 to 9999
customerobjectThe customer. Required for 1.1, 2.1, 5.1, 5.2; not allowed on retail receipts (11.1, 11.2).
Show nested fields (4)Hide nested fields (4)
tax_idobjectrequiredTax identity: country plus tax number.
Show nested fields (2)Hide nested fields (2)
countrystringrequiredISO 3166-1 alpha-2 country of the tax registration: GR for Greece (not the VAT prefix EL).
Show patternHide pattern
^[A-Z]{2}$codestringrequiredTax number without a country prefix: the 9-digit ΑΦΜ for GR, 2 to 30 letters and digits elsewhere. Spaces, hyphens and dots are removed and letters upper-cased before it is checked.
Up to 60 characters
namestringLegal name. Required outside Greece. Optional for Greek parties, whose name AADE holds; adapters drop it when they send a Greek party straight to myDATA, which rejects it.
1 to 200 characters
addressobjectPostal address. Required outside Greece.
Show nested fields (4)Hide nested fields (4)
streetstringStreet name.
1 to 150 characters
numberstringStreet number.
1 to 20 characters
postal_codestringrequiredPostal code.
1 to 20 characters
citystringrequiredCity.
1 to 150 characters
branchintegerBranch number in the AADE registry; omit or 0 for the head office.
From 0 to 9999
original_marksstring[]MARKs of the documents a 5.1 credit note corrects. Required for 5.1 and allowed only there.
1 to 1000 items
Each item: MARK (AADE registration number) of an issued document.
Show patternHide pattern
^[1-9]\d{0,18}$linesobject[]requiredThe document's lines, from 1 to 1000.
1 to 1000 items
Each item: One line. Its net amount is quantity × unit_price, rounded half up to the cent, at most 1000000000000000.
Show nested fields (7)Hide nested fields (7)
descriptionstringrequiredWhat was sold, as printed on the document.
1 to 300 characters
quantitystringrequiredQuantity, a decimal string below 1000000000 with up to 3 decimals, greater than 0, e.g. "2" or "1.5" (kg).
Show patternHide pattern
^(0|[1-9]\d{0,8})(\.\d{1,3})?$unitstringUnit the quantity is measured in: piece (myDATA 1), kg (myDATA 2), litre (myDATA 3), metre (myDATA 4), square_metre (myDATA 5), cubic_metre (myDATA 6).
One of:
piece,kg,litre,metre,square_metre,cubic_metreunit_priceintegerrequiredNet price per unit in minor units (cents), at most 100000000000.
From 0 to 100000000000
vat_categorystringrequiredGreek VAT category of the line, which fixes its rate: standard 24% (myDATA 1), reduced 13% (myDATA 2), super_reduced 6% (myDATA 3), standard_island 17% (myDATA 4), reduced_island 9% (myDATA 5), super_reduced_island 4% (myDATA 6), exempt 0% (myDATA 7). An exempt line needs vat_exemption.
One of:
standard,reduced,super_reduced,standard_island,reduced_island,super_reduced_island,exemptvat_exemptionintegermyDATA VAT exemption cause (1-31), e.g. 14 for article 33 of the VAT code (Law 5144/2024). Required on exempt lines only.
From 1 to 31
income_classificationobjectExplicit myDATA income classification for the line. Omit it to have Tallio apply and report a default.
Show nested fields (2)Hide nested fields (2)
categorystringrequiredmyDATA income classification category, e.g. category1_1 sale of goods, category1_2 sale of products, category1_3 provision of services, category1_95 other income information.
One of:
category1_1,category1_2,category1_3,category1_4,category1_5,category1_6,category1_7,category1_8,category1_9,category1_10,category1_95typestringE3 income type. Required, except that category1_95 takes none or one of E3_596, E3_597.
One of:
E3_106,E3_205,E3_210,E3_305,E3_310,E3_318,E3_561_001,E3_561_002,E3_561_003,E3_561_004,E3_561_005,E3_561_006,E3_561_007,E3_562,E3_563,E3_564,E3_565,E3_566,E3_567,E3_568,E3_570,E3_595,E3_596,E3_597,E3_880_001,E3_880_002,E3_880_003,E3_880_004,E3_881_001,E3_881_002,E3_881_003,E3_881_004,E3_598_001,E3_598_003
paymentsobject[]How the document is paid, up to 10 entries.
1 to 10 items
Each item: One way the document is paid.
Show nested fields (2)Hide nested fields (2)
methodstringrequiredHow the document is paid: domestic_account (myDATA 1), foreign_account (myDATA 2), cash (myDATA 3), cheque (myDATA 4), on_credit (myDATA 5), web_banking (myDATA 6), pos (myDATA 7), iris (myDATA 8).
One of:
domestic_account,foreign_account,cash,cheque,on_credit,web_banking,pos,irisamountintegerrequiredAmount paid this way, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
totalsobjectrequiredDocument totals. Tallio rejects totals that do not add up.
Show nested fields (3)Hide nested fields (3)
netintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
Request
JSON{
"type": "1.1",
"issue_date": "2026-10-10",
"currency": "EUR",
"supplier": {
"tax_id": {
"country": "GR",
"code": "555555559"
}
},
"customer": {
"tax_id": {
"country": "GR",
"code": "666666662"
},
"name": "Kafeneio Lemonia IKE"
},
"lines": [
{
"description": "Olive oil, bulk",
"quantity": "1.5",
"unit": "litre",
"unit_price": 1000,
"vat_category": "reduced",
"income_classification": {
"category": "category1_1",
"type": "E3_561_001"
}
},
{
"description": "Delivery",
"quantity": "1",
"unit_price": 1000,
"vat_category": "standard"
}
],
"payments": [
{
"method": "cash",
"amount": 2935
}
],
"totals": {
"net": 2500,
"vat": 435,
"gross": 2935
}
}| Status | Description |
|---|---|
200 | The preview. |
| 4XX, 5XX | An error: see Errors below. |
Response body · 200
dataobjectrequiredWhat issuing this document would do. Nothing has been issued.
Show nested fields (5)Hide nested fields (5)
providerstringrequiredThe licensed e-invoicing provider (or direct myDATA, or Tallio's sandbox) that issues the document.
One of:
sandbox,mydata,wrapp,impact,epsilon,softone,prosvasistypestringrequiredAADE myDATA document type: 1.1 sales invoice, 2.1 service invoice, 5.1 credit note (associated), 5.2 credit note (non-associated), 11.1 retail sales receipt, 11.2 retail service receipt.
One of:
1.1,2.1,5.1,5.2,11.1,11.2totalsobjectrequiredDocument totals. Tallio rejects totals that do not add up.
Show nested fields (3)Hide nested fields (3)
netintegerrequiredSum of the lines' net amounts, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
vatintegerrequiredSum of the lines' VAT, each line rounded half up to the minor unit, in minor units, at most 1000000000000000.
From 0 to 1000000000000000
grossintegerrequirednet + vat, in minor units, at most 1250000000000000.
From 0 to 1250000000000000
classificationobjectrequiredHow the document will be classified for myDATA.
Show nested fields (2)Hide nested fields (2)
sourcestringrequireddefault when any line took Tallio's default, else override when any line took the merchant's override, else line.
One of:
line,override,defaultwarningsstring[]requiredWhat to check before issuing, e.g. that defaults were applied.
payloadobjectrequiredThe request Tallio would send to the provider, in the provider's own format.
Show nested fields (1)Hide nested fields (1)
{key}any
Example response · 200{
"data": {
"provider": "sandbox",
"type": "1.1",
"totals": {
"net": 2500,
"vat": 435,
"gross": 2935
},
"classification": {
"source": "default",
"warnings": [
"No income classification on line 2; applied the 1.1 default category1_1/E3_561_001. Set it on the line, or as a merchant override, if that is wrong."
]
},
"payload": {
"invoice_type": "1.1",
"currency": "EUR",
"line_count": 2,
"total_gross": 2935
}
}
}Response headers
x-request-idstringThe request's correlation id; quote it when reporting a problem. One of: req_ plus a uuid (Tallio made it), client: plus the x-request-id you sent (8-128 of A-Z a-z 0-9 . _ : -), or the hosting platform's id.
With every response
Show patternHide pattern
^(?:req_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|client:[A-Za-z0-9._:-]{8,128}|[A-Za-z0-9._-]{1,16}::[A-Za-z0-9._:-]{6,110})$ratelimit-limitintegerRequests allowed in the current window for the bucket this request counted against.
With 200, 400, 413, 415, 429 · At least 1
ratelimit-remainingintegerRequests left in the current window; 0 means the next one is refused until the window resets.
With 200, 400, 413, 415, 429 · At least 0
ratelimit-resetintegerSeconds until the current window resets.
With 200, 400, 413, 415, 429 · At least 0
www-authenticatestringThe bearer challenge: send a vendor secret key as
Authorization: Bearer <key>.With 401 · Always
Bearer realm="tallio"retry-afterintegerSeconds to wait before retrying a request refused with 429
rate_limited.With 429 · At least 1
| Code | Status | Retryable | Meaning |
|---|---|---|---|
validation_failed | 400 | No | Request validation failed. |
unauthorized | 401 | No | Authentication is required. |
payload_too_large | 413 | No | The request body is too large. |
unsupported_media_type | 415 | No | The request body must be JSON (Content-Type: application/json). |
rate_limited | 429 | Yes | A rate limit was reached. Retry later. |
internal_error | 500 | No | An unexpected server error occurred. |