Skip to main content

UAE E-Invoice Peppol PINT AE


How to get “API Key” from Portal ?

To obtain the API key to be used in the request body of the login endpoint, navigate to Settings > ERP Management > API Management in the Portal and use the "Generate" button.

Login and Authorization Configuration

Technical Details

PropertyValue
Endpoint/auth/login
MethodPOST
Content-Typeapplication/json
Base URL
AuthorizationNone (Initial access)

Request Body (JSON)

The following fields are used to define login criteria:

FieldTypeDescription
apiKeyStringA unique key assigned specifically to the user for portal access, verifying the system identity. (it is explained in previous section “How to get API Key from portal”)
emailStringThe registered email address in the system belonging to the authorized user performing the operation.

Response Details

Upon a successful request, a 200 OK code is returned with the following details:

FieldTypeDescription
jwtThe secure session token that must be used as a 'R-Auth' API Key in all subsequent API calls.
expirationDateDateTimeIndicates the exact time the session key will expire; the ERP system can use this data to manage automatic re-login processes.

The JWT token successfully obtained during the authentication step (auth/login) acts as a key to access the secure endpoints of the APIs. After the first successful login, the JWT token obtained from the response of a successful login is used as the R-Auth value in the authorization section of other queries. This configuration ensures that every data exchange between the ERP and the portal occurs over an authenticated and secure channel.

Technical Details

PropertyValue
KeyEnter R-Auth in the Key field.
Value{{apiKey}} or {{jwt}} (Copy the jwt string returned from the login endpoint.)
Header SettingNavigate to the "Headers" tab of the request to be sent.

1. Introduction

Evatra is a cloud-based e-invoice management portal fully compliant with the UAE's digital transformation requirements and Peppol network standards. This API documentation is designed to ensure seamless integration of your ERP systems with UAE e-invoice regulations. Our portal abstracts complex XML structures and Peppol communication protocols (AS4), providing developers with an easy-to-use, secure, and scalable interface. Using the Evatra API, you can send invoices asynchronously, track real-time status, manage incoming invoices, and automatically process technical responses (MLR) from recipients back into your ERP system. Our compliance-focused architecture guarantees the legal validity of every document, ensures data integrity, and creates an end-to-end traceable audit trail.

2. Authentication POST

Purpose of Use: This endpoint allows users to log in to the system using an API key and email address, without requiring a password. Authentication is performed through a valid API key and email combination.

Upon successful login, a JWT access token and its expiration date are returned. The API key may be of type COMPANY or USER; for company-type keys, the user must be authorized for the associated company.

Endpoint Information

PropertyValue
URL/auth/login
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationR-Auth Header (JWT Token) — Required

Example Request

curl -X POST 'https://api-stage.evatrauae.com/auth/login' \
-H 'accept: */*' \
-H 'R-Auth: {{jwt_token}}' \
-H 'Content-Type: application/json' \
-d '{
"apiKey": "{{your_api_key}}",
"email": "user@example.com"
}'

Request Parameters


Body Parameters

Field NameTypeRequiredDescription
apiKeystringConditional*User or company API key. Required to trigger the API key-based login flow.
emailstringConditional*Registered email address of the user. Required to trigger the API key-based login flow.

Note

When apiKey and email are provided together (without a password), the API key-based login flow is triggered and a JwtBasicResponse is returned.

Responses

200 - Successful Response

Login successful. Returns a JWT access token and its expiration date.

Response body (JwtBasicResponse):

{
"jwt": "{{jwt_token}}",
"expirationDate": "2026-01-15T12:00:00.000Z"
}

Response Fields


FieldTypeDescription
jwtstringJWT access token (used as Bearer token in subsequent requests)
expirationDatestring (ISO 8601)Expiration date and time of the JWT token

401 - Unauthorized

Trigger

When the API key is invalid or the user is not authorized for the associated company.

Response body:

{
"errorMessage": "Invalid login attempt!",
"errorType": "NOT_AUTHORITY",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/auth/login"
}

An AuthorizationServiceException is thrown when API key authentication fails, returning a 401 Unauthorized response.

404 - Not Found

Trigger

When the API key or email address does not exist in the system.

Response body:

{
"errorMessage": "User not found!",
"errorType": "NOT_FOUND_USER",
"errorTitle": "NOT_FOUND",
"status": 404,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/auth/login"
}

A NotFoundException is thrown when the provided email or API key does not exist in the system.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body:

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/auth/login"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

3. Send Document Async POST

Purpose of Use: This endpoint submits XML or PDF documents (invoices, waybills, etc.) from ERP systems to the platform for asynchronous processing.

The document is not processed immediately upon request; instead, a tracking ID is returned. The processing status can be polled using the /invoice/document-status/{trackingId} endpoint. Authorization requires either a valid R-Auth JWT token or an apiKey combined with a compId.

Endpoint Information

PropertyValue
URL/invoice/send-document-async
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationR-Auth Header (Bearer JWT Token) — Required

Example Request

curl -X POST 'https://api-stage.evatrauae.com/invoice/send-document-async' \
-H 'R-Auth: {{jwt_token}}' \
-H 'Content-Type: application/json' \
-d '{
"apiKey": "{{your_api_key}}",
"base64Document": "{{base64_xml_document}}",
"businessType": "B2B",
"compId": "{{company_uuid}}",
"invoiceSource": "ERP",
"invoiceType": "UAE_PINT",
"receiverEmails": ["user@example.com"]
}'

Request Parameters


Body Parameters

Field NameTypeRequiredDescription
compIdstring (UUID)Conditional*The unique identifier of the company. Required if apiKey is not provided.
apiKeystringConditional*The company API key. Required if compId is not provided. The system resolves the company identity from this key.
base64DocumentstringConditional*Base64-encoded XML document (invoice or waybill). Required if base64Pdf is not provided.
base64PdfstringConditional*Base64-encoded PDF document (ZUGFeRD/Factur-X PDF). Required if base64Document is not provided.
invoiceTypestring (enum)Conditional*The format of the invoice document. Required if waybillType is not provided. See Parameter Value Reference below for valid values.
waybillTypestring (enum)Conditional*The format of the waybill document. Required if invoiceType is not provided. See Parameter Value Reference below for valid values.
invoiceSourcestring (enum)OptionalThe source of the document (e.g. ERP, PORTAL, EMAIL). See Parameter Value Reference below for valid values.
businessTypestring (enum)OptionalThe business model type: B2B (Business to Business), B2C (Business to Consumer), or B2G (Business to Government).
receiverEmailsarray (string)OptionalList of recipient email addresses to which the document will be forwarded.
mailTemplateIdstringOptionalThe identifier of the email template to use during document delivery.

Notes

  • At least one of compId or apiKey must be provided.
  • At least one of invoiceType or waybillType must be provided.
  • At least one of base64Document or base64Pdf must be provided.

Parameter Value Reference

InvoiceType Values

ValueDescription
PEPPOL_BISPEPPOL BIS Billing — International PEPPOL invoice format
RO_EFACTURARomania e-Invoice format
XRECHNUNGGermany XRechnung UBL format
MY_INVOISMalaysia MyInvois invoice format
MY_PINTMalaysia PINT invoice format
DK_OIOUBLDenmark OIOUBL invoice format
EG_INVOICEEgypt e-Invoice format
HR_INVOICECroatia e-Invoice format
UAE_PINTUnited Arab Emirates PINT invoice format
ZUGFERDGermany ZUGFeRD hybrid PDF/XML format
FACTUR_XFrance Factur-X hybrid PDF/XML format
XRECHNUNG_CIIGermany XRechnung CII format
CIIUN/CEFACT CII XML format
CIDCID XML format
KZ_ESF_V2Kazakhstan ESF v2 invoice format
KSEFPoland KSeF invoice format

WaybillType Values

ValueDescription
RS_WAYBILL_DESPATCHSerbia Despatch Advice waybill
RS_WAYBILL_RECEIPTSerbia Receipt Advice waybill
RS_APPLICATION_RESPONSESerbia Application Response
RO_ETRANSPORTRomania e-Transport format

InvoiceSource Values

ValueDescription
PORTAL_OCRUpload via portal using OCR
EMAIL_OCRUpload via email using OCR
EMAILSent via email
PORTALSent via portal
ERPERP system integration
PEPPOLVia PEPPOL network
LHDNMMalaysia LHDN corridor
NEMHANDELDenmark NemHandel network
SERVICEService integration
HARVESTHarvest integration
SHOPIFYShopify integration
AMAZON_SPAmazon SP integration
EBAYeBay integration
HUBSPOTHubSpot integration
ANAFRomania ANAF integration
LAZADALazada integration
SFTPUpload via SFTP
KSEFPoland KSeF integration
RS_APISerbia API integration
ETAEgypt ETA integration
ERACUNCroatia eRacun integration
STRIPEStripe integration

BusinessType Values

ValueDescription
B2BBusiness to Business
B2CBusiness to Consumer
B2GBusiness to Government

Responses

200 - Successful Response

The document submission request was accepted. A trackingId and an initial status of PENDING are returned. Actual processing continues asynchronously; use the /invoice/document-status/{trackingId} endpoint to poll the result.

Response body (AsyncERPResponse):

{
"trackingId": "{{entity_uuid}}",
"status": "PENDING",
"message": null
}

Response Fields


FieldTypeDescription
trackingIdstring (UUID)Unique tracking identifier for the asynchronous processing request. Used to query status.
statusstring (enum)Current processing status of the document. Returns PENDING initially. See Document Processing Status below for valid values.
messagestringOptional informational message about the processing. Typically returns null.

Document Processing Status

ValueDescription
PENDINGRequest received, processing has not started yet
PROCESSINGDocument is actively being processed
FAILEDProcessing failed
SENDING_FAILEDDocument was processed but transmission failed
PERMANENT_FAILEDPermanent failure that cannot be retried
COMPLETEDProcessing completed successfully

400 - Bad Request

Trigger

When a required conditional field pair is missing: compId/apiKey, invoiceType/waybillType, or base64Document/base64Pdf.

Response body:

{
"errorMessage": "Required field missing: apiKey or companyId",
"errorType": "DOCUMENT_PROCESS_REQUIRED_FIELDS",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async"
}

An IllegalArgumentException is thrown and a 400 Bad Request is returned when any of the conditional required field pairs (compId/apiKey, invoiceType/waybillType, base64Document/base64Pdf) is left empty.

401 - Unauthorized

Trigger

When the R-Auth token is invalid or the user is not authorized for the specified company.

Response body:

{
"errorMessage": "User is not authorized for this company",
"errorType": "NOT_AUTHORITY",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async"
}

Returns 401 Unauthorized when the JWT token is invalid or expired, or when the authenticated user does not have access to the company identified by compId.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body:

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

4. Send Document Async JSON POST

Purpose of Use: This endpoint allows sending e-invoice documents in JSON format asynchronously, following the UBL 2.1 standard. The document processing runs in the background and the response returns a unique trackingId to monitor the process.

The processing status can be queried later using the /invoice/document-status/{trackingId} endpoint. The company identity can be provided either directly via ublDto.CompanyId or through an apiKey; both fields cannot be empty at the same time.

