FlexyAPI documentation

Request schema

Document

Every field of the POST /api/v1/documents/ body, with its values and constraints.

The fields below are the body of POST /api/v1/documents/, wrapped in {"document": …} — the same request you send in step 2 and the one you will find ready to send, for every document type, in the examples.

Request bodyPOST /api/v1/documents/{ "document": … }

  • Requiredthe API rejects the request without it.
  • Conditionalrequired only in the cases the field itself describes.
  • Optionalyou can leave it out.
  • Not used by flexythe field is accepted, but Flexy never reads it.
providerstringRequiredThe provider that will transmit the document.#

The provider that will transmit the document. Send `flexy` to transmit through Flexy as your ΥΠΑΗΕΣ.

When it is used

On every request; it selects how the document is processed and transmitted.

  • up to 50 characters

Allowed values

The value is normalised (trimmed and lower-cased). `flexy` is enabled only in the `development`, `staging` and `test` environments; elsewhere the request is refused. An unknown value returns a validation error listing the accepted ones.

ValueMeaning
flexyTransmission through Flexy as your ΥΠΑΗΕΣ (requires declaring Flexy as your provider at Taxisnet)
mydataDirect transmission to myDATA with your own AADE credentials
oxygenTransmission through provider `oxygen`

Example

{
  "provider": "flexy"
}
custom_idstringOptionalYour own identifier for the document, as your ERP keeps it.#

Your own identifier for the document, as your ERP keeps it. You can look the document up with `GET /api/v1/documents/?custom_id=...`.

When it is used

When you want to tie the document back to its record in your own system; it is not transmitted to AADE.

  • up to 255 characters
  • accepts null

Example

{
  "custom_id": "ERP-2026-001042"
}
titlestringOptionalNot used by flexyA free-text title or description of the document, for your own use.#

A free-text title or description of the document, for your own use. It is stored and returned by the `GET` endpoints but is not transmitted to AADE; the title that reaches myDATA is each line's `items[].title`.

When it is used

Optional; no provider reads it.

  • up to 255 characters
  • accepts null

Example

{
  "title": "Τιμολόγιο πώλησης Οκτωβρίου"
}
document_typestringRequiredA label for the kind of document, for your own categorisation.#

A label for the kind of document, for your own categorisation. It is not the myDATA code; the myDATA code (`1.1`, `2.1`, …) goes in `provider_details.document_type`, and that is what determines the document type transmitted to myDATA.

When it is used

On every request; it is not checked for agreement with `provider_details.document_type`.

  • up to 50 characters

Example

{
  "document_type": "invoice",
  "provider_details": {
    "document_type": "1.1"
  }
}
aastringRequiredThe sequential number (ΑΑ) of the document within its series; transmitted as `aa` in the myDATA `invoiceHeader`.#

The sequential number (ΑΑ) of the document within its series; transmitted as `aa` in the myDATA `invoiceHeader`. The provider does not enforce uniqueness; AADE rejects a repeat of the same document with business error 228.

When it is used

On every request; together with `series` it forms the document's numbering.

  • up to 50 characters

Example

{
  "series": "A",
  "aa": "1042",
  "date": "2026-10-05"
}
seriesstringOptionalThe document series; transmitted as `series` in the `invoiceHeader`.#

The document series; transmitted as `series` in the `invoiceHeader`. If you omit it the provider sends `0`, which is the value AADE prescribes for documents issued without a series.

When it is used

When you keep separate numbering sequences (per branch, year, category and so on).

  • up to 50 characters
  • accepts null

Example

{
  "series": "A",
  "aa": "1042"
}
datedateRequiredThe document's issue date; transmitted as `issueDate` in the `invoiceHeader`.#

The document's issue date; transmitted as `issueDate` in the `invoiceHeader`. The provider refuses a future date or time (checked in Greek local time, `Europe/Athens`).

When it is used

On every request.

Example

{
  "date": "2026-10-05",
  "time": "10:30:00"
}
timetimeOptionalThe document's issue time.#

The document's issue time. It is not transmitted to myDATA (the `invoiceHeader` carries a date only), but it is combined with `date` for the "no future issuance" check.

When it is used

When you want to state the exact issue time; if you omit it the provider fills in the current Greek local time, and with provider `oxygen` it is forwarded as the issue time.

  • accepts null

Example

{
  "date": "2026-10-05",
  "time": "10:30:00"
}
self_pricingbooleanOptionalSelf-pricing flag: the document is issued by the recipient on the issuer's behalf.#

Self-pricing flag: the document is issued by the recipient on the issuer's behalf. When `true`, the provider adds `selfPricing` to the `invoiceHeader`.

When it is used

Only on self-priced documents; when `false` nothing is written into the XML, and on types 9.2 and 9.3 it is never emitted because those types carry their own `invoiceHeader`.

Allowed values

ValueMeaning
trueSelf-pricing (`selfPricing` = true)
falseNormal pricing (the default; the element is omitted)

Example

{
  "self_pricing": true,
  "provider_details": {
    "document_type": "1.1"
  }
}
third_party_collectionbooleanOptionalFlag for collection on behalf of third parties.#

Flag for collection on behalf of third parties. When `true`, the provider adds `thirdPartyCollection` to the `invoiceHeader`.

When it is used

Per AADE it concerns businesses that collect on behalf of third parties through payment instruments (document 8.4, POS collection receipt) or refund amounts on behalf of third parties (8.5, POS refund receipt).

Allowed values

ValueMeaning
trueCollection on behalf of third parties (`thirdPartyCollection` = true)
falseNormal collection (the default; the element is omitted)

Example

{
  "third_party_collection": true,
  "provider_details": {
    "document_type": "8.4"
  }
}
reference_idstringOptionalNot used by flexyA reference identifier from an external system (ERP, CRM, procurement platform) for this document.#

A reference identifier from an external system (ERP, CRM, procurement platform) for this document. It is stored and returned by the `GET` endpoints, but it is not transmitted to AADE.

When it is used

Optional; no provider reads it, and for a searchable identifier of your own use `custom_id` instead.

  • up to 255 characters
  • accepts null

Example

{
  "reference_id": "ERP-INV-2026-001234"
}
vat_payment_suspensionbooleanOptionalNot used by flexyVAT payment suspension flag (Article 195).#

VAT payment suspension flag (Article 195). It corresponds to `vatPaymentSuspension` in the myDATA `invoiceHeader`, but the provider does not emit it.

When it is used

Flexy accepts and stores the field, but the value never reaches AADE.

Allowed values

ValueMeaning
trueVAT payment suspended
falseNormal VAT payment (the default)

Example

{
  "vat_payment_suspension": true
}
is_delivery_notebooleanOptionalFlag that the invoice doubles as a delivery note.#

Flag that the invoice doubles as a delivery note. When `true`, the provider adds `movePurpose`, `otherDeliveryNoteHeader` and `isDeliveryNote` to the `invoiceHeader`.

When it is used

Only for invoice types (1.x, 2.x) that also act as movement documents, forbidden on the pure movement types 9.x/10.x which carry the purpose in `invoiceType` itself, and send the `dispatch` object alongside it (or `provider_details.other_delivery_note_header`) with `move_purpose` and **both** addresses (loading and delivery), because with only one of them the provider omits the whole `otherDeliveryNoteHeader`, since AADE rejects a partial header.

Allowed values

ValueMeaning
trueInvoice that is also a delivery note (`isDeliveryNote` = true)
falsePlain document (the default; the element is omitted)

Example

{
  "is_delivery_note": true,
  "dispatch": {
    "dispatch_date": "2026-10-05",
    "dispatch_time": "10:00:00",
    "move_purpose": 1,
    "vehicle_number": "ΑΒΓ-1234",
    "loading_address": {
      "address_line": "Πανεπιστημίου 123",
      "street": "Πανεπιστημίου",
      "number": "123",
      "city": "Αθήνα",
      "zip": "10678",
      "country": "GR"
    },
    "shipping_address": {
      "address_line": "Σταδίου 456",
      "street": "Σταδίου",
      "number": "456",
      "city": "Θεσσαλονίκη",
      "zip": "54625",
      "country": "GR"
    }
  }
}
table_numberstringOptionalNot used by flexyThe table number for hospitality order slips.#

The table number for hospitality order slips.

When it is used

Used only with provider `oxygen`, on hospitality order slips (type 8.6); on the Flexy path the field is accepted and stored, but no `tableAA` is sent to AADE.

  • up to 50 characters
  • accepts null

Example

{
  "table_number": "12",
  "provider_details": {
    "document_type": "8.6"
  }
}
transmission_failureintegerOptionalNot used by flexyTransmission-failure flag (loss of connectivity) for the document.#

Transmission-failure flag (loss of connectivity) for the document.

When it is used

The field is accepted and stored but is not transmitted to AADE; the failure is handled by the provider, and with provider `oxygen` the code comes from Oxygen's response and the document stays `mark_pending` until a ΜΑΡΚ is assigned.

  • minimum 1
  • maximum 1
  • accepts null

Allowed values

The provider accepts **only** the value `1` (or `null`). AADE's schema allows 1-4 (`2` = the provider could not reach myDATA, `4` = the entities of art. 5 §2(c) of Law 1138/2020), but those values are rejected by this field.

ValueMeaning
1The entity could not reach the provider while issuing or transmitting

Example

{
  "transmission_failure": 1
}
b2gbooleanOptionalFlag that the document is addressed to the public sector (B2G).#

Flag that the document is addressed to the public sector (B2G). It is recorded on the document and returned by the `GET` endpoints.

When it is used

When you invoice a public-sector body; it does not change the XML sent to myDATA, and Peppol/KED submission happens only through provider `oxygen`, which is also where the `peppol_*` fields come from.

Allowed values

ValueMeaning
truePublic-sector (B2G) document
falsePrivate-sector document (the default)

Example

{
  "b2g": true
}
provider_detailsobjectRequiredProvider-specific details of the document: document type, payment method, special category, correlated entities and delivery-note addresses.#

Provider-specific details of the document: document type, payment method, special category, correlated entities and delivery-note addresses. Required on every `POST /api/v1/documents/` request.

When it is used

Always sent with the document, with different sub-fields applying per type (for example `move_purpose` only on 9.x/10.x, or on 1.x/2.x with `is_delivery_note=true`).

Example

{
  "provider_details": {
    "document_type": "1.1",
    "payment_method_type": "3"
  }
}
document_typestringRequiredThe myDATA document-type code (`invoiceType`); it decides which AADE rules apply and how the XML is composed.#

The myDATA document-type code (`invoiceType`); it decides which AADE rules apply and how the XML is composed. Codes outside 1.1-11.5 (for example 13.x, 14.x, 15.x, 16.x, 17.x) exist in the schema but are rejected as "Unknown document type".

When it is used

On every request.

  • up to 50 characters

Allowed values

Only the codes in this list are supported; any other value is rejected.

ValueMeaning
1.1Sales Invoice
1.2Sales Invoice / Intra-EU Deliveries
1.3Sales Invoice / Third-Country Deliveries
1.4Sales Invoice / Sale on Behalf of Third Party
1.5Sales Invoice / Third-Party Settlement
1.6Sales Invoice / Supplementary
2.1Service Invoice
2.2Service Invoice / Intra-EU Service Provision
2.3Service Invoice / Service to Third-Country Recipient
2.4Service Invoice / Supplementary
3.1Title of Ownership (Non-Obligated Issuer)
3.2Title of Ownership (Issuer Refused to Issue)
5.1Credit Note / Associated
5.2Credit Note / Non-Associated
6.1Self-Delivery Document
6.2Self-Use Document
7.1Contract Income
8.1Rent Income
8.2Climate Resilience Fee
8.4POS Collection Receipt
8.5POS Return Receipt
8.6Restaurant Order Slip
9.1Delivery Note (Associated)
9.2Aggregate Delivery Note
9.3Delivery Note (Non-Associated)
10.1Quantity Receipt (Associated)
10.2Quantity Receipt (Non-Associated)
11.1Retail Sales Receipt (ALP)
11.2Retail Service Receipt (APY)
11.3Simplified Invoice
11.4Retail Credit Voucher
11.5ALP / Sale on Behalf of Third Party

Example

{
  "provider_details": {
    "document_type": "1.1"
  }
}
payment_method_typeintegerOptionalThe myDATA payment-method code covering the whole amount (the older form).#

The myDATA payment-method code covering the whole amount (the older form). Used only when you do not send `provider_details.payment_methods`; the provider sends one `paymentMethodDetails` with `type` and `amount` equal to `totals.payable_amount`.

When it is required

Required for types 1.1, 1.2, 1.3 and all 11.x types, unless you use the `payment_methods` list instead.

When it is used

On 1.1/1.2/1.3 and 11.x; if you send both, the `payment_methods` list wins and this field is ignored.

  • accepts null

Allowed values

Codes 1-8 are the myDATA payment methods. On B2G documents through provider `oxygen` only `1` and `5` are allowed.

ValueMeaning
1Domestic Payments Business Account (on B2G it fails without an IBAN)
2Foreign Payments Business Account (rejected by PEPPOL and provider `oxygen`)
3Cash (instant settlement; triggers an automatic transactional document)
4Cheque (rejected by PEPPOL and provider `oxygen`)
5On Credit (the B2G-safe default; requires a zero IBAN)
6Web Banking (rejected by PEPPOL and provider `oxygen`)
7POS / e-POS (instant settlement; triggers an automatic transactional document)
8IRIS Instant Payments (instant settlement; triggers an automatic transactional document)

Example

{
  "provider_details": {
    "document_type": "1.1",
    "payment_method_type": 3
  }
}
payment_methodsarray of jsonsOptionalList of payment means, as free-form objects; each entry must carry `type` (1-8) and `amount` with 2 decimal places.#

List of payment means, as free-form objects; each entry must carry `type` (1-8) and `amount` with 2 decimal places. When the list is not empty the provider sends one `paymentMethodDetails` per entry and ignores `payment_method_type`.

When it is required

Required instead of `payment_method_type` on 1.1/1.2/1.3 and 11.x, and it supports multiple payment means with partial amounts.

When it is used

On 1.1/1.2/1.3 and 11.x, especially when you want to split the amount across several payment means.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "payment_methods": [
      {
        "type": 3,
        "amount": "20.00"
      },
      {
        "type": 7,
        "amount": "104.00"
      }
    ]
  }
}
vehicle_numberstringOptionalNot used by flexyVehicle registration number.#

Vehicle registration number. Set it here only for provider `oxygen`; for transmission to myDATA the number is read from `dispatch.vehicle_number`.

When it is used

Used only with provider `oxygen`; with the flexy provider put the vehicle number in `dispatch.vehicle_number`.

  • up to 15 characters
  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "vehicle_number": "IKA-7358"
  }
}
fuel_invoicebooleanOptionalFuel invoice flag.#

Fuel invoice flag. When `true`, the provider writes `fuelInvoice` in the `invoiceHeader` and enables `fuelCode` on the lines and `supplyAccountNumber` on the counterpart.

When it is required

Set `true` only for liquid-fuel sales documents (fuel stations).

When it is used

Only for fuel stations; fuel invoices are not supported yet, and when the flag is not enabled no value is sent.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "fuel_invoice": true
  }
}
special_invoice_categorystringOptionalSpecial document category code (myDATA `specialInvoiceCategory`, Appendix 8.19), written into the `invoiceHeader` only when a value is given.#

Special document category code (myDATA `specialInvoiceCategory`, Appendix 8.19), written into the `invoiceHeader` only when a value is given. The available list is limited to codes 1-7 and 10-12 (8, 9 and 13 are not submitted through an ERP).

When it is required

Set it only if the document belongs to one of AADE's special categories (subsidies, Tax Free and so on).

When it is used

On document types 1-7 and 10-12 when a special category applies; 8.x/9.x (cash registers) are read-only and code 13 applies to 11.4/14.30 only.

  • accepts null

Allowed values

ValueMeaning
1Subsidies
2Hotel Retail Revenue - Room Charges
3Accounting Entry
4Tax Free
5Composite domestic-foreign transactions
6Beneficiaries of article 3, KYA 139818 ΕΞ2022/28.09.2022
7Purchase of agricultural goods / services - Article 41 VAT
10EFY retail revenue (deviation)
11Heating allowance
12Catering transactions

Example

{
  "provider_details": {
    "document_type": "1.1",
    "special_invoice_category": "1"
  }
}
invoice_variation_typestringOptionalNot used by flexyInvoice variation flag.#

Invoice variation flag. The field exists in the schema but no provider reads it: no `invoiceVariationType` is emitted in the XML and no value is sent ("We do not support invoice variation types yet").

When it is used

Not supported yet; you may send it but it will not appear in the XML.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "invoice_variation_type": null
  }
}
other_correlated_entitiesarray of objectsOptionalList of additional correlated entities (myDATA `otherCorrelatedEntities`, Appendix 8.20) with `type` (1-6) and `entity_data` (ΑΦΜ, country, branch, name).#

List of additional correlated entities (myDATA `otherCorrelatedEntities`, Appendix 8.20) with `type` (1-6) and `entity_data` (ΑΦΜ, country, branch, name). The provider sends one `otherCorrelatedEntities` per entry in the `invoiceHeader`.

When it is used

When the document involves a tax representative, carrier, intermediary, sender or any party beyond the issuer and the buyer.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "other_correlated_entities": [
      {
        "type": 1,
        "entity_data": {
          "vat_number": "094259216",
          "country": "GR",
          "branch": 0,
          "name": "Φορολογικός Εκπρόσωπος ΑΕ"
        }
      }
    ]
  }
}
typeintegerRequiredThe role the entity plays in the document (myDATA `EntityType`, Appendix 8.20).#

The role the entity plays in the document (myDATA `EntityType`, Appendix 8.20).

When it is required

Required inside each entry.

  • minimum 1
  • maximum 6

Allowed values

ValueMeaning
1Tax Representative
2Intermediary
3Carrier / Transporter
4Sender's Recipient / Buyer
5Sender / Seller
6Other Correlated Entities

Example

{
  "type": 1
}
entity_dataobjectRequiredThe entity's details (myDATA `PartyType`): ΑΦΜ, country, branch and an optional name.#

The entity's details (myDATA `PartyType`): ΑΦΜ, country, branch and an optional name. The provider sends `entityData` with `vatNumber`, `country` and `branch`, plus `name` when supplied.

When it is required

Required inside each entry.

Example

{
  "entity_data": {
    "vat_number": "094259216",
    "country": "GR",
    "branch": 0,
    "name": "Φορολογικός Εκπρόσωπος ΑΕ"
  }
}
vat_numberstringRequiredThe correlated entity's ΑΦΜ.#

The correlated entity's ΑΦΜ. It is transmitted without the `EL` prefix.

Example

{
  "vat_number": "094259216"
}
countrystringRequiredISO 3166-1 alpha-2 country code (for example `GR`, `DE`, `CY`).#

ISO 3166-1 alpha-2 country code (for example `GR`, `DE`, `CY`).

  • up to 2 characters

Example

{
  "country": "GR"
}
branchintegerRequiredBranch number; `0` for the head office, a positive integer for a branch.#

Branch number; `0` for the head office, a positive integer for a branch.

  • minimum 0

Example

{
  "branch": 0
}
namestringOptionalThe entity's legal name.#

The entity's legal name. Optional per the specification for entities inside Greece; the provider sends `name` only when a value is given.

  • accepts null

Example

{
  "name": "Φορολογικός Εκπρόσωπος ΑΕ"
}
other_delivery_note_headerobjectOptionalDelivery-note addresses (myDATA `otherDeliveryNoteHeader`): it holds `loading_address`, `delivery_address`, `start_shipping_branch` and `complete_shipping_branch`.#

Delivery-note addresses (myDATA `otherDeliveryNoteHeader`): it holds `loading_address`, `delivery_address`, `start_shipping_branch` and `complete_shipping_branch`. On 9.x/10.x the data is always read from here.

When it is required

Required on 9.x and 10.x, and on 1.x/2.x with `is_delivery_note=true`, where AADE rejects a header that does not include both addresses, so a partial emission fails.

When it is used

On 9.x/10.x and on 1.x/2.x when the document also acts as a delivery note (`is_delivery_note=true`), where the older shape `dispatch.loading_address`/`dispatch.shipping_address` is also accepted and wins when present.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "9.3",
    "other_delivery_note_header": {
      "loading_address": {
        "street": "Πανεπιστημίου",
        "number": "123",
        "city": "Αθήνα",
        "postal_code": "10678"
      },
      "delivery_address": {
        "street": "Stadiou",
        "number": "10",
        "city": "Athens",
        "postal_code": "10562"
      }
    }
  }
}
loading_addressobjectOptionalThe loading address (myDATA `loadingAddress`).#

The loading address (myDATA `loadingAddress`).

When it is required

