Get started
API Endpoint
https://wrapp.ai/api/v1/
The Wrapp API Service provides programmatic access and management of the client’s financial data. From accessing the client’s billing books to issuing all supported invoices to myDATA.
To use the Wrapp API Service, you need an API key. Please contact us at sales@wrapp.ai to get your own API key.
Login
# Here is a curl example
curl -L 'https://wrapp.ai/api/v1/login' \
-H 'Content-Type: application/json' \
-d '{
"email": "tenant@example.com",
"api_key": "xxxxxxxx"
}'
To use the API, first log in with the correct credentials by making a POST call to:
https://wrapp.ai/api/v1/login
Notice: The JWT Token expires after 24 hours
Response Success:{ "data": { "type": "jwt", "attributes": { "jwt": "eyJhbGciOi...QZCe8F9xd3Xqu0" } }
Response Error:{ "errors": [ { "title": "Not valid user" } ] }
QUERY PARAMETERS
Field | Type | Description |
---|---|---|
api_key | String | (required) Your API key. |
String | (required) The email address of the client |
Vat Exemptions :: Index
# Here is a curl example
curl -L 'https://wrapp.ai/api/v1/vat_exemptions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxx'
To retrieve a list of all available VAT exemptions, make a GET call to:
https://wrapp.ai/api/v1/vat_exemptions
Response Success:[ { "1": "Άρθρο 2 & 3" }, { "2": "Άρθρο 5 (Παράδοση αγαθών)" }, ... ]
Response Error:{ "errors": [ { "status": "401", "title": "Unauthorized" } ] }
HEADER PARAMETERS
Key | Value |
---|---|
Accept: | "application/json" |
Authorization: | "Bearer JWT" |
Billing Books :: Index
# Here is a curl example
curl -L 'https://wrapp.ai/api/v1/billing_books' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxx'
To retrieve a list of all available billing books, make a GET call to:
https://wrapp.ai/api/v1/billing_books
Response Success:[ { "id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "name": "Τιμ Παροχης", "series": "ΤΠΑ", "invoice_type_code": "2.1", "number": 3 }, { "id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "name": "Απ Παροχης", "series": "ΕΑΠΑΡ", "invoice_type_code": "11.2", "number": 123 }, ... ]
Response Error:{ "errors": [ { "status": "401", "title": "Unauthorized" } ] }
HEADER PARAMETERS
Key | Value |
---|---|
Accept: | "application/json" |
Authorization: | "Bearer JWT" |
For simplicity and automation, some invoice_type_codes are universal:
• Billing books with invoice_type_code 1.1 cover types 1.x
• Billing books with invoice_type_code 2.1 cover types 2.x
• Billing books with invoice_type_code 5.2 cover types 5.x
Example: Billing books with invoice_type_code 1.2 will default to 1.1.
Billing Books :: Create
# Here is a curl example
curl -L 'https://wrapp.ai/api/v1/billing_books' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxx' \
-d '{
"name": "Τιμολόγιο",
"series": "ΕΤΠΑ",
"number": 1,
"invoice_type_code": "2.1"
}'
To create a new billing book, make a POST call to:
https://wrapp.ai/api/v1/billing_books
Response Success:{ "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "name": "Τιμολόγιο", "series": "ΕΤΠΑ", "invoice_type_code": "2.1" }
Response Error:{ "errors": [ { "title": "Name το έχουν ήδη χρησιμοποιήσει" }, { "title": "Series το έχουν ήδη χρησιμοποιήσει" } ] }
HEADER PARAMETERS
Key | Value |
---|---|
Accept: | "application/json" |
Authorization: | "Bearer JWT" |
QUERY PARAMETERS
Field | Type | Description |
---|---|---|
name | String | (required) The name of the billing book. |
series | String | (required) The serial identifier of the billing book. |
number | Integer | (required) The unique number associated with the new billing book entry. |
invoice_type_code | String | (required) The invoice type code for the invoices this billing book will handle. Examples include 1.1, 9.3 etc.
For simplicity and automation, some invoice_type_codes are universal: • Billing books with invoice_type_code 1.1 cover types 1.x • Billing books with invoice_type_code 2.1 cover types 2.x • Billing books with invoice_type_code 5.2 cover types 5.x Example: Billing books with invoice_type_code 1.2 will default to 1.1. |
Invoices :: Create
# Here is a curl examplecurl -L 'https://wrapp.ai/api/v1/invoices' \ -Η 'Content-Type: application/json' \ -H 'Authorization: Bearer xxxxxxxxxxxxxx' \ -d '{ "invoice_type_code": "2.1", "billing_book_id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "payment_method_type": 1, "payment_details": "Bank: xxxxxxxxx, iban: xxxxxxxxxxx", "currency": "USD", "exchange_rate": 0.80, "net_total_amount": 20.00, "vat_total_amount": 4.80, "total_amount": 24.80, "payable_total_amount": 24.80, "correlated_invoices": [], "counterpart": { "name": "Γιάννης Ιωάννου", "country_code": "GR", "vat": "123456789", "city": "Αθήνα", "street": "Ερμού", "number": "0", "postal_code": "12345" }, "invoice_lines": [{ "line_number": 1, "name": "Name", "quantity": 1, "quantity_type": 1, "unit_price": 20.00, "net_total_price": 20.00, "vat_rate": 24, "vat_total": 4.80, "subtotal": 24.80, "vat_exemption_code": "", "classification_category": "category1_3", "classification_type": "E3_561_001" }] }'
# Here is a curl example for invoice type code 8.2curl -L 'https://wrapp.ai/api/v1/invoices' \ -Η 'Content-Type: application/json' \ -H 'Authorization: Bearer xxxxxxxxxxxxxx' \ -d '{ "invoice_type_code": "8.2", "billing_book_id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "payment_method_type": 1, "net_total_amount": 0, "vat_total_amount": 0, "total_amount": 1.50, "payable_total_amount": 1.50, "other_taxes_amount": 1.50, "counterpart": { "name": "Γιάννης Ιωάννου", "country_code": "GR", "vat": "123456789", "city": "Αθήνα", "street": "Ερμού", "number": "0", "postal_code": "12345" }, "invoice_lines": [{ "line_number": 1, "accommodation_tax": 1.50, "other_taxes_percent_category": "7", "other_taxes_amount": 1,50, "classification_category": "category1_95" }] }'
To issue a new invoice, make a POST call to:
https://wrapp.ai/api/v1/invoices
Response Success:{ "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "my_data_mark": "xxxxxxxxxxxxxx", "my_data_uid": "xxxxxxxxxxxxxxx", "my_data_qr_url": "https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=xxxxxxxxx" }
Response Pending: # To check if the invoice has been issued succesfully to myDATA,
# we need to make a call to invoices status.{ "status": "pending", "invoice_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
Response Model Errors:{ "status": "Invoice Errors", "errors": [ { "title": "Invoice type δεν συμπεριλαμβάνεται στη λίστα" }, { "title": "Invoice Type does not match selected Billing Book Invoice Type" } ] }
Response myDATA Errors:{ "status": "myDATA Errors", "errors": [ { "code": "313", "message": "Classification type E3_561_003 is forbidden for Classification category category1_3 combined with invoice type Item2_1" } ] }
HEADER PARAMETERS
Key | Value |
---|---|
Accept: | "application/json" |
Authorization: | "Bearer JWT" |
QUERY PARAMETERS
Example code of invoice type 8.2 is included separately on the side section
Field | Type | Description |
---|---|---|
counterpart | Object | (required) Contains customer information for the invoice. |
billing_book_id | String | (required) The ID of the billing book to be used for this invoice. |
invoice_type_code | String | (required) The invoice type code, as specified by myDATA documentation (e.g., "1.1", "9.3"). |
payment_method_type | Integer | (required) The payment method type identifier. |
payment_details | String | Contains details about the payment. Accepts special characters, for example \n for new line. |
currency | String | The currency code. For example "USD", "NOK", etc. |
exchange_rate | Float | (required if currency is defined) The exchange rate of the currency defined, rounded to a maximum of 2 decimal places. |
other_taxes_amount | Float | (required for invoice type 8.2) Rounded to a maximum of 2 decimal places. |
net_total_amount | Float | (required) The total net amount of the invoice, rounded to a maximum of 2 decimal places. |
vat_total_amount | Float | (required) The total VAT amount of the invoice, rounded to a maximum of 2 decimal places. |
total_amount | Float | (required) The total invoice amount, rounded to a maximum of 2 decimal places. |
payable_total_amount | Float | (required) The total payable amount of the invoice, rounded to a maximum of 2 decimal places. |
correlated_invoices | Array | An array containing the IDs of any correlated invoices.
Example: [ ] for none or [ 'xxxxxxxxx' , 'xxxxxxxxxx' ]. |
invoice_lines | Array | (required) An array of objects representing individual invoice line items. |
COUNTERPART OBJECT
Field | Type | Description |
---|---|---|
name | String | (required) Full name of the counterpart |
country_code | String | (required) Code of the client's country. Example: "GR" for Greece |
vat | String | (required) The client's tax id number. |
city | String | (required) The client's city name. |
street | String | (required) The client's street address. |
number | String | (required) The client's street number. |
postal_code | String | (required) The client's postal code. |
PAYMENT METHOD TYPES
Code | Description |
---|---|
0 | Cash |
1 | Credit |
2 | Local bank account |
3 | Card |
4 | Cheque |
5 | Overseas bank account |
6 | Web banking transfer |
7 | Iris payment |
INVOICE LINE OBJECT
Field | Type | Description |
---|---|---|
line_number | Integer | (required) The index number of the invoice line |
name | String | (required) The name of the product or service. Example: "Product 1" |
quantity | Integer | (required) The quantity number of the product or service. |
quantity_type | Integer | The corresponding quantity code for the specific product / service according to myDATA specification |
unit_price | Float | (required) The price per unit for the corresponding product / service. Maximum 2 digits. |
net_total_price | Float | (required) The net total price of the invoice line. |
vat_rate | Integer | (required) The corresponding vat rate according to myDATA specifications. |
vat_total | Float | (required) The total price if the invoice line for the specified vat rate. Maximum 2 digits. |
subtotal | Float | (required) The sub total price of the invoice line. Maximum 2 digits. |
vat_exemption_code | Integer | (required when vat_rate is zero) The appropriate vat exemption code according to myDATA specifications when vat_rate is zero. |
classification_category | String | (required) The appropriate classification category according to myDATA specifications. |
classification_type | String | (required) The appropriate classification type according to myDATA specifications. |
other_taxes_amount | Float | (required for invoice type code 8.2) Rounded to a maximum of 2 decimal places. |
accommodation_tax | Float | (required for invoice type code 8.2) Rounded to a maximum of 2 decimal places. |
other_taxes_percent_category | String | (required for invoice type code 8.2) Valid values are: '6' , '7' , '8' , '9' , '10' |
Invoices :: Status
# Here is a curl example
curl -L 'https://wrapp.ai/api/v1/invoices/123456-1234-1234-123456789012' \
-H 'Authorization: Bearer xxxxxxxxxxxxxx'
To get information about a specific invoice object make a GET call to:
https://wrapp.ai/api/v1/invoices/:id
Response Success:{ "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "my_data_mark": "xxxxxxxxxxxxxx", "my_data_uid": "xxxxxxxxxxxxxxx", "my_data_qr_url": "https://mydataapidev.aade.gr/TimologioQR/QRInfo?q=xxxxxxxxx" }
Response Error:{ "errors": [ { "title": "Record not found" } ] }
HEADER PARAMETERS
Key | Value |
---|---|
Authorization: | "Bearer JWT" |
REST URL PARAMETERS
Key | Value |
---|---|
:id | (required) The id of the invoice. |