Endpoint Information

PropertyValue
URL/invoice/send-document-async-json
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header) Required

Example Request

curl --location 'https://api-stage.evatrauae.com/invoice/send-document-async-json' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"apiKey": "{{your_api_key}}",
"businessType": "B2B",
"receiverEmails": [
"user@example.com"
],
"mailTemplateId": null,
"ublDto": {
"Type": "UAE_PINT",
"Format": "EASY_INVOICE",
"ProfileType": "EN16931",
"CompanyId": "{{company_uuid}}",
"PartnerUuid": "{{partner_uuid}}",
"IsPeppolParticipant": false,
"PeppolParticipantId": "",
"ExternalInvoiceId": "",
"ID": { "Value": "INV-2026-001" },
"UUID": { "Value": "{{invoice_uuid}}" },
"IssueDate": { "Value": "2026-03-12" },
"DueDate": { "Value": "2026-03-26" },
"DocumentCurrencyCode": { "Value": "AED", "listAgencyID": "", "listID": "", "listVersionID": "" },
"InvoiceTypeCode": { "Value": "380", "listAgencyID": "", "listID": "" },
"BuyerReference": { "Value": "PO-REF-001" },
"Note": [{ "Value": "Thank you for your order." }],
"CustomizationID": { "Value": "urn:peppol:pint:billing-1@ae-1" },
"ProfileID": { "Value": "urn:peppol:bis:billing" },
"UBLVersionID": { "Value": "2.1" },
"AccountingCost": { "Value": "2" },
"AccountingSupplierParty": {
"Party": {
"EndpointID": { "schemeID": "0235", "Value": "1004000145" },
"PartyName": [{ "Name": { "Value": "Supplier Company Name" } }],
"PostalAddress": {
"StreetName": { "Value": "Test Address" },
"Country": { "IdentificationCode": { "Value": "AE" } }
},
"PartyTaxScheme": [{ "CompanyID": { "Value": "100400014520003" }, "TaxScheme": { "ID": { "Value": "VAT" } } }],
"PartyLegalEntity": [{ "RegistrationName": { "Value": "Supplier Company Name" }, "CompanyID": { "Value": "100400014520003", "schemeAgencyID": "TL" } }],
"Contact": { "ElectronicMail": { "Value": "user@example.com" }, "Telephone": { "Value": "+49 170 1234567" } }
}
},
"AccountingCustomerParty": {
"Party": {
"EndpointID": { "schemeID": "0235", "Value": "1004000145" },
"PartyName": [{ "Name": { "Value": "Customer Company Name" } }],
"PostalAddress": {
"StreetName": { "Value": "Customer Address" },
"Country": { "IdentificationCode": { "Value": "AE" } }
},
"PartyTaxScheme": [{ "CompanyID": { "Value": "126598855988803" }, "TaxScheme": { "ID": { "Value": "FC" } } }],
"PartyLegalEntity": [{ "RegistrationName": { "Value": "Customer Company Name" }, "CompanyID": { "Value": "126598855988803", "schemeAgencyID": "TL" } }],
"Contact": { "Name": { "Value": "Contact Name" }, "ElectronicMail": { "Value": "user@example.com" } }
}
},
"PaymentMeans": [{
"PaymentMeansCode": { "Value": "30" },
"PaymentDueDate": { "Value": "2026-03-26" },
"PayeeFinancialAccount": { "ID": { "Value": "GL9188990000088999" } }
}],
"TaxTotal": [{
"TaxAmount": { "Value": "0.10", "currencyID": "AED" },
"TaxSubtotal": [{
"TaxableAmount": { "Value": "2.00", "currencyID": "AED" },
"TaxAmount": { "Value": "0.10", "currencyID": "AED" },
"TaxCategory": { "ID": { "Value": "S" }, "Percent": { "Value": "5" }, "TaxScheme": { "ID": { "Value": "VAT" } } }
}]
}],
"LegalMonetaryTotal": {
"LineExtensionAmount": { "Value": "2", "currencyID": "AED" },
"TaxExclusiveAmount": { "Value": "2", "currencyID": "AED" },
"TaxInclusiveAmount": { "Value": "2.10", "currencyID": "AED" },
"PayableAmount": { "Value": "2.10", "currencyID": "AED" }
},
"InvoiceLine": [{
"ID": { "Value": "1" },
"InvoicedQuantity": { "Value": "1", "unitCode": "XBA" },
"LineExtensionAmount": { "Value": "2", "currencyID": "AED" },
"Item": {
"Name": { "Value": "Product Name" },
"Description": [{ "Value": "Product description" }],
"ClassifiedTaxCategory": [{ "ID": { "Value": "S" }, "Percent": { "Value": "5" }, "TaxScheme": { "ID": { "Value": "VAT" } } }]
},
"Price": { "PriceAmount": { "Value": "2", "currencyID": "AED" }, "BaseQuantity": { "Value": 1, "unitCode": "XBA" } }
}]
}
}'

Request Parameters


Body Parameters

Field NameTypeRequiredDescription
apiKeystringConditional*ERP integration API key. Required if ublDto.CompanyId is empty; the company UUID is resolved from this key.
businessTypestring (enum)OptionalBusiness model type. One of B2B, B2C, or B2G.
receiverEmailsArray<String>OptionalList of recipient email addresses for invoice delivery.
mailTemplateIdstringOptionalIdentifier of the mail template to be used for delivery.
ublDtoobjectYesUBL 2.1 compliant e-invoice object. Contains all invoice data.
ublDto.CompanyIdstring (UUID)Conditional*Unique identifier of the company performing the transaction. Required if apiKey is empty.
ublDto.Typestring (enum)OptionalInvoice/document format type. E.g.: UAE_PINT, XRECHNUNG, PEPPOL_BIS, ZUGFERD, KSEF.
ublDto.Formatstring (enum)OptionalInvoice rendering template: EASY_INVOICE (summary) or DETAILED_INVOICE (detailed).
ublDto.ProfileTypestring (enum)OptionalUBL profile type. Default value: EN16931.
ublDto.IsPeppolParticipantbooleanOptionalWhether the recipient is registered in the Peppol network. Default: false.
ublDto.PeppolParticipantIdstringOptionalRecipient's Peppol network participant ID. Used when IsPeppolParticipant=true.
ublDto.PartnerUuidstring (UUID)OptionalUUID of the business partner/recipient record in the system.
ublDto.ExternalInvoiceIdstringOptionalInvoice reference ID in an external system.
ublDto.IDobjectOptionalInvoice number object. Value: invoice number string.
ublDto.UUIDobjectOptionalUnique identifier for the invoice. Value: UUID format.
ublDto.IssueDateobjectOptionalInvoice issue date. Value: YYYY-MM-DD format.
ublDto.DueDateobjectOptionalInvoice due date. Value: YYYY-MM-DD format.
ublDto.DocumentCurrencyCodeobjectOptionalInvoice currency. Value: ISO 4217 code (e.g. AED, EUR, USD).
ublDto.InvoiceTypeCodeobjectOptionalInvoice type code (UN/EDIFACT). Value: 380 = Commercial Invoice, 381 = Credit Note.
ublDto.BuyerReferenceobjectOptionalBuyer's purchase order or reference number. Value: reference text.
ublDto.NoteArray<Object>OptionalInvoice notes. Each element is a text wrapper object containing a Value field.
ublDto.CustomizationIDobjectOptionalUBL customization profile identifier. Value: profile URI.
ublDto.ProfileIDobjectOptionalBusiness process profile identifier. Value: process URI.
ublDto.UBLVersionIDobjectOptionalUBL schema version. Value: e.g. 2.1.
ublDto.AccountingCostobjectOptionalAccounting cost/reference code. Value: accounting reference string.
ublDto.AccountingSupplierPartyobjectOptionalSeller/supplier party information (UBL SupplierParty structure).
ublDto.AccountingCustomerPartyobjectOptionalBuyer/customer party information (UBL CustomerParty structure).
ublDto.PayeePartyobjectOptionalPayee party information when different from the supplier.
ublDto.BuyerCustomerPartyobjectOptionalAdditional buyer customer party details.
ublDto.DeliveryArray<Object>OptionalDelivery information list (address, date, carrier, etc.).
ublDto.PaymentMeansArray<Object>OptionalPayment method details. Contains PaymentMeansCode, account number, and due date.
ublDto.TaxTotalArray<Object>OptionalTotal tax information. Contains TaxAmount and TaxSubtotal sub-structures.
ublDto.LegalMonetaryTotalobjectOptionalLegal monetary totals: line extension amount, tax exclusive/inclusive amount, and payable amount.
ublDto.InvoiceLineArray<Object>OptionalInvoice lines. Each line contains product/service, quantity, price, and tax information.
ublDto.AllowanceChargeArray<Object>OptionalInvoice-level discount and surcharge items.
ublDto.PricingExchangeRateobjectOptionalForeign exchange rate information used for pricing.

Parameter Value Reference

BusinessType Values

ValueDescription
B2BBusiness to Business
B2CBusiness to Consumer
B2GBusiness to Government

InvoiceType Values

ValueDescription
PEPPOL_BISPeppol BIS invoice format
XRECHNUNGGermany XRechnung UBL format
UAE_PINTUnited Arab Emirates PINT e-invoice format
MY_INVOISMalaysia e-invoice (MyInvois) format
MY_PINTMalaysia PINT format
DK_OIOUBLDenmark OIOUBL format
EG_INVOICEEgypt e-invoice format
HR_INVOICECroatia e-invoice format
ZUGFERDGermany ZUGFeRD PDF/A hybrid format
FACTUR_XFrance Factur-X hybrid format
XRECHNUNG_CIIGermany XRechnung CII format
CIIUN/CEFACT Cross Industry Invoice (CII)
CIDUN/CEFACT CID format
PDFUnstructured PDF invoice
KZ_ESF_V2Kazakhstan ESF v2 e-invoice format
KSEFPoland KSeF e-invoice format
RO_EFACTURARomania e-Factura format

InvoiceFormat Values

ValueDescription
EASY_INVOICESummary/easy invoice view
DETAILED_INVOICEDetailed invoice view

ProfileType Values

ValueDescription
EN16931European e-invoice core data model — default
EXTENDEDExtended profile
BASICBasic profile
KSEF_FA2Poland KSeF FA(2) profile

Notes

  • At least one of apiKey or ublDto.CompanyId must be provided. If both are empty, a 400 Bad Request error is returned.
  • When apiKey is provided, the company UUID is resolved automatically; ublDto.CompanyId is not required. Both fields can also be sent together.
  • All nested objects inside ublDto follow the UBL 2.1 standard. Fields carrying values (IDs, dates, amounts, etc.) are generally wrapper objects containing a Value sub-field.
  • Asynchronous processing: A successful request does not immediately process the document; it is first queued with PENDING status. The actual processing status must be queried separately using the trackingId.

Responses

200 - Successful Response

Document has been successfully queued for processing. Use the returned trackingId with /invoice/document-status/{trackingId} to poll for the processing status.

Response body (AsyncERPResponse)

{
"trackingId": "{{tracking_uuid}}",
"status": "PENDING",
"message": null
}

Response Fields