Inside `other_delivery_note_header`, together with `delivery_address`, on 1.x/2.x with `is_delivery_note=true`; on 9.x/10.x each address is optional.

When it is used

On 9.x/10.x and on 1.x/2.x with `is_delivery_note=true`.

  • accepts null

Example

{
  "loading_address": {
    "street": "Πανεπιστημίου",
    "number": "123",
    "city": "Αθήνα",
    "postal_code": "10678"
  }
}
streetstringOptionalThe street name.#

The street name.

When it is used

Inside the loading address, on 9.x/10.x or on 1.x/2.x with `is_delivery_note=true`.

  • accepts null

Example

{
  "street": "Πανεπιστημίου"
}
numberstringOptionalThe street number.#

The street number.

  • accepts null

Example

{
  "number": "123"
}
citystringRequiredThe city.#

The city. Required if you send the address.

When it is required

Required inside an address whenever that address is sent.

Example

{
  "city": "Αθήνα"
}
postal_codestringOptionalThe postal code.#

The postal code. `zip` is also accepted as an alternative name.

  • accepts null

Example

{
  "postal_code": "10678"
}
zipstringOptionalAn alternative name for `postal_code`.#

An alternative name for `postal_code`. If both are sent, `postal_code` wins.

  • accepts null

Example

{
  "zip": "10678"
}
address_linestringOptionalAn alternative name for `street`.#

An alternative name for `street`. If both are sent, `street` wins.

  • accepts null

Example

{
  "address_line": "Πανεπιστημίου 123"
}
delivery_addressobjectOptionalThe delivery address (myDATA `deliveryAddress`).#

The delivery address (myDATA `deliveryAddress`).

When it is required

Inside `other_delivery_note_header`, together with `loading_address`, on 1.x/2.x with `is_delivery_note=true`; on 9.x/10.x each address is optional.

When it is used

On 9.x/10.x and on 1.x/2.x with `is_delivery_note=true`.

  • accepts null

Example

{
  "delivery_address": {
    "street": "Stadiou",
    "number": "10",
    "city": "Athens",
    "postal_code": "10562"
  }
}
streetstringOptionalThe street name.#

The street name.

When it is used

Inside the delivery address, on 9.x/10.x or on 1.x/2.x with `is_delivery_note=true`.

  • accepts null

Example

{
  "street": "Πανεπιστημίου"
}
numberstringOptionalThe street number.#

The street number.

  • accepts null

Example

{
  "number": "123"
}
citystringRequiredThe city.#

The city. Required if you send the address.

When it is required

Required inside an address whenever that address is sent.

Example

{
  "city": "Αθήνα"
}
postal_codestringOptionalThe postal code.#

The postal code. `zip` is also accepted as an alternative name.

  • accepts null

Example

{
  "postal_code": "10678"
}
zipstringOptionalAn alternative name for `postal_code`.#

An alternative name for `postal_code`. If both are sent, `postal_code` wins.

  • accepts null

Example

{
  "zip": "10678"
}
address_linestringOptionalAn alternative name for `street`.#

An alternative name for `street`. If both are sent, `street` wins.

  • accepts null

Example

{
  "address_line": "Πανεπιστημίου 123"
}
start_shipping_branchintegerOptionalBranch number where the shipping starts (myDATA `startShippingBranch`).#

Branch number where the shipping starts (myDATA `startShippingBranch`). Optional.

When it is used

On 9.x/10.x when the shipping starts at a branch.

  • accepts null

Example

{
  "start_shipping_branch": 0
}
complete_shipping_branchintegerOptionalBranch number where the shipping completes (myDATA `completeShippingBranch`).#

Branch number where the shipping completes (myDATA `completeShippingBranch`). Optional.

When it is used

On 9.x/10.x when the delivery completes at a branch.

  • accepts null

Example

{
  "complete_shipping_branch": 1
}
reverse_delivery_notebooleanOptionalReverse delivery note.#

Reverse delivery note. When `true`, the provider writes `reverseDeliveryNote` in the `invoiceHeader` and `is_reverse_delivery_note=true` in the Oxygen header.

When it is required

Set `true` ONLY on type 9.3, when the recipient issues the note themselves, and then send `reverse_delivery_note_purpose` as well.

When it is used

Only on 9.3 (Αντίστροφη Διακίνηση), where the recipient issues on the sender's behalf.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "9.3",
    "move_purpose": "1",
    "reverse_delivery_note": true,
    "reverse_delivery_note_purpose": 2
  }
}
reverse_delivery_note_purposeintegerConditionalThe reason for issuing a reverse delivery note (myDATA `reverseDeliveryNotePurpose`, Appendix 8.21).#

The reason for issuing a reverse delivery note (myDATA `reverseDeliveryNotePurpose`, Appendix 8.21). It is emitted only when `reverse_delivery_note=true` accompanies it.

When it is required

Required ONLY when `reverse_delivery_note=true`; both `true` without a reason and a reason with `false` or `null` are rejected.

When it is used

Only on 9.3, together with `reverse_delivery_note=true`.

  • minimum 1
  • maximum 5
  • accepts null

Allowed values

ValueMeaning
1Not obligated to issue
2Refused to issue / Inadvertently not issued
3Intra-EU acquisition
4Third-country acquisition
5Reverse charge

Example

{
  "reverse_delivery_note_purpose": 2
}
move_purposestringConditionalMovement purpose (myDATA `movePurpose`, Appendix 8.18); `dispatch.move_purpose` is also accepted and wins.#

Movement purpose (myDATA `movePurpose`, Appendix 8.18); `dispatch.move_purpose` is also accepted and wins. On 9.3, if the counterpart is the issuer itself and the value is missing or `1`, it is coerced to `8` (internal movement).

When it is required

Required on types 9.1, 9.2 and 9.3, where leaving it out is rejected, and on 1.x/2.x only if `is_delivery_note=true`. Not used on 10.1 and 10.2.

When it is used

Always on 9.1/9.2/9.3, on 1.x/2.x only with `is_delivery_note=true`, never on 10.1/10.2; value `19` (Other movements) needs `other_move_purpose_title`.

  • accepts null

Allowed values

The myDATA movement purposes (table 8.14); numbers 6 and 15–18 do not exist. With `19` a purpose title is sent too (`provider_details.other_move_purpose_title`); if none is given, «Λοιπές Διακινήσεις» is used. On 9.3, when the counterpart is the issuer itself and the value is missing or `1`, Flexy sends `8`. On types 9.1, 9.2 and 9.3 only `provider_details.move_purpose` is read, and the request is rejected without it; on 1.x/2.x with `is_delivery_note=true` the older `dispatch.move_purpose` is read too and wins when both are given. On 10.1 and 10.2 the movement purpose is not transmitted at all (AADE forbids it on quantity receipts), so any value you send is ignored.

ValueMeaning
1Sale
2Sale on behalf of third party
3Sampling
4Exhibition
5Return
7Processing - Assembly - Disassembly
8Internal movement
9Purchase
10Ship and aircraft supply
11Free provision
12Warranty
13Loan for use
14Storage at third parties
19Other movements (requires other_move_purpose_title)
20Transportation - Express delivery

Example

{
  "provider_details": {
    "document_type": "9.3",
    "move_purpose": "1"
  }
}
correlated_documentsarray of jsonsOptionalNot used by flexyList of Oxygen identifiers or document objects for supplementary invoices (1.6, 2.4, 5.1).#

List of Oxygen identifiers or document objects for supplementary invoices (1.6, 2.4, 5.1). It is accepted, but on 1.6/2.4/5.1 provider `oxygen` reads the ΜΑΡΚ numbers from `related_documents` and resolves them to Oxygen ULIDs.

When it is used

Used only with provider `oxygen`; always prefer `related_documents` with ΜΑΡΚ numbers.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "5.1",
    "correlated_documents": [
      "<OXYGEN_ID>"
    ]
  }
}
optionsobjectOptionalNot used by flexyPEPPOL/Oxygen flags.#

PEPPOL/Oxygen flags. Provider `oxygen` (types 1.1/2.1/5.1/5.2) reads `provider_details.options.is_peppol` and, when it is `true`, sends `options` with `is_peppol: true`; transmission to myDATA does not touch it.

When it is required

Used only with provider `oxygen` (B2G/PEPPOL); with the flexy provider it is ignored entirely.

When it is used

Only with provider `oxygen`; the request body also carries a top-level `options` for older reasons, but that one is not read.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "options": {
      "is_peppol": true
    }
  }
}
is_peppolbooleanOptionalNot used by flexySet `true` for B2G (public sector) so that PEPPOL BIS 3.0 validation is enabled in Oxygen.#

Set `true` for B2G (public sector) so that PEPPOL BIS 3.0 validation is enabled in Oxygen.

When it is required

Only with provider `oxygen`, on B2G documents.

When it is used

Only with provider `oxygen`, on B2G documents.

Example

{
  "options": {
    "is_peppol": true
  }
}
ignore_classificationsbooleanOptionalNot used by flexySkip the E3 classification check.#

Skip the E3 classification check. It is accepted but no provider reads it; the override happens elsewhere.

When it is required

Testing only.

When it is used

Testing only.

Example

{
  "options": {
    "ignore_classifications": false
  }
}
payment_termsstringOptionalNot used by flexyPayment terms (PEPPOL BT-20).#

Payment terms (PEPPOL BT-20). It is accepted but unused; the PEPPOL payment terms are sent from `provider_details.payment_terms`, one level up.

When it is required

Do not use it; use `provider_details.payment_terms` (one level up) instead.

When it is used

Do not use it; use `provider_details.payment_terms` (one level up) instead.

  • accepts null
payment_due_datedateOptionalNot used by flexyPayment due date (PEPPOL BT-9).#

Payment due date (PEPPOL BT-9). It is accepted but no provider uses it.

When it is required

Do not use it; use `dispatch.payment_due_date` instead.

When it is used

Do not use it; use `dispatch.payment_due_date` instead.

  • accepts null
billing_referencestringOptionalNot used by flexyPrepayment billing reference (PEPPOL).#

Prepayment billing reference (PEPPOL). It is accepted but no provider uses it.

When it is required

Rare; only for prepayments.

When it is used

Rare; only for prepayments.

  • accepts null
contractobjectOptionalNot used by flexyContract details (PEPPOL/B2G).#

Contract details (PEPPOL/B2G). They are accepted but unused; provider `oxygen` reads `provider_details.contract`, one level up, not `options.contract`.

When it is required

Do not use it; use `provider_details.contract` instead.

When it is used

Do not use it; use `provider_details.contract` instead.

  • accepts null
contract_idstringOptionalNot used by flexyContract ID inside `options.contract`; it is not used.#

Contract ID inside `options.contract`; it is not used. Send `provider_details.contract.contract_id` instead.

When it is required

Not supported.

When it is used

Not supported.

  • up to 255 characters
  • accepts null
contract_referencestringOptionalNot used by flexyContract description inside `options.contract`; it is not used.#

Contract description inside `options.contract`; it is not used.

When it is required

Not supported.

When it is used

Not supported.

  • up to 255 characters
  • accepts null
buyer_referencestringOptionalNot used by flexyBuyer reference (PEPPOL BT-10); it is accepted but never read.#

Buyer reference (PEPPOL BT-10); it is accepted but never read. Provider `oxygen` reads `provider_details.contract.buyer_reference`.

When it is required

Do not use it; use `provider_details.contract.buyer_reference` instead.

When it is used

Do not use it; use `provider_details.contract.buyer_reference` instead.

  • up to 255 characters
  • accepts null
project_referencestringOptionalNot used by flexyΑΔΑ (PEPPOL BT-11); it is accepted but never read.#

ΑΔΑ (PEPPOL BT-11); it is accepted but never read. Provider `oxygen` reads `provider_details.contract.project_reference`.

When it is required

Do not use it; use `provider_details.contract.project_reference` instead.

When it is used

Do not use it; use `provider_details.contract.project_reference` instead.

  • up to 255 characters
  • accepts null
document_referencestringOptionalNot used by flexyΑΔΑΜ (PEPPOL BT-12); it is accepted but never read.#

ΑΔΑΜ (PEPPOL BT-12); it is accepted but never read. Provider `oxygen` reads `provider_details.contract.document_reference`.

When it is required

Do not use it; use `provider_details.contract.document_reference` instead.

When it is used

Do not use it; use `provider_details.contract.document_reference` instead.

  • up to 255 characters
  • accepts null
order_referencestringOptionalNot used by flexyPurchase order number (PEPPOL BT-13); it is accepted but never read.#

Purchase order number (PEPPOL BT-13); it is accepted but never read.

When it is required

Optional.

When it is used

Optional.

  • up to 255 characters
  • accepts null
invoice_periodobjectOptionalNot used by flexyBilling period (PEPPOL BG-14).#

Billing period (PEPPOL BG-14). It is accepted but never read.

When it is required

Rare, only for collective invoices.

When it is used

Rare, only for collective invoices.

  • accepts null
start_datedateRequiredNot used by flexyPeriod start date (PEPPOL BT-73).#

Period start date (PEPPOL BT-73). It is not used.

When it is required

Only if you send `options.invoice_period`, which we do not recommend since it is never read.

When it is used

Only if you send `options.invoice_period`, which we do not recommend since it is never read.

end_datedateRequiredNot used by flexyPeriod end date (PEPPOL BT-74).#

Period end date (PEPPOL BT-74). It is not used.

When it is required

Only if you send `options.invoice_period`, which is not recommended.

When it is used

Only if you send `options.invoice_period`, which is not recommended.

description_codestringOptionalNot used by flexyVAT point code (PEPPOL BT-8).#

VAT point code (PEPPOL BT-8). It is not used.

  • up to 255 characters
  • accepts null
counterpart_identificationstringOptionalNot used by flexyThe buyer's ΑΑΗΤ or ΑΦΜ for PEPPOL (BT-46).#

The buyer's ΑΑΗΤ or ΑΦΜ for PEPPOL (BT-46). Provider `oxygen` (types 5.2/2.1/1.1) writes it to `counterpart.identification`; transmission to myDATA does not touch it.

When it is required

Used only with provider `oxygen` (B2G).

When it is used

Only with provider `oxygen`, on B2G.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "counterpart_identification": "1007.8020000000.0001"
  }
}
contractobjectOptionalNot used by flexyB2G contract fields.#

B2G contract fields. Provider `oxygen` (types 1.1/2.1/5.1/5.2) reads each field and sends them as `contract`; transmission to myDATA does not touch them.

When it is required

Used only with provider `oxygen` (B2G).

When it is used

Only with provider `oxygen`, on B2G.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "contract": {
      "buyer_reference": "ΣΥΝΗΓΟΡΟΣ ΤΟΥ ΠΟΛΙΤΗ",
      "project_reference": "1|ΩΕΧΜ465ΦΥΟ-5ΜΓ",
      "document_reference": "20SYMV006467658"
    }
  }
}
buyer_referencestringOptionalNot used by flexyB2G buyer reference (BT-10).#

B2G buyer reference (BT-10). Provider `oxygen` sends it as `contract.buyer_reference`.

When it is used

Only on B2G with provider `oxygen`.

  • up to 255 characters
  • accepts null

Example

{
  "buyer_reference": "ΣΥΝΗΓΟΡΟΣ ΤΟΥ ΠΟΛΙΤΗ"
}
project_referencestringOptionalNot used by flexyΑΔΑ (BT-11) in the form `budget_type|ADA_CODE` (for example `1|ΩΕΧΜ465ΦΥΟ-5ΜΓ`), which provider `oxygen` (types 1.1/2.1/5.1/5.2) sends as `contract.project_reference`.#

ΑΔΑ (BT-11) in the form `budget_type|ADA_CODE` (for example `1|ΩΕΧΜ465ΦΥΟ-5ΜΓ`), which provider `oxygen` (types 1.1/2.1/5.1/5.2) sends as `contract.project_reference`. On 5.1 (associated credit note) it is inherited from the original document and Oxygen rejects it if you send it.

When it is required

On B2G, where 5.2 explicitly requires it; on 5.1 do not send it.

When it is used

On B2G, where 5.2 explicitly requires it; on 5.1 do not send it.

  • up to 255 characters
  • accepts null

Example

{
  "project_reference": "1|ΩΕΧΜ465ΦΥΟ-5ΜΓ"
}
document_referencestringOptionalNot used by flexyΑΔΑΜ (BT-12).#

ΑΔΑΜ (BT-12). Provider `oxygen` sends it as `contract.document_reference`.

When it is required

On B2G contracts and procurements.

When it is used

On B2G contracts and procurements.

  • up to 255 characters
  • accepts null

Example

{
  "document_reference": "20SYMV006467658"
}
contract_idstringOptionalNot used by flexyContract ID (PEPPOL).#

Contract ID (PEPPOL). Provider `oxygen` sends it as `contract.contract_id`.

When it is required

In a B2G contract context.

When it is used

In a B2G contract context.

  • up to 255 characters
  • accepts null

Example

{
  "contract_id": "FWK-2025-001"
}
contract_referencestringOptionalNot used by flexyContract description (PEPPOL).#

Contract description (PEPPOL). Provider `oxygen` sends it as `contract.contract_reference`.

When it is required

In a B2G contract context.

When it is used

In a B2G contract context.

  • up to 255 characters
  • accepts null

Example

{
  "contract_reference": "IT services 2025-2027"
}
shipping_detailsobjectOptionalNot used by flexyB2G shipping fields.#

B2G shipping fields. Provider `oxygen` (types 1.1/2.1/5.1/5.2) reads `delivery_party_name` and `delivery_address` (`street`, `number`, `city`, `postal_code`) and sends them as `shipping_details`.

When it is required

Used only with provider `oxygen` (B2G).

When it is used

Only with provider `oxygen`, on B2G.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "shipping_details": {
      "delivery_party_name": "ΣΥΝΗΓΟΡΟΣ ΤΟΥ ΠΟΛΙΤΗ",
      "delivery_address": {
        "street": "Λεωφ. Βασιλέως Κωνσταντίνου",
        "number": "3",
        "city": "Κρωπία",
        "postal_code": "19400"
      }
    }
  }
}
delivery_party_namestringOptionalNot used by flexyThe B2G delivery party name.#

The B2G delivery party name. Provider `oxygen` sends it as `shipping_details.delivery_party_name`.

When it is used

Only on B2G with provider `oxygen`.

  • up to 255 characters
  • accepts null

Example

{
  "delivery_party_name": "ΣΥΝΗΓΟΡΟΣ ΤΟΥ ΠΟΛΙΤΗ"
}
delivery_addressobjectOptionalNot used by flexyThe B2G delivery address.#

The B2G delivery address. Provider `oxygen` sends `street`, `number`, `city` and `postal_code` as `shipping_details.delivery_address`.

When it is used

Only on B2G with provider `oxygen`.

  • accepts null

Example

{
  "delivery_address": {
    "street": "Λεωφ. Βασιλέως Κωνσταντίνου",
    "number": "3",
    "city": "Κρωπία",
    "postal_code": "19400"
  }
}
streetstringOptionalNot used by flexyThe B2G delivery street.#

The B2G delivery street.

When it is used

Only on B2G with provider `oxygen`.

  • accepts null

Example

{
  "street": "Λεωφ. Βασιλέως Κωνσταντίνου"
}
numberstringOptionalNot used by flexyThe B2G delivery street number.#

The B2G delivery street number.

When it is used

Only on B2G with provider `oxygen`.

  • accepts null

Example

{
  "number": "3"
}
citystringOptionalNot used by flexyThe B2G delivery city.#

The B2G delivery city.

When it is used

Only on B2G with provider `oxygen`.

  • accepts null

Example

{
  "city": "Κρωπία"
}
postal_codestringOptionalNot used by flexyThe B2G delivery postal code.#

The B2G delivery postal code.

When it is used

Only on B2G with provider `oxygen`.

  • accepts null

Example

{
  "postal_code": "19400"
}
payment_termsstringOptionalNot used by flexyPEPPOL payment terms (BT-20), which provider `oxygen` (types 1.1/2.1/5.1/5.2) sends as `payment_terms`; transmission to myDATA does not touch them.#

PEPPOL payment terms (BT-20), which provider `oxygen` (types 1.1/2.1/5.1/5.2) sends as `payment_terms`; transmission to myDATA does not touch them. On B2G the Greek name of `payment_method_type` is placed here (for example "Επί Πιστώσει").

When it is required

Used only with provider `oxygen` (B2G).

When it is used

Only with provider `oxygen`, on B2G.

  • accepts null

Example

{
  "provider_details": {
    "document_type": "1.1",
    "payment_method_type": "5",
    "payment_terms": "Επί πιστώσει"
  }
}
issuerobjectRequiredIssuer (document creator) details: legal name, VAT number with country prefix, business activity and address.#

