openapi: 3.0.3 info: title: 'Invoice Portal' description: '' version: 1.0.0 servers: - url: 'https://dev.invoiceportal.gr' paths: /api/v2/order-notes/pending: get: summary: 'Pending Order Notes' operationId: pendingOrderNotes description: '' parameters: - in: query name: vat_number description: '' example: '998914851' required: true schema: type: string description: '' example: '998914851' nullable: false - in: query name: branch description: '' example: 0 required: true schema: type: string description: '' example: 0 nullable: false - in: query name: table description: '' example: 'table #1' required: false schema: type: string description: '' example: 'table #1' nullable: false responses: 200: description: '' content: application/json: schema: type: object example: data: - table: 'table #1' invoices: uid: 69C235338728CF9E2429E90348E62FF1D357B85C mark: '400001929261975' authentication_code: 69C235338728CF9E2429E90348E62FF1D357B85C issue_date: '2024-09-18 14:55:41.000' items: - name: 'Item Name' value: '100.00' quantity: 4 seller_id: e7314833-f451-42b7-8f8a-533b78015187 - name: 'Item 2' value: '8.00' quantity: 1 seller_id: 643379a0-963e-405d-b544-4af3cbaa0372 properties: data: type: array example: - table: 'table #1' invoices: uid: 69C235338728CF9E2429E90348E62FF1D357B85C mark: '400001929261975' authentication_code: 69C235338728CF9E2429E90348E62FF1D357B85C issue_date: '2024-09-18 14:55:41.000' items: - name: 'Item Name' value: '100.00' quantity: 4 seller_id: e7314833-f451-42b7-8f8a-533b78015187 - name: 'Item 2' value: '8.00' quantity: 1 seller_id: 643379a0-963e-405d-b544-4af3cbaa0372 items: type: object properties: table: type: string example: 'table #1' invoices: type: object properties: uid: type: string example: 69C235338728CF9E2429E90348E62FF1D357B85C mark: type: string example: '400001929261975' authentication_code: type: string example: 69C235338728CF9E2429E90348E62FF1D357B85C issue_date: type: string example: '2024-09-18 14:55:41.000' items: type: array example: - name: 'Item Name' value: '100.00' quantity: 4 seller_id: e7314833-f451-42b7-8f8a-533b78015187 - name: 'Item 2' value: '8.00' quantity: 1 seller_id: 643379a0-963e-405d-b544-4af3cbaa0372 items: type: object properties: name: type: string example: 'Item Name' value: type: string example: '100.00' quantity: type: integer example: 4 seller_id: type: string example: e7314833-f451-42b7-8f8a-533b78015187 tags: - Company /api/v2/companies: post: summary: 'Invite a company' operationId: inviteACompany description: "Create and invite a company to Invoice Portal.\nYou can also assign one or more invoice buckets to the company, so it can start issuing right away.\n" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: link: 'https://invoiceportal.gr/XXXX' properties: link: type: string example: 'https://invoiceportal.gr/XXXX' 400: description: '' content: application/json: schema: oneOf: - description: '' type: object example: message: 'Invalid Vat Number' properties: message: type: string example: 'Invalid Vat Number' - description: '' type: object example: message: 'Company Already Exists' properties: message: type: string example: 'Company Already Exists' tags: - Company requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: "The admin user's email address" example: admin@example.com nullable: false vat_number: type: string description: 'The VAT Number of the company' example: '801082480' nullable: false reseller_email: type: string|null description: "An extra address that receives the company's invitations and notifications" example: reseller@example.com nullable: false buckets: type: array description: '' example: - [] items: type: object properties: branch: type: string description: 'The branch of the company. If null, the bucket will be available to all branches' example: '0' nullable: false invoices: type: string description: 'Number of invoices to make available' example: '1000' nullable: false expires_at: type: string description: 'Expiration date for the bucket. Must be after today' example: '2026-09-14T01:02:03Z' nullable: false required: - branch - invoices - expires_at send_email: type: boolean description: 'Send an invitation email to the admin user. Defaults to false' example: false nullable: false tags: type: array description: 'Names of existing reseller tags to attach to the company' example: - retail items: type: string required: - email - vat_number '/api/v2/companies/{vatNumber}': put: summary: 'Update a company' operationId: updateACompany description: 'Update the editable fields of a company.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: ok properties: message: type: string example: ok 400: description: '' content: application/json: schema: type: object example: message: 'Company Not Found' properties: message: type: string example: 'Company Not Found' tags: - Company requestBody: required: false content: application/json: schema: type: object properties: reseller_email: type: string|null description: "An extra address that receives the company's invitations and notifications. Send null to remove it" example: reseller@example.com nullable: false parameters: - in: path name: vatNumber description: '' example: '998914851' required: true schema: type: string '/api/v2/companies/{vatNumber}/status': get: summary: Status operationId: status description: "Get information regarding the current status of a company.\nThe following statuses are available:\n- `PENDING`: The company hasn't completed the onboarding process.\n- `ACTIVE`: The company is active and able to issue invoices.\n- `SUSPENDED`: The company is suspended and cannot issue invoices.\n- `BANNED`: The company has been banned and is unable to issue invoices\n\n" parameters: [] responses: 200: description: 'Success, company has 100/200 invoices available' content: application/json: schema: type: object example: status: ACTIVE onboarding_status: null reseller_email: reseller@example.com available: 35 used: 20003 capacity: 20038 statement: b2c: true b2b: false invoice_provider: name: 'Invoice Portal' site: 'https://invoiceportal.gr' license: '2024_07_122BUSINESS CLOUD_001_Invoice Portal_V1_25072024' aade_provider_id: 22 buckets: - branch: 0 capacity: 38 available: 35 used: 3 expires_at: '2024-08-10T00:00:00.000000Z' created_at: '2024-07-16T18:27:27.000000Z' updated_at: '2024-08-07T10:10:34.000000Z' - branch: null capacity: 20000 available: 0 used: 20000 expires_at: null created_at: '2024-07-16T18:27:27.000000Z' updated_at: '2024-07-16T18:27:27.000000Z' properties: status: type: string example: ACTIVE onboarding_status: type: string example: null reseller_email: type: string example: reseller@example.com available: type: integer example: 35 used: type: integer example: 20003 capacity: type: integer example: 20038 statement: type: object properties: b2c: type: boolean example: true b2b: type: boolean example: false invoice_provider: type: object properties: name: type: string example: 'Invoice Portal' site: type: string example: 'https://invoiceportal.gr' license: type: string example: '2024_07_122BUSINESS CLOUD_001_Invoice Portal_V1_25072024' aade_provider_id: type: integer example: 22 buckets: type: array example: - branch: 0 capacity: 38 available: 35 used: 3 expires_at: '2024-08-10T00:00:00.000000Z' created_at: '2024-07-16T18:27:27.000000Z' updated_at: '2024-08-07T10:10:34.000000Z' - branch: null capacity: 20000 available: 0 used: 20000 expires_at: null created_at: '2024-07-16T18:27:27.000000Z' updated_at: '2024-07-16T18:27:27.000000Z' items: type: object properties: branch: type: integer example: 0 capacity: type: integer example: 38 available: type: integer example: 35 used: type: integer example: 3 expires_at: type: string example: '2024-08-10T00:00:00.000000Z' created_at: type: string example: '2024-07-16T18:27:27.000000Z' updated_at: type: string example: '2024-08-07T10:10:34.000000Z' 404: description: '' content: application/json: schema: type: object example: message: 'Not Found' properties: message: type: string example: 'Not Found' tags: - Company parameters: - in: path name: vatNumber description: '' example: '998914851' required: true schema: type: string '/api/v2/companies/{vatNumber}/resend-email': post: summary: 'Resend Invitation email' operationId: resendInvitationEmail description: 'Resend the invitation email to a company. The company **must** be in a PENDING status.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: link: 'https://invoiceportal.gr/XXX' properties: link: type: string example: 'https://invoiceportal.gr/XXX' tags: - Company requestBody: required: false content: application/json: schema: type: object properties: email: type: string|null description: 'Optional override email address' example: user@example.com nullable: false parameters: - in: path name: vatNumber description: '' example: '998914851' required: true schema: type: string '/api/v2/companies/{vatNumber}/renew-contract': post: summary: 'Renew Contract' operationId: renewContract description: "Restart the onboarding process of a company, so it can sign a new contract.\nThe company's status is set to PENDING_LINK and the onboarding link is returned.\n" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: link: 'https://invoiceportal.gr/XXX' properties: link: type: string example: 'https://invoiceportal.gr/XXX' 400: description: '' content: application/json: schema: type: object example: message: 'Company Not Found' properties: message: type: string example: 'Company Not Found' tags: - Company requestBody: required: true content: application/json: schema: type: object properties: send_email: type: boolean description: 'Send the onboarding email to the company' example: true nullable: false email: type: string|null description: 'Optional override email address' example: user@example.com nullable: false required: - send_email parameters: - in: path name: vatNumber description: '' example: '998914851' required: true schema: type: string '/api/v2/companies/{vatNumber}/invoices': post: summary: 'Assign invoices to a company' operationId: assignInvoicesToACompany description: '' parameters: [] responses: { } tags: - Company requestBody: required: true content: application/json: schema: type: object properties: buckets: type: array description: '' example: - [] items: type: object properties: branch: type: 'int?' description: 'The branch in which the invoices will be available. If null the invoices will be available to ALL branches' example: 2 nullable: false expires_at: type: string description: '' example: '2030-12-31T23:59:59Z' nullable: false invoices: type: integer description: 'The number of invoices to assign' example: 1000 nullable: false required: - branch - expires_at - invoices required: - buckets parameters: - in: path name: vatNumber description: '' example: '801082480' required: true schema: type: string '/api/v2/companies/{vatNumber}/activate': post: summary: 'Activate a company' operationId: activateACompany description: "Activate a company.\nThe company must have completed the onboarding proccess." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: ok properties: message: type: string example: ok 400: description: '' content: application/json: schema: oneOf: - description: '' type: object example: message: 'Invalid Vat Number' properties: message: type: string example: 'Invalid Vat Number' - description: '' type: object example: message: 'Onboarding proccess incomplete' properties: message: type: string example: 'Onboarding proccess incomplete' tags: - Company parameters: - in: path name: vatNumber description: '' example: '801082480' required: true schema: type: string '/api/v2/companies/{vatNumber}/branches': post: summary: 'Store Branch' operationId: storeBranch description: "Stores a branch of a company. Branches are unique by their serial number.\nIf you store a branch with a serial number that already exists, the existing branch will be updated instead" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: ok properties: message: type: string example: ok tags: - Company requestBody: required: true content: application/json: schema: type: object properties: serial_number: type: integer description: '' example: 1 nullable: false street: type: string description: '' example: 'Mixalakopoulou 38' nullable: false city: type: string description: '' example: Athens nullable: false zip_code: type: string description: '' example: '99999' nullable: false required: - serial_number - street - city - zip_code parameters: - in: path name: vatNumber description: '' example: '998914851' required: true schema: type: string /api/v2/transform: post: summary: 'Map a JSON invoice to UBL & AADE xml' operationId: mapAJSONInvoiceToUBLAADEXml description: '' parameters: - in: query name: output description: 'If provided only the selected xml will be returned' example: aade required: true schema: type: ubl|aade description: 'If provided only the selected xml will be returned' example: aade nullable: false responses: 200: description: '' content: application/json: schema: type: object example: aade: '**xml file**' peppol: '**xml file**' properties: aade: type: string example: '**xml file**' peppol: type: string example: '**xml file**' tags: - Invoices requestBody: required: true content: application/json: schema: type: object properties: uid: type: string description: "See AADE's documentation for how to generate this field. It is used as a checksum, to verify the invoice's integrity." example: F2B1762EF3380A47FDDD74FC14BD4F9E4FFF12AE nullable: true transmission_failure: type: string description: 'A flag signifying a transmission failure. Should either be AADE_DOWN (transmissionFailure_2) or ERP_DOWN (transmissionFailure_1).' example: null nullable: true enum: - AADE_DOWN - ERP_DOWN issue_date: type: string description: 'The issue date of the invoice. Must be in Europe/Athens. Must be a valid date in the format Y-m-d H:i:s.' example: '2024-07-26 10:03:16' nullable: false self_pricing: type: boolean description: 'Defaults to false.' example: false nullable: true dispatch_date: type: string description: 'Must be a valid date in the format Y-m-d H:i:s.' example: '2026-09-25 10:00:00' nullable: true vehicle_number: type: string description: '' example: ΙΚΤ1234 nullable: true loading_address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true delivery_address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true start_shipping_branch: type: number description: '' example: null nullable: true complete_shipping_branch: type: number description: '' example: null nullable: true vat_payment_suspension: type: boolean description: 'Defaults to false.' example: false nullable: true correlated: type: array description: '' example: - 4.0000192972214E+14 items: type: number comments: type: string description: validation.max. example: 'Free text' nullable: true gross_value: type: number description: '' example: 124.0 nullable: true header: type: object description: '' example: [] nullable: false properties: code: type: string description: "For more info, view AADE's documentation." example: '11.1' nullable: false enum: - '1.1' - '1.2' - '1.3' - '1.4' - '1.5' - '1.6' - '2.1' - '2.2' - '2.3' - '2.4' - '3.1' - '3.2' - '4' - '5.1' - '5.2' - '6.1' - '6.2' - '7.1' - '8.1' - '8.2' - '8.4' - '8.5' - '8.6' - '9.1' - '9.2' - '9.3' - '10.1' - '10.2' - '11.1' - '11.2' - '11.3' - '11.4' - '11.5' - '12' - '13.1' - '13.2' - '13.3' - '13.4' - '13.30' - '13.31' - '14.1' - '14.2' - '14.3' - '14.4' - '14.5' - '14.30' - '14.31' - '15.1' - '16.1' - '17.1' - '17.2' - '17.3' - '17.4' - '17.5' - '17.6' serial_number: type: string description: '' example: 53 nullable: false series: type: string description: "The invoice's series. Defaults to 0." example: ΤΔΑ-Α nullable: false special_invoice_category: type: number description: 'Special Invoice Category. For F&B, use 12.' example: 12.0 nullable: true is_cancel_order: type: boolean description: 'Special flag, which if true cancels all correlated invoices of type 8.6.' example: false nullable: true table_name: type: string description: 'The name of the table, if F&B. Max length is 50. validation.max.' example: A1 nullable: true is_fuel_invoice: type: boolean description: '' example: null nullable: true reverse_delivery_note_purpose: type: integer description: 'Marks the delivery note as reverse, with this purpose. Maps to reverseDeliveryNotePurpose. For more info, view AADE''s documentation.' example: null nullable: true enum: - 1 - 2 - 3 - 4 - 5 receiving_note_purpose: type: object description: 'Receiving notes only. code maps to receivingNotePurpose. display_name maps to otherReceivingNotePurposeTitle, used when the code is 7. For more info, view AADE''s documentation.' example: null nullable: true properties: code: type: integer description: 'This field is required when header.receiving_note_purpose is present.' example: null nullable: false enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 display_name: type: string description: '' example: null nullable: true to_weigh: type: boolean description: '' example: null nullable: true non_obligated_recipient: type: boolean description: 'Delivery notes only. Flags the recipient as not obligated (Μη Υπόχρεος Λήπτης). Defaults to false.' example: false nullable: true without_digital_transport_tracking: type: boolean description: 'Delivery notes only. Flags the movement as without digital transport tracking (Χωρίς Ψηφιακή Παρακολούθηση Διακίνησης). Defaults to false.' example: false nullable: true required: - code - serial_number - series move_purpose: type: string description: 'The purpose of the movement, 1 through 20. Either the code as a string, or an object {code, display_name}.' example: '1' nullable: true currency: type: object description: '' example: [] nullable: false properties: code: type: string description: 'ISO 4217 code of the currency. validation.max.' example: EUR nullable: false exchange_rate: type: number description: '5 decimal places required. If the currency is EUR, defaults to 1.00000. This field is required unless currency.code is in EUR. validation.min.' example: 1.0 nullable: false required: - code other_correlated_entities: type: array description: '' example: null items: type: object nullable: true properties: type: type: number description: '' example: null nullable: true entity: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: null nullable: false vat_number: type: string description: '' example: null nullable: false country: type: string description: validation.max. example: null nullable: false tax_office: type: string description: '' example: null nullable: true activity: type: string description: '' example: null nullable: true phone: type: string description: '' example: null nullable: true branch: type: integer description: '' example: null nullable: true address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true required: - name - vat_number - country issuer: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: 'Some Company' nullable: false vat_number: type: string description: '' example: '9000000000' nullable: false tax_office: type: string description: '' example: 'ΚΕΦΟΔΕ ΑΤΤΙΚΗΣ - 1190' nullable: false activity: type: string description: '' example: 'ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΗΛΕΚΤΡΟΝΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ' nullable: false phone: type: string description: '' example: '+30 2100000000' nullable: true country: type: string description: "ISO2 of the issuer's country. validation.max." example: GR nullable: false supply_account_no: type: string description: '' example: null nullable: true document_id_no: type: string description: '' example: null nullable: true country_document_id: type: string description: '' example: null nullable: true branch: type: integer description: "The number of the issuer's branch. Defaults to 0 for headquarters." example: 0 nullable: true address: type: object description: '' example: [] nullable: false properties: postal_code: type: string description: '' example: '11528' nullable: false city: type: string description: '' example: Αθήνα nullable: false number: type: string description: '' example: '10' nullable: true street: type: string description: '' example: Μιχαλακοπούλου nullable: false required: - postal_code - city - street required: - name - vat_number - tax_office - activity - country - address counterpart: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: 'Other Company' nullable: false vat_number: type: string description: 'Required when the invoice is wholesale.' example: '9000000000' nullable: true tax_office: type: string description: '' example: 'ΦΑΕ ΑΘΗΝΩΝ' nullable: true activity: type: string description: '' example: ΕΜΠΟΡΙΟ nullable: true phone: type: string description: '' example: '+30 2100000000' nullable: true document_id_no: type: string description: '' example: null nullable: true supply_account_no: type: string description: '' example: null nullable: true country: type: string description: "ISO2 of the counterpart's country. validation.max." example: GR nullable: false branch: type: integer description: "The number of the counterpart's branch. If unknown, defaults to 0." example: 0 nullable: true address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: 'This field is required when counterpart.address is present.' example: '10431' nullable: false city: type: string description: 'This field is required when counterpart.address is present.' example: Αθήνα nullable: false number: type: string description: '' example: '10' nullable: true street: type: string description: '' example: Πατησίων nullable: true required: - name - country details: type: array description: '' example: null items: type: object nullable: true properties: line_number: type: integer description: "Serial numbering of the invoice's details." example: 1 nullable: false name: type: string description: validation.max. example: 'EXAMPLE PRODUCT' nullable: false code: type: string description: "The detils' code. Only used when printing the invoice. validation.max." example: '00000' nullable: true comments: type: string description: validation.max. example: null nullable: true other: type: string description: 'Other comments for the details. validation.max.' example: null nullable: true not_vat_195: type: boolean description: '' example: false nullable: true cpv_code: type: string description: validation.max. example: null nullable: true rec_type: type: number description: "Special details flag. Common cases include:\n." example: null nullable: true detail_type: type: string description: "When an invoice has the type 1.5, then it must have 1 detail of type 1,\nas well as one of type 2." example: 1 nullable: true quantity: type: number description: validation.min. example: 2.0 nullable: false price_per_unit: type: number description: "The details' price per unit before any discount is applied. Supports up to 2 decimals. validation.min." example: 100.0 nullable: false net_value: type: number description: "The details' net value after discounts. validation.min." example: 200.0 nullable: false discount: type: number description: "The details' discount. Defaults to 0. validation.min." example: 0.0 nullable: true deductions: type: number description: '' example: 0.0 nullable: true tax: type: object description: '' example: [] nullable: false properties: code: type: string description: '' example: null nullable: false enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' value: type: number description: '' example: 48.0 nullable: false rate: type: number description: '' example: 24.0 nullable: false required: - code - value - rate tax_exemption: type: string description: 'Required when tax rate = 0.' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31' unit: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: '1' nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' display_name: type: string description: '' example: ΤΕΜ nullable: true quantity: type: integer description: '' example: null nullable: true other_taxes: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' amount: type: number description: '' example: 0.0 nullable: true stamp_duty: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' amount: type: number description: '' example: 0.0 nullable: true retention_tax: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' rate: type: number description: '' example: 0.0 nullable: true amount: type: number description: '' example: 0.0 nullable: true fee: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' amount: type: number description: '' example: 0.0 nullable: true fuel_code: type: number description: '' example: null nullable: true discount_option: type: boolean description: '' example: null nullable: true income: type: array description: '' example: null items: type: object nullable: true properties: type: type: string description: '' example: E3_561_002 nullable: true enum: - '' - E3_106 - E3_205 - E3_210 - E3_305 - E3_310 - E3_318 - E3_561_001 - E3_561_002 - E3_561_003 - E3_561_004 - E3_561_005 - E3_561_006 - E3_561_007 - E3_562 - E3_563 - E3_564 - E3_565 - E3_566 - E3_567 - E3_568 - E3_569 - E3_570 - E3_595 - E3_596 - E3_597 - E3_880_001 - E3_880_002 - E3_880_003 - E3_880_004 - E3_881_001 - E3_881_002 - E3_881_003 - E3_881_004 category: type: string description: '' example: category1_1 nullable: true enum: - category1_1 - category1_2 - category1_3 - category1_4 - category1_5 - category1_6 - category1_7 - category1_8 - category1_9 - category1_10 - category1_95 - category3 amount: type: number description: '' example: 100.0 nullable: true expense: type: array description: '' example: null items: type: object nullable: true properties: type: type: string description: '' example: null nullable: true enum: - E3_101 - E3_102_001 - E3_102_002 - E3_102_003 - E3_102_004 - E3_102_005 - E3_102_006 - E3_104 - E3_201 - E3_202_001 - E3_202_002 - E3_202_003 - E3_202_004 - E3_202_005 - E3_204 - E3_207 - E3_209 - E3_301 - E3_302_001 - E3_302_002 - E3_302_003 - E3_302_004 - E3_302_005 - E3_304 - E3_307 - E3_309 - E3_312 - E3_313_001 - E3_313_002 - E3_313_003 - E3_313_004 - E3_313_005 - E3_315 - E3_581_001 - E3_581_002 - E3_581_003 - E3_582 - E3_583 - E3_584 - E3_585_001 - E3_585_002 - E3_585_003 - E3_585_004 - E3_585_005 - E3_585_006 - E3_585_007 - E3_585_008 - E3_585_009 - E3_585_010 - E3_585_011 - E3_585_012 - E3_585_013 - E3_585_014 - E3_585_015 - E3_585_016 - E3_585_017 - E3_586 - E3_587 - E3_588 - E3_589 - E3_882_001 - E3_882_002 - E3_882_003 - E3_882_004 - E3_883_001 - E3_883_002 - E3_883_003 - E3_883_004 - VAT_361 - VAT_362 - VAT_363 - VAT_364 - VAT_365 - VAT_366 - E3_103 - E3_203 - E3_303 - E3_208 - E3_308 - E3_314 - E3_106 - E3_205 - E3_305 - E3_210 - E3_310 - E3_318 - E3_598_002 category: type: string description: '' example: null nullable: true enum: - category2_1 - category2_2 - category2_3 - category2_4 - category2_5 - category2_6 - category2_7 - category2_8 - category2_9 - category2_10 - category2_11 - category2_12 - category2_13 - category2_14 - category2_95 amount: type: number description: '' example: null nullable: false required: - line_number - name - quantity - price_per_unit - net_value - tax taxes_totals: type: array description: '' example: null items: type: object nullable: true properties: tax_category: type: number description: 'The category of the specified tax.' example: null nullable: true underlying_value: type: number description: 'The underlying value of this tax. validation.min.' example: 100.0 nullable: true id: type: number description: 'The line number of the item for which the tax is applied. validation.min.' example: 1.0 nullable: true tax_type: type: number description: 'The type of tax. This field is required when taxes_totals.* is present.' example: 1.0 nullable: false tax_amount: type: number description: 'This field is required when taxes_totals.* is present. validation.min.' example: 4.0 nullable: false packings_declarations: type: array description: '' example: null items: type: object properties: packaging_type: type: integer description: '' example: null nullable: false quantity: type: integer description: '' example: null nullable: false other_packaging_type_title: type: string description: '' example: null nullable: true required: - packaging_type - quantity payment_methods: type: array description: '' example: - [] items: type: object properties: code: type: string description: '' example: '3' nullable: false enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' amount: type: number description: 'Up to 2 decimal places are required.' example: 100.0 nullable: false info: type: string description: validation.max. example: null nullable: true tip: type: number description: '' example: null nullable: true provider_data: type: string description: '' example: null nullable: true required: - code - amount required: - issue_date - header - currency - issuer - counterpart - payment_methods '/api/v2/invoices/{uid}': get: summary: 'View Invoice Status' operationId: viewInvoiceStatus description: '' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: 92A60F7464481B1BE2AD203A15E934BE542D786F mark: '400001929722136' qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: 92A60F7464481B1BE2AD203A15E934BE542D786F mark: type: string example: '400001929722136' qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' 404: description: 'Not Found' content: application/json: schema: type: array items: type: object example: [] tags: - Invoices parameters: - in: path name: uid description: '' example: D4EB1048870839BCAB165550D388EFBCA2134D54 required: true schema: type: string '/api/v2/invoices/{uid}/pdf': post: summary: 'Upload Invoice PDF' operationId: uploadInvoicePDF description: '' parameters: [] responses: { } tags: - Invoices requestBody: required: true content: multipart/form-data: schema: type: object properties: pdf: type: string format: binary description: 'Must be a file.' nullable: false required: - pdf parameters: - in: path name: uid description: '' example: D4EB1048870839BCAB165550D388EFBCA2134D54 required: true schema: type: string /api/v2/invoices: post: summary: 'Create a new Invoice (PEPPOL & myDATA)' operationId: createANewInvoicePEPPOLMyDATA description: "Issue a new invoice.\nThis requires two xml files, one according to AADE's spec, and one according to the PEPPOL protocol.
\nUsers can either generate those xml's on the fly themselves, or use our mapping endpoint to generate these files using a more user-friendly json format.\n\nYou can use this validator to make sure the PEPPOL Invoice is correct." parameters: [] responses: 200: description: '' content: application/json: schema: oneOf: - description: Success type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: 92A60F7464481B1BE2AD203A15E934BE542D786F mark: '400001929722136' transmission_failure: null remaining_invoices: 1000 total_invoices: 3 qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: 92A60F7464481B1BE2AD203A15E934BE542D786F mark: type: string example: '400001929722136' transmission_failure: type: string example: null remaining_invoices: type: integer example: 1000 total_invoices: type: integer example: 3 qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' - description: 'AADE is down - Transmission Failure 2' type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: null mark: null transmission_failure: AADE_DOWN remaining_invoices: 1000 total_invoices: 3 qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: null mark: type: string example: null transmission_failure: type: string example: AADE_DOWN remaining_invoices: type: integer example: 1000 total_invoices: type: integer example: 3 qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' 400: description: '' content: application/json: schema: oneOf: - description: 'AADE xml Validation error - Invoice should be fixed and resent' type: object example: message: 'Vat category must have value other than 8 for this invoice type' code: 217 properties: message: type: string example: 'Vat category must have value other than 8 for this invoice type' code: type: integer example: 217 - description: 'Invalid issuer VAT Number' type: object example: message: INVALID_COMPANY properties: message: type: string example: INVALID_COMPANY - description: 'The user attempted to issue an invoice containing an invalid signature' type: object example: message: INVALID_SIGNATURE properties: message: type: string example: INVALID_SIGNATURE 402: description: 'The user has used up their invoices.' content: application/json: schema: type: object example: message: DEPLETED_INVOICES properties: message: type: string example: DEPLETED_INVOICES tags: - Invoices requestBody: required: true content: application/json: schema: type: object properties: aade_invoice: type: string description: "An xml file describing the invoice according to AADE's documentation.\n You can find AADE's documentation here." example: ... nullable: false peppol_invoice: type: string description: "An xml file describing the invoice according to the PEPPOL protocol.\n You can find read more about the protocol here." example: ... nullable: false emails: type: array description: 'A list of email addresses. If provided an email will be sent to these addresses containing a link to the invoice.' example: - user@example.com items: type: string required: - aade_invoice - peppol_invoice /api/v2/invoices/json: post: summary: 'Create a new Invoice' operationId: createANewInvoice description: '' parameters: [] responses: 200: description: '' content: application/json: schema: oneOf: - description: Success type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: 92A60F7464481B1BE2AD203A15E934BE542D786F mark: '400001929722136' transmission_failure: null remaining_invoices: 1000 total_invoices: 3 qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' aade_qr: 'https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=ztPMXpx5acftaLNTX2BOZOkI3dQiud%2ff5pIbfsxBh50yYizADY%2bsM%2bCzoo2PB5toOtRCfFL6APZAIQd0fUGjMLpCchWxpGxG2Xms6oS8A6o%3d' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: 92A60F7464481B1BE2AD203A15E934BE542D786F mark: type: string example: '400001929722136' transmission_failure: type: string example: null remaining_invoices: type: integer example: 1000 total_invoices: type: integer example: 3 qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' aade_qr: type: string example: 'https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=ztPMXpx5acftaLNTX2BOZOkI3dQiud%2ff5pIbfsxBh50yYizADY%2bsM%2bCzoo2PB5toOtRCfFL6APZAIQd0fUGjMLpCchWxpGxG2Xms6oS8A6o%3d' - description: 'AADE is down - Transmission Failure 2' type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: null mark: null transmission_failure: AADE_DOWN remaining_invoices: 1000 total_invoices: 3 qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' aade_qr: 'https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=ztPMXpx5acftaLNTX2BOZOkI3dQiud%2ff5pIbfsxBh50yYizADY%2bsM%2bCzoo2PB5toOtRCfFL6APZAIQd0fUGjMLpCchWxpGxG2Xms6oS8A6o%3d' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: null mark: type: string example: null transmission_failure: type: string example: AADE_DOWN remaining_invoices: type: integer example: 1000 total_invoices: type: integer example: 3 qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' aade_qr: type: string example: 'https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=ztPMXpx5acftaLNTX2BOZOkI3dQiud%2ff5pIbfsxBh50yYizADY%2bsM%2bCzoo2PB5toOtRCfFL6APZAIQd0fUGjMLpCchWxpGxG2Xms6oS8A6o%3d' 400: description: '' content: application/json: schema: oneOf: - description: 'Invalid issuer VAT Number' type: object example: message: INVALID_COMPANY properties: message: type: string example: INVALID_COMPANY - description: 'The user attempted to issue an invoice containing an invalid signature' type: object example: message: INVALID_SIGNATURE properties: message: type: string example: INVALID_SIGNATURE 402: description: 'The user has used up their invoices.' content: application/json: schema: type: object example: message: DEPLETED_INVOICES properties: message: type: string example: DEPLETED_INVOICES tags: - Invoices requestBody: required: true content: application/json: schema: type: object properties: uid: type: string description: "See AADE's documentation for how to generate this field. It is used as a checksum, to verify the invoice's integrity." example: F2B1762EF3380A47FDDD74FC14BD4F9E4FFF12AE nullable: true transmission_failure: type: string description: 'A flag signifying a transmission failure. Should either be AADE_DOWN (transmissionFailure_2) or ERP_DOWN (transmissionFailure_1).' example: null nullable: true enum: - AADE_DOWN - ERP_DOWN issue_date: type: string description: 'The issue date of the invoice. Must be in Europe/Athens. Must be a valid date in the format Y-m-d H:i:s.' example: '2024-07-26 10:03:16' nullable: false self_pricing: type: boolean description: 'Defaults to false.' example: false nullable: true dispatch_date: type: string description: 'Must be a valid date in the format Y-m-d H:i:s.' example: '2026-09-25 10:00:00' nullable: true vehicle_number: type: string description: '' example: ΙΚΤ1234 nullable: true loading_address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true delivery_address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true start_shipping_branch: type: number description: '' example: null nullable: true complete_shipping_branch: type: number description: '' example: null nullable: true vat_payment_suspension: type: boolean description: 'Defaults to false.' example: false nullable: true correlated: type: array description: '' example: - 4.0000192972214E+14 items: type: number comments: type: string description: validation.max. example: 'Free text' nullable: true gross_value: type: number description: '' example: 124.0 nullable: true header: type: object description: '' example: [] nullable: false properties: code: type: string description: "For more info, view AADE's documentation." example: '11.1' nullable: false enum: - '1.1' - '1.2' - '1.3' - '1.4' - '1.5' - '1.6' - '2.1' - '2.2' - '2.3' - '2.4' - '3.1' - '3.2' - '4' - '5.1' - '5.2' - '6.1' - '6.2' - '7.1' - '8.1' - '8.2' - '8.4' - '8.5' - '8.6' - '9.1' - '9.2' - '9.3' - '10.1' - '10.2' - '11.1' - '11.2' - '11.3' - '11.4' - '11.5' - '12' - '13.1' - '13.2' - '13.3' - '13.4' - '13.30' - '13.31' - '14.1' - '14.2' - '14.3' - '14.4' - '14.5' - '14.30' - '14.31' - '15.1' - '16.1' - '17.1' - '17.2' - '17.3' - '17.4' - '17.5' - '17.6' serial_number: type: string description: '' example: 53 nullable: false series: type: string description: "The invoice's series. Defaults to 0." example: ΤΔΑ-Α nullable: false special_invoice_category: type: number description: 'Special Invoice Category. For F&B, use 12.' example: 12.0 nullable: true is_cancel_order: type: boolean description: 'Special flag, which if true cancels all correlated invoices of type 8.6.' example: false nullable: true table_name: type: string description: 'The name of the table, if F&B. Max length is 50. validation.max.' example: A1 nullable: true is_fuel_invoice: type: boolean description: '' example: null nullable: true reverse_delivery_note_purpose: type: integer description: 'Marks the delivery note as reverse, with this purpose. Maps to reverseDeliveryNotePurpose. For more info, view AADE''s documentation.' example: null nullable: true enum: - 1 - 2 - 3 - 4 - 5 receiving_note_purpose: type: object description: 'Receiving notes only. code maps to receivingNotePurpose. display_name maps to otherReceivingNotePurposeTitle, used when the code is 7. For more info, view AADE''s documentation.' example: null nullable: true properties: code: type: integer description: 'This field is required when header.receiving_note_purpose is present.' example: null nullable: false enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 display_name: type: string description: '' example: null nullable: true to_weigh: type: boolean description: '' example: null nullable: true non_obligated_recipient: type: boolean description: 'Delivery notes only. Flags the recipient as not obligated (Μη Υπόχρεος Λήπτης). Defaults to false.' example: false nullable: true without_digital_transport_tracking: type: boolean description: 'Delivery notes only. Flags the movement as without digital transport tracking (Χωρίς Ψηφιακή Παρακολούθηση Διακίνησης). Defaults to false.' example: false nullable: true required: - code - serial_number - series move_purpose: type: string description: 'The purpose of the movement, 1 through 20. Either the code as a string, or an object {code, display_name}.' example: '1' nullable: true currency: type: object description: '' example: [] nullable: false properties: code: type: string description: 'ISO 4217 code of the currency. validation.max.' example: EUR nullable: false exchange_rate: type: number description: '5 decimal places required. If the currency is EUR, defaults to 1.00000. This field is required unless currency.code is in EUR. validation.min.' example: 1.0 nullable: false required: - code other_correlated_entities: type: array description: '' example: null items: type: object nullable: true properties: type: type: number description: '' example: null nullable: true entity: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: null nullable: false vat_number: type: string description: '' example: null nullable: false country: type: string description: validation.max. example: null nullable: false tax_office: type: string description: '' example: null nullable: true activity: type: string description: '' example: null nullable: true phone: type: string description: '' example: null nullable: true branch: type: integer description: '' example: null nullable: true address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true required: - name - vat_number - country issuer: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: 'Some Company' nullable: false vat_number: type: string description: '' example: '9000000000' nullable: false tax_office: type: string description: '' example: 'ΚΕΦΟΔΕ ΑΤΤΙΚΗΣ - 1190' nullable: false activity: type: string description: '' example: 'ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΗΛΕΚΤΡΟΝΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ' nullable: false phone: type: string description: '' example: '+30 2100000000' nullable: true country: type: string description: "ISO2 of the issuer's country. validation.max." example: GR nullable: false supply_account_no: type: string description: '' example: null nullable: true document_id_no: type: string description: '' example: null nullable: true country_document_id: type: string description: '' example: null nullable: true branch: type: integer description: "The number of the issuer's branch. Defaults to 0 for headquarters." example: 0 nullable: true address: type: object description: '' example: [] nullable: false properties: postal_code: type: string description: '' example: '11528' nullable: false city: type: string description: '' example: Αθήνα nullable: false number: type: string description: '' example: '10' nullable: true street: type: string description: '' example: Μιχαλακοπούλου nullable: false required: - postal_code - city - street required: - name - vat_number - tax_office - activity - country - address counterpart: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: 'Other Company' nullable: false vat_number: type: string description: 'Required when the invoice is wholesale.' example: '9000000000' nullable: true tax_office: type: string description: '' example: 'ΦΑΕ ΑΘΗΝΩΝ' nullable: true activity: type: string description: '' example: ΕΜΠΟΡΙΟ nullable: true phone: type: string description: '' example: '+30 2100000000' nullable: true document_id_no: type: string description: '' example: null nullable: true supply_account_no: type: string description: '' example: null nullable: true country: type: string description: "ISO2 of the counterpart's country. validation.max." example: GR nullable: false branch: type: integer description: "The number of the counterpart's branch. If unknown, defaults to 0." example: 0 nullable: true address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: 'This field is required when counterpart.address is present.' example: '10431' nullable: false city: type: string description: 'This field is required when counterpart.address is present.' example: Αθήνα nullable: false number: type: string description: '' example: '10' nullable: true street: type: string description: '' example: Πατησίων nullable: true required: - name - country details: type: array description: '' example: null items: type: object nullable: true properties: line_number: type: integer description: "Serial numbering of the invoice's details." example: 1 nullable: false name: type: string description: validation.max. example: 'EXAMPLE PRODUCT' nullable: false code: type: string description: "The detils' code. Only used when printing the invoice. validation.max." example: '00000' nullable: true comments: type: string description: validation.max. example: null nullable: true other: type: string description: 'Other comments for the details. validation.max.' example: null nullable: true not_vat_195: type: boolean description: '' example: false nullable: true cpv_code: type: string description: validation.max. example: null nullable: true rec_type: type: number description: "Special details flag. Common cases include:\n." example: null nullable: true detail_type: type: string description: "When an invoice has the type 1.5, then it must have 1 detail of type 1,\nas well as one of type 2." example: 1 nullable: true quantity: type: number description: validation.min. example: 2.0 nullable: false price_per_unit: type: number description: "The details' price per unit before any discount is applied. Supports up to 2 decimals. validation.min." example: 100.0 nullable: false net_value: type: number description: "The details' net value after discounts. validation.min." example: 200.0 nullable: false discount: type: number description: "The details' discount. Defaults to 0. validation.min." example: 0.0 nullable: true deductions: type: number description: '' example: 0.0 nullable: true tax: type: object description: '' example: [] nullable: false properties: code: type: string description: '' example: null nullable: false enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' value: type: number description: '' example: 48.0 nullable: false rate: type: number description: '' example: 24.0 nullable: false required: - code - value - rate tax_exemption: type: string description: 'Required when tax rate = 0.' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31' unit: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: '1' nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' display_name: type: string description: '' example: ΤΕΜ nullable: true quantity: type: integer description: '' example: null nullable: true other_taxes: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' amount: type: number description: '' example: 0.0 nullable: true stamp_duty: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' amount: type: number description: '' example: 0.0 nullable: true retention_tax: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' rate: type: number description: '' example: 0.0 nullable: true amount: type: number description: '' example: 0.0 nullable: true fee: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' amount: type: number description: '' example: 0.0 nullable: true fuel_code: type: number description: '' example: null nullable: true discount_option: type: boolean description: '' example: null nullable: true income: type: array description: '' example: null items: type: object nullable: true properties: type: type: string description: '' example: E3_561_002 nullable: true enum: - '' - E3_106 - E3_205 - E3_210 - E3_305 - E3_310 - E3_318 - E3_561_001 - E3_561_002 - E3_561_003 - E3_561_004 - E3_561_005 - E3_561_006 - E3_561_007 - E3_562 - E3_563 - E3_564 - E3_565 - E3_566 - E3_567 - E3_568 - E3_569 - E3_570 - E3_595 - E3_596 - E3_597 - E3_880_001 - E3_880_002 - E3_880_003 - E3_880_004 - E3_881_001 - E3_881_002 - E3_881_003 - E3_881_004 category: type: string description: '' example: category1_1 nullable: true enum: - category1_1 - category1_2 - category1_3 - category1_4 - category1_5 - category1_6 - category1_7 - category1_8 - category1_9 - category1_10 - category1_95 - category3 amount: type: number description: '' example: 100.0 nullable: true expense: type: array description: '' example: null items: type: object nullable: true properties: type: type: string description: '' example: null nullable: true enum: - E3_101 - E3_102_001 - E3_102_002 - E3_102_003 - E3_102_004 - E3_102_005 - E3_102_006 - E3_104 - E3_201 - E3_202_001 - E3_202_002 - E3_202_003 - E3_202_004 - E3_202_005 - E3_204 - E3_207 - E3_209 - E3_301 - E3_302_001 - E3_302_002 - E3_302_003 - E3_302_004 - E3_302_005 - E3_304 - E3_307 - E3_309 - E3_312 - E3_313_001 - E3_313_002 - E3_313_003 - E3_313_004 - E3_313_005 - E3_315 - E3_581_001 - E3_581_002 - E3_581_003 - E3_582 - E3_583 - E3_584 - E3_585_001 - E3_585_002 - E3_585_003 - E3_585_004 - E3_585_005 - E3_585_006 - E3_585_007 - E3_585_008 - E3_585_009 - E3_585_010 - E3_585_011 - E3_585_012 - E3_585_013 - E3_585_014 - E3_585_015 - E3_585_016 - E3_585_017 - E3_586 - E3_587 - E3_588 - E3_589 - E3_882_001 - E3_882_002 - E3_882_003 - E3_882_004 - E3_883_001 - E3_883_002 - E3_883_003 - E3_883_004 - VAT_361 - VAT_362 - VAT_363 - VAT_364 - VAT_365 - VAT_366 - E3_103 - E3_203 - E3_303 - E3_208 - E3_308 - E3_314 - E3_106 - E3_205 - E3_305 - E3_210 - E3_310 - E3_318 - E3_598_002 category: type: string description: '' example: null nullable: true enum: - category2_1 - category2_2 - category2_3 - category2_4 - category2_5 - category2_6 - category2_7 - category2_8 - category2_9 - category2_10 - category2_11 - category2_12 - category2_13 - category2_14 - category2_95 amount: type: number description: '' example: null nullable: false required: - line_number - name - quantity - price_per_unit - net_value - tax taxes_totals: type: array description: '' example: null items: type: object nullable: true properties: tax_category: type: number description: 'The category of the specified tax.' example: null nullable: true underlying_value: type: number description: 'The underlying value of this tax. validation.min.' example: 100.0 nullable: true id: type: number description: 'The line number of the item for which the tax is applied. validation.min.' example: 1.0 nullable: true tax_type: type: number description: 'The type of tax. This field is required when taxes_totals.* is present.' example: 1.0 nullable: false tax_amount: type: number description: 'This field is required when taxes_totals.* is present. validation.min.' example: 4.0 nullable: false packings_declarations: type: array description: '' example: null items: type: object properties: packaging_type: type: integer description: '' example: null nullable: false quantity: type: integer description: '' example: null nullable: false other_packaging_type_title: type: string description: '' example: null nullable: true required: - packaging_type - quantity payment_methods: type: array description: '' example: - [] items: type: object properties: code: type: string description: '' example: '3' nullable: false enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' amount: type: number description: 'Up to 2 decimal places are required.' example: 100.0 nullable: false info: type: string description: validation.max. example: null nullable: true tip: type: number description: '' example: null nullable: true provider_data: type: string description: '' example: null nullable: true required: - code - amount emails: type: array description: '' example: - user1@example.com - user2@example.com items: type: string required: - issue_date - header - currency - issuer - counterpart - payment_methods /api/v2/delivery-notes/cancel: post: summary: 'Cancel a delivery note' operationId: cancelADeliveryNote description: "Cancels a delivery note, and returns a cancellation mark.\nOnly invoices of type 9.3 can be canceled" parameters: [] responses: 200: description: 'Successful cancellation' content: application/json: schema: type: object example: cancellation_mark: '400001942783398' properties: cancellation_mark: type: string example: '400001942783398' 400: description: 'Invalid Cancellation Request' content: application/json: schema: type: object example: code: '251' message: 'Invoice with MARK 400001942783398 has already been cancelled' properties: code: type: string example: '251' message: type: string example: 'Invoice with MARK 400001942783398 has already been cancelled' tags: - Invoices requestBody: required: true content: application/json: schema: type: object properties: issuer_vat_number: type: string description: 'The vat number of the issuer' example: '801082480' nullable: false uid: type: string description: 'The uid of the invoice to be cancelled.' example: C1574181AE8DE7019BB06B0912CD0A37850D5062 nullable: false required: - issuer_vat_number - uid /api/v2/receiving-notes/cancel: post: summary: 'Cancel a receiving note' operationId: cancelAReceivingNote description: "Cancels a receiving note, and returns a cancellation mark.\nOnly invoices of type 10.X can be canceled" parameters: [] responses: 200: description: 'Successful cancellation' content: application/json: schema: type: object example: cancellation_mark: '400001942783398' properties: cancellation_mark: type: string example: '400001942783398' 400: description: 'Invalid Cancellation Request' content: application/json: schema: type: object example: code: '251' message: 'Invoice with MARK 400001942783398 has already been cancelled' properties: code: type: string example: '251' message: type: string example: 'Invoice with MARK 400001942783398 has already been cancelled' tags: - Invoices requestBody: required: true content: application/json: schema: type: object properties: issuer_vat_number: type: string description: 'The vat number of the issuer' example: '801082480' nullable: false uid: type: string description: 'The uid of the invoice to be cancelled.' example: C1574181AE8DE7019BB06B0912CD0A37850D5062 nullable: false required: - issuer_vat_number - uid /api/v2/uid: post: summary: 'Calculate UID' operationId: calculateUID description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: uid: 6937509F49384F7D521CFA1D5FCB65A349662979 properties: uid: type: string example: 6937509F49384F7D521CFA1D5FCB65A349662979 tags: - Misc requestBody: required: true content: application/json: schema: type: object properties: issuer: type: string description: 'Isser Vat Number' example: '998914851' nullable: false date: type: string description: 'Invoice Issue Date' example: '2025-01-01' nullable: false branch: type: string description: "The issuer's branch" example: '0' nullable: false type: type: string description: 'The invoice type' example: '1.1' nullable: false series: type: string description: "The invoice's series" example: A nullable: false serial_number: type: string description: 'The serial number of the invoice' example: '12345' nullable: false required: - issuer - date - branch - type - series - serial_number /api/v2/webhook: post: summary: 'Setup webhooks' operationId: setupWebhooks description: "Set up a webhook URL for cases where the invoices are sent asynchronously.\nA webhook key is returned, which will be used as a bearer token in the webhook request headers.\n\nExample webhook request:\n
{\n    \"vat_number\": \"example vat number\",\n    \"successes\": [\n        { \"uid\": \"XXX\", \"mark\": \"YYY\", \"authentication_code\": \"YYY\"},\n        { \"uid\": \"XXX\", \"mark\": \"YYY\", \"authentication_code\": \"YYY\"},\n    ],\n}
" parameters: [] responses: 200: description: 'A new webhook key' content: application/json: schema: type: object example: key: XXXXX properties: key: type: string example: XXXXX tags: - Misc requestBody: required: true content: application/json: schema: type: object properties: url: type: string description: '' example: 'https://example.com/invoice-portal' nullable: false required: - url /api/v2/signature: post: summary: 'Create a new POS payment request' operationId: createANewPOSPaymentRequest description: "Create a provider signature, used for activating POS devices.
\nYou must also specify the payment provider, since each one requires a different output type.
\nIf your payment includes tip then it must be included in the net_value and gross_value fields.\n\nIf the payment is for an invoice that has not yet been issued you can set the mark field to null, otherwise it must be equal to the mark\nof an existing invoice whose payment methods will be updated.\n\n" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: signature: MEUCIQD6SCJw5mEK5PHDYqrfi+CCIyCfdi4OKk7WODq3YFKB2gIgITLVnyhC9sTrJ4f+WN7FHXoLxe2B5Q9h6IpNyNxZX7o= data: 6E7297D2828B1DFF02CE85094AADBCFF0043892C;400001929268735;20240625153412;2260;2260;0;2260;160000000 provider_id: '123' properties: signature: type: string example: MEUCIQD6SCJw5mEK5PHDYqrfi+CCIyCfdi4OKk7WODq3YFKB2gIgITLVnyhC9sTrJ4f+WN7FHXoLxe2B5Q9h6IpNyNxZX7o= data: type: string example: 6E7297D2828B1DFF02CE85094AADBCFF0043892C;400001929268735;20240625153412;2260;2260;0;2260;160000000 provider_id: type: string example: '123' tags: - Payments requestBody: required: true content: application/json: schema: type: object properties: issuer: type: string description: 'The VAT Id of the issuer.' example: '999999999' nullable: false uid: type: string description: 'The UID of the invoice to be issued' example: 6E7297D2828B1DFF02CE85094AADBCFF0043892C nullable: false payment_amount: type: string description: 'Total amount to be paid' example: 124.0 nullable: false net_value: type: string description: 'Total Net amount of the invoice' example: 100.0 nullable: false vat_amount: type: string description: 'Total Vat amount of the invoice' example: 24.0 nullable: false gross_value: type: string description: 'Total Gross value of the invoice' example: 124.0 nullable: false terminal: type: string description: 'The id of the terminal which will handle the payment' example: '160000000' nullable: false type: type: string description: 'The payment provider. One of viva, mellon, cardlink, epay, inss, edps, edps_ecr, nexi, worldline, epay_softpos. edps_ecr is treated as edps.' example: mellon nullable: false mark: type: string description: 'The mark of the invoice. Required only if the invoice already exists.' example: '160000000' nullable: false required: - issuer - uid - payment_amount - net_value - vat_amount - gross_value - terminal - type - mark /api/v2/payments: post: summary: 'Update the payments of an invoice' operationId: updateThePaymentsOfAnInvoice description: '' parameters: [] responses: 200: description: Success content: application/json: schema: type: object nullable: true 400: description: 'Invalid Signature' content: application/json: schema: type: object example: message: 'Invalid Signature for Payment index $index' properties: message: type: string example: 'Invalid Signature for Payment index $index' tags: - Payments requestBody: required: true content: application/json: schema: type: object properties: mark: type: string description: 'The mark of the invoice.' example: 400001929592800 nullable: false payments: type: array description: '' example: - [] items: type: object properties: signature: type: string description: 'The signature of the payment. Required if code = 7' example: MEUCIQDHPN9WXEDWinhbyCyTYf0cH+o66K7OufkuKl3RVMXqcgIgS2UkaK5Gg64T3QWB9CR6MIQMfbHSgbisLxj3VBSSihY= nullable: false transaction_id: type: string description: 'The id of this transaction, returned by the POS.' example: '9258762217454285091123' nullable: false tip: type: string description: 'The amount of tip in the invoice' example: 1 nullable: false paid_amount: type: string description: 'The total amount paid for the invoice (tip not included)' example: 9 nullable: false code: type: string description: "AADE's code for the payment method." example: 7 nullable: false required: - signature - transaction_id - tip - paid_amount - code required: - mark - payments /api/v2/unsigned: post: summary: 'Initiate an unsigned Invoice (myDATA)' operationId: initiateAnUnsignedInvoicemyDATA description: '' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: null mark: '400001929722136' transmission_failure: null remaining_invoices: 1000 total_invoices: 3 qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: null mark: type: string example: '400001929722136' transmission_failure: type: string example: null remaining_invoices: type: integer example: 1000 total_invoices: type: integer example: 3 qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' 400: description: '' content: application/json: schema: oneOf: - description: 'Invalid issuer VAT Number' type: object example: message: INVALID_COMPANY properties: message: type: string example: INVALID_COMPANY - description: 'The user attempted to issue an invoice containing an invalid signature' type: object example: message: INVALID_SIGNATURE properties: message: type: string example: INVALID_SIGNATURE tags: - 'Unsigned Invoices' requestBody: required: true content: application/json: schema: type: object properties: aade_invoice: type: string description: "An xml file describing the invoice according to AADE's documentation.\n You can find AADE's documentation here." example: ... nullable: false peppol_invoice: type: string description: "An xml file describing the invoice according to the PEPPOL protocol.\n You can find read more about the protocol here." example: ... nullable: false required: - aade_invoice - peppol_invoice /api/v2/unsigned/json: post: summary: 'Initiate an unsigned Invoice (JSON)' operationId: initiateAnUnsignedInvoiceJSON description: '' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: uid: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: null mark: '400001929722136' transmission_failure: null qr: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' properties: uid: type: string example: BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D authentication_code: type: string example: null mark: type: string example: '400001929722136' transmission_failure: type: string example: null qr: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D/qr' url: type: string example: 'https://invoiceportal.gr/invoices/2024-BF3C1C867FC4B97DEA1728900F0FD8CFE4E7BA1D' 400: description: 'Invalid issuer VAT Number' content: application/json: schema: type: object example: message: INVALID_COMPANY properties: message: type: string example: INVALID_COMPANY 402: description: 'The user has used up their invoices.' content: application/json: schema: type: object example: message: DEPLETED_INVOICES properties: message: type: string example: DEPLETED_INVOICES tags: - 'Unsigned Invoices' requestBody: required: true content: application/json: schema: type: object properties: uid: type: string description: "See AADE's documentation for how to generate this field. It is used as a checksum, to verify the invoice's integrity." example: F2B1762EF3380A47FDDD74FC14BD4F9E4FFF12AE nullable: true transmission_failure: type: string description: 'A flag signifying a transmission failure. Should either be AADE_DOWN (transmissionFailure_2) or ERP_DOWN (transmissionFailure_1).' example: null nullable: true enum: - AADE_DOWN - ERP_DOWN issue_date: type: string description: 'The issue date of the invoice. Must be in Europe/Athens. Must be a valid date in the format Y-m-d H:i:s.' example: '2024-07-26 10:03:16' nullable: false self_pricing: type: boolean description: 'Defaults to false.' example: false nullable: true dispatch_date: type: string description: 'Must be a valid date in the format Y-m-d H:i:s.' example: '2026-09-25 10:00:00' nullable: true vehicle_number: type: string description: '' example: ΙΚΤ1234 nullable: true loading_address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true delivery_address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true start_shipping_branch: type: number description: '' example: null nullable: true complete_shipping_branch: type: number description: '' example: null nullable: true vat_payment_suspension: type: boolean description: 'Defaults to false.' example: false nullable: true correlated: type: array description: '' example: - 4.0000192972214E+14 items: type: number comments: type: string description: validation.max. example: 'Free text' nullable: true gross_value: type: number description: '' example: 124.0 nullable: true header: type: object description: '' example: [] nullable: false properties: code: type: string description: "For more info, view AADE's documentation." example: '11.1' nullable: false enum: - '1.1' - '1.2' - '1.3' - '1.4' - '1.5' - '1.6' - '2.1' - '2.2' - '2.3' - '2.4' - '3.1' - '3.2' - '4' - '5.1' - '5.2' - '6.1' - '6.2' - '7.1' - '8.1' - '8.2' - '8.4' - '8.5' - '8.6' - '9.1' - '9.2' - '9.3' - '10.1' - '10.2' - '11.1' - '11.2' - '11.3' - '11.4' - '11.5' - '12' - '13.1' - '13.2' - '13.3' - '13.4' - '13.30' - '13.31' - '14.1' - '14.2' - '14.3' - '14.4' - '14.5' - '14.30' - '14.31' - '15.1' - '16.1' - '17.1' - '17.2' - '17.3' - '17.4' - '17.5' - '17.6' serial_number: type: string description: '' example: 53 nullable: false series: type: string description: "The invoice's series. Defaults to 0." example: ΤΔΑ-Α nullable: false special_invoice_category: type: number description: 'Special Invoice Category. For F&B, use 12.' example: 12.0 nullable: true is_cancel_order: type: boolean description: 'Special flag, which if true cancels all correlated invoices of type 8.6.' example: false nullable: true table_name: type: string description: 'The name of the table, if F&B. Max length is 50. validation.max.' example: A1 nullable: true is_fuel_invoice: type: boolean description: '' example: null nullable: true reverse_delivery_note_purpose: type: integer description: 'Marks the delivery note as reverse, with this purpose. Maps to reverseDeliveryNotePurpose. For more info, view AADE''s documentation.' example: null nullable: true enum: - 1 - 2 - 3 - 4 - 5 receiving_note_purpose: type: object description: 'Receiving notes only. code maps to receivingNotePurpose. display_name maps to otherReceivingNotePurposeTitle, used when the code is 7. For more info, view AADE''s documentation.' example: null nullable: true properties: code: type: integer description: 'This field is required when header.receiving_note_purpose is present.' example: null nullable: false enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 display_name: type: string description: '' example: null nullable: true to_weigh: type: boolean description: '' example: null nullable: true non_obligated_recipient: type: boolean description: 'Delivery notes only. Flags the recipient as not obligated (Μη Υπόχρεος Λήπτης). Defaults to false.' example: false nullable: true without_digital_transport_tracking: type: boolean description: 'Delivery notes only. Flags the movement as without digital transport tracking (Χωρίς Ψηφιακή Παρακολούθηση Διακίνησης). Defaults to false.' example: false nullable: true required: - code - serial_number - series move_purpose: type: string description: 'The purpose of the movement, 1 through 20. Either the code as a string, or an object {code, display_name}.' example: '1' nullable: true currency: type: object description: '' example: [] nullable: false properties: code: type: string description: 'ISO 4217 code of the currency. validation.max.' example: EUR nullable: false exchange_rate: type: number description: '5 decimal places required. If the currency is EUR, defaults to 1.00000. This field is required unless currency.code is in EUR. validation.min.' example: 1.0 nullable: false required: - code other_correlated_entities: type: array description: '' example: null items: type: object nullable: true properties: type: type: number description: '' example: null nullable: true entity: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: null nullable: false vat_number: type: string description: '' example: null nullable: false country: type: string description: validation.max. example: null nullable: false tax_office: type: string description: '' example: null nullable: true activity: type: string description: '' example: null nullable: true phone: type: string description: '' example: null nullable: true branch: type: integer description: '' example: null nullable: true address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: '' example: null nullable: true city: type: string description: '' example: null nullable: true number: type: string description: '' example: null nullable: true street: type: string description: '' example: null nullable: true required: - name - vat_number - country issuer: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: 'Some Company' nullable: false vat_number: type: string description: '' example: '9000000000' nullable: false tax_office: type: string description: '' example: 'ΚΕΦΟΔΕ ΑΤΤΙΚΗΣ - 1190' nullable: false activity: type: string description: '' example: 'ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΗΛΕΚΤΡΟΝΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ' nullable: false phone: type: string description: '' example: '+30 2100000000' nullable: true country: type: string description: "ISO2 of the issuer's country. validation.max." example: GR nullable: false supply_account_no: type: string description: '' example: null nullable: true document_id_no: type: string description: '' example: null nullable: true country_document_id: type: string description: '' example: null nullable: true branch: type: integer description: "The number of the issuer's branch. Defaults to 0 for headquarters." example: 0 nullable: true address: type: object description: '' example: [] nullable: false properties: postal_code: type: string description: '' example: '11528' nullable: false city: type: string description: '' example: Αθήνα nullable: false number: type: string description: '' example: '10' nullable: true street: type: string description: '' example: Μιχαλακοπούλου nullable: false required: - postal_code - city - street required: - name - vat_number - tax_office - activity - country - address counterpart: type: object description: '' example: [] nullable: false properties: name: type: string description: '' example: 'Other Company' nullable: false vat_number: type: string description: 'Required when the invoice is wholesale.' example: '9000000000' nullable: true tax_office: type: string description: '' example: 'ΦΑΕ ΑΘΗΝΩΝ' nullable: true activity: type: string description: '' example: ΕΜΠΟΡΙΟ nullable: true phone: type: string description: '' example: '+30 2100000000' nullable: true document_id_no: type: string description: '' example: null nullable: true supply_account_no: type: string description: '' example: null nullable: true country: type: string description: "ISO2 of the counterpart's country. validation.max." example: GR nullable: false branch: type: integer description: "The number of the counterpart's branch. If unknown, defaults to 0." example: 0 nullable: true address: type: object description: '' example: null nullable: true properties: postal_code: type: string description: 'This field is required when counterpart.address is present.' example: '10431' nullable: false city: type: string description: 'This field is required when counterpart.address is present.' example: Αθήνα nullable: false number: type: string description: '' example: '10' nullable: true street: type: string description: '' example: Πατησίων nullable: true required: - name - country details: type: array description: '' example: null items: type: object nullable: true properties: line_number: type: integer description: "Serial numbering of the invoice's details." example: 1 nullable: false name: type: string description: validation.max. example: 'EXAMPLE PRODUCT' nullable: false code: type: string description: "The detils' code. Only used when printing the invoice. validation.max." example: '00000' nullable: true comments: type: string description: validation.max. example: null nullable: true other: type: string description: 'Other comments for the details. validation.max.' example: null nullable: true not_vat_195: type: boolean description: '' example: false nullable: true cpv_code: type: string description: validation.max. example: null nullable: true rec_type: type: number description: "Special details flag. Common cases include:\n." example: null nullable: true detail_type: type: string description: "When an invoice has the type 1.5, then it must have 1 detail of type 1,\nas well as one of type 2." example: 1 nullable: true quantity: type: number description: validation.min. example: 2.0 nullable: false price_per_unit: type: number description: "The details' price per unit before any discount is applied. Supports up to 2 decimals. validation.min." example: 100.0 nullable: false net_value: type: number description: "The details' net value after discounts. validation.min." example: 200.0 nullable: false discount: type: number description: "The details' discount. Defaults to 0. validation.min." example: 0.0 nullable: true deductions: type: number description: '' example: 0.0 nullable: true tax: type: object description: '' example: [] nullable: false properties: code: type: string description: '' example: null nullable: false enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' value: type: number description: '' example: 48.0 nullable: false rate: type: number description: '' example: 24.0 nullable: false required: - code - value - rate tax_exemption: type: string description: 'Required when tax rate = 0.' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31' unit: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: '1' nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' display_name: type: string description: '' example: ΤΕΜ nullable: true quantity: type: integer description: '' example: null nullable: true other_taxes: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' amount: type: number description: '' example: 0.0 nullable: true stamp_duty: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' amount: type: number description: '' example: 0.0 nullable: true retention_tax: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' rate: type: number description: '' example: 0.0 nullable: true amount: type: number description: '' example: 0.0 nullable: true fee: type: object description: '' example: null nullable: true properties: code: type: string description: '' example: null nullable: true enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' amount: type: number description: '' example: 0.0 nullable: true fuel_code: type: number description: '' example: null nullable: true discount_option: type: boolean description: '' example: null nullable: true income: type: array description: '' example: null items: type: object nullable: true properties: type: type: string description: '' example: E3_561_002 nullable: true enum: - '' - E3_106 - E3_205 - E3_210 - E3_305 - E3_310 - E3_318 - E3_561_001 - E3_561_002 - E3_561_003 - E3_561_004 - E3_561_005 - E3_561_006 - E3_561_007 - E3_562 - E3_563 - E3_564 - E3_565 - E3_566 - E3_567 - E3_568 - E3_569 - E3_570 - E3_595 - E3_596 - E3_597 - E3_880_001 - E3_880_002 - E3_880_003 - E3_880_004 - E3_881_001 - E3_881_002 - E3_881_003 - E3_881_004 category: type: string description: '' example: category1_1 nullable: true enum: - category1_1 - category1_2 - category1_3 - category1_4 - category1_5 - category1_6 - category1_7 - category1_8 - category1_9 - category1_10 - category1_95 - category3 amount: type: number description: '' example: 100.0 nullable: true expense: type: array description: '' example: null items: type: object nullable: true properties: type: type: string description: '' example: null nullable: true enum: - E3_101 - E3_102_001 - E3_102_002 - E3_102_003 - E3_102_004 - E3_102_005 - E3_102_006 - E3_104 - E3_201 - E3_202_001 - E3_202_002 - E3_202_003 - E3_202_004 - E3_202_005 - E3_204 - E3_207 - E3_209 - E3_301 - E3_302_001 - E3_302_002 - E3_302_003 - E3_302_004 - E3_302_005 - E3_304 - E3_307 - E3_309 - E3_312 - E3_313_001 - E3_313_002 - E3_313_003 - E3_313_004 - E3_313_005 - E3_315 - E3_581_001 - E3_581_002 - E3_581_003 - E3_582 - E3_583 - E3_584 - E3_585_001 - E3_585_002 - E3_585_003 - E3_585_004 - E3_585_005 - E3_585_006 - E3_585_007 - E3_585_008 - E3_585_009 - E3_585_010 - E3_585_011 - E3_585_012 - E3_585_013 - E3_585_014 - E3_585_015 - E3_585_016 - E3_585_017 - E3_586 - E3_587 - E3_588 - E3_589 - E3_882_001 - E3_882_002 - E3_882_003 - E3_882_004 - E3_883_001 - E3_883_002 - E3_883_003 - E3_883_004 - VAT_361 - VAT_362 - VAT_363 - VAT_364 - VAT_365 - VAT_366 - E3_103 - E3_203 - E3_303 - E3_208 - E3_308 - E3_314 - E3_106 - E3_205 - E3_305 - E3_210 - E3_310 - E3_318 - E3_598_002 category: type: string description: '' example: null nullable: true enum: - category2_1 - category2_2 - category2_3 - category2_4 - category2_5 - category2_6 - category2_7 - category2_8 - category2_9 - category2_10 - category2_11 - category2_12 - category2_13 - category2_14 - category2_95 amount: type: number description: '' example: null nullable: false required: - line_number - name - quantity - price_per_unit - net_value - tax taxes_totals: type: array description: '' example: null items: type: object nullable: true properties: tax_category: type: number description: 'The category of the specified tax.' example: null nullable: true underlying_value: type: number description: 'The underlying value of this tax. validation.min.' example: 100.0 nullable: true id: type: number description: 'The line number of the item for which the tax is applied. validation.min.' example: 1.0 nullable: true tax_type: type: number description: 'The type of tax. This field is required when taxes_totals.* is present.' example: 1.0 nullable: false tax_amount: type: number description: 'This field is required when taxes_totals.* is present. validation.min.' example: 4.0 nullable: false packings_declarations: type: array description: '' example: null items: type: object properties: packaging_type: type: integer description: '' example: null nullable: false quantity: type: integer description: '' example: null nullable: false other_packaging_type_title: type: string description: '' example: null nullable: true required: - packaging_type - quantity payment_methods: type: array description: '' example: - [] items: type: object properties: code: type: string description: '' example: '3' nullable: false enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' amount: type: number description: 'Up to 2 decimal places are required.' example: 100.0 nullable: false info: type: string description: validation.max. example: null nullable: true tip: type: number description: '' example: null nullable: true provider_data: type: string description: '' example: null nullable: true required: - code - amount required: - issue_date - header - currency - issuer - counterpart - payment_methods tags: - name: Company description: '' - name: Invoices description: '' - name: Misc description: '' - name: Payments description: '' - name: 'Unsigned Invoices' description: '' components: securitySchemes: default: type: http scheme: bearer description: "Contact us to obtain your own key.\n\nYou can also include an **`X-Company-Secret`** header with the company's secret.\nThis is especially convenient for self-hosted software, but web-based software can use it as well.\nIt is activated upon request and applies to all companies of your account.\nEach merchant can find their secret inside their Invoice Portal panel and provide it to you." security: - default: []