Root Fields

FieldTypeDescription
trackingIdstring (UUID)Unique tracking identifier for the document processing job. Used in the status query endpoint.
statusstring (enum)Current document processing status. Returns PENDING on successful submission.
messagestringOptional informational message about the processing job. Typically null on initial submission.

Document Processing Status

ValueDescription
PENDINGJob queued, processing has not started yet
PROCESSINGDocument is actively being processed
COMPLETEDProcessing completed successfully and document was delivered
FAILEDProcessing failed
SENDING_FAILEDDocument was generated but delivery failed
PERMANENT_FAILEDProcessing permanently failed; no retry will be attempted

400 - Bad Request

Trigger

When both apiKey and ublDto.CompanyId are null.

Response body

{
"errorMessage": "Document process required fields: apiKey or companyId",
"errorType": "DOCUMENT_PROCESS_REQUIRED_FIELDS",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async-json"
}

At least one of apiKey or ublDto.CompanyId must be provided. When both are null, an IllegalArgumentException is thrown and a 400 Bad Request is returned.

400 - Bad Request

Trigger

When an invalid or unrecognized apiKey is provided.

Response body

{
"errorMessage": "Api Key Didnt Match",
"errorType": "API_ERROR",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async-json"
}

If the provided apiKey does not match any registered company in the system, an IllegalArgumentException is thrown and a 400 Bad Request is returned.

401 - Unauthorized

Trigger

When the JWT token is missing/invalid or the user is not authorized for the specified company.

Response body

{
"errorMessage": "Not authorized for this action",
"errorType": "NOT_AUTHORITY",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async-json"
}

If the authenticated user does not belong to the resolved company, an AuthorizationServiceException is thrown and a 401 Unauthorized is returned.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/send-document-async-json"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

5. Document Status GET

Purpose of Use: This endpoint is used to query the real-time processing status of a document (invoice or waybill) previously submitted via ERP integration.

The response returns the tracking ID, the current processing step (pending, processing, completed, or failed), document details, error information, and timestamps.

Endpoint Information

PropertyValue
URL/invoice/document-status/{trackingId}
MethodGET
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header)

Example Request

curl --location 'https://api-stage.evatrauae.com/invoice/document-status/{{tracking_uuid}}' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Path Parameters

Field NameTypeRequiredDescription
trackingIdstring (UUID)YesThe unique tracking ID used to monitor a document processing job. Use the trackingId value returned by the /invoice/send-document-async or /invoice/send-document-async-json endpoints.

Responses

200 - Successful Response

Document processing status returned successfully. The status field indicates the current processing step. When processing is complete, the documentId field contains the system ID of the saved document.

Response body (DocumentProcessDto)

{
"trackingId": "{{tracking_uuid}}",
"companyId": "{{company_uuid}}",
"direction": "OUTGOING",
"documentType": "PEPPOL_BIS",
"waybillType": null,
"source": "ERP",
"target": "PEPPOL",
"status": "COMPLETED",
"filename": "invoice_2026_001.xml",
"invoiceNumber": "INV-2026-001",
"documentId": "{{invoice_uuid}}",
"sendingResult": "AP_ACKNOWLEDGED",
"errorType": null,
"errors": null,
"createdAt": "2026-01-15T10:00:00",
"statusUpdatedAt": "2026-01-15T10:02:30",
"completedAt": "2026-01-15T10:02:30"
}

Response Fields


FieldTypeDescription
trackingIdstring (UUID)Unique tracking identifier for this document processing job
companyIdstring (UUID)Unique identifier of the company that initiated the processing job
directionstring (enum)Direction of the document: incoming or outgoing
documentTypestring (enum)Format or standard of the document (e.g. PEPPOL_BIS, XRECHNUNG, ZUGFERD)
waybillTypestring (enum)Waybill document type. Populated only for waybill processing jobs; null for invoice jobs
sourcestring (enum)Origin system of the document (e.g. ERP, PORTAL, EMAIL)
targetstring (enum)Target system for the document (e.g. PEPPOL, KSEF). Null if no target is defined
statusstring (enum)Current processing step of the document
filenamestringFile name of the processed document
invoiceNumberstringInvoice number associated with the document. May be null before processing completes
documentIdstring (UUID)ID of the document saved in the system after processing completes. Populated in COMPLETED status
sendingResultstringAdditional information or status message about the transmission result
errorTypestring (enum)Indicates the error type when a failure occurs; null for successful jobs
errorsobjectError details. May be a String, List<String>, or List<ValidationError> depending on the failure type. Null for successful jobs
createdAtstring (ISO 8601)Date and time the processing record was created
statusUpdatedAtstring (ISO 8601)Date and time the processing status was last updated
completedAtstring (ISO 8601)Date and time the processing job was completed (successfully or with failure)

Parameter Value Reference

Direction Values

ValueDescription
INCOMINGIncoming document
OUTGOINGOutgoing document

DataType Values

ValueDescription
PEPPOL_BISPeppol BIS standard UBL format
XRECHNUNGGermany XRechnung standard
ZUGFERDZUGFeRD hybrid PDF/XML format
FACTUR_XFrance Factur-X standard
XRECHNUNG_CIICII-based XRechnung
MY_INVOISMalaysia e-InvoIS standard
MY_PINTMalaysia PINT standard
DK_OIOUBLDenmark OIOUBL standard
EG_INVOICEEgypt e-invoice standard
HR_INVOICECroatia e-invoice standard
UAE_PINTUnited Arab Emirates PINT standard
RO_EFACTURARomania e-Factura standard
CIIUN/CEFACT CII format
CIDCID format
KZ_ESF_V2Kazakhstan ESF v2 standard
KSEFPoland KSeF standard

WaybillType Values

ValueDescription
RS_WAYBILL_DESPATCHSerbia despatch waybill
RS_WAYBILL_RECEIPTSerbia receipt waybill
RS_APPLICATION_RESPONSESerbia application response document
RO_ETRANSPORTRomania e-Transport document

Source / Target Values

ValueDescription
ERPERP integration system
PORTALWeb portal
PORTAL_OCRPortal upload processed via OCR
EMAILEmail channel
EMAIL_OCREmail attachment processed via OCR
PEPPOLPeppol network
LHDNMMalaysia LHDN system
NEMHANDELDenmark Nemhandel network
SFTPSFTP file transfer
KSEFPoland KSeF system
RS_APISerbia API integration
ETAEgypt ETA tax portal
ERACUNCroatia eRacun system
ANAFRomania ANAF tax authority
SERVICEInternal service processing
HARVESTHarvest accounting integration
SHOPIFYShopify e-commerce integration
AMAZON_SPAmazon Seller Partner integration
EBAYeBay e-commerce integration
HUBSPOTHubSpot CRM integration
LAZADALazada e-commerce integration
STRIPEStripe payment integration

Document Processing Status

ValueDescription
PENDINGJob queued, not yet started
PROCESSINGDocument is actively being processed
COMPLETEDProcessing completed successfully
FAILEDProcessing failed; may be retried
SENDING_FAILEDDocument was processed but transmission failed
PERMANENT_FAILEDProcessing permanently failed and will not be retried

404 - Not Found

Trigger

When no processing record is found for the given trackingId.

The documentProcessService.getStatus() method throws ApiError(INVOICE_PROCESS_NOT_FOUND) when no record matches the provided trackingId. The controller catches this and returns a 404 Not Found response with an empty body.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

When an unexpected server-side error occurs, the controller catches the generic Exception and returns a 500 Internal Server Error response with an empty body.

6. Search Processing History POST

Purpose of Use: This endpoint is used to query the document processing queue history with filters. Results can be filtered by company, status, source, direction, and date range.

Results are returned in a paginated format. Page number (pageNumber) and page size (pageSize) are specified via URL query parameters. Processing history can be monitored using the trackingId field returned in each record.

Endpoint Information

PropertyValue
URL/invoice/document-process/search
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header) — Required

Example Request

curl -X POST 'https://api-stage.evatrauae.com/invoice/document-process/search?pageNumber=0&pageSize=20' \
-H 'R-Auth: {{jwt_token}}' \
-H 'Content-Type: application/json' \
-d '{
"companyId": "{{company_uuid}}",
"createdAt": {
"from": "2026-03-12",
"to": "2026-03-12"
},
"direction": "OUTGOING",
"filename": null,
"source": "ERP",
"status": "COMPLETED"
}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
pageNumbernumberOptionalPage number (0-indexed). Default: 0
pageSizenumberOptionalNumber of records per page. Default: 20

Body Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesUnique identifier of the company to query processing records for
directionstring (enum)OptionalDocument direction: incoming (INCOMING) or outgoing (OUTGOING)
sourcestring (enum)OptionalSource system of the document (ERP, PORTAL, PEPPOL, etc.)
filenamestringOptionalFilter by document filename
statusstring (enum)OptionalFilter by processing status: PENDING, PROCESSING, COMPLETED, FAILED, etc.
createdAtobjectOptionalDate range filter for record creation time
createdAt.fromstring (ISO 8601 — date)OptionalStart of the date range (e.g. 2026-03-12)
createdAt.tostring (ISO 8601 — date)OptionalEnd of the date range (e.g. 2026-03-12)

Parameter Value Reference

Direction Values

ValueDescription
INCOMINGIncoming document
OUTGOINGOutgoing document

Source Values

ValueDescription
ERPERP system integration
PORTALWeb portal
PORTAL_OCRPortal upload with OCR processing
EMAILEmail
EMAIL_OCREmail attachment with OCR
PEPPOLPeppol network
LHDNMMalaysia LHDN integration
NEMHANDELDenmark NemHandel network
SERVICEInternal service
HARVESTHarvest integration
SHOPIFYShopify integration
AMAZON_SPAmazon Seller Partner integration
EBAYeBay integration
HUBSPOTHubSpot integration
ANAFRomania ANAF integration
LAZADALazada integration
SFTPSFTP file transfer
KSEFPoland KSeF system
RS_APISerbia API integration
ETAEgypt ETA integration
ERACUNCroatia eRacun system
STRIPEStripe payment integration

DataType Values

ValueDescription
PEPPOL_BISPeppol BIS invoice format
XRECHNUNGGermany XRechnung UBL format
XRECHNUNG_CIIGermany XRechnung CII format
ZUGFERDZUGFeRD PDF/A-3 format
FACTUR_XFrance Factur-X format
CIIUN/CEFACT CII format
CIDCID format
PDFUnstructured PDF (paper invoice, image)
RO_EFACTURARomania e-Factura format
MY_INVOISMalaysia MyInvois format
MY_PINTMalaysia PINT format
DK_OIOUBLDenmark OIOUBL format
EG_INVOICEEgypt e-invoice format
HR_INVOICECroatia e-invoice format
UAE_PINTUnited Arab Emirates PINT format
KSEFPoland KSeF invoice format
KSEF_OFFLINEPoland KSeF offline mode
KZ_ESF_V2Kazakhstan ESF v2 format

WaybillType Values

ValueDescription
RS_WAYBILL_DESPATCHSerbia despatch waybill
RS_WAYBILL_RECEIPTSerbia receipt waybill
RS_APPLICATION_RESPONSESerbia application response
RO_ETRANSPORTRomania e-Transport document