Issuer (document creator) details: legal name, VAT number with country prefix, business activity and address. The flexy provider transmits the document as ΥΠΑΗΕΣ under the VAT number of the declared API client.

When it is used

Always; every document must declare an issuer.

Example

{
  "issuer": {
    "legal_name": "Test Company ΕΠΕ",
    "legal_number": "<VAT NUMBER>",
    "legal_activity": "Χονδρικό Εμπόριο",
    "address": {
      "address_line": "Πανεπιστημίου 123",
      "city": "Αθήνα",
      "state": "Αττική",
      "zip": "10678",
      "country": "GR",
      "branch_code": 0
    }
  }
}
addressobjectRequiredThe issuer's address, in the shared address shape.#

The issuer's address, in the shared address shape. `address_line` (or `street` plus `number`) becomes `street` and `number` in the myDATA XML, while `zip` and `country` become `postalCode` and `country`.

When it is used

Always; a required object inside `issuer`.

Example

{
  "issuer": {
    "address": {
      "address_line": "Πανεπιστημίου 123",
      "city": "Αθήνα",
      "state": "Αττική",
      "zip": "10678",
      "country": "GR",
      "branch_code": 0
    }
  }
}
address_linestringRequiredA free-form address line (street and number).#

A free-form address line (street and number). If you do not send `street` and `number` separately, the provider splits the line on the last space (for example "Πανεπιστημίου 123" gives `street` = "Πανεπιστημίου" and `number` = "123"), and when no space is found `number` becomes `0`.

When it is used

Always, inside `issuer.address`.

Example

{
  "issuer": {
    "address": {
      "address_line": "Πανεπιστημίου 123"
    }
  }
}
streetstringOptionalThe street name, without the number.#

The street name, without the number. Optional; if you send it together with `number`, the two are used directly as `street` and `number` in the myDATA XML, with no parsing of `address_line`.

When it is used

Optional; useful when the address does not fit cleanly in `address_line` or when you want an explicit split.

Example

{
  "issuer": {
    "address": {
      "street": "Πανεπιστημίου",
      "number": "123"
    }
  }
}
numberstringOptionalThe street number.#

The street number. Optional in the request; if it is given neither here nor through `address_line`, the provider sends `number` = `0` so that the myDATA schema is satisfied.

When it is used

Optional; combine it with `street` or leave it to `address_line` parsing.

Example

{
  "issuer": {
    "address": {
      "street": "Πανεπιστημίου",
      "number": "123"
    }
  }
}
citystringRequiredThe city or municipality.#

The city or municipality. Required; transmitted as `city`.

When it is used

Always, inside `issuer.address`.

Example

{
  "issuer": {
    "address": {
      "city": "Αθήνα"
    }
  }
}
statestringOptionalNot used by flexyThe state or region.#

The state or region. Optional; it does not appear in the myDATA XML, where only `street`, `number`, `postalCode` and `city` are written.

When it is used

Optional; it does not reach the myDATA XML.

Example

{
  "issuer": {
    "address": {
      "state": "Αττική"
    }
  }
}
zipstringRequiredThe postal code.#

The postal code. Required; transmitted as `postalCode`.

When it is used

Always, inside `issuer.address`.

Example

{
  "issuer": {
    "address": {
      "zip": "10678"
    }
  }
}
countrystringRequiredISO 3166-1 alpha-2 country code (2 letters, for example `GR`, `DE`, `CY`), transmitted in upper case.#

ISO 3166-1 alpha-2 country code (2 letters, for example `GR`, `DE`, `CY`), transmitted in upper case. The schema sets no default; when it is missing the provider sends `GR`.

When it is used

Always, inside `issuer.address`.

  • up to 2 characters

Example

{
  "issuer": {
    "address": {
      "country": "GR"
    }
  }
}
branch_codeintegerOptionalThe issuer's establishment or branch number: `0` for the head office, `1` and above for a branch.#

The issuer's establishment or branch number: `0` for the head office, `1` and above for a branch. It is transmitted as `branch`, defaulting to `0` when missing.

When it is used

Optional; use `0` for the head office or the branch number.

Example

{
  "issuer": {
    "address": {
      "branch_code": 0
    }
  }
}
counterpartobjectConditionalCounterpart (buyer or supplier) details.#

Counterpart (buyer or supplier) details. When you send it, `legal_name` and `legal_number` are required; the VAT number, country and branch are transmitted, and the name only when the country is not `GR`.

When it is required

Required for types 1.2, 1.3, 2.2, 2.3, 3.1, 3.2, 5.1, 5.2, 7.1, 8.1, 9.1, 9.2, 9.3, 10.1 and 10.2 (the request is rejected without it). Optional for 1.1, 1.4, 1.5, 1.6, 2.1, 2.4, 6.x, 8.2, 8.4, 8.5, 8.6 and 11.x.

When it is used

It depends on the document type; see when it is required.

Example

{
  "counterpart": {
    "legal_name": "Customer Company ΑΕ",
    "legal_number": "159107845",
    "address": {
      "address_line": "Σταδίου 456",
      "city": "Θεσσαλονίκη",
      "zip": "54625",
      "country": "GR",
      "branch_code": 0
    }
  }
}
addressobjectOptionalThe counterpart's address, in the same shared address shape.#

The counterpart's address, in the same shared address shape. It is transmitted as `address` only when you send the object.

When it is used

Optional in the request, but many types (1.2, 1.3, 3.1, 3.2, 9.x, 10.x) require it under AADE's rules.

Example

{
  "counterpart": {
    "address": {
      "address_line": "Σταδίου 456",
      "city": "Θεσσαλονίκη",
      "state": "Θεσσαλονίκη",
      "zip": "54625",
      "country": "GR",
      "branch_code": 0
    }
  }
}
address_linestringRequiredA free-form counterpart address line.#

A free-form counterpart address line. It is parsed like `issuer.address.address_line`: split on the last space into street and number, and when no space is found `number` becomes `0`.

When it is required

Required inside `counterpart.address` whenever the address is sent.

When it is used

Required when you send `counterpart.address`.

Example

{
  "counterpart": {
    "address": {
      "address_line": "Σταδίου 456"
    }
  }
}
streetstringOptionalThe counterpart's street name, without the number.#

The counterpart's street name, without the number. If you send it together with `number`, the two are used directly.

When it is used

Optional; instead of relying on `address_line` parsing.

Example

{
  "counterpart": {
    "address": {
      "street": "Σταδίου",
      "number": "456"
    }
  }
}
numberstringOptionalThe counterpart's street number.#

The counterpart's street number. Optional in the request; when it is missing the provider sends `0`.

When it is used

Optional; combine it with `street` or with `address_line`.

Example

{
  "counterpart": {
    "address": {
      "number": "456"
    }
  }
}
citystringRequiredThe counterpart's city.#

The counterpart's city. Transmitted as `city`.

When it is required

Required inside `counterpart.address`.

When it is used

Always, inside `counterpart.address`.

Example

{
  "counterpart": {
    "address": {
      "city": "Θεσσαλονίκη"
    }
  }
}
statestringOptionalNot used by flexyThe counterpart's state or region.#

The counterpart's state or region. Optional; it does not appear in the myDATA XML.

When it is used

Optional; it does not reach the myDATA XML.

Example

{
  "counterpart": {
    "address": {
      "state": "Θεσσαλονίκη"
    }
  }
}
zipstringRequiredThe counterpart's postal code.#

The counterpart's postal code. Transmitted as `postalCode`.

When it is required

Required inside `counterpart.address`.

When it is used

Always, inside `counterpart.address`.

Example

{
  "counterpart": {
    "address": {
      "zip": "54625"
    }
  }
}
countrystringRequiredISO 3166-1 alpha-2 country code (2 letters), transmitted in upper case.#

ISO 3166-1 alpha-2 country code (2 letters), transmitted in upper case. On type 1.2 (intra-EU) the country must be an EU country other than `GR`, while on type 1.3 (third countries) it must be outside the EU.

When it is used

Always inside `counterpart.address`, with extra restrictions on types 1.2 and 1.3.

  • up to 2 characters

Example

{
  "counterpart": {
    "address": {
      "country": "GR"
    }
  }
}
branch_codeintegerOptionalThe counterpart's establishment or branch number: `0` for the head office, `1` and above for a branch.#

The counterpart's establishment or branch number: `0` for the head office, `1` and above for a branch. It is transmitted as `branch`, defaulting to `0`.

When it is used

Optional; use `0` for the head office or the branch number.

Example

{
  "counterpart": {
    "address": {
      "branch_code": 0
    }
  }
}
emailemailOptionalNot used by flexyThe counterpart's contact email, up to 100 characters.#

The counterpart's contact email, up to 100 characters. It is not forwarded to myDATA; only provider `oxygen` reads it, for PEPPOL (BT-9/BT-10).

When it is used

Used only with `provider=oxygen` (PEPPOL).

  • up to 100 characters
  • accepts null

Example

{
  "counterpart": {
    "email": "[email protected]"
  }
}
phonestringOptionalNot used by flexyThe counterpart's contact phone, up to 20 characters.#

The counterpart's contact phone, up to 20 characters. It is not forwarded to myDATA; only provider `oxygen` reads it.

When it is used

Used only with `provider=oxygen` (PEPPOL).

  • up to 20 characters
  • accepts null

Example

{
  "counterpart": {
    "phone": "+302101234567"
  }
}
document_id_nostringOptionalNot used by flexyAn ID document number (passport or national ID) for counterparts without a VAT number, up to 20 characters.#

An ID document number (passport or national ID) for counterparts without a VAT number, up to 20 characters. It is not forwarded to myDATA; only provider `oxygen` reads it.

When it is used

Used only with `provider=oxygen`.

  • up to 20 characters
  • accepts null

Example

{
  "counterpart": {
    "document_id_no": "AB123456"
  }
}
document_country_codestringOptionalNot used by flexyThe issuing country of the ID document (ISO 3166-1 alpha-2, 2 letters).#

The issuing country of the ID document (ISO 3166-1 alpha-2, 2 letters). It is not forwarded to myDATA; only provider `oxygen` reads it.

When it is used

Used only with `provider=oxygen`, when `document_id_no` is sent.

  • up to 2 characters
  • accepts null

Example

{
  "counterpart": {
    "document_country_code": "GR"
  }
}
supply_account_nostringOptionalNot used by flexyThe supplier's internal customer account number in their ERP or accounting system, up to 50 characters.#

The supplier's internal customer account number in their ERP or accounting system, up to 50 characters. It is not forwarded to myDATA; only provider `oxygen` reads it.

When it is used

Used only with `provider=oxygen`; the myDATA schema would accept it only under `fuelInvoice=true`, but it is not transmitted from this field.

  • up to 50 characters
  • accepts null

Example

{
  "counterpart": {
    "supply_account_no": "CUST-12345"
  }
}
identificationstringConditionalNot used by flexyThe buyer's ΑΑΗΤ (electronic invoicing assignment number) or VAT number for B2G.#

The buyer's ΑΑΗΤ (electronic invoicing assignment number) or VAT number for B2G. It is not forwarded to myDATA; only provider `oxygen` reads it (PEPPOL BT-46, GR-R-010 with SchemeID 9933).

When it is required

Required for every B2G document (where the counterpart is a public authority), with either the 9-digit VAT number or the ΑΑΗΤ in the form `XXXX.YYYYYYYYYYYY.ZZZZ`; the value forwarded to Oxygen is `provider_details.counterpart_identification`.

When it is used

Used only with `provider=oxygen`, and only in the B2G flow.

  • up to 255 characters
  • accepts null

Example

{
  "counterpart": {
    "identification": "0001.123456789.0001"
  }
}
dispatchobjectConditionalDispatch and movement information: dispatch date and time, movement purpose, vehicle number and the loading and delivery addresses.#

Dispatch and movement information: dispatch date and time, movement purpose, vehicle number and the loading and delivery addresses. On types 9.1/9.2/9.3/10.1/10.2 `move_purpose` and `other_delivery_note_header` (loading and delivery) are also required.

When it is required

Required only for types 9.x/10.x and for 1.1/1.2/2.x with `is_delivery_note=true`; the top-level `dispatch` is read only for the older shape, while today the values belong under `provider_details.other_delivery_note_header` and `provider_details.move_purpose`.

When it is used

On delivery notes (9.x, 10.x) and on types 1.1/1.2/2.x with `is_delivery_note=true`.

Example

{
  "dispatch": {
    "dispatch_date": "2025-12-29",
    "dispatch_time": "10:00:00",
    "move_purpose": 1,
    "vehicle_number": "ΑΒΓ-1234",
    "loading_address": {
      "address_line": "Πανεπιστημίου 123",
      "city": "Αθήνα",
      "zip": "10678",
      "country": "GR"
    },
    "shipping_address": {
      "address_line": "Σταδίου 456",
      "city": "Θεσσαλονίκη",
      "zip": "54625",
      "country": "GR"
    }
  }
}
dispatch_datedateRequiredNot used by flexyThe dispatch date (`YYYY-MM-DD`).#

The dispatch date (`YYYY-MM-DD`). It is stored with the document but not sent to myDATA; only provider `oxygen` uses it.

When it is required

Required when you send `dispatch`.

When it is used

Inside `dispatch`; read only by provider `oxygen`.

Example

{
  "dispatch": {
    "dispatch_date": "2025-12-29"
  }
}
dispatch_timestringRequiredNot used by flexyThe dispatch time (`HH:MM:SS`, 24-hour); the format is not checked.#

The dispatch time (`HH:MM:SS`, 24-hour); the format is not checked. It is stored with the document but not sent to myDATA; only provider `oxygen` uses it.

When it is required

Required when you send `dispatch`.

When it is used

Inside `dispatch`; read only by provider `oxygen`.

Example

{
  "dispatch": {
    "dispatch_time": "10:00:00"
  }
}
vehicle_numberstringOptionalNot used by flexyThe vehicle registration number.#

The vehicle registration number. It is stored with the document but not sent to myDATA; only provider `oxygen` reads it.

When it is used

Optional; useful for transport tracking.

Example

{
  "dispatch": {
    "vehicle_number": "ΑΒΓ-1234"
  }
}
move_purposeintegerRequiredAADE movement-purpose code (1-19).#

AADE movement-purpose code (1-19). On 9.x/10.x delivery notes it is required through `provider_details.move_purpose`, and it is transmitted as `movePurpose` (on 1.1/2.1 used as a delivery note) or inside the header (on 9.x/10.x).

When it is required

Required when you send `dispatch`.

When it is used

Required on 9.x/10.x delivery notes, and inside `dispatch` on types 1.1/1.2/2.x with `is_delivery_note=true`.

Allowed values

The myDATA movement purposes (table 8.14); numbers 6 and 15–18 do not exist. Read only on types 1.x/2.x with `is_delivery_note=true`, where it wins over `provider_details.move_purpose`; on 9.1/9.2/9.3 it is ignored and you must send `provider_details.move_purpose` instead, and on 10.1/10.2 no movement purpose is transmitted at all. With `19` a purpose title is sent too, taken only from `provider_details.other_move_purpose_title`; if none is given, «Λοιπές Διακινήσεις» is used.

ValueMeaning
1Sale
2Sale on behalf of third party
3Sampling
4Exhibition
5Return
7Processing - Assembly - Disassembly
8Internal movement
9Purchase
10Ship and aircraft supply
11Free provision
12Warranty
13Loan for use
14Storage at third parties
19Other movements (requires other_move_purpose_title)
20Transportation - Express delivery

Example

{
  "dispatch": {
    "move_purpose": 1
  }
}
other_move_purpose_titlestringConditionalA free-form movement-purpose title, transmitted as `otherMovePurposeTitle` (up to 150 characters) only when `move_purpose=19`.#

A free-form movement-purpose title, transmitted as `otherMovePurposeTitle` (up to 150 characters) only when `move_purpose=19`.

When it is required

Required only when `dispatch.move_purpose == 19` (or `provider_details.move_purpose == 19`), in which case `otherMovePurposeTitle` is transmitted and otherwise omitted; if you send no title, the default "Λοιπές Διακινήσεις" is used (up to 150 characters).

When it is used

Only when the movement code is 19.

Example

{
  "dispatch": {
    "move_purpose": 19,
    "other_move_purpose_title": "Μεταφορά μεταξύ αποθηκών"
  }
}
shipping_addressobjectOptionalThe delivery destination address for the delivery note.#

The delivery destination address for the delivery note. It is transmitted as `deliveryAddress` inside `otherDeliveryNoteHeader`, and it requires `loading_address` as well.

When it is required

Optional in the request, but ONLY the pair `loading_address` plus `delivery_address` is transmitted; a `shipping_address` without a loading address, or a `loading_address` without a delivery address, is silently ignored.

When it is used

On 9.x/10.x delivery notes and on types 1.1/2.x with `is_delivery_note=true`, always paired with `dispatch.loading_address`.

Example

{
  "dispatch": {
    "shipping_address": {
      "address_line": "Σταδίου 456",
      "city": "Θεσσαλονίκη",
      "zip": "54625",
      "country": "GR"
    }
  }
}
address_linestringRequiredA free-form delivery address line.#

A free-form delivery address line. It is parsed the same way (split on the last space) as the issuer and counterpart addresses.

When it is required

Required inside `dispatch.shipping_address`.

When it is used

Always, inside `dispatch.shipping_address`.

Example

{
  "dispatch": {
    "shipping_address": {
      "address_line": "Σταδίου 456"
    }
  }
}
streetstringOptionalThe delivery street name, without the number.#

The delivery street name, without the number. If you send it together with `number`, the two are used directly.

When it is used

Optional; instead of relying on `address_line` parsing.

Example

{
  "dispatch": {
    "shipping_address": {
      "street": "Σταδίου",
      "number": "456"
    }
  }
}
numberstringOptionalThe delivery street number.#

The delivery street number. Optional in the request.

When it is used

Optional; combine it with `street` or with `address_line`.

Example

{
  "dispatch": {
    "shipping_address": {
      "number": "456"
    }
  }
}
citystringRequiredThe delivery city.#

The delivery city. Transmitted as `city` inside `deliveryAddress`.

When it is required

Required inside `dispatch.shipping_address`.

When it is used

Always, inside `dispatch.shipping_address`.

Example

{
  "dispatch": {
    "shipping_address": {
      "city": "Θεσσαλονίκη"
    }
  }
}
statestringOptionalNot used by flexyThe delivery state or region.#

The delivery state or region. Optional; it does not appear in the myDATA XML.

When it is used

Optional; it does not reach the myDATA XML.

Example

{
  "dispatch": {
    "shipping_address": {
      "state": "Θεσσαλονίκη"
    }
  }
}
zipstringRequiredThe delivery postal code.#

The delivery postal code. Transmitted as `postalCode` inside `deliveryAddress`.

When it is required

Required inside `dispatch.shipping_address`.

When it is used

Always, inside `dispatch.shipping_address`.

Example

{
  "dispatch": {
    "shipping_address": {
      "zip": "54625"
    }
  }
}
countrystringRequiredISO 3166-1 alpha-2 country code (2 letters), transmitted in upper case inside `deliveryAddress`.#

ISO 3166-1 alpha-2 country code (2 letters), transmitted in upper case inside `deliveryAddress`.

When it is required

Required inside `dispatch.shipping_address`.

When it is used

Always, inside `dispatch.shipping_address`.

  • up to 2 characters

Example

{
  "dispatch": {
    "shipping_address": {
      "country": "GR"
    }
  }
}
branch_codeintegerOptionalThe delivery branch number: `0` for the head office, `1` and above for a branch.#

The delivery branch number: `0` for the head office, `1` and above for a branch. It is not transmitted to myDATA, since `deliveryAddress` carries only `street`, `number`, `postalCode` and `city`.

When it is used

Optional; for recipients with several sites.

Example

{
  "dispatch": {
    "shipping_address": {
      "branch_code": 0
    }
  }
}
loading_addressobjectOptionalThe loading (origin) address for the delivery note.#

The loading (origin) address for the delivery note. It is transmitted as `loadingAddress` inside `otherDeliveryNoteHeader`, and it requires `shipping_address` as well.

When it is required

Optional in the request, but ONLY the pair `loading_address` plus `delivery_address` is transmitted; a `loading_address` without a delivery address, or a `shipping_address` without a loading address, is silently ignored.

When it is used

On 9.x/10.x delivery notes and on types 1.1/2.x with `is_delivery_note=true`, always paired with `dispatch.shipping_address`.

Example

{
  "dispatch": {
    "loading_address": {
      "address_line": "Πανεπιστημίου 123",
      "city": "Αθήνα",
      "zip": "10678",
      "country": "GR"
    }
  }
}
address_linestringRequiredA free-form loading address line.#

A free-form loading address line. It is parsed like the other addresses, splitting on the last space.

When it is required

Required inside `dispatch.loading_address`.

When it is used

Always, inside `dispatch.loading_address`.

Example

