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.
- 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.
| Value | Meaning |
|---|---|
flexy | Transmission through Flexy as your ΥΠΑΗΕΣ (requires declaring Flexy as your provider at Taxisnet) |
mydata | Direct transmission to myDATA with your own AADE credentials |
oxygen | Transmission 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
| Value | Meaning |
|---|---|
true | Self-pricing (`selfPricing` = true) |
false | Normal 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
| Value | Meaning |
|---|---|
true | Collection on behalf of third parties (`thirdPartyCollection` = true) |
false | Normal 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
| Value | Meaning |
|---|---|
true | VAT payment suspended |
false | Normal 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
| Value | Meaning |
|---|---|
true | Invoice that is also a delivery note (`isDeliveryNote` = true) |
false | Plain 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.
| Value | Meaning |
|---|---|
1 | The 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
| Value | Meaning |
|---|---|
true | Public-sector (B2G) document |
false | Private-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.
| Value | Meaning |
|---|---|
1.1 | Sales Invoice |
1.2 | Sales Invoice / Intra-EU Deliveries |
1.3 | Sales Invoice / Third-Country Deliveries |
1.4 | Sales Invoice / Sale on Behalf of Third Party |
1.5 | Sales Invoice / Third-Party Settlement |
1.6 | Sales Invoice / Supplementary |
2.1 | Service Invoice |
2.2 | Service Invoice / Intra-EU Service Provision |
2.3 | Service Invoice / Service to Third-Country Recipient |
2.4 | Service Invoice / Supplementary |
3.1 | Title of Ownership (Non-Obligated Issuer) |
3.2 | Title of Ownership (Issuer Refused to Issue) |
5.1 | Credit Note / Associated |
5.2 | Credit Note / Non-Associated |
6.1 | Self-Delivery Document |
6.2 | Self-Use Document |
7.1 | Contract Income |
8.1 | Rent Income |
8.2 | Climate Resilience Fee |
8.4 | POS Collection Receipt |
8.5 | POS Return Receipt |
8.6 | Restaurant Order Slip |
9.1 | Delivery Note (Associated) |
9.2 | Aggregate Delivery Note |
9.3 | Delivery Note (Non-Associated) |
10.1 | Quantity Receipt (Associated) |
10.2 | Quantity Receipt (Non-Associated) |
11.1 | Retail Sales Receipt (ALP) |
11.2 | Retail Service Receipt (APY) |
11.3 | Simplified Invoice |
11.4 | Retail Credit Voucher |
11.5 | ALP / 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.
| Value | Meaning |
|---|---|
1 | Domestic Payments Business Account (on B2G it fails without an IBAN) |
2 | Foreign Payments Business Account (rejected by PEPPOL and provider `oxygen`) |
3 | Cash (instant settlement; triggers an automatic transactional document) |
4 | Cheque (rejected by PEPPOL and provider `oxygen`) |
5 | On Credit (the B2G-safe default; requires a zero IBAN) |
6 | Web Banking (rejected by PEPPOL and provider `oxygen`) |
7 | POS / e-POS (instant settlement; triggers an automatic transactional document) |
8 | IRIS 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
| Value | Meaning |
|---|---|
1 | Subsidies |
2 | Hotel Retail Revenue - Room Charges |
3 | Accounting Entry |
4 | Tax Free |
5 | Composite domestic-foreign transactions |
6 | Beneficiaries of article 3, KYA 139818 ΕΞ2022/28.09.2022 |
7 | Purchase of agricultural goods / services - Article 41 VAT |
10 | EFY retail revenue (deviation) |
11 | Heating allowance |
12 | Catering 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_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
| Value | Meaning |
|---|---|
1 | Not obligated to issue |
2 | Refused to issue / Inadvertently not issued |
3 | Intra-EU acquisition |
4 | Third-country acquisition |
5 | Reverse 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.
| Value | Meaning |
|---|---|
1 | Sale |
2 | Sale on behalf of third party |
3 | Sampling |
4 | Exhibition |
5 | Return |
7 | Processing - Assembly - Disassembly |
8 | Internal movement |
9 | Purchase |
10 | Ship and aircraft supply |
11 | Free provision |
12 | Warranty |
13 | Loan for use |
14 | Storage at third parties |
19 | Other movements (requires other_move_purpose_title) |
20 | Transportation - Express delivery |
Example
{
"provider_details": {
"document_type": "9.3",
"move_purpose": "1"
}
}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
}
}
}legal_namestringRequiredThe issuer's registered legal name (ΓΕΜΗ or business registry).#
The issuer's registered legal name (ΓΕΜΗ or business registry). It has no maximum length and is transmitted as a text element in the myDATA XML.
When it is used
Always; a required field inside `issuer`.
Example
{
"issuer": {
"legal_name": "Test Company ΕΠΕ"
}
}legal_numberstringRequiredThe issuer's VAT number with country prefix (for example `EL123456789` or `GR123456789`); the provider strips the `EL` and `GR` prefixes before transmission and keeps the 9-digit number.#
The issuer's VAT number with country prefix (for example `EL123456789` or `GR123456789`); the provider strips the `EL` and `GR` prefixes before transmission and keeps the 9-digit number. With the flexy provider the VAT number must match that of the declared API client.
When it is used
Always; required, and it must match the declared API client's VAT number.
Example
{
"issuer": {
"legal_number": "EL123456789"
}
}legal_activitystringOptionalNot used by flexyA description of the issuer's business activity.#
A description of the issuer's business activity. It is not forwarded to the myDATA XML and provider `oxygen` does not read it; it is simply stored.
When it is used
Optional; free text for information only.
Example
{
"issuer": {
"legal_activity": "Χονδρικό Εμπόριο"
}
}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
}
}
}legal_namestringRequiredThe counterpart's legal name.#
The counterpart's legal name. On types 1.2 and 1.3 (non-Greek) it is always transmitted, on a domestic 1.1 only when the country is not `GR`, and on 3.1 and 3.2 it is explicitly required.
When it is required
Required when you send `counterpart`.
When it is used
Always inside `counterpart`; on types 3.1 and 3.2 it is checked explicitly.
Example
{
"counterpart": {
"legal_name": "Customer Company ΑΕ"
}
}legal_numberstringRequiredThe counterpart's VAT or tax number, with country prefix (for example `EL123456789`, `DE000000000`).#
The counterpart's VAT or tax number, with country prefix (for example `EL123456789`, `DE000000000`). The provider strips the `EL` or `GR` prefix before transmission.
When it is required
Required when you send `counterpart`, and on type 9.2 (consolidated delivery note) `legal_number` = `000000000` is enforced.
When it is used
Always inside `counterpart`; for type 9.2 the value must be `000000000`.
Example
{
"counterpart": {
"legal_number": "EL123456789"
}
}legal_activitystringOptionalNot used by flexyA description of the counterpart's business activity.#
A description of the counterpart's business activity. It is not forwarded to the myDATA XML and provider `oxygen` does not read it.
When it is used
Optional; informational.
Example
{
"counterpart": {
"legal_activity": "Λιανικό Εμπόριο"
}
}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.
| Value | Meaning |
|---|---|
1 | Sale |
2 | Sale on behalf of third party |
3 | Sampling |
4 | Exhibition |
5 | Return |
7 | Processing - Assembly - Disassembly |
8 | Internal movement |
9 | Purchase |
10 | Ship and aircraft supply |
11 | Free provision |
12 | Warranty |
13 | Loan for use |
14 | Storage at third parties |
19 | Other movements (requires other_move_purpose_title) |
20 | Transportation - 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
| Value | Meaning |
|---|---|
1 | Special withholding-tax line (reserved) |
2 | Fee line with VAT |
3 | Other-taxes line with VAT |
4 | Special digital-transaction-fee line (reserved) |
5 | Special deductions line (reserved) |
6 | Gift voucher |
7 | Negative 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
| Value | Meaning |
|---|---|
1 | Goods / Sale |
2 | Services / 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.
| Value | Meaning |
|---|---|
1 | Pieces (from `ΤΕΜ`) |
2 | Kilograms (from `KG`) |
3 | Litres (from `LT`) |
4 | Metres (from `ΜΕΤΡΑ`) |
5 | Square metres (from `ΤΕΤΡΑΓΩΝΙΚΑ ΜΕΤΡΑ`) |
6 | Cubic metres (from `ΚΥΒΙΚΑ ΜΕΤΡΑ`) |
7 | Pieces, 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
| Value | Meaning |
|---|---|
1 | Line discount |
2 | Document 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.
| Value | Meaning |
|---|---|
vat | VAT (the canonical symbolic name) |
withholding | Withholding Tax |
stamp_duty | Stamp Duty / Digital Transaction Fee |
fees | Fees |
other_tax | Other Taxes (alternative name) |
other_taxes | Other Taxes |
deduction | Deductions (alternative name) |
deductions | Deductions |
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
| Value | Meaning |
|---|---|
percentage | Percentage (24% of the net value, for instance) |
amount | Fixed amount in euros (an accepted alternative name) |
actual_amount | Fixed 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
| Value | Meaning |
|---|---|
+ | 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.
| Value | Meaning |
|---|---|
WH_INTEREST_15 | Withholding: Case b' Interest 15% (§8.4 #1) |
WH_ROYALTIES_20 | Withholding: Case c' Royalties 20% (§8.4 #2) |
WH_CONSULTANCY_20 | Withholding: Case d' Management consultancy fees 20% (§8.4 #3) |
WH_TECHNICAL_3 | Withholding: Case d' Technical works 3% (§8.4 #4) |
WH_FUEL_TOBACCO_1 | Withholding: Liquid fuels & tobacco 1% (§8.4 #5) |
WH_OTHER_GOODS_4 | Withholding: Other goods 4% (§8.4 #6) |
WH_SERVICES_8 | Withholding: Provision of services 8% (§8.4 #7) |
WH_ARCH_ENG_STUDIES_4 | Withholding: Arch/Eng studies & plans 4% (§8.4 #8) |
WH_ARCH_ENG_OTHER_10 | Withholding: Arch/Eng other works 10% (§8.4 #9) |
WH_LAWYERS_15 | Withholding: Pre-paid tax on lawyer fees 15% (§8.4 #10) |
WH_NAVY_OFFICERS | Withholding: Employee par.2 art.15 - Merchant Navy Officers (§8.4 #12) |
WH_NAVY_CREW | Withholding: Employee par.2 art.15 - Merchant Navy Lower Crew (§8.4 #13) |
WH_OTHER | Withholding: Other tax withholdings (§8.4 #17) |
FEE_MOBILE_12_50 | Fee: Monthly bill up to 50€ 12% (§8.7 #1) |
FEE_MOBILE_15_100 | Fee: Monthly bill 50.01-100€ 15% (§8.7 #2) |
FEE_MOBILE_18_150 | Fee: Monthly bill 100.01-150€ 18% (§8.7 #3) |
FEE_MOBILE_20_150PLUS | Fee: Monthly bill from 150.01€ 20% (§8.7 #4) |
FEE_PREPAID_12 | Prepaid mobile fee 12% (§8.7 #5) |
FEE_SUBSCRIPTION_TV_10 | Subscription TV fee 10% (§8.7 #6) |
FEE_LANDLINE_5 | Landline subscriber fee 5% (§8.7 #7) |
FEE_OTHER | Other fees (§8.7 #10) |
FEE_TOURISM | Tourist accommodation fee (§8.7 #18) |
HOTEL_1_2_WINTER | Other tax: Hotels 1-2 stars (winter) (§8.5 #6) |
HOTEL_3_WINTER | Other tax: Hotels 3 stars (winter) (§8.5 #7) |
HOTEL_4_WINTER | Other tax: Hotels 4 stars (winter) (§8.5 #8) |
HOTEL_5_WINTER | Other tax: Hotels 5 stars (winter) (§8.5 #9) |
FURNISHED_WINTER | Other tax: Furnished rooms-apartments (winter) (§8.5 #10) |
SHORT_TERM_WINTER | Other tax: Short-term rental properties (winter) (§8.5 #28) |
SHORT_TERM_80SQM_WINTER | Other tax: Short-term single-house >80 sqm (winter) (§8.5 #29) |
SELF_SERVICE_WINTER | Other tax: Self-service accommodation - villas (winter) (§8.5 #30) |
SELF_SERVICE_U80_WINTER | Other tax: Tourist furnished residences <80 sqm (winter, category §8.5 #30) |
HOTEL_1_2_SUMMER | Other tax: Hotels 1-2 stars (summer) (§8.5 #20) |
HOTEL_3_SUMMER | Other tax: Hotels 3 stars (summer) (§8.5 #21) |
HOTEL_4_SUMMER | Other tax: Hotels 4 stars (summer) (§8.5 #22) |
HOTEL_5_SUMMER | Other tax: Hotels 5 stars (summer) (§8.5 #23) |
FURNISHED_SUMMER | Other tax: Furnished rooms-apartments (summer) (§8.5 #24) |
SHORT_TERM_SUMMER | Other tax: Short-term rental properties (summer) (§8.5 #25) |
SHORT_TERM_80SQM_SUMMER | Other tax: Short-term single-house >80 sqm (summer) (§8.5 #26) |
SELF_SERVICE_SUMMER | Other tax: Self-service accommodation - villas (summer) (§8.5 #27) |
SELF_SERVICE_U80_SUMMER | Other tax: Tourist furnished residences <80 sqm (summer, category §8.5 #27) |
EXCISE_DUTY | Other tax: Excise Duty (ΕΦΚ) (§8.5 #19) |
OTHER_TAX | Other tax: Other taxes (§8.5 #17) |
OTHER_TAX_CHARGES | Other tax: Other tax surcharges (§8.5 #18) |
STAMP_1_2 | Digital transaction fee: Rate 1.2% (§8.6 #1) |
STAMP_2_4 | Digital transaction fee: Rate 2.4% (§8.6 #2) |
STAMP_3_6 | Digital 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
| Value | Meaning |
|---|---|
true | The tax is VAT |
false | The tax is not VAT |
null | Not 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.
| Value | Meaning |
|---|---|
WH_INTEREST_15 | Withholding: Case b' Interest 15% (§8.4 #1) |
WH_ROYALTIES_20 | Withholding: Case c' Royalties 20% (§8.4 #2) |
WH_CONSULTANCY_20 | Withholding: Case d' Management consultancy fees 20% (§8.4 #3) |
WH_TECHNICAL_3 | Withholding: Case d' Technical works 3% (§8.4 #4) |
WH_FUEL_TOBACCO_1 | Withholding: Liquid fuels & tobacco 1% (§8.4 #5) |
WH_OTHER_GOODS_4 | Withholding: Other goods 4% (§8.4 #6) |
WH_SERVICES_8 | Withholding: Provision of services 8% (§8.4 #7) |
WH_ARCH_ENG_STUDIES_4 | Withholding: Arch/Eng studies & plans 4% (§8.4 #8) |
WH_ARCH_ENG_OTHER_10 | Withholding: Arch/Eng other works 10% (§8.4 #9) |
WH_LAWYERS_15 | Withholding: Pre-paid tax on lawyer fees 15% (§8.4 #10) |
WH_NAVY_OFFICERS | Withholding: Employee par.2 art.15 - Merchant Navy Officers (§8.4 #12) |
WH_NAVY_CREW | Withholding: Employee par.2 art.15 - Merchant Navy Lower Crew (§8.4 #13) |
WH_OTHER | Withholding: Other tax withholdings (§8.4 #17) |
FEE_MOBILE_12_50 | Fee: Monthly bill up to 50€ 12% (§8.7 #1) |
FEE_MOBILE_15_100 | Fee: Monthly bill 50.01-100€ 15% (§8.7 #2) |
FEE_MOBILE_18_150 | Fee: Monthly bill 100.01-150€ 18% (§8.7 #3) |
FEE_MOBILE_20_150PLUS | Fee: Monthly bill from 150.01€ 20% (§8.7 #4) |
FEE_PREPAID_12 | Prepaid mobile fee 12% (§8.7 #5) |
FEE_SUBSCRIPTION_TV_10 | Subscription TV fee 10% (§8.7 #6) |
FEE_LANDLINE_5 | Landline subscriber fee 5% (§8.7 #7) |
FEE_OTHER | Other fees (§8.7 #10) |
FEE_TOURISM | Tourist accommodation fee (§8.7 #18) |
HOTEL_1_2_WINTER | Other tax: Hotels 1-2 stars (winter) (§8.5 #6) |
HOTEL_3_WINTER | Other tax: Hotels 3 stars (winter) (§8.5 #7) |
HOTEL_4_WINTER | Other tax: Hotels 4 stars (winter) (§8.5 #8) |
HOTEL_5_WINTER | Other tax: Hotels 5 stars (winter) (§8.5 #9) |
FURNISHED_WINTER | Other tax: Furnished rooms-apartments (winter) (§8.5 #10) |
SHORT_TERM_WINTER | Other tax: Short-term rental properties (winter) (§8.5 #28) |
SHORT_TERM_80SQM_WINTER | Other tax: Short-term single-house >80 sqm (winter) (§8.5 #29) |
SELF_SERVICE_WINTER | Other tax: Self-service accommodation - villas (winter) (§8.5 #30) |
SELF_SERVICE_U80_WINTER | Other tax: Tourist furnished residences <80 sqm (winter, category §8.5 #30) |
HOTEL_1_2_SUMMER | Other tax: Hotels 1-2 stars (summer) (§8.5 #20) |
HOTEL_3_SUMMER | Other tax: Hotels 3 stars (summer) (§8.5 #21) |
HOTEL_4_SUMMER | Other tax: Hotels 4 stars (summer) (§8.5 #22) |
HOTEL_5_SUMMER | Other tax: Hotels 5 stars (summer) (§8.5 #23) |
FURNISHED_SUMMER | Other tax: Furnished rooms-apartments (summer) (§8.5 #24) |
SHORT_TERM_SUMMER | Other tax: Short-term rental properties (summer) (§8.5 #25) |
SHORT_TERM_80SQM_SUMMER | Other tax: Short-term single-house >80 sqm (summer) (§8.5 #26) |
SELF_SERVICE_SUMMER | Other tax: Self-service accommodation - villas (summer) (§8.5 #27) |
SELF_SERVICE_U80_SUMMER | Other tax: Tourist furnished residences <80 sqm (summer, category §8.5 #27) |
EXCISE_DUTY | Other tax: Excise Duty (ΕΦΚ) (§8.5 #19) |
OTHER_TAX | Other tax: Other taxes (§8.5 #17) |
OTHER_TAX_CHARGES | Other tax: Other tax surcharges (§8.5 #18) |
STAMP_1_2 | Digital transaction fee: Rate 1.2% (§8.6 #1) |
STAMP_2_4 | Digital transaction fee: Rate 2.4% (§8.6 #2) |
STAMP_3_6 | Digital 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
| Value | Meaning |
|---|---|
true | Exclude this line from VAT 195 |
false | Normal 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.
| Value | Meaning |
|---|---|
10 | Unleaded 95 RON |
11 | Unleaded 95 RON+ |
12 | Unleaded 100 RON |
13 | Unleaded LRP |
14 | Aviation gasoline |
15 | Jet fuel (special) |
20 | Diesel |
21 | Diesel Premium |
30 | Heating Diesel |
31 | Heating Diesel Premium |
32 | Diesel Light |
33 | Diesel other uses |
34 | Marine Diesel |
35 | Kerosene JP-1 |
36 | Kerosene other uses |
37 | Fuel oil (Mazout) |
38 | Marine fuel oil (Mazout) |
40 | LPG (liquefied petroleum gas) |
41 | LPG and methane industrial/commercial motor (bulk) |
42 | LPG and methane heating/other (bulk) |
43 | LPG and methane industrial/commercial motor (bottled) |
44 | LPG and methane heating/other (bottled) |
50 | CNG (compressed natural gas) |
60 | Aromatic Hydrocarbons (Tariff class 2707) |
61 | Cyclic Hydrocarbons (Tariff class 2902) |
70 | White spirit |
71 | Light oils |
72 | Biodiesel |
999 | Other 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.
| Value | Meaning |
|---|---|
C62 | Unit or piece |
KGM | Kilogram |
LTR | Litre |
MTR | Metre |
HUR | Hour |
TNE | Tonne |
BX | Box |
PK | Pack |
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).
| Value | Meaning |
|---|---|
category1_1 | Income from Sale of Goods |
category1_2 | Income from Sale of Products |
category1_3 | Income from Provision of Services |
category1_4 | Income from Sale of Fixed Assets |
category1_5 | Other Income/Profits |
category1_6 | Self-deliveries / Self-use |
category1_7 | Income on behalf of third parties |
category1_8 | Income of prior periods |
category1_9 | Income of following periods |
category1_10 | Other Income Adjustment Entries |
category1_95 | Other Income Information Items (no E3 update) |
category2_1 | Goods Purchases |
category2_2 | Raw Materials Purchases |
category2_3 | Receipt of Services |
category2_4 | General Expenses with VAT Deduction Right |
category2_5 | General Expenses without VAT Deduction Right |
category2_6 | Employee Fees and Benefits |
category2_7 | Fixed Asset Purchases |
category2_8 | Fixed Asset Depreciation |
category2_9 | Expenses on behalf of third parties |
category2_10 | Expenses of prior periods |
category2_11 | Expenses of following periods |
category2_12 | Other Expense Adjustment Entries |
category2_13 | Opening Period Inventories |
category2_14 | Closing Period Inventories |
category2_95 | Other Expense Information Items (no E3 update) |
category3 | Movement/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.
| Value | Meaning |
|---|---|
"" | Empty — no E3 update (category1_95 or category3, e.g. 8.2/8.4-8.6, 9.x/10.x) |
E3_102_001 | Goods purchases (net)/Wholesale (category2_1) |
E3_102_002 | Goods purchases (net)/Retail (category2_1, 3.1/3.2/5.2) |
E3_102_003 | Goods purchases (net)/Article 39a par.5 VAT Code goods (category2_1) |
E3_102_004 | Goods purchases (net)/Intra-community (category2_1) |
E3_102_005 | Goods purchases (net)/Third countries (category2_1) |
E3_102_006 | Goods purchases (net)/Other (category2_1) |
E3_202_001 | Raw materials purchases/Wholesale (category2_2) |
E3_202_002 | Raw materials purchases/Retail (category2_2, 3.1/5.2) |
E3_202_003 | Raw materials purchases/Intra-community (category2_2) |
E3_202_004 | Raw materials purchases/Third countries (category2_2) |
E3_202_005 | Raw materials purchases/Other (category2_2) |
E3_302_001 | Raw materials purchases/Agricultural - Wholesale (category2_2) |
E3_302_002 | Raw materials purchases/Agricultural - Retail (category2_2, 3.1/5.2) |
E3_302_003 | Raw materials purchases/Agricultural - Intra-community (category2_2) |
E3_302_004 | Raw materials purchases/Agricultural - Third countries (category2_2) |
E3_302_005 | Raw materials purchases/Agricultural - Other (category2_2) |
E3_313_001 | Animals - plants purchases (net)/Wholesale (category2_2) |
E3_313_002 | Animals - plants purchases (net)/Retail (category2_2, 3.1/5.2) |
E3_313_003 | Animals - plants purchases (net)/Intra-community (category2_2) |
E3_313_004 | Animals - plants purchases (net)/Third countries (category2_2) |
E3_313_005 | Animals - plants purchases (net)/Other (category2_2) |
E3_561_001 | Sales of goods and services/Wholesale - Businesses (category1_1/1_2/1_3/1_5) |
E3_561_002 | Sales 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_003 | Sales of goods and services/Retail - Private clientele (category1_1/1_2/1_3, 11.x) |
E3_561_004 | Sales of goods and services/Retail per Article 39a par.5 (category1_1/1_2/1_3, 11.x) |
E3_561_005 | Sales of goods and services/Intra-community (category1_1-1_5, 1.2/2.2/5.2/11.x) |
E3_561_006 | Sales of goods and services/Third countries (category1_1-1_5, 1.3/2.3/5.2/11.x) |
E3_561_007 | Sales 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_562 | Other ordinary income (category1_5) |
E3_563 | Credit interest and related income (category1_5) |
E3_564 | Credit exchange differences (category1_5) |
E3_565 | Participation income (category1_5) |
E3_566 | Gains from disposal of non-current assets (category1_5) |
E3_567 | Gains from reversal of provisions and impairments (category1_5) |
E3_568 | Gains from fair value measurement (category1_5) |
E3_570 | Unusual income and gains (category1_5) |
E3_581_003 | Employee benefits/Other (category2_6) |
E3_585_001 | Domestic/foreign management fees (category2_4) |
E3_585_002 | Expenses from related companies (category2_4/2_5) |
E3_585_004 | Information event expenses (category2_4) |
E3_585_005 | Reception and hospitality expenses (category2_4/2_5) |
E3_585_006 | Travel expenses (category2_4/2_5) |
E3_585_008 | Order-taker expenses and commissions for farmers (category2_4) |
E3_585_009 | Other domestic service fees (category2_3/2_4/2_5, 1.5 detail_type=1) |
E3_585_011 | Energy (category2_4) |
E3_585_012 | Water supply (category2_4) |
E3_585_013 | Telecommunications (category2_4) |
E3_585_014 | Rent (category2_4, 8.1) |
E3_585_015 | Advertising and promotion (category2_4) |
E3_585_016 | Other expenses (category2_4/2_5, 3.1, 8.1/8.2) |
E3_586 | Debit interest and related expenses (category2_4) |
E3_595 | Self-production expenses / Self-delivery - Self-use (category1_6, types 6.1/6.2/11.x) |
E3_596 | Subsidies - Grants (category1_95, 1.1/3.2) |
E3_597 | Investment-purpose subsidies - cost coverage (category1_95, 1.1/3.2) |
E3_880_001 | Fixed asset sales/Wholesale (category1_4, 1.1/1.5/3.2/5.2/7.1/11.x) |
E3_880_002 | Fixed asset sales/Retail (category1_4, 11.x) |
E3_880_003 | Fixed asset sales/Intra-community (category1_4, 1.2/1.5/5.2/11.x) |
E3_880_004 | Fixed asset sales/Third countries (category1_4, 1.3/1.5/5.2/11.x) |
E3_881_001 | Third-party sales/Wholesale (category1_7, 1.1/1.4/5.2/11.x) |
E3_881_002 | Third-party sales/Retail (category1_7, 11.1/11.3/11.4/11.5) |
E3_881_003 | Third-party sales/Intra-community (category1_7, 1.1/1.2/1.4/5.2/11.x/11.5) |
E3_881_004 | Third-party sales/Third countries (category1_7, 1.1/1.3/1.4/5.2/11.x/11.5) |
E3_882_001 | Tangible fixed asset purchases/Wholesale (category2_7) |
E3_882_002 | Tangible fixed asset purchases/Retail (category2_7, 3.1/5.2) |
E3_882_003 | Tangible fixed asset purchases/Intra-community (category2_7, 2.1/5.2) |
E3_882_004 | Tangible fixed asset purchases/Third countries (category2_7, 2.1/5.2) |
E3_883_001 | Intangible fixed asset purchases/Wholesale (category2_7) |
E3_883_002 | Intangible fixed asset purchases/Retail (category2_7, 3.1/5.2) |
E3_883_003 | Intangible fixed asset purchases/Intra-community (category2_7, 2.1/5.2) |
E3_883_004 | Intangible fixed asset purchases/Third countries (category2_7, 2.1/5.2) |
VAT_361 | Domestic purchases & expenses (1.5 detail_type=1, 3.1/3.2 — only, second expensesClassification) |
VAT_362 | Purchases & 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.
| Value | Meaning |
|---|---|
1 | VAT 24% (standard rate) |
2 | VAT 13% (reduced) |
3 | VAT 6% (super-reduced) |
4 | VAT 17% (Aegean islands, standard) |
5 | VAT 9% (Aegean islands, reduced) |
6 | VAT 4% (Aegean islands, super-reduced, law 5057/2023) |
7 | Exempt (0%); state `vat_exemption_category`, otherwise code 1 is sent |
8 | No-VAT entries (payroll, depreciation, purchases, movement); `vat_exemption_category` is not sent |
9 | VAT 3% (article 31, law 5057/2023) |
10 | VAT 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.
| Value | Meaning |
|---|---|
1 | No VAT, articles 2 and 3 of the VAT Code (the most common) |
2 | No VAT, article 5 of the VAT Code |
3 | No VAT, article 13 of the VAT Code |
4 | No VAT, article 14 of the VAT Code |
5 | No VAT, article 16 of the VAT Code |
6 | No VAT, article 19 of the VAT Code |
7 | No VAT, article 22 of the VAT Code |
8 | No VAT, article 24 of the VAT Code |
9 | No VAT, article 25 of the VAT Code |
10 | No VAT, article 26 of the VAT Code |
11 | No VAT, article 27 of the VAT Code |
12 | No VAT, article 27 of the VAT Code (deep-sea vessels) |
13 | No VAT, article 27.1.γ of the VAT Code (deep-sea vessels) |
14 | No VAT, article 28 of the VAT Code |
15 | No VAT, article 39 of the VAT Code |
16 | No VAT, article 39α of the VAT Code (exports, intra-community) |
17 | No VAT, article 40 of the VAT Code |
18 | No VAT, article 41 of the VAT Code |
19 | No VAT, article 47 of the VAT Code |
20 | VAT included, article 43 of the VAT Code |
21 | VAT included, article 44 of the VAT Code |
22 | VAT included, article 45 of the VAT Code |
23 | VAT included, article 46 of the VAT Code |
24 | No VAT, article 6 of the VAT Code |
25 | No VAT, POL.1029/1995 |
26 | No VAT, POL.1167/2015 |
27 | Other VAT Exemptions |
28 | No VAT, article 24β.1 of the VAT Code (Tax Free) |
29 | No VAT, article 47β of the VAT Code (OSS non-EU) |
30 | No 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.
| Value | Meaning |
|---|---|
1 | Third-party sale line (expense classification, `category2_3` and `E3_585_009`) |
2 | Commission 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.
| Value | Meaning |
|---|---|
vat | VAT |
withholding | Withholding Tax |
stamp_duty | Stamp Duty |
fees | Fees |
other_tax | Other Taxes (alternative name) |
other_taxes | Other Taxes |
deduction | Deductions (alternative name) |
deductions | Deductions |
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
| Value | Meaning |
|---|---|
percentage | Percentage of the total net amount (or net plus VAT when `on_vat` applies) |
amount | Fixed amount in euros |
actual_amount | Fixed 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
| Value | Meaning |
|---|---|
+ | 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.
| Value | Meaning |
|---|---|
WH_INTEREST_15 | Withholding: Interest 15% (§8.4 #1) |
WH_ROYALTIES_20 | Withholding: Royalties 20% (§8.4 #2) |
WH_CONSULTANCY_20 | Withholding: Management consultancy fees 20% (§8.4 #3) |
WH_TECHNICAL_3 | Withholding: Technical works 3% (§8.4 #4) |
WH_FUEL_TOBACCO_1 | Withholding: Liquid fuels & tobacco 1% (§8.4 #5) |
WH_OTHER_GOODS_4 | Withholding: Other goods 4% (§8.4 #6) |
WH_SERVICES_8 | Withholding: Provision of services 8% (§8.4 #7) |
WH_ARCH_ENG_STUDIES_4 | Withholding: Arch/Eng studies 4% (§8.4 #8) |
WH_ARCH_ENG_OTHER_10 | Withholding: Arch/Eng other 10% (§8.4 #9) |
WH_LAWYERS_15 | Withholding: Lawyers 15% (§8.4 #10) |
WH_NAVY_OFFICERS | Withholding: Merchant Navy Officers (§8.4 #12) |
WH_NAVY_CREW | Withholding: Merchant Navy Lower Crew (§8.4 #13) |
WH_OTHER | Withholding: Other tax withholdings (§8.4 #17) |
FEE_MOBILE_12_50 | Fee: Monthly up to 50€ 12% (§8.7 #1) |
FEE_MOBILE_15_100 | Fee: Monthly 50.01-100€ 15% (§8.7 #2) |
FEE_MOBILE_18_150 | Fee: Monthly 100.01-150€ 18% (§8.7 #3) |
FEE_MOBILE_20_150PLUS | Fee: Monthly 150.01€+ 20% (§8.7 #4) |
FEE_PREPAID_12 | Prepaid mobile fee 12% (§8.7 #5) |
FEE_SUBSCRIPTION_TV_10 | Subscription TV fee 10% (§8.7 #6) |
FEE_LANDLINE_5 | Landline fee 5% (§8.7 #7) |
FEE_OTHER | Other fees (§8.7 #10) |
FEE_TOURISM | Tourist accommodation fee (§8.7 #18) |
HOTEL_1_2_WINTER | Other tax: Hotels 1-2 stars (winter) (§8.5 #6) |
HOTEL_3_WINTER | Other tax: Hotels 3 stars (winter) (§8.5 #7) |
HOTEL_4_WINTER | Other tax: Hotels 4 stars (winter) (§8.5 #8) |
HOTEL_5_WINTER | Other tax: Hotels 5 stars (winter) (§8.5 #9) |
FURNISHED_WINTER | Other tax: Furnished (winter) (§8.5 #10) |
SHORT_TERM_WINTER | Other tax: Short-term rental (winter) (§8.5 #28) |
SHORT_TERM_80SQM_WINTER | Other tax: Short-term rental >80 sqm (winter) (§8.5 #29) |
SELF_SERVICE_WINTER | Other tax: Self-service (winter) (§8.5 #30) |
SELF_SERVICE_U80_WINTER | Other tax: Tourist furnished <80 sqm (winter, §8.5 #30) |
HOTEL_1_2_SUMMER | Other tax: Hotels 1-2 stars (summer) (§8.5 #20) |
HOTEL_3_SUMMER | Other tax: Hotels 3 stars (summer) (§8.5 #21) |
HOTEL_4_SUMMER | Other tax: Hotels 4 stars (summer) (§8.5 #22) |
HOTEL_5_SUMMER | Other tax: Hotels 5 stars (summer) (§8.5 #23) |
FURNISHED_SUMMER | Other tax: Furnished (summer) (§8.5 #24) |
SHORT_TERM_SUMMER | Other tax: Short-term rental (summer) (§8.5 #25) |
SHORT_TERM_80SQM_SUMMER | Other tax: Short-term rental >80 sqm (summer) (§8.5 #26) |
SELF_SERVICE_SUMMER | Other tax: Self-service (summer) (§8.5 #27) |
SELF_SERVICE_U80_SUMMER | Other tax: Tourist furnished <80 sqm (summer, §8.5 #27) |
EXCISE_DUTY | Other tax: Excise Duty (ΕΦΚ) (§8.5 #19) |
OTHER_TAX | Other tax: Other taxes (§8.5 #17) |
OTHER_TAX_CHARGES | Other tax: Other tax surcharges (§8.5 #18) |
STAMP_1_2 | Digital transaction fee 1.2% (§8.6 #1) |
STAMP_2_4 | Digital transaction fee 2.4% (§8.6 #2) |
STAMP_3_6 | Digital 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
| Value | Meaning |
|---|---|
true | The tax is VAT |
false | The tax is not VAT |
null | Not 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.
| Value | Meaning |
|---|---|
WH_INTEREST_15 | Withholding: Interest 15% (§8.4 #1) |
WH_ROYALTIES_20 | Withholding: Royalties 20% (§8.4 #2) |
WH_CONSULTANCY_20 | Withholding: Management consultancy 20% (§8.4 #3) |
WH_TECHNICAL_3 | Withholding: Technical works 3% (§8.4 #4) |
WH_FUEL_TOBACCO_1 | Withholding: Liquid fuels & tobacco 1% (§8.4 #5) |
WH_OTHER_GOODS_4 | Withholding: Other goods 4% (§8.4 #6) |
WH_SERVICES_8 | Withholding: Provision of services 8% (§8.4 #7) |
WH_ARCH_ENG_STUDIES_4 | Withholding: Arch/Eng studies 4% (§8.4 #8) |
WH_ARCH_ENG_OTHER_10 | Withholding: Arch/Eng other 10% (§8.4 #9) |
WH_LAWYERS_15 | Withholding: Lawyers 15% (§8.4 #10) |
WH_NAVY_OFFICERS | Withholding: Merchant Navy Officers (§8.4 #12) |
WH_NAVY_CREW | Withholding: Merchant Navy Lower Crew (§8.4 #13) |
WH_OTHER | Withholding: Other (§8.4 #17) |
FEE_MOBILE_12_50 | Fee: Monthly up to 50€ 12% (§8.7 #1) |
FEE_MOBILE_15_100 | Fee: Monthly 50.01-100€ 15% (§8.7 #2) |
FEE_MOBILE_18_150 | Fee: Monthly 100.01-150€ 18% (§8.7 #3) |
FEE_MOBILE_20_150PLUS | Fee: Monthly 150.01€+ 20% (§8.7 #4) |
FEE_PREPAID_12 | Prepaid mobile fee 12% (§8.7 #5) |
FEE_SUBSCRIPTION_TV_10 | Subscription TV fee 10% (§8.7 #6) |
FEE_LANDLINE_5 | Landline fee 5% (§8.7 #7) |
FEE_OTHER | Other fees (§8.7 #10) |
FEE_TOURISM | Tourist accommodation fee (§8.7 #18) |
HOTEL_1_2_WINTER | Other tax: Hotels 1-2 stars (winter) (§8.5 #6) |
HOTEL_3_WINTER | Other tax: Hotels 3 stars (winter) (§8.5 #7) |
HOTEL_4_WINTER | Other tax: Hotels 4 stars (winter) (§8.5 #8) |
HOTEL_5_WINTER | Other tax: Hotels 5 stars (winter) (§8.5 #9) |
FURNISHED_WINTER | Other tax: Furnished (winter) (§8.5 #10) |
SHORT_TERM_WINTER | Other tax: Short-term rental (winter) (§8.5 #28) |
SHORT_TERM_80SQM_WINTER | Other tax: Short-term >80 sqm (winter) (§8.5 #29) |
SELF_SERVICE_WINTER | Other tax: Self-service (winter) (§8.5 #30) |
SELF_SERVICE_U80_WINTER | Other tax: Tourist furnished <80 sqm (winter, §8.5 #30) |
HOTEL_1_2_SUMMER | Other tax: Hotels 1-2 stars (summer) (§8.5 #20) |
HOTEL_3_SUMMER | Other tax: Hotels 3 stars (summer) (§8.5 #21) |
HOTEL_4_SUMMER | Other tax: Hotels 4 stars (summer) (§8.5 #22) |
HOTEL_5_SUMMER | Other tax: Hotels 5 stars (summer) (§8.5 #23) |
FURNISHED_SUMMER | Other tax: Furnished (summer) (§8.5 #24) |
SHORT_TERM_SUMMER | Other tax: Short-term rental (summer) (§8.5 #25) |
SHORT_TERM_80SQM_SUMMER | Other tax: Short-term >80 sqm (summer) (§8.5 #26) |
SELF_SERVICE_SUMMER | Other tax: Self-service (summer) (§8.5 #27) |
SELF_SERVICE_U80_SUMMER | Other tax: Tourist furnished <80 sqm (summer, §8.5 #27) |
EXCISE_DUTY | Other tax: Excise Duty (ΕΦΚ) (§8.5 #19) |
OTHER_TAX | Other tax: Other taxes (§8.5 #17) |
OTHER_TAX_CHARGES | Other tax: Other tax surcharges (§8.5 #18) |
STAMP_1_2 | Digital transaction fee 1.2% (§8.6 #1) |
STAMP_2_4 | Digital transaction fee 2.4% (§8.6 #2) |
STAMP_3_6 | Digital 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
| Value | Meaning |
|---|---|
S | VAT (standard) |
E | VAT 0% (Exempt) |
G | VAT 0% (Export) |
AE | VAT 0% (Reverse Charge) |
K | Farmers special regime (VAT category 5) |
O | Entries without VAT (VAT category 8) |
VAT | Generic VAT (purchases or expenses) |
SD | Stamp Duty |
F | Fees |
OT | Other 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
| Value | Meaning |
|---|---|
vat | VAT (the default when missing) |
stamp_duty | Stamp Duty / Digital Transaction Fee |
fees | Fees |
other_taxes | Other 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"
]
}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.
| Value | Meaning |
|---|---|
1 | Domestic Business Payments Account |
2 | Foreign Business Payments Account |
3 | Cash |
4 | Cheque |
5 | On credit (deferred payment) |
6 | Web Banking |
7 | POS / e-POS (card payment at the terminal) |
8 | Direct 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