Responses

200 - Successful Response

Search successful. Returns paginated document processing records matching the applied filters.

Response body (Page<DocumentProcessDto>)

{
"content": [
{
"trackingId": "{{entity_uuid}}",
"companyId": "{{company_uuid}}",
"direction": "OUTGOING",
"documentType": "PEPPOL_BIS",
"waybillType": null,
"source": "ERP",
"target": null,
"status": "COMPLETED",
"filename": "invoice.xml",
"invoiceNumber": "invoiceNumber",
"documentId": "{{entity_uuid}}",
"sendingResult": "SUCCESS",
"errorType": null,
"createdAt": "2026-03-12T10:00:00",
"statusUpdatedAt": "2026-03-12T10:05:00",
"completedAt": "2026-03-12T10:05:00",
"errors": null,
"additionalData": null
}
],
"totalElements": 1,
"totalPages": 1,
"size": 20,
"number": 0,
"first": true,
"last": true,
"empty": false
}

Response Fields


Pagination (Page)

FieldTypeDescription
totalElementsnumberTotal number of matching records
totalPagesnumberTotal number of pages
sizenumberNumber of records per page
numbernumberCurrent page number (0-indexed)
firstbooleanWhether this is the first page
lastbooleanWhether this is the last page
emptybooleanWhether the result list is empty

Content item (content[])

FieldTypeDescription
content[].trackingIdstring (UUID)Document processing tracking identifier
content[].companyIdstring (UUID)Company identifier associated with the processing record
content[].directionstring (enum)Document direction: INCOMING or OUTGOING
content[].documentTypestring (enum)Document format/type (PEPPOL_BIS, XRECHNUNG, ZUGFERD, KSEF, etc.)
content[].waybillTypestring (enum)Waybill type — only populated for waybill documents, otherwise null
content[].sourcestring (enum)Source system of the document (ERP, PORTAL, PEPPOL, etc.)
content[].targetstring (enum)Target system of the document — populated if applicable, otherwise null
content[].statusstring (enum)Current processing status (PENDING, PROCESSING, COMPLETED, FAILED, etc.)
content[].filenamestringFilename of the uploaded document
content[].invoiceNumberstringInvoice number extracted from the processed document
content[].documentIdstring (UUID)System invoice/document identifier — populated after successful processing
content[].sendingResultstringSending result — status message returned by the country/portal system
content[].errorTypestring (enum)Error code — only populated when status is FAILED or SENDING_FAILED
content[].createdAtstring (ISO 8601)Timestamp when the processing record was created
content[].statusUpdatedAtstring (ISO 8601)Timestamp of the last status update
content[].completedAtstring (ISO 8601)Timestamp when processing was completed
content[].errorsobjectError details — can be a String, array of Strings, or array of ValidationError objects. Null when no error.
content[].additionalDataobjectCountry/document-type-specific metadata. Structure varies by document type.

Document Processing Status

ValueDescription
PENDINGAwaiting processing
PROCESSINGCurrently being processed
COMPLETEDSuccessfully completed
FAILEDProcessing failed
SENDING_FAILEDProcessing succeeded but sending to the destination failed
PERMANENT_FAILEDPermanent failure — will not be retried

400 - Bad Request

Trigger

When companyId is missing or contains an invalid value.

Response body

{
"errorMessage": "companyId must not be null",
"errorType": "BAD_REQUEST",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/document-process/search"
}

The companyId field is annotated with @NotNull. If this field is omitted or null, an IllegalArgumentException is thrown and a 400 Bad Request response is returned.

401 - Unauthorized

Trigger

When the JWT token is invalid, expired, or the user lacks the required authority for the company.

Response body

{
"errorMessage": "Not authorized for this action",
"errorType": "NOT_AUTHORITY",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/document-process/search"
}

An AuthorizationServiceException is thrown when the JWT token is invalid/expired or the user does not have ADMIN, INCOMING_INVOICE_DISPLAY, or OUTGOING_INVOICE_DISPLAY authority for the specified company.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/document-process/search"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

7. Generate PDF POST

Purpose of Use: This endpoint accepts a base64-encoded UBL/XML invoice and converts it to PDF format, returning the raw PDF byte array.

Supported format types include PEPPOL BIS, XRECHNUNG, UAE PINT, ZUGFeRD, KSEF, and other country-specific e-invoice standards. The optional country code and VAT number fields are used in SAP-ERP integrations for country-specific or company-specific XSLT template selection.

Endpoint Information

PropertyValue
URL/invoice/generate/pdf
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header)

Example Request

curl --location 'https://api-stage.evatrauae.com/invoice/generate/pdf' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}' \
--header 'Content-Type: application/json' \
--data '{
"base64XML": "{{base64_encoded_xml}}",
"country": "AE",
"type": "UAE_PINT"
}'

Request Parameters


Body Parameters

Field NameTypeRequiredDescription
base64XMLstringYesBase64-encoded invoice XML content. Must be a valid UBL/XML document compatible with the selected format type.
typestring (enum)YesThe invoice format type. Must be one of the DataType values listed in the Parameter Value Reference section below.
countrystring (enum)OptionalISO 3166-1 alpha-2 country code. Used in SAP-ERP integrations to select a country-specific visualization template.
vatNumberstringOptionalVAT number. Used in SAP-ERP integrations for company-specific XSLT template selection.

Parameter Value Reference

DataType Values

ValueDescription
PEPPOL_BISPEPPOL BIS Billing 3.0 UBL format
RO_EFACTURARomania e-Invoice (eFattura) UBL format
XRECHNUNGGermany XRechnung UBL format
MY_INVOISMalaysia MyInvois e-invoice format
MY_PINTMalaysia PINT (Peppol International) format
DK_OIOUBLDenmark OIOUBL e-invoice format
EG_INVOICEEgypt e-Invoice format
HR_INVOICECroatia e-invoice format
UAE_PINTUnited Arab Emirates PINT (Peppol International) format
ZUGFERDGermany ZUGFeRD (XML embedded in PDF/A-3) format
FACTUR_XFrance Factur-X format
XRECHNUNG_CIIGermany XRechnung CII (Cross Industry Invoice) format
CIIUN/CEFACT Cross Industry Invoice generic format
CIDCID invoice format
PDFUnstructured invoice (paper invoice, image scan, etc.)
KZ_ESF_V2Kazakhstan ESF V2 electronic invoice format
KSEFPoland KSeF (Krajowy System e-Faktur) format

CountryCode Values

ValueDescription
AEUnited Arab Emirates
DEGermany
ATAustria
FRFrance
BEBelgium
NLNetherlands
SESweden
NONorway
DKDenmark
PLPoland
RORomania
HRCroatia
MYMalaysia
EGEgypt
KZKazakhstan
TRTurkey
GBUnited Kingdom
ITItaly
ESSpain
SKSlovakia

Responses

200 - Successful Response

PDF conversion successful. The response body is raw PDF binary content. The Content-Type is application/pdf or application/octet-stream. The returned byte array can be saved directly as a PDF file or rendered inline on the client side.

Response

Binary (byte[]). Raw PDF binary content. This is not a JSON object but a direct PDF byte stream. The client can save this content as a PDF file or display it inline.

400 - Bad Request

Trigger

When invalid or unsupported XML content is submitted, or when the XML-to-PDF conversion process fails.

Response body

{
"errorMessage": "PDF convert error: Invalid XML structure",
"errorType": "PDF_CONVERT_ERROR",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/generate/pdf"
}

An IllegalArgumentException is thrown and a 400 Bad Request response is returned when the base64XML content is invalid, an unsupported format type is used, or the XML-to-PDF conversion fails.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/generate/pdf"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

8. Retrieve document by ID and type GET

Purpose of Use: This endpoint returns the Base64-encoded content of an uploaded invoice in the requested format (XML, PDF, or JSON).

A single format type (e.g. XML) or multiple format types separated by a dash (e.g. XML-PDF, XML-PDF-JSON) can be requested. The response contains a separate Document object for each requested format.

Endpoint Information

PropertyValue
URL/invoice/get-document/{documentId}/{documentTypes}
MethodGET
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header)

Example Request

curl --location 'https://api-stage.evatrauae.com/invoice/get-document/{{invoice_uuid}}/XML' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Path Parameters

Field NameTypeRequiredDescription
documentIdstring (UUID)YesUnique identifier (UUID) of the invoice whose document is being requested
documentTypesstring (enum)YesRequested document format type. Can be a single format (XML) or multiple dash-separated formats (XML-PDF)

Parameter Value Reference

DocumentTypes Values

ValueDescription
XMLUBL XML document
PDFPDF document
JSONUBL DTO JSON document (only for invoices with COMPLETED_BY_MELA_AI status)

FormatType Values

ValueDescription
XMLUBL XML document
PDFPDF document
JSONUBL DTO in JSON format
SIGNSigned document
GPDFGenerated PDF document
HTMLHTML document

Notes

  • Use a dash (-) to request multiple formats simultaneously. Example: XML-PDF, XML-PDF-JSON
  • JSON format is only supported for invoices with status COMPLETED_BY_MELA_AI

Responses

200 - Successful Response

Successful response. Returns Base64-encoded document content for each requested format.

Response body (DocumentResponse)

{
"documents": [
{
"file_type": "XML",
"data": "{{base64_encoded_content}}"
}
]
}

Response Fields


Root Fields

FieldTypeDescription
documentsArray<Document>List of documents for the requested formats

Document (documents[])

FieldTypeDescription
documents[].file_typestring (enum)Document format type (XML, PDF, JSON, etc.)
documents[].datastringBase64-encoded document content

400 - Bad Request

Trigger

When the invoice is still waiting for OCR processing.

Response body

{
"errorMessage": "Invoice is waiting for MelaAIParser. Please try again later!",
"errorType": "BAD_REQUEST",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/get-document/{{invoice_uuid}}/XML"
}

An IllegalStateException is thrown if the invoice is still being processed by the OCR pipeline. Retry the request after a short delay.

400 - Bad Request

Trigger

When an unsupported document format type is requested.

Response body

{
"errorMessage": "Unsupported document type: HTML",
"errorType": "BAD_REQUEST",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/get-document/{{invoice_uuid}}/HTML"
}

An IllegalArgumentException is thrown when a value other than XML, PDF, or JSON is provided in the documentTypes parameter.

404 - Not Found

Trigger

When JSON format is requested but the invoice does not exist in the database.

Response body

{
"errorMessage": "{{invoice_uuid}} Invoice not found!",
"errorType": "NOT_FOUND",
"errorTitle": "NOT_FOUND",
"status": 404,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/get-document/{{invoice_uuid}}/JSON"
}

A NotFoundException is thrown when JSON format is requested but the invoice cannot be found in the database, returning a 404 Not Found response.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/get-document/{{invoice_uuid}}/XML"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

9. Search Document with Filter POST

Purpose of Use: This endpoint allows searching company documents (invoices and other records) using various filter criteria.

It supports filtering by date range, document status, document direction, and format type, along with pagination. The response includes total count, currency-based financial summaries, and a paginated document list.

Endpoint Information