{
  "dispatch": {
    "loading_address": {
      "address_line": "Πανεπιστημίου 123"
    }
  }
}
streetstringOptionalThe loading street name, without the number.#

The loading street name, without the number. Optional.

When it is used

Optional; instead of relying on `address_line` parsing.

Example

{
  "dispatch": {
    "loading_address": {
      "street": "Πανεπιστημίου",
      "number": "123"
    }
  }
}
numberstringOptionalThe loading street number.#

The loading street number. Optional.

When it is used

Optional; combine it with `street` or with `address_line`.

Example

{
  "dispatch": {
    "loading_address": {
      "number": "123"
    }
  }
}
citystringRequiredThe loading city.#

The loading city. Transmitted as `city` inside `loadingAddress`.

When it is required

Required inside `dispatch.loading_address`.

When it is used

Always, inside `dispatch.loading_address`.

Example

{
  "dispatch": {
    "loading_address": {
      "city": "Αθήνα"
    }
  }
}
statestringOptionalNot used by flexyThe loading state or region.#

The loading state or region. Optional; it does not appear in the myDATA XML.

When it is used

Optional; it does not reach the myDATA XML.

Example

{
  "dispatch": {
    "loading_address": {
      "state": "Αττική"
    }
  }
}
zipstringRequiredThe loading postal code.#

The loading postal code. Transmitted as `postalCode` inside `loadingAddress`.

When it is required

Required inside `dispatch.loading_address`.

When it is used

Always, inside `dispatch.loading_address`.

Example

{
  "dispatch": {
    "loading_address": {
      "zip": "10678"
    }
  }
}
countrystringRequiredISO 3166-1 alpha-2 country code (2 letters), transmitted in upper case inside `loadingAddress`.#

ISO 3166-1 alpha-2 country code (2 letters), transmitted in upper case inside `loadingAddress`.

When it is required

Required inside `dispatch.loading_address`.

When it is used

Always, inside `dispatch.loading_address`.

  • up to 2 characters

Example

{
  "dispatch": {
    "loading_address": {
      "country": "GR"
    }
  }
}
branch_codeintegerOptionalThe loading branch number: `0` for the head office, `1` and above for a branch.#

The loading branch number: `0` for the head office, `1` and above for a branch. It is not transmitted to the myDATA XML.

When it is used

Optional; for senders with several sites.

Example

{
  "dispatch": {
    "loading_address": {
      "branch_code": 0
    }
  }
}
exchange_ratesobjectOptionalNot used by flexyThe exchange rate of the document's currency against the euro.#

The exchange rate of the document's currency against the euro.

When it is used

The object is accepted and stored as metadata (for the PDF, for instance) but is not transmitted: the provider always sends `currency` = `EUR` in the `invoiceHeader` and never emits `exchangeRate`, while per AADE the rate is filled in only when the currency is not EUR.

  • accepts null

Example

{
  "exchange_rates": {
    "currency_code": "USD",
    "exchange_rate": "1.086400"
  }
}
currency_codestringRequiredNot used by flexyThe currency code the exchange rate refers to.#

The currency code the exchange rate refers to.

When it is required

Required when you send the `exchange_rates` object.

When it is used

Together with `exchange_rates.exchange_rate`; it is stored as metadata and not transmitted to AADE.

  • up to 3 characters

Example

{
  "exchange_rates": {
    "currency_code": "USD",
    "exchange_rate": "1.086400"
  }
}
exchange_ratedecimalRequiredNot used by flexyThe exchange rate of the currency against the euro.#

The exchange rate of the currency against the euro.

When it is required

Required when you send the `exchange_rates` object.

When it is used

Together with `exchange_rates.currency_code`; it is stored as metadata and not transmitted to AADE.

  • 20 digits in total
  • 6 decimal places

Example

{
  "exchange_rates": {
    "currency_code": "USD",
    "exchange_rate": "1.086400"
  }
}
shipping_detailsobjectOptionalNot used by flexyB2G/PEPPOL shipping and delivery details, read only by provider `oxygen` (PEPPOL BG-13/BG-15), which forbids them on types 10.x.#

B2G/PEPPOL shipping and delivery details, read only by provider `oxygen` (PEPPOL BG-13/BG-15), which forbids them on types 10.x. For myDATA, `dispatch` or `provider_details.other_delivery_note_header` and `provider_details.move_purpose` are used instead.

When it is used

Used only with `provider=oxygen` (PEPPOL).

Example

{
  "shipping_details": {
    "pickup_branch_code": 0,
    "delivery_branch_code": 0,
    "pickup_address": {
      "address_line": "Πανεπιστημίου 123",
      "city": "Αθήνα",
      "zip": "10678",
      "country": "GR",
      "branch_code": 0
    },
    "delivery_address": {
      "address_line": "Hospital Wing B",
      "city": "Athens",
      "zip": "11527",
      "country": "GR",
      "branch_code": 0
    }
  }
}
pickup_branch_codeintegerOptionalNot used by flexyThe pickup branch code (PEPPOL BG-14): `0` for the head office, `1` and above for a branch.#

The pickup branch code (PEPPOL BG-14): `0` for the head office, `1` and above for a branch. Used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_branch_code": 0
  }
}
delivery_branch_codeintegerOptionalNot used by flexyThe delivery branch code: `0` for the head office, `1` and above for a branch.#

The delivery branch code: `0` for the head office, `1` and above for a branch. Used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_branch_code": 0
  }
}
pickup_addressobjectOptionalNot used by flexyThe pickup address (PEPPOL BG-14), in the shared address shape.#

The pickup address (PEPPOL BG-14), in the shared address shape. Used only with `provider=oxygen`, and not on types 10.x.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "address_line": "Πανεπιστημίου 123",
      "city": "Αθήνα",
      "zip": "10678",
      "country": "GR",
      "branch_code": 0
    }
  }
}
address_linestringRequiredNot used by flexyA free-form pickup address line.#

A free-form pickup address line. Only provider `oxygen` reads it.

When it is required

Required inside `shipping_details.pickup_address`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "address_line": "Πανεπιστημίου 123"
    }
  }
}
streetstringOptionalNot used by flexyThe pickup street name, without the number.#

The pickup street name, without the number. Optional, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "street": "Πανεπιστημίου",
      "number": "123"
    }
  }
}
numberstringOptionalNot used by flexyThe pickup street number.#

The pickup street number. Optional, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "number": "123"
    }
  }
}
citystringRequiredNot used by flexyThe pickup city.#

The pickup city. Required, and used only with `provider=oxygen`.

When it is required

Required inside `shipping_details.pickup_address`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "city": "Αθήνα"
    }
  }
}
statestringOptionalNot used by flexyThe pickup state or region.#

The pickup state or region. Optional, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "state": "Αττική"
    }
  }
}
zipstringRequiredNot used by flexyThe pickup postal code.#

The pickup postal code. Required, and used only with `provider=oxygen`.

When it is required

Required inside `shipping_details.pickup_address`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "zip": "10678"
    }
  }
}
countrystringRequiredNot used by flexyISO 3166-1 alpha-2 country code (2 letters).#

ISO 3166-1 alpha-2 country code (2 letters). Used only with `provider=oxygen`.

When it is required

Required inside `shipping_details.pickup_address`.

When it is used

Used only with `provider=oxygen`.

  • up to 2 characters

Example

{
  "shipping_details": {
    "pickup_address": {
      "country": "GR"
    }
  }
}
branch_codeintegerOptionalNot used by flexyThe pickup branch number: `0` for the head office, `1` and above for a branch.#

The pickup branch number: `0` for the head office, `1` and above for a branch. Used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "pickup_address": {
      "branch_code": 0
    }
  }
}
delivery_addressobjectOptionalNot used by flexyThe delivery address (PEPPOL BG-15), in the shared address shape.#

The delivery address (PEPPOL BG-15), in the shared address shape. Used only with `provider=oxygen`, and not on types 10.x.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "address_line": "Hospital Wing B",
      "city": "Athens",
      "zip": "11527",
      "country": "GR",
      "branch_code": 0
    }
  }
}
address_linestringRequiredNot used by flexyA free-form delivery address line.#

A free-form delivery address line. Only provider `oxygen` reads it.

When it is required

Required inside `shipping_details.delivery_address`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "address_line": "Hospital Wing B"
    }
  }
}
streetstringOptionalNot used by flexyThe delivery street name, without the number.#

The delivery street name, without the number. Optional, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "street": "Hospital Wing B",
      "number": "5"
    }
  }
}
numberstringOptionalNot used by flexyThe delivery street number.#

The delivery street number. Optional, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "number": "5"
    }
  }
}
citystringRequiredNot used by flexyThe delivery city.#

The delivery city. Required, and used only with `provider=oxygen`.

When it is required

Required inside `shipping_details.delivery_address`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "city": "Athens"
    }
  }
}
statestringOptionalNot used by flexyThe delivery state or region.#

The delivery state or region. Optional, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "state": "Attica"
    }
  }
}
zipstringRequiredNot used by flexyThe delivery postal code.#

The delivery postal code. Required, and used only with `provider=oxygen`.

When it is required

Required inside `shipping_details.delivery_address`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "zip": "11527"
    }
  }
}
countrystringRequiredNot used by flexyISO 3166-1 alpha-2 country code (2 letters).#

ISO 3166-1 alpha-2 country code (2 letters). Used only with `provider=oxygen`.

When it is required

Required inside `shipping_details.delivery_address`.

When it is used

Used only with `provider=oxygen`.

  • up to 2 characters

Example

{
  "shipping_details": {
    "delivery_address": {
      "country": "GR"
    }
  }
}
branch_codeintegerOptionalNot used by flexyThe delivery branch number: `0` for the head office, `1` and above for a branch.#

The delivery branch number: `0` for the head office, `1` and above for a branch. Used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_address": {
      "branch_code": 0
    }
  }
}
delivery_party_namestringOptionalNot used by flexyThe name of the delivery recipient (PEPPOL `DeliverToPartyName`).#

The name of the delivery recipient (PEPPOL `DeliverToPartyName`). Useful in B2G for deliveries to departments or facilities of a larger organisation, and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_party_name": "Athens General Hospital - Cardiology Dept"
  }
}
delivery_location_idstringOptionalNot used by flexyThe delivery location identifier (PEPPOL `DeliverToLocationIdentifier`).#