PropertyValue
URL/invoice/search-documents
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationR-Auth Header (JWT Token) Required

Example Request

curl -X POST 'https://api-stage.evatrauae.com/invoice/search-documents' \
-H 'Content-Type: application/json' \
-H 'R-Auth: {{jwt_token}}' \
-d '{
"companyId": "{{company_uuid}}",
"startDate": "2025-03-26",
"endDate": "2026-03-26",
"page": 1,
"size": 20,
"status": "SAVED_AS_UBL"
}'

Request Parameters


Body Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)OptionalUnique identifier of the company to search documents for
tinstringOptionalFilter by tax identification number
uitstringOptionalFilter by UIT number
statusstring (enum)OptionalFilter by document status.
documentTypestring (enum)OptionalFilter by document direction: INCOMING or OUTGOING
referenceDocumentstringOptionalFilter by reference document number
startDatestring (ISO 8601)OptionalSearch start date (e.g. 2025-03-26)
endDatestring (ISO 8601)OptionalSearch end date (e.g. 2026-03-26)
pagenumberOptionalPage number (starts from 1)
sizenumberOptionalNumber of records per page. Maximum value is 200.
typestring (enum)OptionalFilter by document format type.

Note

The size field has a maximum value of 200; requests exceeding this limit will be rejected with a validation error.

Responses

200 - Successful Response

Search successful. Returns total count, currency-based financial summaries, and a paginated list of matching documents.

Response body (DocumentSearchResponse)

{
"totalCount": 142,
"currencyTotals": [
{
"currency": "EUR",
"totalAmount": 25000.00,
"netAmount": 21008.40,
"taxAmount": 3991.60,
"payableAmount": 25000.00
}
],
"invoiceList": [
{
"id": "{{invoice_uuid}}",
"companyId": "{{company_uuid}}",
"userId": "{{user_uuid}}",
"customerName": "Example Customer Inc.",
"supplierName": "Example Supplier GmbH",
"supplierId": "{{entity_uuid}}",
"supplierVat": "100691836423203",
"status": "SAVED_AS_UBL",
"invoiceNumber": "INV-2025-00042",
"taxExclusiveAmount": 840.34,
"taxInclusiveAmount": 1000.00,
"lineExtensionAmount": 840.34,
"payableAmount": 1000.00,
"allowanceTotalAmount": 0.00,
"currency": "AED",
"createdTime": "2026-01-15T12:00:00",
"localCreatedTime": "2026-01-15T14:00:00",
"issueDate": "2026-01-15",
"deliveryDate": "2026-01-20",
"dueDate": "2026-02-15",
"supplierCountryCode": "AE",
"supplierEndpoint": "iso6523-actorid-upis::0088:1234567890",
"customerId": "{{entity_uuid}}",
"customerVat": "100691836423203",
"customerEndpoint": "iso6523-actorid-upis::0088:0987654321",
"customerCountryCode": "AE",
"typeCode": "380",
"documentType": "OUTGOING",
"errorMessage": null,
"lastUpdatedTime": "2026-01-15T12:05:00",
"localLastUpdatedTime": "2026-01-15T14:05:00",
"type": "UAE_PINT",
"idIncarcare": null,
"idDescarcare": null,
"source": "PORTAL",
"sendViaPeppol": false,
"statusTime": "2026-01-15T12:00:00",
"localStatusTime": "2026-01-15T14:00:00",
"fileName": "invoice_INV-2025-00042.xml",
"ocrParser": null,
"paymentDetails": {
"paymentStatus": "SENT",
"paidAmount": 0.00,
"totalAmount": 1000.00,
"remainingAmount": 1000.00,
"paymentDate": null
},
"profileType": "EN16931",
"isActive": true,
"countrySpecificData": null,
"isRead": true,
"governmentStatus": null,
"orderReference": "PO-2025-001",
"purchaseOrder": "PO-2025-001"
}
]
}

Response Fields


Root Fields

FieldTypeDescription
totalCountnumberTotal number of documents matching the filter criteria
currencyTotalsArray<Object>Financial summary grouped by currency
invoiceListArray<Object>List of document records matching the filter criteria

Currency Summary (currencyTotals[])

FieldTypeDescription
currencyTotals[].currencystringCurrency code (ISO 4217, e.g. EUR, USD)
currencyTotals[].totalAmountnumberTotal amount including tax
currencyTotals[].netAmountnumberNet amount excluding tax
currencyTotals[].taxAmountnumberTotal tax amount
currencyTotals[].payableAmountnumberTotal payable amount

Invoice / Document Fields (invoiceList[])

FieldTypeDescription
invoiceList[].idstring (UUID)Unique identifier of the document
invoiceList[].companyIdstring (UUID)Identifier of the company that owns this document
invoiceList[].userIdstring (UUID)Identifier of the user who created the document
invoiceList[].customerNamestringCustomer / buyer name
invoiceList[].supplierNamestringSupplier / seller name
invoiceList[].supplierIdstringSupplier identifier
invoiceList[].supplierVatstringSupplier VAT number
invoiceList[].statusstring (enum)Current document status (InvoiceStatus)
invoiceList[].invoiceNumberstringInvoice number
invoiceList[].taxExclusiveAmountnumberAmount excluding tax
invoiceList[].taxInclusiveAmountnumberAmount including tax
invoiceList[].lineExtensionAmountnumberLine extension amount (before allowances)
invoiceList[].payableAmountnumberTotal payable amount
invoiceList[].allowanceTotalAmountnumberTotal allowance / discount amount
invoiceList[].currencystringInvoice currency code
invoiceList[].createdTimestring (ISO 8601)Document creation time (UTC)
invoiceList[].localCreatedTimestring (ISO 8601)Document creation time in local timezone
invoiceList[].issueDatestring (ISO 8601)Invoice issue date
invoiceList[].deliveryDatestring (ISO 8601)Delivery date
invoiceList[].dueDatestring (ISO 8601)Payment due date
invoiceList[].supplierCountryCodestringSupplier country code (ISO 3166-1 alpha-2)
invoiceList[].supplierEndpointstringSupplier Peppol endpoint address
invoiceList[].customerIdstringCustomer identifier
invoiceList[].customerVatstringCustomer VAT number
invoiceList[].customerEndpointstringCustomer Peppol endpoint address
invoiceList[].customerCountryCodestringCustomer country code (ISO 3166-1 alpha-2)
invoiceList[].typeCodestringUBL document type code (e.g. 380 = Invoice)
invoiceList[].documentTypestring (enum)Document direction: INCOMING or OUTGOING
invoiceList[].errorMessagestringError message in case of failure; null on success
invoiceList[].lastUpdatedTimestring (ISO 8601)Last update time (UTC)
invoiceList[].localLastUpdatedTimestring (ISO 8601)Last update time in local timezone
invoiceList[].typestring (enum)Document format type (DataType)
invoiceList[].idIncarcarestringRomania ANAF upload ID
invoiceList[].idDescarcarestringRomania ANAF download ID
invoiceList[].sourcestring (enum)Origin of the document (InvoiceSource)
invoiceList[].sendViaPeppolbooleanWhether the document was sent via the Peppol network
invoiceList[].statusTimestring (ISO 8601)Time when the current status was assigned (UTC)
invoiceList[].localStatusTimestring (ISO 8601)Time when the current status was assigned (local timezone)
invoiceList[].fileNamestringDocument file name
invoiceList[].ocrParserstring (enum)OCR parser engine used; null if no OCR processing was performed
invoiceList[].profileTypestring (enum)ZUGFeRD / Factur-X profile type (ProfileType)
invoiceList[].isActivebooleanWhether the document is active
invoiceList[].countrySpecificDataobjectCountry-specific additional data; structure varies per country
invoiceList[].isReadbooleanWhether the document has been read
invoiceList[].governmentStatusstring (enum)Government portal processing status (InvoiceGovernmentStatus); null if not applicable
invoiceList[].orderReferencestringOrder reference number
invoiceList[].purchaseOrderstringPurchase order number

Payment Details (invoiceList[].paymentDetails)

FieldTypeDescription
invoiceList[].paymentDetails.paymentStatusstring (enum)Payment status (PaymentStatus)
invoiceList[].paymentDetails.paidAmountnumberAmount already paid
invoiceList[].paymentDetails.totalAmountnumberTotal invoice amount
invoiceList[].paymentDetails.remainingAmountnumberRemaining unpaid amount
invoiceList[].paymentDetails.paymentDatestring (ISO 8601)Payment date; null if not yet paid

Parameter Value Reference

InvoiceStatus Values

ValueDescription
CREATEDDocument created
SAVED_AS_UBLSaved in UBL format
SAVED_AS_ZUGFERDSaved in ZUGFeRD format
SAVED_AS_FACTUR_XSaved in Factur-X format
SAVED_AS_CIISaved in CII format
SAVED_AS_CIDSaved in CID format
READY_FOR_KSEFReady for KSeF submission
SENT_TO_ACCESS_POINTSent to access point
OCR_WAITINGAwaiting OCR processing
OCR_PARSEDOCR processing completed
OCR_FAILEDOCR processing failed
OCR_PARSED_PENDING_PAYMENTOCR done, awaiting payment
OCR_WAITING_TOKENWaiting for OCR token
CANCELEDCanceled
PENDINGPending
SAVED_AS_PDFSaved as PDF
DELETEDDeleted
COMPLETED_BY_MELA_AICompleted by Mela AI
SENT_VIA_EMAILSent via email
LHDNM_SUBMITTED[MY] Submitted to LHDNM
LHDNM_VALID[MY] Valid according to LHDNM
LHDNM_INVALID[MY] Invalid according to LHDNM
LHDNM_CANCELLED[MY] Cancelled by LHDNM
LHDNM_REJECT_REQUESTED[MY] Rejection requested
LHDNM_REJECTED[MY] Rejected by LHDNM
LHDNM_ERROR[MY] LHDNM error
ETA_SUBMITTED[EG] Submitted to ETA
KSEF_PENDING[PL] KSeF pending
KSEF_ACCEPTED[PL] Accepted by KSeF
KSEF_REJECTED[PL] Rejected by KSeF
KSEF_DUPLICATE[PL] KSeF duplicate document
ERACUN_ERROR[HR] eRacun error
ERACUN_PENDING[HR] eRacun pending
ERACUN_WAITING_TO_SEND[HR] eRacun waiting to send
ERACUN_SENT[HR] eRacun sent
ERACUN_RECEIVED[HR] eRacun received
ERACUN_APPROVED[HR] eRacun approved
ERACUN_REJECTED[HR] eRacun rejected
ERACUN_FULLY_PAID[HR] eRacun fully paid
ERACUN_PARTIALLY_PAID[HR] eRacun partially paid
ERACUN_DELIVERY_FAILED[HR] eRacun delivery failed
SENT_TO_ANAF[RO] Sent to ANAF
PORTAL_OKAY[RO] Approved by portal
PORTAL_ERROR[RO] Portal error
PORTAL_ERRORS[RO] Multiple portal errors
PORTAL_SYSTEM_ERROR[RO] Portal system error
PORTAL_IN_PROCESS[RO] Portal processing
SENT_TO_NEMHANDEL[DK] Sent to Nemhandel
SENT_TO_PEPPOL[Peppol] Sent to Peppol network
SUCCESS[Peppol] Successfully delivered
INVALID_PARAMETERS[Peppol] Invalid parameters
TRANSPORT_ERROR[Peppol] Transport error
TRANSPORT_ERROR_NO_RETRY[Peppol] Transport error, no retry
NO_SIGNAL_MESSAGE_RECEIVED[Peppol] No signal message received
AS4_ERROR_MESSAGE_RECEIVED[Peppol] AS4 error message received
INVALID_SIGNAL_MESSAGE_RECEIVED[Peppol] Invalid signal message received
SMP_LOOKUP_FAILED[Peppol] SMP lookup failed
INCOMING_RESPONSE_ACKNOWLEDGED[Peppol] Incoming response (MLR/MLS) acknowledged
INCOMING_RESPONSE_REJECTED[Peppol] Incoming response rejected
INCOMING_RESPONSE_ACCEPTED[Peppol] Incoming response accepted
OUTGOING_RESPONSE_ACKNOWLEDGED[Peppol] Outgoing response (MLR/MLS) acknowledged
OUTGOING_RESPONSE_REJECTED[Peppol] Outgoing response rejected
OUTGOING_RESPONSE_ACCEPTED[Peppol] Outgoing response accepted
CREDIT_BLOCKEDBlocked due to insufficient credit
FR_DEPOSITED[FR] Deposited to CDV
FR_REJECTED[FR] Rejected by CDV
FR_RECEIVED[FR] Received by CDV
FR_AVAILABLE[FR] Available in CDV
FR_PROCESSING[FR] CDV processing
FR_APPROVED[FR] Approved by CDV
FR_PARTIALLY_APPROVED[FR] Partially approved by CDV
FR_DISPUTED[FR] Disputed
FR_SUSPENDED[FR] Suspended
FR_PLATFORM_ISSUED[FR] Issued by platform
FR_REFUSED[FR] Refused
FR_PAYMENT_SENT[FR] Payment sent
FR_COLLECTED[FR] Collected
FR_COMPLETED[FR] Completed
FR_CANCELLED[FR] Cancelled

DocumentType Values

ValueDescription
INCOMINGIncoming document (received invoice)
OUTGOINGOutgoing document (issued invoice)

DataType Values

ValueDescription
PEPPOL_BISPeppol BIS Billing 3.0 format
RO_EFACTURARomania e-Factura format
UBL_NLNetherlands UBL format
MY_INVOISMalaysia MyInvois format
MY_PINTMalaysia PINT format
DK_OIOUBLDenmark OIOUBL format
EG_INVOICEEgypt e-Invoice format
HR_INVOICECroatia e-Invoice format
UAE_PINTUAE PINT format
ZUGFERDZUGFeRD PDF/A-3 format
FACTUR_XFactur-X format (ZUGFeRD compatible)
XRECHNUNG_CIIGermany XRechnung CII format
CIICross Industry Invoice (CII) format
CIDCross Industry Document (CID) format
PDFUnstructured PDF (paper invoices, images, etc.)
KZ_ESF_V2Kazakhstan ESF v2 format
KSEFPoland KSeF format
KSEF_OFFLINEPoland KSeF offline format

InvoiceSource Values

ValueDescription
PORTAL_OCRUploaded via portal with OCR processing
EMAIL_OCRReceived via email with OCR processing
EMAILSent via email
PORTALCreated through the portal interface
ERPSubmitted via ERP integration
PEPPOLReceived from Peppol network
LHDNMReceived from Malaysia LHDNM portal
NEMHANDELReceived from Denmark Nemhandel network
SERVICECreated by service layer
HARVESTHarvest integration
SHOPIFYShopify integration
AMAZON_SPAmazon Selling Partner integration
EBAYeBay integration
HUBSPOTHubSpot integration
ANAFRomania ANAF portal
LAZADALazada integration
SFTPUploaded via SFTP
KSEFPoland KSeF system
RS_APISerbia API integration
ETAEgypt ETA portal
ERACUNCroatia eRacun portal
STRIPEStripe payment integration
PPFFrance PPF portal

ProfileType Values

ValueDescription
KSEF_FA2Poland KSeF FA (2) profile
KSEF_FA3Poland KSeF FA (3) profile
MINIMUMFactur-X MINIMUM profile
BASICWLFactur-X BASICWL profile
BASICFactur-X BASIC profile
EN16931EN16931 profile
EXTENDEDFactur-X EXTENDED profile
XRECHNUNGXRechnung profile
BASIC_V1Factur-X BASIC v1 profile
COMFORT_V1Factur-X COMFORT v1 profile
EXTENDED_V1Factur-X EXTENDED v1 profile

PaymentStatus Values

ValueDescription
SENTInvoice sent, payment pending
PAIDFully paid
PARTIAL_PAIDPartially paid
LATEPayment is overdue

InvoiceGovernmentStatus Values

ValueDescription
TDD_SENDSent to TDD
TDD_FAILEDTDD submission failed
TDD_APPROVEDApproved by TDD
TDD_ACKNOWLEDGEDAcknowledged by TDD
TDD_REJECTEDRejected by TDD
WITHDRAW_SENDWithdrawal request sent
WITHDRAW_FAILEDWithdrawal request failed

400 - Bad Request

Trigger

When the size field exceeds 200 or any @Valid constraint is violated.

Response body

{
"errorMessage": "size must be less than or equal to 200",
"errorType": "VALIDATION_ERROR",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/search-documents"
}

Spring Validation returns a 400 Bad Request when the @Max(200) constraint on the size field is violated.

401 - Unauthorized

Trigger

When the R-Auth header is missing or contains an invalid/expired JWT token.

Response body

{
"errorMessage": "Unauthorized",
"errorType": "NOT_AUTHORITY",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/search-documents"
}

A 401 Unauthorized response is returned when the request is made with an invalid or expired JWT token.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/invoice/search-documents"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

10. Get TDD Detail GET

Purpose of Use: This endpoint retrieves the Tax Data Document (TDD) detail information associated with the specified company and invoice ID.

A TDD is a tax reporting document submitted to the UAE PEPPOL system. The response includes the document's status, type, scope, and financial summary. If no TDD has been submitted for the given invoice, the response body will be null.

Endpoint Information

PropertyValue
URL/peppol/get-tdd
MethodGET
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header) Required

Example Request

curl --location 'https://api-stage.evatrauae.com/peppol/get-tdd?companyId={{company_uuid}}&invoiceId={{invoice_uuid}}' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesUnique identifier of the company for which the TDD is being queried
invoiceIdstring (UUID)YesUnique identifier of the invoice associated with the TDD

Responses

200 - Successful Response

Returns TDD detail information on success. The response body may be null if no TDD has been submitted for the given invoice.

Response body (TddDetail)

{
"createdDate": "2026-01-15T10:00:00",
"updateDate": "2026-01-15T12:30:00",
"documentType": "SUBMIT",
"documentScope": "DOMESTIC",
"role": "SENDER",
"totalAmount": 150.00,
"taxExclusiveAmount": 1000.00,
"status": "TDD_SEND"
}

Response Fields


Root Fields

FieldTypeDescription
createdDatestring (ISO 8601)Date and time the TDD record was created
updateDatestring (ISO 8601)Date and time the TDD record was last updated
documentTypestring (enum)TDD document type: SUBMIT, RESUBMIT, WITHDRAW, or FAILED
documentScopestring (enum)TDD document scope: DOMESTIC, INTERNATIONAL_PEPPOL, or INTERNATIONAL_NON_PEPPOL
rolestring (enum)Role of the reporting party: SENDER or RECEIVER
totalAmountnumberTotal tax amount (tax inclusive minus tax exclusive)
taxExclusiveAmountnumberTotal invoice amount excluding tax
statusstring (enum)Current TDD status: TDD_SEND, TDD_FAILED, or MLS_RECEIVED_FOR_TDD

Parameter Value Reference

TddDocumentType Values

ValueDescription
SUBMITInitial submission (code: S)
RESUBMITRe-submission of an existing TDD (code: R)
WITHDRAWWithdrawal of a previously submitted TDD (code: W)
FAILEDFailed submission (code: F)

TddDocumentScope Values

ValueDescription
DOMESTICDomestic transaction — both supplier and customer are in UAE (code: D)
INTERNATIONAL_PEPPOLInternational transaction via PEPPOL network (code: IP)
INTERNATIONAL_NON_PEPPOLInternational transaction outside PEPPOL (code: INP)

TddReporterRole Values

ValueDescription
SENDERThe party sending the invoice (code: 01)
RECEIVERThe party receiving the invoice (code: 02)

TddStatus Values

ValueDescription
TDD_SENDTDD was successfully submitted
TDD_FAILEDTDD submission failed
MLS_RECEIVED_FOR_TDDA Message Level Status (MLS) response was received for this TDD

401 - Unauthorized

Trigger

When an invalid or expired R-Auth token is provided, or the authenticated user does not belong to the specified company.

Response body

{
"errorMessage": "Authorization failed!",
"errorType": "AUTHORIZATION_FAILED",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/get-tdd"
}

An AuthorizationServiceException is thrown when the user is not associated with the specified company or the JWT token is invalid, returning a 401 Unauthorized response.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/get-tdd"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

11. Invalid Peppol Documents List GET

Purpose of Use: This endpoint returns a paginated list of invalid Peppol documents belonging to a specific company. Invalid documents are incoming Peppol documents that could not be processed due to validation errors, format errors, or processing failures.

Results are returned in descending order by creation time (newest first). The companyId parameter is required, and authentication must be performed via a JWT token in the R-Auth header.

Endpoint Information

PropertyValue
URL/peppol/invalid-documents
MethodGET
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header) Required

Example Request

curl --location 'https://api-stage.evatrauae.com/peppol/invalid-documents?companyId={{company_uuid}}&pageNumber=0&pageSize=20' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesUnique identifier of the company whose invalid documents are being queried
pageNumbernumberOptionalPage number (starts from 0). Default value: 0
pageSizenumberOptionalNumber of records per page. Default value: 20

Responses

200 - Successful Response

Success. Returns a paginated list of invalid Peppol documents belonging to the company. Results are sorted by creation time in descending order.

Response body (Page<InvalidPeppolDocumentDTO>)