The delivery location identifier (PEPPOL `DeliverToLocationIdentifier`). Usually a 13-digit GLN or an internal identifier (for example `HOSP-ATH-001`), and used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`.

Example

{
  "shipping_details": {
    "delivery_location_id": "5790000435685"
  }
}
delivery_location_scheme_idstringOptionalNot used by flexyThe scheme of the delivery location identifier (PEPPOL): `0088` for GLN, `0177` for ODETTE, or a code of your own.#

The scheme of the delivery location identifier (PEPPOL): `0088` for GLN, `0177` for ODETTE, or a code of your own. Used only with `provider=oxygen`.

When it is used

Used only with `provider=oxygen`, paired with `delivery_location_id`.

Example

{
  "shipping_details": {
    "delivery_location_id": "5790000435685",
    "delivery_location_scheme_id": "0088"
  }
}
itemsarray of objectsRequiredList of the document line items.#

List of the document line items. Each entry becomes a separate `invoiceDetails` element in the myDATA XML, in the order given here.

When it is required

Required: the document must contain at least one line.

  • at least 1 item

Example

{
  "items": [
    {
      "title": "Premium Widget",
      "description": "High-quality widget product",
      "quantity": "1.00",
      "unit_measure": "ΤΕΜ",
      "unit_value": "100.00",
      "unit_total": "100.00",
      "taxes": [
        {
          "title": "ΦΠΑ 24%",
          "tax_type": "1",
          "value_type": "percentage",
          "tax_sign": "+",
          "value": "24.00",
          "on_vat": true,
          "provider_details": {
            "provider_code": "1"
          }
        }
      ],
      "provider_details": {
        "classification_category": "category1_1",
        "classification_type": "E3_561_001",
        "vat_classification_category": "1",
        "vat_exemption_category": "1"
      }
    }
  ]
}
rec_typestringOptionalNot used by flexymyDATA line kind (`recType`): declared as a 1-7 character string, but myDATA accepts only the integer values 1-7.#

myDATA line kind (`recType`): declared as a 1-7 character string, but myDATA accepts only the integer values 1-7. The provider does not read this field; for special lines (a fee line with VAT or an other-taxes line, for instance) use `items[].taxes[]` with the right `tax_type`.

When it is used

A field reserved for future use; it is not transmitted.

  • up to 7 characters
  • at least 1 characters
  • accepts null

Allowed values

ValueMeaning
1Special withholding-tax line (reserved)
2Fee line with VAT
3Other-taxes line with VAT
4Special digital-transaction-fee line (reserved)
5Special deductions line (reserved)
6Gift voucher
7Negative sign of values (only document types 17.3-17.6)
item_codestringOptionalInternal product or service code (SKU), transmitted as `itemCode`.#

Internal product or service code (SKU), transmitted as `itemCode`. myDATA accepts it only on delivery notes (9.x, 10.x); on regular invoices it is rejected with "itemCode is forbidden".

When it is used

Send it only on movement documents (`provider_details.document_type` 9.1-9.3, 10.1-10.2).

  • up to 50 characters
  • accepts null

Example

{
  "items": [
    {
      "title": "Product A",
      "description": "Delivered product A",
      "item_code": "PROD-001",
      "quantity": "10.00",
      "unit_measure": "ΤΕΜ",
      "unit_value": "0.00",
      "unit_total": "0.00"
    }
  ]
}
titlestringRequiredA short name for the product or service.#

A short name for the product or service. It appears on the printed document and becomes the myDATA `itemDescr` when `description` is missing; otherwise `description` is used.

Example

{
  "items": [
    {
      "title": "Premium Widget",
      "description": "High-quality widget product"
    }
  ]
}
descriptionstringRequiredA detailed description of the product or service, used as `itemDescr` in myDATA when supplied (preferred over `title`).#

A detailed description of the product or service, used as `itemDescr` in myDATA when supplied (preferred over `title`). The 300-character limit comes from Oxygen; myDATA accepts more.

  • up to 300 characters

Example

{
  "items": [
    {
      "title": "Premium Widget",
      "description": "High-quality widget product"
    }
  ]
}
invoice_detail_typeintegerOptionalNot used by flexyLine detail type (myDATA `invoiceDetailType`), with `1` for goods and `2` for services.#

Line detail type (myDATA `invoiceDetailType`), with `1` for goods and `2` for services. It is NOT used today: on type 1.5 use `provider_details.detail_type`, while on 9.x/10.x the provider always sends `1`.

When it is used

Leave it empty; the provider sets the value itself, based on the document type.

  • accepts null

Allowed values

ValueMeaning
1Goods / Sale
2Services / Commission
quantitydecimalRequiredThe line quantity.#

The line quantity. myDATA does not restrict the decimals and passes it through as is, while Oxygen accepts up to 4 decimal places.

  • 15 digits in total
  • 4 decimal places

Example

{
  "items": [
    {
      "quantity": "1.00",
      "unit_measure": "ΤΕΜ",
      "unit_value": "100.00"
    }
  ]
}
unit_measurestringRequiredThe unit of measure.#

The unit of measure. It accepts either the myDATA integer code (for example `1` for pieces) or the Greek or English symbol (for example `ΤΕΜ`, `KG`, `LT`), and the provider normalises it to a code from 1 to 7.

Allowed values

The provider also accepts the numeric code 1-7 directly, with no conversion.

ValueMeaning
1Pieces (from `ΤΕΜ`)
2Kilograms (from `KG`)
3Litres (from `LT`)
4Metres (from `ΜΕΤΡΑ`)
5Square metres (from `ΤΕΤΡΑΓΩΝΙΚΑ ΜΕΤΡΑ`)
6Cubic metres (from `ΚΥΒΙΚΑ ΜΕΤΡΑ`)
7Pieces, other cases (requires `other_measurement_unit_*`)

Example

{
  "items": [
    {
      "quantity": "50.00",
      "unit_measure": "LT",
      "unit_value": "1.80"
    }
  ]
}
unit_valuedecimalRequiredUnit price before discount and VAT.#

Unit price before discount and VAT. AADE has no separate unit-price field (only `quantity` and `netValue` in `InvoiceRowType`), so the provider computes `netValue` = `quantity` × `unit_value`, or uses `unit_total` when you supply it.

  • 15 digits in total
  • 4 decimal places

Example

{
  "items": [
    {
      "unit_value": "100.00",
      "quantity": "1.00",
      "unit_total": "100.00"
    }
  ]
}
unit_discountdecimalOptionalNot used by flexyA fixed discount per unit, in euros.#

A fixed discount per unit, in euros. NOT USED: the provider never reads this field, while Oxygen derives its own discount as (`quantity` × `unit_value`) − `unit_total`.

When it is used

Leave it `null`; express the discount through `unit_total` (= `quantity` × (`unit_value` − discount)) or by reducing `unit_value`.

  • 15 digits in total
  • 2 decimal places
  • accepts null
unit_discount_percentagestringOptionalNot used by flexyDiscount percentage (for example `10` for 10%).#

Discount percentage (for example `10` for 10%). NOT USED: the provider never reads this field; use `unit_value` and `unit_total` to express the discount.

When it is used

Leave it `null`.

  • accepts null
unit_discount_modestringOptionalNot used by flexyThe discount calculation mode (myDATA `discountOption`).#

The discount calculation mode (myDATA `discountOption`). NOT USED: the provider never reads it.

When it is used

Leave it `null`.

  • accepts null
discount_typeintegerOptionalNot used by flexymyDATA discount type: `1` for a line discount, `2` for a document discount.#

myDATA discount type: `1` for a line discount, `2` for a document discount. NOT USED: Oxygen derives it itself and always sets `2` when the gross and net values differ.

When it is used

Leave it `null`.

  • minimum 1
  • maximum 2
  • accepts null

Allowed values

ValueMeaning
1Line discount
2Document discount
taxesarray of objectsOptionalPer-line tax list; each entry becomes one `taxes` record inside `invoiceDetails` in the myDATA XML, or `lines[].taxes` in the Oxygen JSON.#

Per-line tax list; each entry becomes one `taxes` record inside `invoiceDetails` in the myDATA XML, or `lines[].taxes` in the Oxygen JSON. Only per-line taxes are transmitted: document-level taxes (`taxes`) are projected onto each line beforehand.

  • accepts null

Example

{
  "items": [
    {
      "title": "Premium Widget",
      "unit_value": "100.00",
      "unit_total": "100.00",
      "taxes": [
        {
          "title": "ΦΠΑ 24%",
          "tax_type": "1",
          "value_type": "percentage",
          "tax_sign": "+",
          "value": "24.00",
          "provider_details": {
            "provider_code": "1"
          }
        },
        {
          "title": "Χαρτόσημο 3.6%",
          "tax_type": "stamp_duty",
          "value_type": "percentage",
          "tax_sign": "+",
          "value": "3.6",
          "provider_details": {
            "provider_code": "3"
          }
        }
      ]
    }
  ]
}
titlestringRequiredNot used by flexyA readable title for the tax (for example "ΦΠΑ 24%", "Withholding 20%", "Stamp Duty 3.6%"), shown on the document.#

A readable title for the tax (for example "ΦΠΑ 24%", "Withholding 20%", "Stamp Duty 3.6%"), shown on the document. The API requires it, but it is transmitted neither to myDATA nor to Oxygen; it is kept as a description for display and audit.

  • at least 1 characters
tax_typestringOptionalThe tax category, as a symbolic name.#

The tax category, as a symbolic name. For VAT, `on_vat` decides; `tax_type` selects the per-kind computation (stamp duty, fees, other taxes, withholdings, deductions) and the totals checks.

When it is used

Send it for taxes other than VAT; for VAT, `on_vat: true` is enough.

  • up to 50 characters
  • accepts null

Allowed values

Only the symbolic names are recognised; a numeric code is ignored.

ValueMeaning
vatVAT (the canonical symbolic name)
withholdingWithholding Tax
stamp_dutyStamp Duty / Digital Transaction Fee
feesFees
other_taxOther Taxes (alternative name)
other_taxesOther Taxes
deductionDeductions (alternative name)
deductionsDeductions

Example

{
  "items": [
    {
      "title": "Widget",
      "unit_value": "100.00",
      "unit_total": "100.00",
      "taxes": [
        {
          "title": "ΦΠΑ 24%",
          "tax_type": "vat",
          "value_type": "percentage",
          "value": "24.00",
          "on_vat": true
        },
        {
          "title": "Χαρτόσημο 3.6%",
          "tax_type": "stamp_duty",
          "value_type": "percentage",
          "value": "3.6",
          "on_vat": false
        },
        {
          "title": "Παρακράτηση 8%",
          "tax_type": "withholding",
          "value_type": "percentage",
          "tax_sign": "-",
          "value": "8.00",
          "on_vat": false
        }
      ]
    }
  ]
}
value_typestringOptionalHow the tax is calculated: `percentage` for a percentage of the net value, or `amount` and `actual_amount` for a fixed amount in euros.#

How the tax is calculated: `percentage` for a percentage of the net value, or `amount` and `actual_amount` for a fixed amount in euros. When it is missing the provider uses `percentage`.

  • up to 20 characters
  • accepts null

Allowed values

ValueMeaning
percentagePercentage (24% of the net value, for instance)
amountFixed amount in euros (an accepted alternative name)
actual_amountFixed amount (the canonical name)

Example

{
  "items": [
    {
      "title": "Recycling fee",
      "unit_value": "10.00",
      "unit_total": "10.00",
      "taxes": [
        {
          "title": "Recycling fee 0.10/τμχ",
          "tax_type": "fees",
          "value_type": "amount",
          "value": "0.10",
          "on_vat": false
        }
      ]
    }
  ]
}
tax_signstringOptionalThe tax sign: `+` for additive (VAT, stamp duty, fees, other taxes) or `-` for subtractive (withholdings, deductions), defaulting to `+`.#

The tax sign: `+` for additive (VAT, stamp duty, fees, other taxes) or `-` for subtractive (withholdings, deductions), defaulting to `+`. It is used in the checks and in distributing taxes, but it is not transmitted to myDATA as a separate element.

  • up to 1 characters
  • accepts null

Allowed values

ValueMeaning
+Additive tax (VAT, stamp duty, fees, other)
-Subtractive tax (withholdings, deductions)
valuedecimalOptionalThe numeric tax value: a percentage when `value_type` is `percentage` (for example `24.00` for 24%), or an amount in euros when it is `amount` or `actual_amount`.#

The numeric tax value: a percentage when `value_type` is `percentage` (for example `24.00` for 24%), or an amount in euros when it is `amount` or `actual_amount`. For a percentage the tax is computed as the line's net value × value / 100; otherwise the value is used directly as the amount.

  • 15 digits in total
  • 2 decimal places
  • accepts null
provider_codestringOptionalThe tax's category code, as a Flexy symbolic code or an AADE numeric code (for example `3` for stamp duty, `11` for withholding).#

The tax's category code, as a Flexy symbolic code or an AADE numeric code (for example `3` for stamp duty, `11` for withholding). `provider_details.provider_code` is preferred; this field is used only when that one is missing or empty, except on type 1.5, where the order is reversed.

  • up to 50 characters
  • accepts null

Allowed values

Two forms: Flexy's symbolic codes from the list (e.g. `WH_SERVICES_8`, `STAMP_3_6`, `FEE_OTHER`), which Flexy converts to the AADE numeric code, or the AADE numeric code for the kind of tax (withholding 1–18, fees 1–22, other taxes 1–30, stamp duty 1–4), sent as is. A code that is neither is replaced by the kind's default category, so use a value from the list. The VAT category is not given here but in `items[].provider_details.vat_classification_category`. If both fields are given, `provider_details.provider_code` wins; the exception is 1.5, where the fee code is sent as is and must be numeric.

ValueMeaning
WH_INTEREST_15Withholding: Case b' Interest 15% (§8.4 #1)
WH_ROYALTIES_20Withholding: Case c' Royalties 20% (§8.4 #2)
WH_CONSULTANCY_20Withholding: Case d' Management consultancy fees 20% (§8.4 #3)
WH_TECHNICAL_3Withholding: Case d' Technical works 3% (§8.4 #4)
WH_FUEL_TOBACCO_1Withholding: Liquid fuels & tobacco 1% (§8.4 #5)
WH_OTHER_GOODS_4Withholding: Other goods 4% (§8.4 #6)
WH_SERVICES_8Withholding: Provision of services 8% (§8.4 #7)
WH_ARCH_ENG_STUDIES_4Withholding: Arch/Eng studies & plans 4% (§8.4 #8)
WH_ARCH_ENG_OTHER_10Withholding: Arch/Eng other works 10% (§8.4 #9)
WH_LAWYERS_15Withholding: Pre-paid tax on lawyer fees 15% (§8.4 #10)
WH_NAVY_OFFICERSWithholding: Employee par.2 art.15 - Merchant Navy Officers (§8.4 #12)
WH_NAVY_CREWWithholding: Employee par.2 art.15 - Merchant Navy Lower Crew (§8.4 #13)
WH_OTHERWithholding: Other tax withholdings (§8.4 #17)
FEE_MOBILE_12_50Fee: Monthly bill up to 50€ 12% (§8.7 #1)
FEE_MOBILE_15_100Fee: Monthly bill 50.01-100€ 15% (§8.7 #2)
FEE_MOBILE_18_150Fee: Monthly bill 100.01-150€ 18% (§8.7 #3)
FEE_MOBILE_20_150PLUSFee: Monthly bill from 150.01€ 20% (§8.7 #4)
FEE_PREPAID_12Prepaid mobile fee 12% (§8.7 #5)
FEE_SUBSCRIPTION_TV_10Subscription TV fee 10% (§8.7 #6)
FEE_LANDLINE_5Landline subscriber fee 5% (§8.7 #7)
FEE_OTHEROther fees (§8.7 #10)
FEE_TOURISMTourist accommodation fee (§8.7 #18)
HOTEL_1_2_WINTEROther tax: Hotels 1-2 stars (winter) (§8.5 #6)
HOTEL_3_WINTEROther tax: Hotels 3 stars (winter) (§8.5 #7)
HOTEL_4_WINTEROther tax: Hotels 4 stars (winter) (§8.5 #8)
HOTEL_5_WINTEROther tax: Hotels 5 stars (winter) (§8.5 #9)
FURNISHED_WINTEROther tax: Furnished rooms-apartments (winter) (§8.5 #10)
SHORT_TERM_WINTEROther tax: Short-term rental properties (winter) (§8.5 #28)
SHORT_TERM_80SQM_WINTEROther tax: Short-term single-house >80 sqm (winter) (§8.5 #29)
SELF_SERVICE_WINTEROther tax: Self-service accommodation - villas (winter) (§8.5 #30)
SELF_SERVICE_U80_WINTEROther tax: Tourist furnished residences <80 sqm (winter, category §8.5 #30)
HOTEL_1_2_SUMMEROther tax: Hotels 1-2 stars (summer) (§8.5 #20)
HOTEL_3_SUMMEROther tax: Hotels 3 stars (summer) (§8.5 #21)
HOTEL_4_SUMMEROther tax: Hotels 4 stars (summer) (§8.5 #22)
HOTEL_5_SUMMEROther tax: Hotels 5 stars (summer) (§8.5 #23)
FURNISHED_SUMMEROther tax: Furnished rooms-apartments (summer) (§8.5 #24)
SHORT_TERM_SUMMEROther tax: Short-term rental properties (summer) (§8.5 #25)
SHORT_TERM_80SQM_SUMMEROther tax: Short-term single-house >80 sqm (summer) (§8.5 #26)
SELF_SERVICE_SUMMEROther tax: Self-service accommodation - villas (summer) (§8.5 #27)
SELF_SERVICE_U80_SUMMEROther tax: Tourist furnished residences <80 sqm (summer, category §8.5 #27)
EXCISE_DUTYOther tax: Excise Duty (ΕΦΚ) (§8.5 #19)
OTHER_TAXOther tax: Other taxes (§8.5 #17)
OTHER_TAX_CHARGESOther tax: Other tax surcharges (§8.5 #18)
STAMP_1_2Digital transaction fee: Rate 1.2% (§8.6 #1)
STAMP_2_4Digital transaction fee: Rate 2.4% (§8.6 #2)
STAMP_3_6Digital transaction fee: Rate 3.6% (§8.6 #3)
on_vatbooleanOptionalA flag that the tax is VAT.#

A flag that the tax is VAT. When it is `true`, the tax is transmitted as `vatCategory` and `vatAmount` inside `invoiceDetails` and added into `totalVatAmount`.

When it is used

Set `true` ONLY for VAT and `false` for every other kind (withholding, stamp duty, fees, other taxes, deductions); it also marks a tax as VAT when `tax_type` is not `vat`, and makes the tax be computed on the value including VAT (on-VAT fees, for instance).

  • accepts null

Allowed values

ValueMeaning
trueThe tax is VAT
falseThe tax is not VAT
nullNot declared (the default `false` applies)
quantity_dependentbooleanOptionalNot used by flexyA flag that the tax scales with quantity (€0.10 per piece, for instance).#

A flag that the tax scales with quantity (€0.10 per piece, for instance). It is transmitted neither to myDATA nor to Oxygen; the calculation always happens at line level, from the net value times the value or from the value as an amount.

  • accepts null
provider_detailsobjectOptionalHolds the provider-specific details of the tax, for now just `provider_code`, which takes priority.#

Holds the provider-specific details of the tax, for now just `provider_code`, which takes priority. Example: `{"provider_code": "1"}` for VAT.

  • accepts null

Example

{
  "items": [
    {
      "title": "Widget",
      "unit_value": "100.00",
      "unit_total": "100.00",
      "taxes": [
        {
          "title": "ΦΠΑ 24%",
          "tax_type": "1",
          "value_type": "percentage",
          "value": "24.00",
          "on_vat": true,
          "provider_details": {
            "provider_code": "1"
          }
        }
      ]
    }
  ]
}
provider_codestringOptionalThe recommended way to send the tax's category code.#

The recommended way to send the tax's category code. It accepts Flexy's symbolic codes from the list (e.g. `WH_SERVICES_8`, `STAMP_3_6`, `FEE_TOURISM`) or the AADE numeric code for the kind of tax, as text.

When it is used

Send it for every tax that needs a myDATA category (VAT, withholding, fees, other taxes, stamp duty).

  • up to 50 characters
  • accepts null

Allowed values

Two forms: Flexy's symbolic codes from the list (e.g. `WH_SERVICES_8`, `STAMP_3_6`, `FEE_OTHER`), which Flexy converts to the AADE numeric code, or the AADE numeric code for the kind of tax (withholding 1–18, fees 1–22, other taxes 1–30, stamp duty 1–4), sent as is. A code that is neither is replaced by the kind's default category, so use a value from the list. The VAT category is not given here but in `items[].provider_details.vat_classification_category`. If both fields are given, `provider_details.provider_code` wins; the exception is 1.5, where the fee code is sent as is and must be numeric.

ValueMeaning
WH_INTEREST_15Withholding: Case b' Interest 15% (§8.4 #1)
WH_ROYALTIES_20Withholding: Case c' Royalties 20% (§8.4 #2)
WH_CONSULTANCY_20Withholding: Case d' Management consultancy fees 20% (§8.4 #3)
WH_TECHNICAL_3Withholding: Case d' Technical works 3% (§8.4 #4)
WH_FUEL_TOBACCO_1Withholding: Liquid fuels & tobacco 1% (§8.4 #5)
WH_OTHER_GOODS_4Withholding: Other goods 4% (§8.4 #6)
WH_SERVICES_8Withholding: Provision of services 8% (§8.4 #7)
WH_ARCH_ENG_STUDIES_4Withholding: Arch/Eng studies & plans 4% (§8.4 #8)
WH_ARCH_ENG_OTHER_10Withholding: Arch/Eng other works 10% (§8.4 #9)
WH_LAWYERS_15Withholding: Pre-paid tax on lawyer fees 15% (§8.4 #10)
WH_NAVY_OFFICERSWithholding: Employee par.2 art.15 - Merchant Navy Officers (§8.4 #12)
WH_NAVY_CREWWithholding: Employee par.2 art.15 - Merchant Navy Lower Crew (§8.4 #13)
WH_OTHERWithholding: Other tax withholdings (§8.4 #17)
FEE_MOBILE_12_50Fee: Monthly bill up to 50€ 12% (§8.7 #1)
FEE_MOBILE_15_100Fee: Monthly bill 50.01-100€ 15% (§8.7 #2)
FEE_MOBILE_18_150Fee: Monthly bill 100.01-150€ 18% (§8.7 #3)
FEE_MOBILE_20_150PLUSFee: Monthly bill from 150.01€ 20% (§8.7 #4)
FEE_PREPAID_12Prepaid mobile fee 12% (§8.7 #5)
FEE_SUBSCRIPTION_TV_10Subscription TV fee 10% (§8.7 #6)
FEE_LANDLINE_5Landline subscriber fee 5% (§8.7 #7)
FEE_OTHEROther fees (§8.7 #10)
FEE_TOURISMTourist accommodation fee (§8.7 #18)
HOTEL_1_2_WINTEROther tax: Hotels 1-2 stars (winter) (§8.5 #6)
HOTEL_3_WINTEROther tax: Hotels 3 stars (winter) (§8.5 #7)
HOTEL_4_WINTEROther tax: Hotels 4 stars (winter) (§8.5 #8)
HOTEL_5_WINTEROther tax: Hotels 5 stars (winter) (§8.5 #9)
FURNISHED_WINTEROther tax: Furnished rooms-apartments (winter) (§8.5 #10)
SHORT_TERM_WINTEROther tax: Short-term rental properties (winter) (§8.5 #28)
SHORT_TERM_80SQM_WINTEROther tax: Short-term single-house >80 sqm (winter) (§8.5 #29)
SELF_SERVICE_WINTEROther tax: Self-service accommodation - villas (winter) (§8.5 #30)
SELF_SERVICE_U80_WINTEROther tax: Tourist furnished residences <80 sqm (winter, category §8.5 #30)
HOTEL_1_2_SUMMEROther tax: Hotels 1-2 stars (summer) (§8.5 #20)
HOTEL_3_SUMMEROther tax: Hotels 3 stars (summer) (§8.5 #21)
HOTEL_4_SUMMEROther tax: Hotels 4 stars (summer) (§8.5 #22)
HOTEL_5_SUMMEROther tax: Hotels 5 stars (summer) (§8.5 #23)
FURNISHED_SUMMEROther tax: Furnished rooms-apartments (summer) (§8.5 #24)
SHORT_TERM_SUMMEROther tax: Short-term rental properties (summer) (§8.5 #25)
SHORT_TERM_80SQM_SUMMEROther tax: Short-term single-house >80 sqm (summer) (§8.5 #26)
SELF_SERVICE_SUMMEROther tax: Self-service accommodation - villas (summer) (§8.5 #27)
SELF_SERVICE_U80_SUMMEROther tax: Tourist furnished residences <80 sqm (summer, category §8.5 #27)
EXCISE_DUTYOther tax: Excise Duty (ΕΦΚ) (§8.5 #19)
OTHER_TAXOther tax: Other taxes (§8.5 #17)
OTHER_TAX_CHARGESOther tax: Other tax surcharges (§8.5 #18)
STAMP_1_2Digital transaction fee: Rate 1.2% (§8.6 #1)
STAMP_2_4Digital transaction fee: Rate 2.4% (§8.6 #2)
STAMP_3_6Digital transaction fee: Rate 3.6% (§8.6 #3)
underlying_amountdecimalOptionalNot used by flexyThe base amount the tax was applied to, for transparency and audit.#

The base amount the tax was applied to, for transparency and audit. It is transmitted neither to myDATA nor to Oxygen; the calculation uses the line's `unit_total`.

  • 15 digits in total
  • 2 decimal places
  • accepts null
template_codestringOptionalNot used by flexyA tax template identifier (for example `VAT_24`, `WITHHOLDING_20`, `STAMP_3_6`, `RECYCLE_FEE`) for referring to stored tax templates.#

A tax template identifier (for example `VAT_24`, `WITHHOLDING_20`, `STAMP_3_6`, `RECYCLE_FEE`) for referring to stored tax templates. It is transmitted neither to myDATA nor to Oxygen.

  • up to 50 characters
  • accepts null
unit_totaldecimalOptionalThe net line value after discounts and before taxes.#

The net line value after discounts and before taxes. It is the equivalent of myDATA's `netValue`, and when it is missing the provider computes `quantity` × `unit_value`.

When it is required

Required if you give a discount amount or if `quantity` × `unit_value` would round differently.

  • 15 digits in total
  • 2 decimal places
  • accepts null

Example

{
  "items": [
    {
      "unit_value": "100.00",
      "quantity": "1.00",
      "unit_total": "100.00"
    }
  ]
}
line_commentsstringOptionalNot used by flexyLine comments (myDATA `lineComments`), printed on the document for this line.#

Line comments (myDATA `lineComments`), printed on the document for this line. NOT USED: the provider never reads them.

When it is used

Leave it `null`, or use `public_notes` at document level.

  • up to 150 characters
  • accepts null
taric_nostringOptionalNot used by flexyTARIC code (10 digits) for customs classification in cross-border EU trade.#

TARIC code (10 digits) for customs classification in cross-border EU trade. NOT USED: the provider does not read it.

When it is used

Leave it `null`; it is not transmitted.

  • up to 10 characters
  • at least 10 characters
  • accepts null
other_measurement_unit_quantityintegerOptionalNot used by flexyThe count in the secondary unit of measure (packages, boxes, pallets and so on).#

The count in the secondary unit of measure (packages, boxes, pallets and so on). myDATA requires it together with `other_measurement_unit_title` when the unit code is 7, but the provider does not forward it yet.

When it is required

Required by myDATA when `unit_measure = 7` (pieces, other cases).

When it is used

Use it only when `unit_measure = 7`.

  • maximum 4294967295
  • accepts null
other_measurement_unit_titlestringOptionalNot used by flexyThe description of the secondary unit of measure (for example `3_Παλέτες`).#

The description of the secondary unit of measure (for example `3_Παλέτες`). myDATA requires it together with the count when the unit code is 7, but the provider does not forward it yet.

When it is required

Required by myDATA when `unit_measure = 7`.

When it is used

Use it only when `unit_measure = 7`.

  • up to 150 characters
  • accepts null
not_vat_195booleanOptionalNot used by flexyFlag that excludes the line from the VAT 195 declaration: `true` means the line amounts do not appear in the Article 195 outflow return.#

Flag that excludes the line from the VAT 195 declaration: `true` means the line amounts do not appear in the Article 195 outflow return. It is NOT USED yet, since the provider does not transmit `notVAT195`.

When it is required

Only for income document types 1.1-11.5 under the small-enterprise VAT 195 regime.

When it is used

Reserved for future support; do not send it yet.

Allowed values

ValueMeaning
trueExclude this line from VAT 195
falseNormal inclusion (the default)
fuel_codeintegerOptionalmyDATA fuel code (`fuelCode`), transmitted inside `invoiceDetails` only when `provider_details.fuel_invoice = true` and a value is given.#

myDATA fuel code (`fuelCode`), transmitted inside `invoiceDetails` only when `provider_details.fuel_invoice = true` and a value is given. At most one line with `999` is allowed per document.

When it is required

Required on fuel documents (`provider_details.fuel_invoice = true`), except on lines of other charges.

When it is used

Send it only on fuel documents (type 7.x, for instance) with `provider_details.fuel_invoice = true`.

  • accepts null

Allowed values

Table 8.17 "Fuel codes" of the myDATA spec. Code `999` is allowed once per document.

ValueMeaning
10Unleaded 95 RON
11Unleaded 95 RON+
12Unleaded 100 RON
13Unleaded LRP
14Aviation gasoline
15Jet fuel (special)
20Diesel
21Diesel Premium
30Heating Diesel
31Heating Diesel Premium
32Diesel Light
33Diesel other uses
34Marine Diesel
35Kerosene JP-1
36Kerosene other uses
37Fuel oil (Mazout)
38Marine fuel oil (Mazout)
40LPG (liquefied petroleum gas)
41LPG and methane industrial/commercial motor (bulk)
42LPG and methane heating/other (bulk)
43LPG and methane industrial/commercial motor (bottled)
44LPG and methane heating/other (bottled)
50CNG (compressed natural gas)
60Aromatic Hydrocarbons (Tariff class 2707)
61Cyclic Hydrocarbons (Tariff class 2902)
70White spirit
71Light oils
72Biodiesel
999Other service charges (one line per invoice only)

Example

{
  "items": [
    {
      "title": "Αμόλυβδη 95",
      "description": "Αμόλυβδη βενζίνη 95 οκτανίων",
      "quantity": "50.00",
      "unit_measure": "LT",
      "unit_value": "1.80",
      "unit_total": "90.00",
      "fuel_code": 10,
      "quantity15": "49.50"
    }
  ]
}
quantity15decimalOptionalNot used by flexyThe fuel quantity at 15°C, the international reference temperature used for accurate taxation, since volume changes with temperature.#

The fuel quantity at 15°C, the international reference temperature used for accurate taxation, since volume changes with temperature. NOT USED: the provider does not transmit the value.

When it is required

Required on fuel documents, alongside `fuel_code` (type 7.x, for instance).

When it is used

Use it alongside `fuel_code` on fuel documents.

  • 15 digits in total
  • 2 decimal places
  • accepts null

Example

{
  "items": [
    {
      "fuel_code": 10,
      "quantity15": "49.50"
    }
  ]
}
shipobjectOptionalNot used by flexyMaritime transaction details (myDATA `ship`): `application_id` and `application_date` (customs permit), `ship_id` (IMO or national registry number) and an optional `tax_office`.#

Maritime transaction details (myDATA `ship`): `application_id` and `application_date` (customs permit), `ship_id` (IMO or national registry number) and an optional `tax_office`. The provider does not forward them yet.

When it is used

Reserved; send it only if the provider asks you to.

  • accepts null

Example

{
  "items": [
    {
      "ship": {
        "application_id": "MAR-2025-001",
        "application_date": "2025-01-15",
        "ship_id": "9074729"
      }
    }
  ]
}
application_idstringRequiredNot used by flexyThe maritime transaction permit or application number, used for duty-free fuel supply to vessels and for customs clearance.#

The maritime transaction permit or application number, used for duty-free fuel supply to vessels and for customs clearance. NOT USED: the provider does not forward it yet.

  • up to 255 characters

Example

{
  "ship": {
    "application_id": "MAR-2025-001"
  }
}
application_datestringRequiredNot used by flexyThe permit issue date (`YYYY-MM-DD` is recommended).#

The permit issue date (`YYYY-MM-DD` is recommended). NOT USED: the provider does not forward it yet.

  • up to 255 characters

Example

{
  "ship": {
    "application_date": "2025-01-15"
  }
}
ship_idstringRequiredNot used by flexyThe vessel's unique identifier: an IMO number (7 digits) or a national registry number.#

The vessel's unique identifier: an IMO number (7 digits) or a national registry number. NOT USED: the provider does not forward it yet.

  • up to 255 characters

Example

{
  "ship": {
    "ship_id": "9074729"
  }
}
tax_officestringOptionalNot used by flexyThe Greek tax office (ΔΟΥ) code for the maritime transaction.#

The Greek tax office (ΔΟΥ) code for the maritime transaction. NOT USED: the provider does not forward it yet.

  • up to 50 characters
  • accepts null

Example

{
  "ship": {
    "tax_office": "1101"
  }
}
vat_exemption_reason_codestringOptionalNot used by flexyA VATEX code (PEPPOL BT-121) explaining why the line is VAT-exempt.#

A VATEX code (PEPPOL BT-121) explaining why the line is VAT-exempt. It is NOT USED for transmission to myDATA, where `provider_details.vat_exemption_category` is used instead.

When it is required

On Oxygen/PEPPOL documents it is required when the line VAT is 0% because of an exemption.

When it is used

Used only on Oxygen/PEPPOL documents; it is ignored when transmitting to myDATA.

  • up to 255 characters
  • accepts null
vat_exemption_reasonstringOptionalNot used by flexyA free-text VAT exemption reason (PEPPOL BT-120).#

A free-text VAT exemption reason (PEPPOL BT-120). It is NOT USED for transmission to myDATA.

When it is required

On Oxygen/PEPPOL documents it is required when the line's VAT category is `E`, `AE`, `K` or `O` (exempt, reverse charge, intra-community, outside scope).

When it is used

Used only on Oxygen/PEPPOL documents.

  • up to 255 characters
  • accepts null
cpvstringOptionalNot used by flexyA per-line CPV (Common Procurement Vocabulary) code (PEPPOL BT-158), used ONLY on Oxygen (B2G) documents.#

A per-line CPV (Common Procurement Vocabulary) code (PEPPOL BT-158), used ONLY on Oxygen (B2G) documents. On B2G, Oxygen rejects every line without a CPV, yet it reads the code from `items[].provider_details.cpv` rather than from here.

When it is required

On public procurement (B2G) it is required on every line of a document addressed to a public body.

When it is used

On B2G documents send the CPV in `items[].provider_details.cpv`, not here.

  • up to 255 characters
  • accepts null
other_measurement_unit_codestringOptionalNot used by flexyA secondary unit-of-measure code per UN/ECE Recommendation 20 (for example `C62` for a piece, `KGM` for a kilogram, `LTR` for a litre).#

A secondary unit-of-measure code per UN/ECE Recommendation 20 (for example `C62` for a piece, `KGM` for a kilogram, `LTR` for a litre). The provider does not forward it yet.

When it is required

myDATA expects it together with `other_measurement_unit_quantity` and `other_measurement_unit_title` when `unit_measure = 7`.

When it is used

Use it only when `unit_measure = 7`.

  • accepts null

Allowed values

The full list is in UN/ECE Recommendation 20; the provider does not enforce a specific set of values.

ValueMeaning
C62Unit or piece
KGMKilogram
LTRLitre
MTRMetre
HURHour
TNETonne
BXBox
PKPack
classificationsarray of objectsOptionalNot used by flexyA list of per-line income or expense classifications (myDATA `IncomeClassification` / `ExpensesClassification`).#

A list of per-line income or expense classifications (myDATA `IncomeClassification` / `ExpensesClassification`). NOT USED: for transmission to myDATA the classification is read from `provider_details.classification_category` and `classification_type`, one per line.

When it is used

Leave it `null` or empty; for the line classification use `items[].provider_details.classification_category` and `classification_type`.

  • accepts null
line_numberintegerOptionalNot used by flexyThe line number this classification applies to, counting from 1, or `null` for a document-level classification.#

The line number this classification applies to, counting from 1, or `null` for a document-level classification. NOT USED, like `items[].classifications` itself.

When it is required

Only if you send `items[].classifications`, which is not used yet.

  • maximum 255
  • accepts null
categorystringOptionalNot used by flexyA myDATA income or expense category code (for example `category1_1`, `category2_3`).#

A myDATA income or expense category code (for example `category1_1`, `category2_3`). NOT USED, like `items[].classifications` itself.

  • up to 50 characters
  • accepts null
typestringOptionalNot used by flexyA myDATA classification type code (for example `E3_561_001`, `VAT_361`).#

A myDATA classification type code (for example `E3_561_001`, `VAT_361`). NOT USED, like `items[].classifications` itself.

  • accepts null
amountdecimalRequiredNot used by flexyThe classification amount, with 2 decimal places; it must equal the line or document total.#

The classification amount, with 2 decimal places; it must equal the line or document total. NOT USED, like `items[].classifications` itself.

  • 15 digits in total
  • 2 decimal places
extra_fieldsjsonOptionalNot used by flexyFree-form JSON with extra per-line metadata.#

Free-form JSON with extra per-line metadata. NOT USED: the provider neither reads nor forwards it.

When it is used

Leave it `null`; it is not transmitted.

  • accepts null
provider_detailsobjectRequiredPer-line provider details: the E3 classification category and type, the myDATA VAT category and, optionally, the VAT exemption reason category, the type 1.5 line detail type and the B2G CPV.#

Per-line provider details: the E3 classification category and type, the myDATA VAT category and, optionally, the VAT exemption reason category, the type 1.5 line detail type and the B2G CPV.

Example

{
  "items": [
    {
      "provider_details": {
        "classification_category": "category1_1",
        "classification_type": "E3_561_001",
        "vat_classification_category": "1",
        "vat_exemption_category": "1"
      }
    }
  ]
}
classification_categorystringRequiredThe myDATA income or expense classification category (for example `category1_1` for a goods sale); the valid category and type combination depends on the document type.#

The myDATA income or expense classification category (for example `category1_1` for a goods sale); the valid category and type combination depends on the document type. On 9.x/10.x (delivery notes) use `category3` with an empty `classification_type`.

Allowed values

The 27 myDATA classification categories (spec tables 8.8 and 8.10).

ValueMeaning
category1_1Income from Sale of Goods
category1_2Income from Sale of Products
category1_3Income from Provision of Services
category1_4Income from Sale of Fixed Assets
category1_5Other Income/Profits
category1_6Self-deliveries / Self-use
category1_7Income on behalf of third parties
category1_8Income of prior periods
category1_9Income of following periods
category1_10Other Income Adjustment Entries
category1_95Other Income Information Items (no E3 update)
category2_1Goods Purchases
category2_2Raw Materials Purchases
category2_3Receipt of Services
category2_4General Expenses with VAT Deduction Right
category2_5General Expenses without VAT Deduction Right
category2_6Employee Fees and Benefits
category2_7Fixed Asset Purchases
category2_8Fixed Asset Depreciation
category2_9Expenses on behalf of third parties
category2_10Expenses of prior periods
category2_11Expenses of following periods
category2_12Other Expense Adjustment Entries
category2_13Opening Period Inventories
category2_14Closing Period Inventories
category2_95Other Expense Information Items (no E3 update)
category3Movement/Delivery (no E3 update)

Example

{
  "items": [
    {
      "provider_details": {
        "classification_category": "category1_1",
        "classification_type": "E3_561_001"
      }
    }
  ]
}
classification_typestringRequiredThe myDATA classification type code (for example `E3_561_001` for a wholesale sale, `VAT_361` for expense VAT); the valid category and type combination depends on the document type.#

The myDATA classification type code (for example `E3_561_001` for a wholesale sale, `VAT_361` for expense VAT); the valid category and type combination depends on the document type. Leave it empty (`""`) for `category1_95` or `category3`.

When it is required

Required, though the empty string is allowed, and myDATA accepts an empty value only for `category1_95` or `category3` (delivery notes 9.x/10.x).

Allowed values

Every classification code the Flexy document types use. Which category/type combination is allowed depends on the document type and is checked by AADE. Empty (`""`) only with `category1_95` or `category3`; the type is then not sent.

ValueMeaning
""Empty — no E3 update (category1_95 or category3, e.g. 8.2/8.4-8.6, 9.x/10.x)
E3_102_001Goods purchases (net)/Wholesale (category2_1)
E3_102_002Goods purchases (net)/Retail (category2_1, 3.1/3.2/5.2)
E3_102_003Goods purchases (net)/Article 39a par.5 VAT Code goods (category2_1)
E3_102_004Goods purchases (net)/Intra-community (category2_1)
E3_102_005Goods purchases (net)/Third countries (category2_1)
E3_102_006Goods purchases (net)/Other (category2_1)
E3_202_001Raw materials purchases/Wholesale (category2_2)
E3_202_002Raw materials purchases/Retail (category2_2, 3.1/5.2)
E3_202_003Raw materials purchases/Intra-community (category2_2)
E3_202_004Raw materials purchases/Third countries (category2_2)
E3_202_005Raw materials purchases/Other (category2_2)
E3_302_001Raw materials purchases/Agricultural - Wholesale (category2_2)
E3_302_002Raw materials purchases/Agricultural - Retail (category2_2, 3.1/5.2)
E3_302_003Raw materials purchases/Agricultural - Intra-community (category2_2)
E3_302_004Raw materials purchases/Agricultural - Third countries (category2_2)
E3_302_005Raw materials purchases/Agricultural - Other (category2_2)
E3_313_001Animals - plants purchases (net)/Wholesale (category2_2)
E3_313_002Animals - plants purchases (net)/Retail (category2_2, 3.1/5.2)
E3_313_003Animals - plants purchases (net)/Intra-community (category2_2)
E3_313_004Animals - plants purchases (net)/Third countries (category2_2)
E3_313_005Animals - plants purchases (net)/Other (category2_2)
E3_561_001Sales of goods and services/Wholesale - Businesses (category1_1/1_2/1_3/1_5)
E3_561_002Sales of goods and services/Wholesale per Article 39a par.5 (category1_1/1_2/1_3/1_5/2.1/3.2/5.2/7.1/11.x)
E3_561_003Sales of goods and services/Retail - Private clientele (category1_1/1_2/1_3, 11.x)
E3_561_004Sales of goods and services/Retail per Article 39a par.5 (category1_1/1_2/1_3, 11.x)
E3_561_005Sales of goods and services/Intra-community (category1_1-1_5, 1.2/2.2/5.2/11.x)
E3_561_006Sales of goods and services/Third countries (category1_1-1_5, 1.3/2.3/5.2/11.x)
E3_561_007Sales of goods and services/Other (category1_1/1_2/1_3/1_5, 1.2/1.3/1.5/2.x/3.2/5.2/7.1/11.x)
E3_562Other ordinary income (category1_5)
E3_563Credit interest and related income (category1_5)
E3_564Credit exchange differences (category1_5)
E3_565Participation income (category1_5)
E3_566Gains from disposal of non-current assets (category1_5)
E3_567Gains from reversal of provisions and impairments (category1_5)
E3_568Gains from fair value measurement (category1_5)
E3_570Unusual income and gains (category1_5)
E3_581_003Employee benefits/Other (category2_6)
E3_585_001Domestic/foreign management fees (category2_4)
E3_585_002Expenses from related companies (category2_4/2_5)
E3_585_004Information event expenses (category2_4)
E3_585_005Reception and hospitality expenses (category2_4/2_5)
E3_585_006Travel expenses (category2_4/2_5)
E3_585_008Order-taker expenses and commissions for farmers (category2_4)
E3_585_009Other domestic service fees (category2_3/2_4/2_5, 1.5 detail_type=1)
E3_585_011Energy (category2_4)
E3_585_012Water supply (category2_4)
E3_585_013Telecommunications (category2_4)
E3_585_014Rent (category2_4, 8.1)
E3_585_015Advertising and promotion (category2_4)
E3_585_016Other expenses (category2_4/2_5, 3.1, 8.1/8.2)
E3_586Debit interest and related expenses (category2_4)
E3_595Self-production expenses / Self-delivery - Self-use (category1_6, types 6.1/6.2/11.x)
E3_596Subsidies - Grants (category1_95, 1.1/3.2)
E3_597Investment-purpose subsidies - cost coverage (category1_95, 1.1/3.2)
E3_880_001Fixed asset sales/Wholesale (category1_4, 1.1/1.5/3.2/5.2/7.1/11.x)
E3_880_002Fixed asset sales/Retail (category1_4, 11.x)
E3_880_003Fixed asset sales/Intra-community (category1_4, 1.2/1.5/5.2/11.x)
E3_880_004Fixed asset sales/Third countries (category1_4, 1.3/1.5/5.2/11.x)
E3_881_001Third-party sales/Wholesale (category1_7, 1.1/1.4/5.2/11.x)
E3_881_002Third-party sales/Retail (category1_7, 11.1/11.3/11.4/11.5)
E3_881_003Third-party sales/Intra-community (category1_7, 1.1/1.2/1.4/5.2/11.x/11.5)
E3_881_004Third-party sales/Third countries (category1_7, 1.1/1.3/1.4/5.2/11.x/11.5)
E3_882_001Tangible fixed asset purchases/Wholesale (category2_7)
E3_882_002Tangible fixed asset purchases/Retail (category2_7, 3.1/5.2)
E3_882_003Tangible fixed asset purchases/Intra-community (category2_7, 2.1/5.2)
E3_882_004Tangible fixed asset purchases/Third countries (category2_7, 2.1/5.2)
E3_883_001Intangible fixed asset purchases/Wholesale (category2_7)
E3_883_002Intangible fixed asset purchases/Retail (category2_7, 3.1/5.2)
E3_883_003Intangible fixed asset purchases/Intra-community (category2_7, 2.1/5.2)
E3_883_004Intangible fixed asset purchases/Third countries (category2_7, 2.1/5.2)
VAT_361Domestic purchases & expenses (1.5 detail_type=1, 3.1/3.2 — only, second expensesClassification)
VAT_362Purchases & imports of investment goods (fixed assets)

Example

{
  "items": [
    {
      "provider_details": {
        "classification_category": "category1_1",
        "classification_type": "E3_561_001"
      }
    }
  ]
}
vat_classification_categorystringRequiredThe line's VAT category (myDATA `vatCategory`).#

The line's VAT category (myDATA `vatCategory`). It determines which VAT rate applies and whether `vat_exemption_category` is needed.

Allowed values

The code is stored as a string.

ValueMeaning
1VAT 24% (standard rate)
2VAT 13% (reduced)
3VAT 6% (super-reduced)
4VAT 17% (Aegean islands, standard)
5VAT 9% (Aegean islands, reduced)
6VAT 4% (Aegean islands, super-reduced, law 5057/2023)
7Exempt (0%); state `vat_exemption_category`, otherwise code 1 is sent
8No-VAT entries (payroll, depreciation, purchases, movement); `vat_exemption_category` is not sent
9VAT 3% (article 31, law 5057/2023)
10VAT 4% (article 31, law 5057/2023)

Example

{
  "items": [
    {
      "provider_details": {
        "vat_classification_category": "1"
      }
    }
  ]
}
vat_exemption_categorystringConditionalThe VAT exemption reason code (myDATA `vatExemptionCategory`), required for exports, intra-community supplies and other exemptions.#

The VAT exemption reason code (myDATA `vatExemptionCategory`), required for exports, intra-community supplies and other exemptions.

When it is required

Always send it when `vat_classification_category = "7"` (0% VAT). If it is missing the request is not rejected: Flexy sends exemption code `1`, which may not be the right reason. With `"8"` the value is ignored; on normal VAT (1–6, 9, 10) leave it out.

  • accepts null

Allowed values

It is stored as a string. Code `0` (no exemption) is not transmitted; omit the field instead.

ValueMeaning
1No VAT, articles 2 and 3 of the VAT Code (the most common)
2No VAT, article 5 of the VAT Code
3No VAT, article 13 of the VAT Code
4No VAT, article 14 of the VAT Code
5No VAT, article 16 of the VAT Code
6No VAT, article 19 of the VAT Code
7No VAT, article 22 of the VAT Code
8No VAT, article 24 of the VAT Code
9No VAT, article 25 of the VAT Code
10No VAT, article 26 of the VAT Code
11No VAT, article 27 of the VAT Code
12No VAT, article 27 of the VAT Code (deep-sea vessels)
13No VAT, article 27.1.γ of the VAT Code (deep-sea vessels)
14No VAT, article 28 of the VAT Code
15No VAT, article 39 of the VAT Code
16No VAT, article 39α of the VAT Code (exports, intra-community)
17No VAT, article 40 of the VAT Code
18No VAT, article 41 of the VAT Code
19No VAT, article 47 of the VAT Code
20VAT included, article 43 of the VAT Code
21VAT included, article 44 of the VAT Code
22VAT included, article 45 of the VAT Code
23VAT included, article 46 of the VAT Code
24No VAT, article 6 of the VAT Code
25No VAT, POL.1029/1995
26No VAT, POL.1167/2015
27Other VAT Exemptions
28No VAT, article 24β.1 of the VAT Code (Tax Free)
29No VAT, article 47β of the VAT Code (OSS non-EU)
30No VAT, article 47γ of the VAT Code (OSS EU)

Example

{
  "items": [
    {
      "provider_details": {
        "vat_classification_category": "7",
        "vat_exemption_category": "1"
      }
    }
  ]
}
detail_typestringConditionalThe line detail type, ONLY for type 1.5 documents (third-party settlement).#

The line detail type, ONLY for type 1.5 documents (third-party settlement). It separates the sale line (`detail_type=1`, with an expense classification) from the commission line (`detail_type=2`, with an income classification).

When it is required

Required ONLY on type 1.5, where you need at least one line with `"1"` (third-party sale) and one with `"2"` (commission).

When it is used

Only for type 1.5; omit it on every other type.

  • accepts null

Allowed values

It is stored as a string.

ValueMeaning
1Third-party sale line (expense classification, `category2_3` and `E3_585_009`)
2Commission line (income classification, `category1_3` and `E3_561_007`)

Example

{
  "items": [
    {
      "title": "Product Sale (Third Party)",
      "provider_details": {
        "detail_type": "1",
        "classification_category": "category2_3",
        "classification_type": "E3_585_009",
        "vat_classification_category": "1"
      }
    },
    {
      "title": "Commission Fee",
      "provider_details": {
        "detail_type": "2",
        "classification_category": "category1_3",
        "classification_type": "E3_561_007",
        "vat_classification_category": "1"
      }
    }
  ]
}
cpvstringOptionalNot used by flexyA per-line CPV code, used ONLY on Oxygen (B2G) documents.#

A per-line CPV code, used ONLY on Oxygen (B2G) documents. On B2G, Oxygen rejects every line without a CPV with the error "lines.0.cpv field is required".

When it is required

On public procurement (B2G) it is required on every line of a document addressed to a public body, and Oxygen rejects lines without a CPV.

When it is used

Required on B2G documents (Oxygen); separate multiple codes with commas.

  • up to 255 characters
  • accepts null

Example

{
  "items": [
    {
      "provider_details": {
        "cpv": "18000000-9"
      }
    }
  ]
}
taxesarray of objectsOptionalA document-level tax list.#

A document-level tax list. It is not transmitted directly: before the document is sent, each tax is projected onto every line's `items[].taxes`, weighted by the line's net amount, and the list is cleared.

When it is used

Optional; if you do not send taxes here, put them per line in `items[].taxes`, and when you do send them here they are used to check that the `tax_amount` and `payable_amount` totals are consistent.

  • accepts null

Example

{
  "taxes": [
    {
      "title": "ΦΠΑ 24%",
      "tax_type": "vat",
      "value_type": "percentage",
      "value": "24.00",
      "on_vat": true
    }
  ]
}
titlestringRequiredNot used by flexyA readable title for the document-level tax.#

A readable title for the document-level tax. The API requires it, but it is not transmitted anywhere.

  • at least 1 characters
tax_typestringOptionalThe document-level tax category, with the same accepted values as `items[].taxes[].tax_type`.#

The document-level tax category, with the same accepted values as `items[].taxes[].tax_type`. It decides which total the tax is added to (VAT, stamp duty, fees, other taxes, withholdings, deductions).

  • up to 50 characters
  • accepts null

Allowed values

Only the symbolic names are recognised; a numeric code is ignored.

ValueMeaning
vatVAT
withholdingWithholding Tax
stamp_dutyStamp Duty
feesFees
other_taxOther Taxes (alternative name)
other_taxesOther Taxes
deductionDeductions (alternative name)
deductionsDeductions
value_typestringOptionalHow a document-level tax is calculated, with the same values as `items[].taxes[].value_type`.#

How a document-level tax is calculated, with the same values as `items[].taxes[].value_type`. For a percentage the base is the total net amount, or net plus VAT when `on_vat` is `true`; for a fixed amount the value is used as it is.

  • up to 20 characters
  • accepts null

Allowed values

ValueMeaning
percentagePercentage of the total net amount (or net plus VAT when `on_vat` applies)
amountFixed amount in euros
actual_amountFixed amount (the canonical name, same as `amount`)
tax_signstringOptionalThe sign of a document-level tax, with the same meaning as in `items[].taxes[].tax_sign` (`+` additive, `-` subtractive).#

The sign of a document-level tax, with the same meaning as in `items[].taxes[].tax_sign` (`+` additive, `-` subtractive). It is carried onto the lines when the tax is projected, so the per-kind totals come out right.

  • up to 1 characters
  • accepts null

Allowed values

ValueMeaning
+Additive (VAT, stamp duty, fees, other)
-Subtractive (withholdings, deductions)
valuedecimalOptionalThe numeric value of a document-level tax: a percentage when `value_type` is `percentage`, otherwise an amount in euros.#

The numeric value of a document-level tax: a percentage when `value_type` is `percentage`, otherwise an amount in euros. The total amount is computed once for the whole document and then split across the lines.

  • 15 digits in total
  • 2 decimal places
  • accepts null
provider_codestringOptionalThe older AADE numeric or symbolic code for a document-level tax.#

The older AADE numeric or symbolic code for a document-level tax. It is carried onto every line when the tax is projected; `provider_details.provider_code` is the recommended field.

  • up to 50 characters
  • accepts null

Allowed values

Same codes as the line taxes (`items[].taxes[]`). Flexy spreads the tax over the lines and the code goes with it; if both fields are given, `provider_details.provider_code` wins.

ValueMeaning
WH_INTEREST_15Withholding: Interest 15% (§8.4 #1)
WH_ROYALTIES_20Withholding: Royalties 20% (§8.4 #2)
WH_CONSULTANCY_20Withholding: Management consultancy fees 20% (§8.4 #3)
WH_TECHNICAL_3Withholding: Technical works 3% (§8.4 #4)
WH_FUEL_TOBACCO_1Withholding: Liquid fuels & tobacco 1% (§8.4 #5)
WH_OTHER_GOODS_4Withholding: Other goods 4% (§8.4 #6)
WH_SERVICES_8Withholding: Provision of services 8% (§8.4 #7)
WH_ARCH_ENG_STUDIES_4Withholding: Arch/Eng studies 4% (§8.4 #8)
WH_ARCH_ENG_OTHER_10Withholding: Arch/Eng other 10% (§8.4 #9)
WH_LAWYERS_15Withholding: Lawyers 15% (§8.4 #10)
WH_NAVY_OFFICERSWithholding: Merchant Navy Officers (§8.4 #12)
WH_NAVY_CREWWithholding: Merchant Navy Lower Crew (§8.4 #13)
WH_OTHERWithholding: Other tax withholdings (§8.4 #17)
FEE_MOBILE_12_50Fee: Monthly up to 50€ 12% (§8.7 #1)
FEE_MOBILE_15_100Fee: Monthly 50.01-100€ 15% (§8.7 #2)
FEE_MOBILE_18_150Fee: Monthly 100.01-150€ 18% (§8.7 #3)
FEE_MOBILE_20_150PLUSFee: Monthly 150.01€+ 20% (§8.7 #4)
FEE_PREPAID_12Prepaid mobile fee 12% (§8.7 #5)
FEE_SUBSCRIPTION_TV_10Subscription TV fee 10% (§8.7 #6)
FEE_LANDLINE_5Landline fee 5% (§8.7 #7)
FEE_OTHEROther fees (§8.7 #10)
FEE_TOURISMTourist accommodation fee (§8.7 #18)
HOTEL_1_2_WINTEROther tax: Hotels 1-2 stars (winter) (§8.5 #6)
HOTEL_3_WINTEROther tax: Hotels 3 stars (winter) (§8.5 #7)
HOTEL_4_WINTEROther tax: Hotels 4 stars (winter) (§8.5 #8)
HOTEL_5_WINTEROther tax: Hotels 5 stars (winter) (§8.5 #9)
FURNISHED_WINTEROther tax: Furnished (winter) (§8.5 #10)
SHORT_TERM_WINTEROther tax: Short-term rental (winter) (§8.5 #28)
SHORT_TERM_80SQM_WINTEROther tax: Short-term rental >80 sqm (winter) (§8.5 #29)
SELF_SERVICE_WINTEROther tax: Self-service (winter) (§8.5 #30)
SELF_SERVICE_U80_WINTEROther tax: Tourist furnished <80 sqm (winter, §8.5 #30)
HOTEL_1_2_SUMMEROther tax: Hotels 1-2 stars (summer) (§8.5 #20)
HOTEL_3_SUMMEROther tax: Hotels 3 stars (summer) (§8.5 #21)
HOTEL_4_SUMMEROther tax: Hotels 4 stars (summer) (§8.5 #22)
HOTEL_5_SUMMEROther tax: Hotels 5 stars (summer) (§8.5 #23)
FURNISHED_SUMMEROther tax: Furnished (summer) (§8.5 #24)
SHORT_TERM_SUMMEROther tax: Short-term rental (summer) (§8.5 #25)
SHORT_TERM_80SQM_SUMMEROther tax: Short-term rental >80 sqm (summer) (§8.5 #26)
SELF_SERVICE_SUMMEROther tax: Self-service (summer) (§8.5 #27)
SELF_SERVICE_U80_SUMMEROther tax: Tourist furnished <80 sqm (summer, §8.5 #27)
EXCISE_DUTYOther tax: Excise Duty (ΕΦΚ) (§8.5 #19)
OTHER_TAXOther tax: Other taxes (§8.5 #17)
OTHER_TAX_CHARGESOther tax: Other tax surcharges (§8.5 #18)
STAMP_1_2Digital transaction fee 1.2% (§8.6 #1)
STAMP_2_4Digital transaction fee 2.4% (§8.6 #2)
STAMP_3_6Digital transaction fee 3.6% (§8.6 #3)
on_vatbooleanOptionalA flag that a document-level tax is VAT, which also picks the calculation base (total net amount, or net plus VAT).#

A flag that a document-level tax is VAT, which also picks the calculation base (total net amount, or net plus VAT). When the tax is projected onto the lines the flag is always derived from `tax_type = vat`, so that no non-VAT tax leaks into the VAT total.

When it is used

Set `true` ONLY for VAT and `false` for every other document-level tax (stamp duty, fees, other taxes, withholding, deductions); it also marks a tax as VAT when `tax_type` is not `vat`.

  • accepts null

Allowed values

ValueMeaning
trueThe tax is VAT
falseThe tax is not VAT
nullNot declared (the default `false` applies)
quantity_dependentbooleanOptionalNot used by flexyA flag that a document-level tax scales with quantity.#

A flag that a document-level tax scales with quantity. It is ignored: when projected onto the lines it is always set to `false`.

  • accepts null
provider_detailsobjectOptionalHolds the provider-specific details of a document-level tax.#

Holds the provider-specific details of a document-level tax. They are copied onto every line when the tax is projected, so the lines carry the same details the document-level tax had.

  • accepts null
provider_codestringOptionalThe recommended code for a document-level tax.#

The recommended code for a document-level tax. It accepts Flexy's symbolic codes (e.g. `WH_SERVICES_8`, `STAMP_3_6`) or the AADE numeric code, and goes to every line when Flexy spreads the tax over the lines.

When it is used

Send it for document-level taxes that need a myDATA category.

  • up to 50 characters
  • accepts null

Allowed values

Same codes as the line taxes (`items[].taxes[]`). Flexy spreads the tax over the lines and the code goes with it; if both fields are given, `provider_details.provider_code` wins.

ValueMeaning
WH_INTEREST_15Withholding: Interest 15% (§8.4 #1)
WH_ROYALTIES_20Withholding: Royalties 20% (§8.4 #2)
WH_CONSULTANCY_20Withholding: Management consultancy 20% (§8.4 #3)
WH_TECHNICAL_3Withholding: Technical works 3% (§8.4 #4)
WH_FUEL_TOBACCO_1Withholding: Liquid fuels & tobacco 1% (§8.4 #5)
WH_OTHER_GOODS_4Withholding: Other goods 4% (§8.4 #6)
WH_SERVICES_8Withholding: Provision of services 8% (§8.4 #7)
WH_ARCH_ENG_STUDIES_4Withholding: Arch/Eng studies 4% (§8.4 #8)
WH_ARCH_ENG_OTHER_10Withholding: Arch/Eng other 10% (§8.4 #9)
WH_LAWYERS_15Withholding: Lawyers 15% (§8.4 #10)
WH_NAVY_OFFICERSWithholding: Merchant Navy Officers (§8.4 #12)
WH_NAVY_CREWWithholding: Merchant Navy Lower Crew (§8.4 #13)
WH_OTHERWithholding: Other (§8.4 #17)
FEE_MOBILE_12_50Fee: Monthly up to 50€ 12% (§8.7 #1)
FEE_MOBILE_15_100Fee: Monthly 50.01-100€ 15% (§8.7 #2)
FEE_MOBILE_18_150Fee: Monthly 100.01-150€ 18% (§8.7 #3)
FEE_MOBILE_20_150PLUSFee: Monthly 150.01€+ 20% (§8.7 #4)
FEE_PREPAID_12Prepaid mobile fee 12% (§8.7 #5)
FEE_SUBSCRIPTION_TV_10Subscription TV fee 10% (§8.7 #6)
FEE_LANDLINE_5Landline fee 5% (§8.7 #7)
FEE_OTHEROther fees (§8.7 #10)
FEE_TOURISMTourist accommodation fee (§8.7 #18)
HOTEL_1_2_WINTEROther tax: Hotels 1-2 stars (winter) (§8.5 #6)
HOTEL_3_WINTEROther tax: Hotels 3 stars (winter) (§8.5 #7)
HOTEL_4_WINTEROther tax: Hotels 4 stars (winter) (§8.5 #8)
HOTEL_5_WINTEROther tax: Hotels 5 stars (winter) (§8.5 #9)
FURNISHED_WINTEROther tax: Furnished (winter) (§8.5 #10)
SHORT_TERM_WINTEROther tax: Short-term rental (winter) (§8.5 #28)
SHORT_TERM_80SQM_WINTEROther tax: Short-term >80 sqm (winter) (§8.5 #29)
SELF_SERVICE_WINTEROther tax: Self-service (winter) (§8.5 #30)
SELF_SERVICE_U80_WINTEROther tax: Tourist furnished <80 sqm (winter, §8.5 #30)
HOTEL_1_2_SUMMEROther tax: Hotels 1-2 stars (summer) (§8.5 #20)
HOTEL_3_SUMMEROther tax: Hotels 3 stars (summer) (§8.5 #21)
HOTEL_4_SUMMEROther tax: Hotels 4 stars (summer) (§8.5 #22)
HOTEL_5_SUMMEROther tax: Hotels 5 stars (summer) (§8.5 #23)
FURNISHED_SUMMEROther tax: Furnished (summer) (§8.5 #24)
SHORT_TERM_SUMMEROther tax: Short-term rental (summer) (§8.5 #25)
SHORT_TERM_80SQM_SUMMEROther tax: Short-term >80 sqm (summer) (§8.5 #26)
SELF_SERVICE_SUMMEROther tax: Self-service (summer) (§8.5 #27)
SELF_SERVICE_U80_SUMMEROther tax: Tourist furnished <80 sqm (summer, §8.5 #27)
EXCISE_DUTYOther tax: Excise Duty (ΕΦΚ) (§8.5 #19)
OTHER_TAXOther tax: Other taxes (§8.5 #17)
OTHER_TAX_CHARGESOther tax: Other tax surcharges (§8.5 #18)
STAMP_1_2Digital transaction fee 1.2% (§8.6 #1)
STAMP_2_4Digital transaction fee 2.4% (§8.6 #2)
STAMP_3_6Digital transaction fee 3.6% (§8.6 #3)
underlying_amountdecimalOptionalNot used by flexyThe base amount of a document-level tax.#

The base amount of a document-level tax. It is not transmitted anywhere.

  • 15 digits in total
  • 2 decimal places
  • accepts null
template_codestringOptionalNot used by flexyA template identifier for a document-level tax.#

A template identifier for a document-level tax. It is not transmitted anywhere.

  • up to 50 characters
  • accepts null
totalsobjectRequiredThe document totals (PEPPOL BT-106/109/110/112/115), required.#

The document totals (PEPPOL BT-106/109/110/112/115), required. Only `tax_exclusive_amount` is transmitted, as `totalNetValue`; the tax totals (VAT, withholdings, fees, stamp duty, other taxes, deductions) are computed from the lines.

Example

{
  "totals": {
    "line_extension_amount": "100.00",
    "tax_exclusive_amount": "100.00",
    "tax_amount": "24.00",
    "tax_inclusive_amount": "124.00",
    "payable_amount": "124.00"
  }
}
line_extension_amountdecimalRequiredThe sum of the lines' net values (PEPPOL BT-106).#

The sum of the lines' net values (PEPPOL BT-106). Required; if `|line_extension - sum(items[].unit_total)| > 0.01` the request is rejected with HTTP 422.

  • 15 digits in total
  • 2 decimal places
tax_exclusive_amountdecimalRequiredThe total excluding taxes (PEPPOL BT-109).#

The total excluding taxes (PEPPOL BT-109). Required, checked so that `|tax_exclusive - line_extension| ≤ 0.01` (no document-level adjustments are allowed), and transmitted as `totalNetValue` inside `invoiceSummary`.

  • 15 digits in total
  • 2 decimal places
tax_amountdecimalRequiredThe sum of additive taxes (PEPPOL BT-110: VAT, stamp duty, fees, other).#

The sum of additive taxes (PEPPOL BT-110: VAT, stamp duty, fees, other). Required and checked against both that sum and `tax_breakdown` (0.01 tolerance), but not transmitted: `totalVatAmount`, `totalFeesAmount`, `totalStampDutyAmount` and `totalOtherTaxesAmount` are computed from the lines.

  • 15 digits in total
  • 2 decimal places
tax_inclusive_amountdecimalRequiredThe total including taxes (PEPPOL BT-112, gross before withholdings and deductions).#

The total including taxes (PEPPOL BT-112, gross before withholdings and deductions). Required and checked so that `|tax_inclusive - (tax_exclusive + tax_amount)| ≤ 0.01`, but not transmitted: `totalGrossValue` is computed from the line totals.

  • 15 digits in total
  • 2 decimal places
payable_amountdecimalRequiredThe payable amount (PEPPOL BT-115, after withholdings and deductions), checked to equal `tax_inclusive - withholding - deductions` (0.01 tolerance).#

The payable amount (PEPPOL BT-115, after withholdings and deductions), checked to equal `tax_inclusive - withholding - deductions` (0.01 tolerance). It is used as the fallback `amount` when `provider_details.payment_methods` is missing, and on Oxygen's older `payment_method_type` form.

  • 15 digits in total
  • 2 decimal places
tax_breakdownarray of objectsRequiredA per-kind and per-rate tax breakdown; required, with at least one entry.#

A per-kind and per-rate tax breakdown; required, with at least one entry. It is used only for checking (the sum of `tax_amount` equals `totals.tax_amount`, and each entry is checked as rate × base or as the line total of the same kind), and it is not transmitted.

  • at least 1 item

Example

{
  "tax_breakdown": [
    {
      "tax_category_id": "S",
      "tax_category_name": "ΦΠΑ 24%",
      "tax_rate_percent": "24.00",
      "taxable_amount": "100.00",
      "tax_amount": "24.00",
      "tax_type": "vat"
    },
    {
      "tax_category_id": "SD",
      "tax_category_name": "Stamp Duty 3.6%",
      "tax_rate_percent": "3.60",
      "taxable_amount": "1000.00",
      "tax_amount": "36.00",
      "tax_type": "stamp_duty"
    }
  ]
}
tax_category_idstringRequiredFlexy's internal tax-category identifier, not the AADE numeric code.#

Flexy's internal tax-category identifier, not the AADE numeric code. It is used only for reporting and audit.

  • up to 5 characters
  • at least 1 characters

Allowed values

ValueMeaning
SVAT (standard)
EVAT 0% (Exempt)
GVAT 0% (Export)
AEVAT 0% (Reverse Charge)
KFarmers special regime (VAT category 5)
OEntries without VAT (VAT category 8)
VATGeneric VAT (purchases or expenses)
SDStamp Duty
FFees
OTOther Taxes
tax_category_namestringOptionalNot used by flexyA readable name for the category (for example "Standard VAT 24%", "Stamp Duty 3.6%", "Climate Resilience Fee").#

A readable name for the category (for example "Standard VAT 24%", "Stamp Duty 3.6%", "Climate Resilience Fee"). It is used only for display and audit; it is transmitted neither to myDATA nor to Oxygen.

  • up to 100 characters
  • accepts null
tax_rate_percentdecimalRequiredThe tax rate as a percentage; required, up to 5 digits with 2 decimal places.#

The tax rate as a percentage; required, up to 5 digits with 2 decimal places. The check `|tax_amount - base × rate / 100| ≤ 0.01` runs only when the rate is above zero; when it is `0` (a fixed-amount fee, for instance) the entry is compared with the line total of the same kind.

  • 5 digits in total
  • 2 decimal places
taxable_amountdecimalRequiredThe net base the tax was calculated on.#

The net base the tax was calculated on. Required, and checked so that `taxable_amount ≤ tax_exclusive + total_vat + 0.01`, since the base may include VAT when the tax is computed on the gross value.

  • 15 digits in total
  • 2 decimal places
tax_amountdecimalRequiredThe tax amount.#

The tax amount. Required, and checked both so that `|sum(tax_breakdown[].tax_amount) - totals.tax_amount| ≤ 0.01` and, per entry, so that `|tax_amount - base × rate / 100| ≤ 0.01` or, for fixed-amount taxes, against the line total of the same kind.

  • 15 digits in total
  • 2 decimal places
tax_typestringOptionalNot used by flexyThe kind of tax for the entry; only `vat`, `stamp_duty`, `fees` and `other_taxes` are allowed, defaulting to `vat` when missing.#

The kind of tax for the entry; only `vat`, `stamp_duty`, `fees` and `other_taxes` are allowed, defaulting to `vat` when missing. Withholdings and deductions do NOT belong in `tax_breakdown`.

When it is used

Send it alongside `tax_category_id` (for example `tax_type='vat'` with `tax_category_id='S'` for VAT 24%), and do not send it for withholdings or deductions, which do not appear in the breakdown.

  • up to 20 characters
  • accepts null

Allowed values

ValueMeaning
vatVAT (the default when missing)
stamp_dutyStamp Duty / Digital Transaction Fee
feesFees
other_taxesOther Taxes
public_notesstringOptionalNot used by flexyFree-text notes for the document (payment terms, delivery remarks and so on).#

Free-text notes for the document (payment terms, delivery remarks and so on).

When it is used

Forwarded only with provider `oxygen`, and there only on the movement or quantity-receipt notes (9.1, 9.2, 9.3, 10.1, 10.2); on the Flexy path it is accepted and stored, but it does not go into the myDATA XML.

  • accepts null

Example

{
  "public_notes": "Test invoice with totals validation"
}
connected_documentsarray of stringsOptionalNot used by flexyA list of connected-document identifiers (26-character ULIDs).#

A list of connected-document identifiers (26-character ULIDs).

When it is used

The field is accepted and stored but no provider reads it, because myDATA's `multipleConnectedMarks` is never emitted; to link to already-issued documents use `correlated_invoices` or `related_documents` with ΜΑΡΚ numbers.

  • up to 26 characters
  • at least 26 characters
  • accepts null

Example

{
  "connected_documents": [
    "01JAR7F9ZQ8M3K5T2YV6WX4B0C"
  ]
}
correlated_documentsarray of stringsOptionalNot used by flexyA list of correlated-document identifiers in the provider's own system (Oxygen UIDs).#

A list of correlated-document identifiers in the provider's own system (Oxygen UIDs).

When it is used

The field is accepted and stored but no provider reads it: provider `oxygen` builds its own `correlated_documents` by resolving the ΜΑΡΚ numbers in `correlated_invoices` or `related_documents` into Oxygen ULIDs, so send ΜΑΡΚ numbers in one of those two instead.

  • up to 64 characters
  • at least 1 characters
  • accepts null

Example

{
  "correlated_documents": [
    "01JAR7F9ZQ8M3K5T2YV6WX4B0C"
  ]
}
correlated_invoicesarray of integersConditionalThe ΜΑΡΚ numbers of the correlated documents, as numbers; transmitted as `correlatedInvoices` in the `invoiceHeader`.#

The ΜΑΡΚ numbers of the correlated documents, as numbers; transmitted as `correlatedInvoices` in the `invoiceHeader`. This is the field the provider prefers when both are present.

When it is required

For types 9.1 and 10.1 you must send either this or `related_documents`, while for type 5.1 the check looks **only** at `related_documents`, so use that field there.

When it is used

On supplementary documents (1.6, 2.4) and associated notes (9.1, 10.1); the field is marked deprecated in favour of `correlated_documents`, but in practice this is the one transmitted to myDATA, while `correlated_documents` is read nowhere.

  • accepts null

Example

{
  "correlated_invoices": [
    "<MARK>"
  ]
}
correlated_entitiesarray of objectsOptionalNot used by flexyA list of other correlated entities (tax representative, intermediary, carrier and so on) with their details.#

A list of other correlated entities (tax representative, intermediary, carrier and so on) with their details.

When it is used

The field is accepted and stored but no provider reads it; to get entities to myDATA as `otherCorrelatedEntities`, send them in `provider_details.other_correlated_entities` (shape `type` plus `entity_data` with `vat_number`, `country`, `branch` and an optional `name`).

  • accepts null

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789",
        "name": "Express Logistics ΑΕ"
      }
    }
  ]
}
typeintegerRequiredNot used by flexyThe category of the correlated entity, per AADE table 8.20 (entity category).#

The category of the correlated entity, per AADE table 8.20 (entity category).

When it is required

Required on every element of `correlated_entities`.

When it is used

On every entity you send in `correlated_entities`; the field is not transmitted to AADE from this path.

  • minimum 1
  • maximum 6

Allowed values

ValueMeaning
1Tax representative
2Intermediary
3Carrier
4Recipient of the sender (seller)
5Sender (seller)
6Other correlated entities

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789"
      }
    }
  ]
}
partyobjectRequiredNot used by flexyThe identification and contact details of the correlated entity (ΑΦΜ, country, branch, name, address).#

The identification and contact details of the correlated entity (ΑΦΜ, country, branch, name, address).

When it is required

Required on every element of `correlated_entities`.

When it is used

On every entity you send in `correlated_entities`; it is not transmitted to AADE from this path.

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789",
        "name": "Express Logistics ΑΕ",
        "email": "[email protected]",
        "phone": "+302101234567"
      }
    }
  ]
}
branch_codeintegerRequiredNot used by flexyThe entity's branch number; `0` for the head office.#

The entity's branch number; `0` for the head office.

When it is required

Required when you send `correlated_entities[].party`.

When it is used

On every `party` of `correlated_entities`; it is not transmitted to AADE from this path.

  • maximum 255

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789"
      }
    }
  ]
}
country_codestringRequiredNot used by flexyThe country the entity is registered in, as a two-letter code.#

The country the entity is registered in, as a two-letter code.

When it is required

Required when you send `correlated_entities[].party`.

When it is used

On every `party` of `correlated_entities`; it is not transmitted to AADE from this path.

  • up to 2 characters

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789"
      }
    }
  ]
}
vat_numberstringRequiredNot used by flexyThe correlated entity's VAT number, **without** a country prefix.#

The correlated entity's VAT number, **without** a country prefix.

When it is required

Required when you send `correlated_entities[].party`.

When it is used

On every `party` of `correlated_entities`; it is not transmitted to AADE from this path.

  • up to 20 characters

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789"
      }
    }
  ]
}
namestringOptionalNot used by flexyThe correlated entity's legal name.#

The correlated entity's legal name.

When it is used

Optional, for readability; it is not transmitted to AADE from this path.

  • up to 255 characters
  • accepts null

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789",
        "name": "Express Logistics ΑΕ"
      }
    }
  ]
}
emailemailOptionalNot used by flexyA contact email address for the correlated entity.#

A contact email address for the correlated entity.

When it is used

Optional; it is not transmitted to AADE from this path.

  • up to 100 characters
  • accepts null

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789",
        "email": "[email protected]"
      }
    }
  ]
}
phonestringOptionalNot used by flexyA contact phone number for the correlated entity.#

A contact phone number for the correlated entity.

When it is used

Optional; it is not transmitted to AADE from this path.

  • up to 20 characters
  • accepts null

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789",
        "phone": "+302101234567"
      }
    }
  ]
}
addressobjectOptionalNot used by flexyThe correlated entity's address, in the API's shared address shape.#

The correlated entity's address, in the API's shared address shape.

When it is used

Optional, for carriers or delivery parties for instance; it is not transmitted to AADE from this path, and if you send the object then `address_line`, `city`, `zip` and `country` become required.

  • accepts null

Example

{
  "correlated_entities": [
    {
      "type": 3,
      "party": {
        "branch_code": 0,
        "country_code": "GR",
        "vat_number": "123456789",
        "address": {
          "address_line": "Κηφισίας 100",
          "city": "Αθήνα",
          "state": "Αττική",
          "zip": "15125",
          "country": "GR"
        }
      }
    }
  ]
}
address_linestringRequiredNot used by flexyThe address as a single line (street and number together).#

The address as a single line (street and number together).

When it is required

Required when you send `correlated_entities[].party.address`.

When it is used

On every entity address in `correlated_entities`; it is not transmitted to AADE from this path.

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR"
  }
}
streetstringOptionalNot used by flexyThe street name of the address, separate from the number.#

The street name of the address, separate from the number.

When it is used

Optional, when you want a structured address instead of a single line; it is not transmitted to AADE from this path.

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "street": "Κηφισίας",
    "number": "100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR"
  }
}
numberstringOptionalNot used by flexyThe street number of the address, separate from the street name.#

The street number of the address, separate from the street name.

When it is used

Optional, alongside `street`, when you want a structured address; it is not transmitted to AADE from this path.

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "street": "Κηφισίας",
    "number": "100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR"
  }
}
citystringRequiredNot used by flexyThe city of the address.#

The city of the address.

When it is required

Required when you send `correlated_entities[].party.address`.

When it is used

On every entity address in `correlated_entities`; it is not transmitted to AADE from this path.

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR"
  }
}
statestringOptionalNot used by flexyThe state, county or region of the address.#

The state, county or region of the address.

When it is used

Optional; it is not transmitted to AADE from this path.

  • accepts null

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "city": "Αθήνα",
    "state": "Αττική",
    "zip": "15125",
    "country": "GR"
  }
}
zipstringRequiredNot used by flexyThe postal code of the address.#

The postal code of the address.

When it is required

Required when you send `correlated_entities[].party.address`.

When it is used

On every entity address in `correlated_entities`; it is not transmitted to AADE from this path.

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR"
  }
}
countrystringRequiredNot used by flexyThe country of the address, as a two-letter code.#

The country of the address, as a two-letter code.

When it is required

Required when you send `correlated_entities[].party.address`.

When it is used

On every entity address in `correlated_entities`; it is not transmitted to AADE from this path.

  • up to 2 characters

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR"
  }
}
branch_codeintegerOptionalNot used by flexyThe branch number that corresponds to this address.#

The branch number that corresponds to this address.

When it is used

Optional, when the address belongs to a specific branch; it is not transmitted to AADE from this path, and for the entity itself the branch is given in `correlated_entities[].party.branch_code`.

  • accepts null

Example

{
  "address": {
    "address_line": "Κηφισίας 100",
    "city": "Αθήνα",
    "zip": "15125",
    "country": "GR",
    "branch_code": 0
  }
}
payment_methodsarray of objectsOptionalNot used by flexyA top-level list of payment means.#

A top-level list of payment means. No provider reads it: only `provider_details.payment_methods` is read, or as a fallback `provider_details.payment_method_type` together with `totals.payable_amount`, so use `provider_details.payment_methods` instead.

When it is required

On 1.1/1.2/1.3 and 11.x either this or the older `provider_details.payment_method_type` is required, while on other kinds the requirement depends on the document type.

  • accepts null
typeintegerRequiredNot used by flexyThe payment means code (PEPPOL BT-81, 1-8).#

The payment means code (PEPPOL BT-81, 1-8). Required, and transmitted as `type` inside `paymentMethodDetails` when read from `provider_details.payment_methods`, and by Oxygen as well.

When it is used

Not read for myDATA; send the list in `provider_details.payment_methods` instead.

  • minimum 1
  • maximum 8

Allowed values

Values 1-8 come from Appendix §8.12 of the myDATA REST API.

ValueMeaning
1Domestic Business Payments Account
2Foreign Business Payments Account
3Cash
4Cheque
5On credit (deferred payment)
6Web Banking
7POS / e-POS (card payment at the terminal)
8Direct IRIS Payments
amountdecimalRequiredNot used by flexyThe amount paid by this means.#

The amount paid by this means. Required, up to 15 digits with 2 decimal places and a minimum of 0.01; the sum of all the amounts must equal `totals.payable_amount`, and, when read from `provider_details.payment_methods`, it is transmitted as `amount` inside `paymentMethodDetails`.

When it is used

Not read for myDATA; send the list in `provider_details.payment_methods` instead.

  • 15 digits in total
  • 2 decimal places
  • minimum 0.01
infostringOptionalNot used by flexyFree text with payment information (for example "Cheque #123456", "Card ****1234").#

Free text with payment information (for example "Cheque #123456", "Card ****1234"). An empty `paymentMethodInfo` is always transmitted to myDATA regardless of the content, so your value is ignored.

When it is used

It is not transmitted to myDATA; use `extra_fields` if you want it stored with the document for audit.

  • up to 255 characters
  • accepts null
tip_amountdecimalOptionalNot used by flexyThe tip amount, only for hospitality documents (types 11.1-11.5).#

The tip amount, only for hospitality documents (types 11.1-11.5). No provider reads it: it is stored with the document and no corresponding element is transmitted.

When it is used

Send it only on hospitality documents 11.1-11.5; it is not forwarded to AADE.

  • 15 digits in total
  • 2 decimal places
  • accepts null
transaction_idstringOptionalNot used by flexyA transaction identifier (a POS payment id or a Stripe charge id, for instance).#

A transaction identifier (a POS payment id or a Stripe charge id, for instance). No provider reads it: it is stored with the document and, even when the card payment example sends it, the value never reaches the XML.

When it is used

Send it for audit and payment reconciliation; it is not forwarded to AADE, and you can use `extra_fields` if you need to.

  • up to 255 characters
  • accepts null
signaturestringOptionalNot used by flexyA Base64 digital signature for verifying the payment, rarely used.#

A Base64 digital signature for verifying the payment, rarely used. No provider reads it and it is stored with the document; for the POS payment-signature flow there is a separate path, `/api/v1/signatures/`.

  • accepts null
extra_fieldsjsonOptionalNot used by flexyA free-form JSON object for provider-specific metadata (gateway ids or fields of your own, for instance).#

A free-form JSON object for provider-specific metadata (gateway ids or fields of your own, for instance). No provider reads it and it is stored with the document.

  • accepts null
credit_transferobjectOptionalNot used by flexyBank transfer details (PEPPOL BG-17).#

Bank transfer details (PEPPOL BG-17). No provider reads this nested object: only `type`, `amount` and an empty `paymentMethodInfo` are transmitted to myDATA per entry, and the details serve only the B2G checks.

When it is required

Required on B2G documents when `type=3` (credit transfer), and optional on B2B.

  • accepts null

Example

{
  "payment_methods": [
    {
      "type": 3,
      "amount": "100.00",
      "credit_transfer": {
        "account_id": "GR1601101250000000012300695",
        "account_name": "Test Company ΕΠΕ",
        "institution_id": "ETHNGRAA",
        "payment_id": "INV-2025-001"
      }
    }
  ]
}
account_idstringRequiredNot used by flexyThe account IBAN: a 2-letter country code, 2 check digits and up to 30 alphanumeric characters; Greek IBANs are 27 characters long and start with `GR`.#

The account IBAN: a 2-letter country code, 2 check digits and up to 30 alphanumeric characters; Greek IBANs are 27 characters long and start with `GR`. It is not transmitted to myDATA.

When it is required

Required if you send `credit_transfer` (a B2G credit transfer).

  • up to 255 characters
account_namestringRequiredNot used by flexyThe legal name of the bank account holder, which must match the bank's records.#

The legal name of the bank account holder, which must match the bank's records. It is not transmitted to myDATA.

When it is required

Required if you send `credit_transfer`.

  • up to 255 characters
institution_idstringRequiredNot used by flexyThe BIC or SWIFT code (8 or 11 characters), for example `ETHNGRAA` (National Bank), `PIRBGRAA` (Piraeus), `ERBKGRAA` (Eurobank).#

The BIC or SWIFT code (8 or 11 characters), for example `ETHNGRAA` (National Bank), `PIRBGRAA` (Piraeus), `ERBKGRAA` (Eurobank). It is not transmitted to myDATA.

When it is required

Required if you send `credit_transfer`.

  • up to 255 characters
payment_idstringRequiredNot used by flexyThe payment reference (an invoice number or a unique identifier, for instance).#

The payment reference (an invoice number or a unique identifier, for instance). It is not transmitted to myDATA.

When it is required

Required if you send `credit_transfer`.

  • up to 255 characters
vehiclesarray of stringsOptionalNot used by flexyA list of vehicle registration numbers.#

A list of vehicle registration numbers.

When it is used

The field is accepted and stored but no provider reads it; to declare a vehicle send `dispatch.vehicle_number` (or `provider_details.vehicle_number`), since myDATA has a single `vehicleNumber` in the `invoiceHeader` rather than a list.

  • up to 15 characters
  • accepts null

Example

{
  "vehicles": [
    "ΑΒΓ-1234"
  ]
}
classificationsarray of objectsOptionalNot used by flexyA list of income/expense classifications at document or line level, with an amount per classification.#

A list of income/expense classifications at document or line level, with an amount per classification.

When it is used

The field is accepted and stored but no provider reads it; the classifications that reach myDATA come from `items[].provider_details` (`classification_category`, `classification_type`, `vat_classification_category`) or from `items[].classifications`.

  • accepts null

Example

{
  "classifications": [
    {
      "line_number": null,
      "category": "E3_561_001",
      "type": "category1_1",
      "amount": "100.00"
    }
  ]
}
line_numberintegerOptionalNot used by flexyThe line number the classification refers to; `null` means a document-level classification.#

The line number the classification refers to; `null` means a document-level classification.

When it is used

When the classification concerns a specific line; it is not transmitted to AADE from this path.

  • maximum 255
  • accepts null

Example

{
  "classifications": [
    {
      "line_number": 1,
      "category": "E3_561_001",
      "type": "category1_1",
      "amount": "100.00"
    }
  ]
}
categorystringOptionalNot used by flexyThe income/expense category code of the classification.#

The income/expense category code of the classification.

When it is used

Together with `classifications[].type` and `classifications[].amount`; it is not transmitted to AADE from this path.

  • up to 50 characters
  • accepts null

Example

{
  "classifications": [
    {
      "line_number": null,
      "category": "E3_561_001",
      "type": "category1_1",
      "amount": "100.00"
    }
  ]
}
typestringOptionalNot used by flexyThe classification type code.#

The classification type code.

When it is used

Together with `classifications[].category` and `classifications[].amount`; it is not transmitted to AADE from this path.

  • accepts null

Example

{
  "classifications": [
    {
      "line_number": null,
      "category": "E3_561_001",
      "type": "category1_1",
      "amount": "100.00"
    }
  ]
}
amountdecimalRequiredNot used by flexyThe amount allocated to the classification.#

The amount allocated to the classification.

When it is required

Required on every element of `classifications`.

When it is used

On every classification you send; it is not transmitted to AADE from this path and does not take part in the `totals` checks.

  • 15 digits in total
  • 2 decimal places

Example

{
  "classifications": [
    {
      "line_number": null,
      "category": "E3_561_001",
      "type": "category1_1",
      "amount": "100.00"
    }
  ]
}
extra_fieldsjsonOptionalNot used by flexyA free-form JSON object for extra data of your own that the other fields do not cover.#

A free-form JSON object for extra data of your own that the other fields do not cover.

When it is used

When you want to keep extra metadata with the document; it is stored and returned by the `GET` endpoints, but no provider reads it and it is not transmitted to AADE.

  • accepts null

Example

{
  "extra_fields": {
    "metadata": {
      "project_code": "ABC-123",
      "department": "IT"
    }
  }
}
optionsobjectOptionalNot used by flexyOptions at the top level of the request.#

Options at the top level of the request. They are accepted but no provider reads them; use `provider_details.options` (B2G/Oxygen) instead.

When it is used

Ignored with every provider.

  • accepts null
is_peppolbooleanOptionalNot used by flexyThe top-level `is_peppol`; it is not used.#

The top-level `is_peppol`; it is not used. Send `provider_details.options.is_peppol` instead.

ignore_classificationsbooleanOptionalNot used by flexyThe top-level `ignore_classifications`; it is not used.#

The top-level `ignore_classifications`; it is not used.

payment_termsstringOptionalNot used by flexyThe top-level `payment_terms`; it is not used.#

The top-level `payment_terms`; it is not used. Send `provider_details.payment_terms` instead.

  • accepts null
payment_due_datedateOptionalNot used by flexyThe top-level `payment_due_date`; it is not used.#

The top-level `payment_due_date`; it is not used. Send `dispatch.payment_due_date` instead.

  • accepts null
billing_referencestringOptionalNot used by flexyThe top-level `billing_reference`; it is not used.#

The top-level `billing_reference`; it is not used.

  • accepts null
contractobjectOptionalNot used by flexyThe top-level `contract`; it is not used.#

The top-level `contract`; it is not used. Send `provider_details.contract` instead.

  • accepts null
contract_idstringOptionalNot used by flexyThe top-level `contract.contract_id`; it is not used.#

The top-level `contract.contract_id`; it is not used.

  • up to 255 characters
  • accepts null
contract_referencestringOptionalNot used by flexyThe top-level `contract.contract_reference`; it is not used.#

The top-level `contract.contract_reference`; it is not used.

  • up to 255 characters
  • accepts null
buyer_referencestringOptionalNot used by flexyThe top-level `buyer_reference`; it is not used.#

The top-level `buyer_reference`; it is not used.

  • up to 255 characters
  • accepts null
project_referencestringOptionalNot used by flexyThe top-level `project_reference`; it is not used.#

The top-level `project_reference`; it is not used.

  • up to 255 characters
  • accepts null
document_referencestringOptionalNot used by flexyThe top-level `document_reference`; it is not used.#

The top-level `document_reference`; it is not used.

  • up to 255 characters
  • accepts null
order_referencestringOptionalNot used by flexyThe top-level `order_reference`; it is not used.#

The top-level `order_reference`; it is not used.

  • up to 255 characters
  • accepts null
invoice_periodobjectOptionalNot used by flexyThe top-level `invoice_period`; it is not used.#

The top-level `invoice_period`; it is not used.

  • accepts null
start_datedateRequiredNot used by flexyThe top-level `invoice_period.start_date`; it is not used.#

The top-level `invoice_period.start_date`; it is not used.

When it is required

Only if you send `options.invoice_period`, which is not recommended.

end_datedateRequiredNot used by flexyThe top-level `invoice_period.end_date`; it is not used.#

The top-level `invoice_period.end_date`; it is not used.

When it is required

Only if you send `options.invoice_period`, which is not recommended.

description_codestringOptionalNot used by flexyThe top-level `invoice_period.description_code`; it is not used.#

The top-level `invoice_period.description_code`; it is not used.

  • up to 255 characters
  • accepts null