{
"content": [
{
"id": "{{entity_uuid}}",
"companyId": "{{company_uuid}}",
"trackingId": "TRK-20260115-001",
"instanceIdentifier": "urn:uuid:{{entity_uuid}}",
"invoiceNumber": "INV-2026-0042",
"typeCode": "380",
"currency": "AED",
"issueDate": "2026-01-15",
"dueDate": "2026-02-15",
"deliveryDate": "2026-01-20",
"supplierEndpoint": "iso6523-actorid-upis::0088:1234567890",
"supplierName": "Supplier Company Ltd.",
"supplierCountryCode": "AE",
"supplierVAT": "100691836423203",
"supplierId": "1374529842",
"customerEndpoint": "iso6523-actorid-upis::0088:0987654321",
"customerName": "Customer Company Inc.",
"customerCountryCode": "AE",
"customerVAT": "100691836423203",
"customerId": "1374529842",
"lineExtensionAmount": 1000.00,
"taxExclusiveAmount": 1000.00,
"taxInclusiveAmount": 1050.00,
"allowanceTotalAmount": 0.00,
"payableAmount": 1050.00,
"documentType": "INCOMING",
"dataType": "UAE_PINT",
"errorType": "VALIDATION_ERROR",
"errorMessage": "Schema validation failed for document",
"validationErrors": "[{\"field\":\"TaxTotal\",\"message\":\"TaxTotal amount mismatch\"}]",
"receivedTime": "2026-01-15T10:30:00",
"createdTime": "2026-01-15T10:30:05",
"status": null,
"governmentStatus": "TDD_FAILED"
}
],
"pageable": {
"sort": {
"empty": false,
"sorted": true,
"unsorted": false
},
"offset": 0,
"pageNumber": 0,
"pageSize": 20,
"paged": true,
"unpaged": false
},
"totalElements": 1,
"last": true,
"totalPages": 1,
"sort": {
"empty": false,
"sorted": true,
"unsorted": false
},
"size": 20,
"number": 0,
"first": true,
"numberOfElements": 1,
"empty": false
}

Response Fields


Pagination Fields

FieldTypeDescription
totalElementsnumberTotal number of records
totalPagesnumberTotal number of pages
sizenumberNumber of records per page
numbernumberCurrent page number (starts from 0)
numberOfElementsnumberNumber of records on this page
firstbooleanWhether this is the first page
lastbooleanWhether this is the last page
emptybooleanWhether the page is empty
contentArray<InvalidPeppolDocumentDTO>List of invalid Peppol documents

Document Basic Fields (content[])

FieldTypeDescription
content[].idstring (UUID)Unique identifier of the invalid document record
content[].companyIdstring (UUID)Identifier of the company the document belongs to
content[].trackingIdstringDocument tracking identifier
content[].instanceIdentifierstringPeppol document instance identifier (URN format)
content[].invoiceNumberstringInvoice number
content[].typeCodestringDocument type code (e.g. 380 = Invoice, 381 = Credit Note)
content[].currencystringCurrency code (ISO 4217)
content[].issueDatestring (ISO 8601)Invoice issue date
content[].dueDatestring (ISO 8601)Payment due date
content[].deliveryDatestring (ISO 8601)Delivery date
content[].documentTypestring (enum)Document direction: INCOMING or OUTGOING
content[].dataTypestring (enum)Document data format (Peppol profile type)
content[].errorTypestringText describing the error type
content[].errorMessagestringHuman-readable error description
content[].validationErrorsstringJSON string array of validation errors (if any)
content[].receivedTimestring (ISO 8601)Time the document was received by the system
content[].createdTimestring (ISO 8601)Time the record was created
content[].statusstring (enum)Processing status of the document
content[].governmentStatusstring (enum)Government portal processing status (for TDD flow, may be null)

Supplier Information (content[].supplier*)

FieldTypeDescription
content[].supplierEndpointstringSupplier's Peppol endpoint identifier
content[].supplierNamestringSupplier company name
content[].supplierCountryCodestringSupplier country code (ISO 3166-1 alpha-2)
content[].supplierVATstringSupplier VAT number
content[].supplierIdstringSupplier business identifier

Customer Information (content[].customer*)

FieldTypeDescription
content[].customerEndpointstringCustomer's Peppol endpoint identifier
content[].customerNamestringCustomer company name
content[].customerCountryCodestringCustomer country code (ISO 3166-1 alpha-2)
content[].customerVATstringCustomer VAT number
content[].customerIdstringCustomer business identifier

Financial Fields (content[].*Amount)

FieldTypeDescription
content[].lineExtensionAmountnumberLine extension amount (tax exclusive sum of line items)
content[].taxExclusiveAmountnumberTotal amount excluding tax
content[].taxInclusiveAmountnumberTotal amount including tax
content[].allowanceTotalAmountnumberTotal allowance/discount amount
content[].payableAmountnumberNet amount payable

Parameter Value Reference

DocumentType Values

ValueDescription
INCOMINGIncoming Peppol document
OUTGOINGOutgoing Peppol document

DataType Values

ValueDescription
PEPPOL_BISPeppol BIS Billing 3.0 format
RO_EFACTURARomania e-Invoice format
XRECHNUNGGermany XRechnung format
MY_INVOISMalaysia MyInvois format
MY_PINTMalaysia PINT format
DK_OIOUBLDenmark OIOUBL format
EG_INVOICEEgypt e-Invoice format
HR_INVOICECroatia e-Invoice format
UAE_PINTUAE PINT format
ZUGFERDZUGFeRD format
FACTUR_XFactur-X format
XRECHNUNG_CIIXRechnung CII format
CIICross Industry Invoice (CII) format
CIDCross Industry Document (CID) format
PDFUnstructured PDF invoice (paper/image invoice)
KZ_ESF_V2Kazakhstan ESF v2 format
KSEFPoland KSeF format
KSEF_OFFLINEPoland KSeF offline format

InvoiceStatus Values

ValueDescription
TRANSPORT_ERRORA transport error occurred
TRANSPORT_ERROR_NO_RETRYTransport error with no retry allowed
INVALID_PARAMETERSInvalid parameters detected
SMP_LOOKUP_FAILEDSMP lookup failed
AS4_ERROR_MESSAGE_RECEIVEDAS4 error message received
INVALID_SIGNAL_MESSAGE_RECEIVEDInvalid signal message received
NO_SIGNAL_MESSAGE_RECEIVEDNo signal message received
SENT_TO_PEPPOLSent to the Peppol network
SUCCESSProcessing completed successfully
INCOMING_RESPONSE_ACKNOWLEDGEDIncoming response acknowledged (MLR/MLS)
INCOMING_RESPONSE_REJECTEDIncoming response rejected
INCOMING_RESPONSE_ACCEPTEDIncoming response accepted
OUTGOING_RESPONSE_ACKNOWLEDGEDOutgoing response acknowledged
OUTGOING_RESPONSE_REJECTEDOutgoing response rejected
OUTGOING_RESPONSE_ACCEPTEDOutgoing response accepted
PENDINGAwaiting processing
CANCELEDCancelled
CREDIT_BLOCKEDBlocked due to insufficient credit

InvoiceGovernmentStatus Values

ValueDescription
TDD_SENDTDD has been sent
TDD_FAILEDTDD sending failed
TDD_APPROVEDTDD approved
TDD_ACKNOWLEDGEDTDD acknowledged
TDD_REJECTEDTDD rejected
WITHDRAW_SENDWithdrawal request sent
WITHDRAW_FAILEDWithdrawal request failed

401 - Unauthorized

Trigger

When the user is not a member of the specified company or an invalid JWT token is provided.

Response body

{
"errorMessage": "Authorization failed!",
"errorType": "AUTHORIZATION_FAILED",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/invalid-documents"
}

An AuthorizationServiceException is thrown when the user is not associated with the specified company, returning a 401 Unauthorized response.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/invalid-documents"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

12. Invoice MLS List GET

Purpose of Use: This endpoint retrieves the list of Message Level Status (MLS) records associated with a specific invoice. MLS represents transaction-level responses received against invoices sent over the PEPPOL network.

Each MLS record contains the response type (acceptance, acknowledgement, rejection), the received timestamp, direction (incoming/outgoing), MLS type, and any error lines if present. Access requires the authenticated user to belong to the specified company.

Endpoint Information

PropertyValue
URL/peppol/invoice-mls-list
MethodGET
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header) Required

Example Request

curl --location 'https://api-stage.evatrauae.com/peppol/invoice-mls-list?companyId={{company_uuid}}&invoiceId={{invoice_uuid}}' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesThe unique identifier of the company used for authorization. The authenticated user must belong to this company.
invoiceIdstring (UUID)YesThe unique identifier of the invoice whose MLS records are to be retrieved.

Responses

200 - Successful Response

Returns the list of MLS records for the specified invoice. The list may be empty if no MLS records exist for the invoice.

Response body (List<MlsDetailDto>)

[
{
"responseType": "ACCEPTANCE",
"receivedTime": "2026-03-15T10:30:00",
"direction": "INCOMING",
"mlsType": "INVOICE_RESPONSE",
"errorLines": []
},
{
"responseType": "REJECTION",
"receivedTime": "2026-03-14T08:45:00",
"direction": "OUTGOING",
"mlsType": "INVOICE_RESPONSE",
"errorLines": [
{
"errorField": "TaxAmount",
"responseCode": "REJECTION",
"description": "Tax amount does not match invoice total",
"statusReasonCode": "BUSINESS_RULE_FATAL"
}
]
}
]

Response Fields


Root Fields

FieldTypeDescription
responseTypestring (enum)MLS response type: ACCEPTANCE, ACKNOWLEDGING, or REJECTION
receivedTimestring (ISO 8601)The timestamp when the MLS message was received or sent
directionstring (enum)Message direction: INCOMING (received from counterpart) or OUTGOING (sent by your side)
mlsTypestring (enum)MLS type: INVOICE_RESPONSE, TDD_RESPONSE, or TDD_REPORT
errorLinesArray<MLSErrorLine>List of error lines. May be populated when responseType is REJECTION. Typically empty for ACCEPTANCE.

Parameter Value Reference

MLSResponseCode Values

ValueDescription
ACCEPTANCEInvoice accepted (code: AP)
ACKNOWLEDGINGInvoice is being processed, result pending (code: AB)
REJECTIONInvoice rejected (code: RE)

MLRDirection Values

ValueDescription
INCOMINGIncoming MLS message (received from the counterpart)
OUTGOINGOutgoing MLS message (sent by your side)

MLSType Values

ValueDescription
INVOICE_RESPONSEResponse to an invoice
TDD_RESPONSEResponse to a transport delivery document (TDD)
TDD_REPORTReport for a transport delivery document (TDD)

MLSStatusReasonCode Values

ValueDescription
BUSINESS_RULE_FATALBusiness rule violation - fatal error (code: BV)
BUSINESS_RULE_WARNINGBusiness rule violation - warning (code: BW)
DELIVERY_FAILUREFailure of delivery (code: FD)
SYNTAX_VIOLATIONSyntax violation (code: SV)

Error Lines (errorLines[])

FieldTypeDescription
errorLines[].errorFieldstringThe name of the field where the error occurred (e.g., TaxAmount, InvoiceId)
errorLines[].responseCodestring (enum)MLS response code for this error line: ACCEPTANCE, ACKNOWLEDGING, or REJECTION
errorLines[].descriptionstringFree-text description explaining the error detail
errorLines[].statusReasonCodestring (enum)Error reason code: BUSINESS_RULE_FATAL, BUSINESS_RULE_WARNING, DELIVERY_FAILURE, or SYNTAX_VIOLATION

401 - Unauthorized

Trigger

When the authenticated user does not belong to the specified company, or the R-Auth header is invalid or expired.

Response body

{
"errorMessage": "Authorization failed",
"errorType": "AUTHORIZATION_FAILED",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-03-15T10:30:00",
"path": "/peppol/invoice-mls-list"
}

An AuthorizationServiceException is thrown when the checkIfCompanyUser check fails, returning a 401 Unauthorized response. This also occurs when the R-Auth header is missing or contains an expired JWT token.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-03-15T10:30:00",
"path": "/peppol/invoice-mls-list"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

13. TDD MLS List GET

Purpose of Use: This endpoint retrieves all MLS (Message Level Status) responses associated with a specific TDD (Transaction Document Data) record.

Users can retrieve the MLS responses for a given company (companyId) and TDD record (tddId) to review the communication status and any potential error lines. Only users belonging to the specified company are authorized to access this endpoint.

Endpoint Information

PropertyValue
URL/peppol/tdd-mls-list
MethodGET
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header)

Example Request

curl --location 'https://api-stage.evatrauae.com/peppol/tdd-mls-list?companyId={{company_uuid}}&tddId={{tdd_uuid}}' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesThe unique identifier of the company whose MLS list is being queried. The requesting user must be a member of this company.
tddIdstring (UUID)YesThe unique identifier of the TDD record for which MLS responses are to be listed.

Responses

200 - Successful Response

Successful. Returns a list of MLS responses for the specified TDD record. Returns an empty array if no MLS responses exist for the TDD.

Response body (List<MlsDetailDto>)

[
{
"responseType": "ACCEPTANCE",
"receivedTime": "2026-01-15T12:00:00",
"direction": "INCOMING",
"mlsType": "TDD_RESPONSE",
"errorLines": []
},
{
"responseType": "REJECTION",
"receivedTime": "2026-01-14T09:30:00",
"direction": "OUTGOING",
"mlsType": "TDD_REPORT",
"errorLines": [
{
"errorField": "InvoiceTypeCode",
"responseCode": "REJECTION",
"description": "Syntax error in InvoiceTypeCode field",
"statusReasonCode": "SYNTAX_VIOLATION"
}
]
}
]

Response Fields


Root Fields

FieldTypeDescription
responseTypestring (enum)The type of MLS response: acceptance, acknowledging, or rejection
receivedTimestring (ISO 8601)The date and time when the MLS response was received or sent
directionstring (enum)The direction of the MLS response: incoming or outgoing
mlsTypestring (enum)The type of MLS message: invoice response, TDD response, or TDD report
errorLinesArray<MLSErrorLine>List of error detail lines. Returns an empty array when no errors are present.

Parameter Value Reference

MLSResponseCode Values

ValueDescription
ACCEPTANCEAcceptance — message was successfully accepted (code: AP)
ACKNOWLEDGINGAcknowledging — message was received and is being processed (code: AB)
REJECTIONRejection — message was rejected (code: RE)

MLRDirection Values

ValueDescription
INCOMINGIncoming MLS response
OUTGOINGOutgoing MLS response

MLSType Values

ValueDescription
INVOICE_RESPONSEInvoice response message
TDD_RESPONSETDD response message
TDD_REPORTTDD report message

MLSStatusReasonCode Values

ValueDescription
BUSINESS_RULE_FATALBusiness rule violation — fatal error (code: BV)
BUSINESS_RULE_WARNINGBusiness rule violation — warning (code: BW)
DELIVERY_FAILUREFailure of delivery (code: FD)
SYNTAX_VIOLATIONSyntax violation (code: SV)

Error Line Information (errorLines[])

FieldTypeDescription
errorLines[].errorFieldstringThe name of the field related to the error
errorLines[].responseCodestring (enum)The MLS response code for this error line
errorLines[].descriptionstringA human-readable description of the error
errorLines[].statusReasonCodestring (enum)The status reason code identifying the cause of the error

401 - Unauthorized

Trigger

When the user does not belong to the specified company or the R-Auth token is invalid.

Response body

{
"errorMessage": "Authorization failed",
"errorType": "AUTHORIZATION_FAILED",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd-mls-list"
}

An AuthorizationServiceException is thrown when the requesting user is not a member of the company identified by companyId, returning a 401 Unauthorized response.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd-mls-list"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

14. Retry Failed TDD POST

Purpose of Use: This endpoint is used to re-submit a Tax Data Document (TDD) record that is currently in TDD_FAILED or TDD_REJECTED status.

During the operation, the related invoice or invalid document is located and the TDD is reprocessed with the RESUBMIT type. Both regular invoices (invoiceId) and invalid Peppol documents (invalidInvoiceId) are supported; at least one of the parameters must be provided.

Endpoint Information

PropertyValue
URL/peppol/tdd/retry-failed
MethodPOST
Content-Typeapplication/json
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header) Required

Example Request

curl --location --request POST 'https://api-stage.evatrauae.com/peppol/tdd/retry-failed?companyId={{company_uuid}}&invoiceId={{invoice_uuid}}' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesUnique identifier of the company performing the operation
invoiceIdstring (UUID)Conditional*Unique identifier of the invoice to be retried
invalidInvoiceIdstring (UUID)Conditional*Unique identifier of the invalid Peppol document to be retried

Note

  • At least one of invoiceId or invalidInvoiceId must be provided. If both are omitted, a 400 Bad Request error is returned.

Responses

200 - Successful Response

The retry operation was successfully initiated. The response body is empty.

Response

No JSON body. The server returns HTTP 200 OK with an empty response body on success.

Response Fields


Root Fields

FieldTypeDescription
(empty)VoidThis endpoint returns an empty HTTP 200 OK response on success. No JSON body is included.

400 - Bad Request

Trigger

When both invoiceId and invalidInvoiceId are omitted, or when the TDD record's status is not TDD_FAILED or TDD_REJECTED.

Response body

{
"errorMessage": "Status not allowed for this operation",
"errorType": "STATUS_NOT_ALLOWED",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/retry-failed"
}

An IllegalArgumentException is thrown in two cases: (1) when neither invoiceId nor invalidInvoiceId is provided, (2) when the TDD record's current status is not TDD_FAILED or TDD_REJECTED.

401 - Unauthorized

Trigger

When the authenticated user is not a member of the specified company.

Response body

{
"errorMessage": "Authorization failed!",
"errorType": "AUTHORIZATION_FAILED",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/retry-failed"
}

An AuthorizationServiceException is thrown when the JWT token holder is not a member of the company identified by companyId, returning a 401 Unauthorized response.

404 - Not Found

Trigger

When no TDD record is found matching the provided invoiceId or invalidInvoiceId.

Response body

{
"errorMessage": "Document not found",
"errorType": "DOCUMENT_NOT_FOUND",
"errorTitle": "NOT_FOUND",
"status": 404,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/retry-failed"
}

A NotFoundException is thrown when no TaxDataDocument record can be found in the database matching the provided invoiceId or invalidInvoiceId, returning a 404 Not Found response.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/retry-failed"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.

15. TDD Withdraw POST

Purpose of Use: This endpoint initiates the withdrawal of a previously submitted Tax Data Document (TDD). The target TDD is identified via an invoice ID or an invalid document ID.

The document must not be in TDD_FAILED or WITHDRAW_SEND status. On success, the endpoint returns HTTP 200 with no response body.

Endpoint Information

PropertyValue
URL/peppol/tdd/withdraw
MethodPOST
Content-TypeNot Required
Base URL
Production Environment URLhttps://api.evatrauae.com/
AuthorizationBearer Token (R-Auth Header)

Example Request

curl --location --request POST 'https://api-stage.evatrauae.com/peppol/tdd/withdraw?companyId={{company_uuid}}&invoiceId={{invoice_uuid}}' \
--header 'accept: */*' \
--header 'R-Auth: {{jwt_token}}'

Request Parameters


Query Parameters

Field NameTypeRequiredDescription
companyIdstring (UUID)YesUnique identifier of the company performing the operation (Query Parameter)
invoiceIdstring (UUID)Conditional*Unique identifier of the invoice linked to the TDD to be withdrawn (Query Parameter)
invalidInvoiceIdstring (UUID)Conditional*Unique identifier of the invalid document linked to the TDD to be withdrawn (Query Parameter)

Note

  • At least one of invoiceId or invalidInvoiceId must be provided. If both are omitted, a 400 error is returned.

Parameter Value Reference

TddWithdrawalStatus Values

ValueDescription
TDD_SENDTDD submitted, eligible for withdrawal
TDD_APPROVEDTDD approved, eligible for withdrawal
TDD_ACKNOWLEDGEDTDD acknowledged, eligible for withdrawal
TDD_REJECTEDTDD rejected, eligible for withdrawal
WITHDRAW_FAILEDPrevious withdrawal failed, can be retried
TDD_FAILEDNOT eligible — withdrawal attempt returns 400
WITHDRAW_SENDNOT eligible — withdrawal attempt returns 400

Responses

200 - Successful Response

TDD withdrawal was successfully initiated. No response body is returned.

Response

No JSON body. The server returns HTTP 200 OK with an empty response body on success.

Response Fields


Root Fields

FieldTypeDescription
This endpoint returns no response body (HTTP 200 with empty body).

400 - Bad Request

Trigger

When both invoiceId and invalidInvoiceId are omitted, or the TDD's current status does not allow withdrawal (TDD_FAILED or WITHDRAW_SEND).

Response body

{
"errorMessage": "Status not allowed for this operation",
"errorType": "STATUS_NOT_ALLOWED",
"errorTitle": "BAD_REQUEST",
"status": 400,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/withdraw"
}

An IllegalArgumentException is thrown when the TDD is in TDD_FAILED or WITHDRAW_SEND status, or when neither ID parameter is provided, returning 400 Bad Request.

401 - Unauthorized

Trigger

When an invalid or expired JWT token is used, or the user does not belong to the specified company.

Response body

{
"errorMessage": "Access denied",
"errorType": "NOT_AUTHORITY",
"errorTitle": "UNAUTHORIZED",
"status": 401,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/withdraw"
}

Returns 401 Unauthorized when the user does not have access to the company or the token is invalid.

404 - Not Found

Trigger

When no TDD entity is found matching the given invoiceId or invalidInvoiceId.

Response body

{
"errorMessage": "Document not found",
"errorType": "DOCUMENT_NOT_FOUND",
"errorTitle": "NOT_FOUND",
"status": 404,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/withdraw"
}

A NotFoundException is thrown when no TDD entity exists for the provided ID, returning 404 Not Found.

422 - Unprocessable Entity

Trigger

When a file processing error occurs while withdrawing a TDD linked to an invalid document.

Response body

{
"errorMessage": "File processing error occurred",
"errorType": "FILE_PROCESSING_ERROR",
"errorTitle": "UNPROCESSABLE_ENTITY",
"status": 422,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/withdraw"
}

A GeneralException is thrown when the file content cannot be accessed during TDD withdrawal for an invalid document, returning 422 Unprocessable Entity.

500 - Internal Server Error

Trigger

When an unexpected server error occurs.

Response body

{
"errorMessage": "An unexpected error occurred",
"errorType": "RUNTIME_ERROR",
"errorTitle": "INTERNAL_SERVER_ERROR",
"status": 500,
"errorId": "{{correlation_id}}",
"timestamp": "2026-01-15T12:00:00",
"path": "/peppol/tdd/withdraw"
}

Returns a 500 Internal Server Error when an unexpected server-side error occurs.