Help Needed — “Invalid encoded base64 format” when submitting invoice to Compliance API

Hello everyone,

I’m new to ZATCA e-invoicing and currently working in the sandbox environment.
I have successfully generated my binarySecurityToken and secret using the following endpoint:
https://gw-fatoora.zatca.gov.sa/e-invoicing/core/compliance
Now I’m trying to send my test invoice to:
https://gw-fatoora.zatca.gov.sa/e-invoicing/core/compliance/invoices
However, I’m receiving the following response:
{
“validationResults”: {
“infoMessages”: ,
“warningMessages”: ,
“errorMessages”: [
{
“type”: “ERROR”,
“code”: “Invalid-Invoice”,
“category”: “Invoice-Base64-Decoder-Error”,
“message”: “Invalid encoded base 64 format”,
“status”: “ERROR”
}
],
“status”: “ERROR”
},
“reportingStatus”: “NOT_REPORTED”,
“clearanceStatus”: null,
“qrSellertStatus”: null,
“qrBuyertStatus”: null
}

I double-checked my XML invoice — when I decode the Base64 string using https://www.base64decode.org/, it decodes correctly without any errors.
So, I’m not sure why ZATCA’s API reports it as an invalid Base64 format.

Could someone please guide me on what I might be doing wrong?
I’ve attached my Base64-encoded XML invoice for reference.

Thanks in advance for your help!

“invoice”:“PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEludm9pY2UgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiIHhtbG5zOmV4dD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIj4KICA8Y2JjOlVCTFZlcnNpb25JRD4yLjE8L2NiYzpVQkxWZXJzaW9uSUQ+CiAgPGNiYzpDdXN0b21pemF0aW9uSUQ+dXJuOmNlbi5ldTplbjE2OTMxOjIwMTc8L2NiYzpDdXN0b21pemF0aW9uSUQ+CiAgPGNiYzpQcm9maWxlSUQ+cmVwb3J0aW5nOjEuMDwvY2JjOlByb2ZpbGVJRD4KICA8Y2JjOklEPklOVi0yOTg8L2NiYzpJRD4KICA8Y2JjOklzc3VlRGF0ZT4yMDI1LTEwLTE3PC9jYmM6SXNzdWVEYXRlPgogIDxjYmM6SW52b2ljZVR5cGVDb2RlPjM4ODwvY2JjOkludm9pY2VUeXBlQ29kZT4KICA8Y2JjOkRvY3VtZW50Q3VycmVuY3lDb2RlPlNBUjwvY2JjOkRvY3VtZW50Q3VycmVuY3lDb2RlPgogICAgPGNhYzpBY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT4KICAgICAgICA8Y2FjOlBhcnR5PgogICAgICAgICAgICA8Y2FjOlBhcnR5TmFtZT48Y2JjOk5hbWU+UGV0c0hlcm8gQ29tcGFueTwvY2JjOk5hbWU+PC9jYWM6UGFydHlOYW1lPgogICAgICAgICAgICA8Y2FjOlBvc3RhbEFkZHJlc3M+CiAgICAgICAgICAgICAgICA8Y2JjOlN0cmVldE5hbWU+Uml5YWRoLCBTYXVkaSBBcmFiaWE8L2NiYzpTdHJlZXROYW1lPgogICAgICAgICAgICAgICAgPGNiYzpDaXR5TmFtZT5SaXlhZGg8L2NiYzpDaXR5TmFtZT4KICAgICAgICAgICAgICAgIDxjYWM6Q291bnRyeT48Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5TQTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT48L2NhYzpDb3VudHJ5PgogICAgICAgICAgICA8L2NhYzpQb3N0YWxBZGRyZXNzPgogICAgICAgICAgICA8Y2FjOlBhcnR5VGF4U2NoZW1lPgogICAgICAgICAgICAgICAgPGNiYzpDb21wYW55SUQ+MzE0MjA0MzU2NjAwMDAzPC9jYmM6Q29tcGFueUlEPgogICAgICAgICAgICAgICAgPGNhYzpUYXhTY2hlbWU+PGNiYzpJRD5WQVQ8L2NiYzpJRD48L2NhYzpUYXhTY2hlbWU+CiAgICAgICAgICAgIDwvY2FjOlBhcnR5VGF4U2NoZW1lPgogICAgICAgIDwvY2FjOlBhcnR5PgogICAgPC9jYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+CjxjYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiAgPGNhYzpQYXJ0eT4KICAgIDxjYWM6UGFydHlOYW1lPjxjYmM6TmFtZT5NdXJ0YXphR2lsbGFuaTwvY2JjOk5hbWU+PC9jYWM6UGFydHlOYW1lPgogIDwvY2FjOlBhcnR5Pgo8L2NhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT4KICA8Y2FjOkludm9pY2VMaW5lPgogICAgPGNiYzpJRD4xPC9jYmM6SUQ+CiAgICA8Y2JjOkludm9pY2VkUXVhbnRpdHkgdW5pdENvZGU9IkVBIj4xLjAwPC9jYmM6SW52b2ljZWRRdWFudGl0eT4KICAgIDxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjUwMC4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgICA8Y2FjOkl0ZW0+PGNiYzpOYW1lPlNvYXA8L2NiYzpOYW1lPjwvY2FjOkl0ZW0+CiAgICA8Y2FjOlByaWNlPjxjYmM6UHJpY2VBbW91bnQgY3VycmVuY3lJRD0iU0FSIj41MDAuMDA8L2NiYzpQcmljZUFtb3VudD48L2NhYzpQcmljZT4KICAgIDxjYWM6VGF4VG90YWw+CiAgICAgIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MTAuMDA8L2NiYzpUYXhBbW91bnQ+CiAgICAgIDxjYWM6VGF4U3VidG90YWw+CiAgICAgICAgPGNiYzpUYXhhYmxlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NTAwLjAwPC9jYmM6VGF4YWJsZUFtb3VudD4KICAgICAgICA8Y2JjOlRheEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjEwLjAwPC9jYmM6VGF4QW1vdW50PgogICAgICAgIDxjYWM6VGF4Q2F0ZWdvcnk+CiAgICAgICAgICA8Y2JjOklEPlM8L2NiYzpJRD4KICAgICAgICAgIDxjYmM6UGVyY2VudD4yLjAwPC9jYmM6UGVyY2VudD4KICAgICAgICAgIDxjYWM6VGF4U2NoZW1lPjxjYmM6SUQ+VkFUPC9jYmM6SUQ+PC9jYWM6VGF4U2NoZW1lPgogICAgICAgIDwvY2FjOlRheENhdGVnb3J5PgogICAgICA8L2NhYzpUYXhTdWJ0b3RhbD4KICAgIDwvY2FjOlRheFRvdGFsPgogIDwvY2FjOkludm9pY2VMaW5lPgogIDxjYWM6VGF4VG90YWw+CiAgICA8Y2JjOlRheEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjEwLjAwPC9jYmM6VGF4QW1vdW50PgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogICAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NTAwLjAwPC9jYmM6TGluZUV4dGVuc2lvbkFtb3VudD4KICAgIDxjYmM6VGF4RXhjbHVzaXZlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NTAwLjAwPC9jYmM6VGF4RXhjbHVzaXZlQW1vdW50PgogICAgPGNiYzpUYXhJbmNsdXNpdmVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj41MTAuMDA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj41MTAuMDA8L2NiYzpQYXlhYmxlQW1vdW50PgogIDwvY2FjOkxlZ2FsTW9uZXRhcnlUb3RhbD4KPC9JbnZvaWNlPg==”

Dear @murtaza974

Thanks for reaching out. Welcome to our community.

Kindly note that the provided XML does not follow the UBL2.1 Standard. However, to ensure compliance, you need to follow the XML standard. Please refer to the latest SDK version from the link below. After being installed successfully, refer to the following path “zatca-einvoicing-sdk-Java-238-R3.4.5\Data\Samples\Standard\Invoice” to find the sample that you need to follow.

SDK link: Zatca.

Thanks,
Ibrahem Daoud.

getting 401 in https://gw-fatoora.zatca.gov.sa/e-invoicing/core/compliance/invoices

Hi few days back i tried to send test invoice using above API and i was getting invalid base64.
Now todat when i fix the xml and tried again it throwing 401 unauthorized. Nothing was changed from my side.

here is my curl
curl --location ‘https://gw-fatoora.zatca.gov.sa/e-invoicing/core/compliance/invoices’
–header ‘Authorization: Basic VFVsSlExTkVRME5CWlRablFYZEpRa0ZuU1VkQldtNTRhVWRPUjAxQmIwZERRM0ZIVTAwME9VSkJUVU5OUWxWNFJYcEJVa0puVGxaQ1FVMU5RMjFXU21KdVduWmhWMDV3WW0xamQwaG9ZMDVOYWxWNFRVUkZNMDFFYTNwT2VsRXlWMmhqVGsxNlFYaE5SRVV5VFdwRmQwMUVRWGRYYWtJNFRWRnpkME5SV1VSV1VWRkhSWGRLVkZGVVJWUk5Ra1ZIUVRGVlJVTjNkMHROZWtVd1RXcEJNRTE2VlRKT2FrVlVUVUpGUjBFeFZVVkRaM2RMVFhwRk1FMXFRVEJOZWxVeVRtcEdSRTFGUlVkQk1WVkZRWGQzTmxWSFZqQmpNR2hzWTIwNVJHSXlNWGRaVnpVMVprUk5lRTVFU1hkT1JFMHhUbXBaZDAxRVFYZE5NM2hSV2xoU2VsTkhWbmxpTUU1MllsaENhR0p1YTNSVk1sWjVaRzFXZVV4VVFYZE5WRUpYVFVKQlIwSjVjVWRUVFRRNVFXZEZSMEpUZFVKQ1FVRkxRVEJKUVVKT1VFaFhNMEpPU1VKbk16QTJVbTFDUTNKM1NHSndkVVZYZURCak5uaDVOVzlXU0hOTVNFZHdkSGhWWkM4Mk1qQXhhMGRRZDFGVU4zcExkRzFETkVacU1sZFVkVFZvUzNKMFlWaDRUbGhKZEVkSWRUSlBaV3BuWTFWM1oyTkpkMFJCV1VSV1VqQlVRVkZJTDBKQlNYZEJSRU5DYzFGWlJGWlNNRkpDU1Vkd1RVbEhiWEJKUjJwTlNVZG5UVlJ6ZDA5UldVUldVVkZGUkVSSmVFeFdUazVTV0hkNVRGWk9UbEpZZDNwTVZHUnNXbXBrYVZwcVFtdE1WR040V2tSTmRFNUVhekZaZVRBMVRXMUZkMHhVVFRGYVYwMHhXVmRGTWsxSFNUVlBWRVZtVFVJd1IwTm5iVk5LYjIxVU9HbDRhMEZSUlUxRWVrMTRUa1JKZDA1RVRURk9hbGwzVFVSQmQwMTZSVTVOUVhOSFFURlZSVVJCZDBWTlJFVjNUVVJGWWsxQ2EwZEJNVlZGUjJkM1UxVnRiRFZaVjFKdlRFWk9hR1JYVW5CUldFcG9XVzFzYUUxU1VYZEZaMWxFVmxGUlVFUkJkRkZhV0ZKVVdsaEtNbUZYVG14amVrRkxRbWRuY1docmFrOVFVVkZFUVdkT1NVRkVRa1pCYVVKVFVtVjNSek0zTlc0eU0wOVZRMmh0ZUVkM1NteHFNM2hLYjBnNGMxWnVkbnA1Y1dGMFdrdzJPRTUzU1doQlQyWkhkRTgxTlRKeGIzQTBVbUZLT1VoQmQzZGpSazlUWXpocldtTktSbWwwYmk5bldTdDZOR1JZV0E9PUFMU3UyQTc1ZFFRK3JGR09ia1c1VjVGQU1acFM5UWdpQmY3RjVsQjJoNUU9’
–header ‘accept-language: en’
–header ‘Clearance-Status: 0’
–header ‘Accept-Version: V2’
–header ‘Content-Type: application/json’
–header ‘Cookie: TS01689bcc=0132a679c0e35fc0f45663c1f272ee225c800f22c56a56e78c8ed53586e132008e1646625997074a258b7c0bf1a3af35f399832833’
–data ‘{
“invoiceHash”: “vLGQoYNoM3tf1XAxKpoNTSz/8pkdidXy47HWh0VQmu8=”,
“uuid”: “8e6000cf-1a98-4174-b3e7-b5d5954bc10d”,
“invoice”: “UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BFbHVkbTlwWTJVZ2VHMXNibk05SW5WeWJqcHZZWE5wY3pwdVlXMWxjenB6Y0dWamFXWnBZMkYwYVc5dU9uVmliRHB6WTJobGJXRTZlSE5rT2tsdWRtOXBZMlV0TWlJZ2VHMXNibk02WTJGalBTSjFjbTQ2YjJGemFYTTZibUZ0WlhNNmMzQmxZMmxtYVdOaGRHbHZianAxWW13NmMyTm9aVzFoT25oelpEcERiMjF0YjI1QloyZHlaV2RoZEdWRGIyMXdiMjVsYm5SekxUSWlJSGh0Ykc1ek9tTmlZejBpZFhKdU9tOWhjMmx6T201aGJXVnpPbk53WldOcFptbGpZWFJwYjI0NmRXSnNPbk5qYUdWdFlUcDRjMlE2UTI5dGJXOXVRbUZ6YVdORGIyMXdiMjVsYm5SekxUSWlJSGh0Ykc1ek9tVjRkRDBpZFhKdU9tOWhjMmx6T201aGJXVnpPbk53WldOcFptbGpZWFJwYjI0NmRXSnNPbk5qYUdWdFlUcDRjMlE2UTI5dGJXOXVSWGgwWlc1emFXOXVRMjl0Y0c5dVpXNTBjeTB5SWo0S0lDQThZMkpqT2xWQ1RGWmxjbk5wYjI1SlJENHlMakU4TDJOaVl6cFZRa3hXWlhKemFXOXVTVVErQ2lBZ1BHTmlZenBEZFhOMGIyMXBlbUYwYVc5dVNVUStkWEp1T21ObGJpNWxkVHBsYmpFMk9UTXhPakl3TVRjOEwyTmlZenBEZFhOMGIyMXBlbUYwYVc5dVNVUStDaUFnUEdOaVl6cFFjbTltYVd4bFNVUStjbVZ3YjNKMGFXNW5PakV1TUR3dlkySmpPbEJ5YjJacGJHVkpSRDRLSUNBOFkySmpPa2xFUGtsT1ZpMHlPVGM4TDJOaVl6cEpSRDRLSUNBOFkySmpPa2x6YzNWbFJHRjBaVDR5TURJMUxURXdMVEUzUEM5alltTTZTWE56ZFdWRVlYUmxQZ29nSUR4alltTTZTVzUyYjJsalpWUjVjR1ZEYjJSbFBqTTRPRHd2WTJKak9rbHVkbTlwWTJWVWVYQmxRMjlrWlQ0S0lDQThZMkpqT2tSdlkzVnRaVzUwUTNWeWNtVnVZM2xEYjJSbFBsTkJVand2WTJKak9rUnZZM1Z0Wlc1MFEzVnljbVZ1WTNsRGIyUmxQZ29nSUNBZ1BHTmhZenBCWTJOdmRXNTBhVzVuVTNWd2NHeHBaWEpRWVhKMGVUNEtJQ0FnSUNBZ0lDQThZMkZqT2xCaGNuUjVQZ29nSUNBZ0lDQWdJQ0FnSUNBOFkyRmpPbEJoY25SNVRtRnRaVDQ4WTJKak9rNWhiV1UrVUdWMGMwaGxjbThnUTI5dGNHRnVlVHd2WTJKak9rNWhiV1UrUEM5allXTTZVR0Z5ZEhsT1lXMWxQZ29nSUNBZ0lDQWdJQ0FnSUNBOFkyRmpPbEJ2YzNSaGJFRmtaSEpsYzNNK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOFkySmpPbE4wY21WbGRFNWhiV1UrVW1sNVlXUm9MQ0JUWVhWa2FTQkJjbUZpYVdFOEwyTmlZenBUZEhKbFpYUk9ZVzFsUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEdOaVl6cERhWFI1VG1GdFpUNVNhWGxoWkdnOEwyTmlZenBEYVhSNVRtRnRaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHhqWVdNNlEyOTFiblJ5ZVQ0OFkySmpPa2xrWlc1MGFXWnBZMkYwYVc5dVEyOWtaVDVUUVR3dlkySmpPa2xrWlc1MGFXWnBZMkYwYVc5dVEyOWtaVDQ4TDJOaFl6cERiM1Z1ZEhKNVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4TDJOaFl6cFFiM04wWVd4QlpHUnlaWE56UGdvZ0lDQWdJQ0FnSUNBZ0lDQThZMkZqT2xCaGNuUjVWR0Y0VTJOb1pXMWxQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR05pWXpwRGIyMXdZVzU1U1VRK016RTBNakEwTXpVMk5qQXdNREF6UEM5alltTTZRMjl0Y0dGdWVVbEVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR05oWXpwVVlYaFRZMmhsYldVK1BHTmlZenBKUkQ1V1FWUThMMk5pWXpwSlJENDhMMk5oWXpwVVlYaFRZMmhsYldVK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2WTJGak9sQmhjblI1VkdGNFUyTm9aVzFsUGdvZ0lDQWdJQ0FnSUR3dlkyRmpPbEJoY25SNVBnb2dJQ0FnUEM5allXTTZRV05qYjNWdWRHbHVaMU4xY0hCc2FXVnlVR0Z5ZEhrK0NqeGpZV002UVdOamIzVnVkR2x1WjBOMWMzUnZiV1Z5VUdGeWRIaytDaUFnUEdOaFl6cFFZWEowZVQ0S0lDQWdJRHhqWVdNNlVHRnlkSGxPWVcxbFBqeGpZbU02VG1GdFpUNU5kWEowWVhwaFIybHNiR0Z1YVR3dlkySmpPazVoYldVK1BDOWpZV002VUdGeWRIbE9ZVzFsUGdvZ0lEd3ZZMkZqT2xCaGNuUjVQZ284TDJOaFl6cEJZMk52ZFc1MGFXNW5RM1Z6ZEc5dFpYSlFZWEowZVQ0S0lDQThZMkZqT2tsdWRtOXBZMlZNYVc1bFBnb2dJQ0FnUEdOaVl6cEpSRDR4UEM5alltTTZTVVErQ2lBZ0lDQThZMkpqT2tsdWRtOXBZMlZrVVhWaGJuUnBkSGtnZFc1cGRFTnZaR1U5SWtWQklqNHhMakF3UEM5alltTTZTVzUyYjJsalpXUlJkV0Z1ZEdsMGVUNEtJQ0FnSUR4alltTTZUR2x1WlVWNGRHVnVjMmx2YmtGdGIzVnVkQ0JqZFhKeVpXNWplVWxFUFNKVFFWSWlQalV3TUM0d01Ed3ZZMkpqT2t4cGJtVkZlSFJsYm5OcGIyNUJiVzkxYm5RK0NpQWdJQ0E4WTJGak9rbDBaVzArUEdOaVl6cE9ZVzFsUGxOdllYQThMMk5pWXpwT1lXMWxQand2WTJGak9rbDBaVzArQ2lBZ0lDQThZMkZqT2xCeWFXTmxQanhqWW1NNlVISnBZMlZCYlc5MWJuUWdZM1Z5Y21WdVkzbEpSRDBpVTBGU0lqNDFNREF1TURBOEwyTmlZenBRY21salpVRnRiM1Z1ZEQ0OEwyTmhZenBRY21salpUNEtJQ0FnSUR4allXTTZWR0Y0Vkc5MFlXdytDaUFnSUNBZ0lEeGpZbU02VkdGNFFXMXZkVzUwSUdOMWNuSmxibU41U1VROUlsTkJVaUkrTVRBdU1EQThMMk5pWXpwVVlYaEJiVzkxYm5RK0NpQWdJQ0FnSUR4allXTTZWR0Y0VTNWaWRHOTBZV3crQ2lBZ0lDQWdJQ0FnUEdOaVl6cFVZWGhoWW14bFFXMXZkVzUwSUdOMWNuSmxibU41U1VROUlsTkJVaUkrTlRBd0xqQXdQQzlqWW1NNlZHRjRZV0pzWlVGdGIzVnVkRDRLSUNBZ0lDQWdJQ0E4WTJKak9sUmhlRUZ0YjNWdWRDQmpkWEp5Wlc1amVVbEVQU0pUUVZJaVBqRXdMakF3UEM5alltTTZWR0Y0UVcxdmRXNTBQZ29nSUNBZ0lDQWdJRHhqWVdNNlZHRjRRMkYwWldkdmNuaytDaUFnSUNBZ0lDQWdJQ0E4WTJKak9rbEVQbE04TDJOaVl6cEpSRDRLSUNBZ0lDQWdJQ0FnSUR4alltTTZVR1Z5WTJWdWRENHlMakF3UEM5alltTTZVR1Z5WTJWdWRENEtJQ0FnSUNBZ0lDQWdJRHhqWVdNNlZHRjRVMk5vWlcxbFBqeGpZbU02U1VRK1ZrRlVQQzlqWW1NNlNVUStQQzlqWVdNNlZHRjRVMk5vWlcxbFBnb2dJQ0FnSUNBZ0lEd3ZZMkZqT2xSaGVFTmhkR1ZuYjNKNVBnb2dJQ0FnSUNBOEwyTmhZenBVWVhoVGRXSjBiM1JoYkQ0S0lDQWdJRHd2WTJGak9sUmhlRlJ2ZEdGc1Bnb2dJRHd2WTJGak9rbHVkbTlwWTJWTWFXNWxQZ29nSUR4allXTTZWR0Y0Vkc5MFlXdytDaUFnSUNBOFkySmpPbFJoZUVGdGIzVnVkQ0JqZFhKeVpXNWplVWxFUFNKVFFWSWlQakV3TGpBd1BDOWpZbU02VkdGNFFXMXZkVzUwUGdvZ0lEd3ZZMkZqT2xSaGVGUnZkR0ZzUGdvZ0lEeGpZV002VEdWbllXeE5iMjVsZEdGeWVWUnZkR0ZzUGdvZ0lDQWdQR05pWXpwTWFXNWxSWGgwWlc1emFXOXVRVzF2ZFc1MElHTjFjbkpsYm1ONVNVUTlJbE5CVWlJK05UQXdMakF3UEM5alltTTZUR2x1WlVWNGRHVnVjMmx2YmtGdGIzVnVkRDRLSUNBZ0lEeGpZbU02VkdGNFJYaGpiSFZ6YVhabFFXMXZkVzUwSUdOMWNuSmxibU41U1VROUlsTkJVaUkrTlRBd0xqQXdQQzlqWW1NNlZHRjRSWGhqYkhWemFYWmxRVzF2ZFc1MFBnb2dJQ0FnUEdOaVl6cFVZWGhKYm1Oc2RYTnBkbVZCYlc5MWJuUWdZM1Z5Y21WdVkzbEpSRDBpVTBGU0lqNDFNVEF1TURBOEwyTmlZenBVWVhoSmJtTnNkWE5wZG1WQmJXOTFiblErQ2lBZ0lDQThZMkpqT2xCaGVXRmliR1ZCYlc5MWJuUWdZM1Z5Y21WdVkzbEpSRDBpVTBGU0lqNDFNVEF1TURBOEwyTmlZenBRWVhsaFlteGxRVzF2ZFc1MFBnb2dJRHd2WTJGak9reGxaMkZzVFc5dVpYUmhjbmxVYjNSaGJENEtQQzlKYm5admFXTmxQZz09”
}’

Dear @murtaza974

Thanks for following up.

Kindly be informed that using the compliance/invoices API is only to complete the compliance checks, and you can not use it to test your actual invoices before being sent to production. However, you can use the validation functionality using ZATCA SDK as below:

  1. For Java version: use the following command: fatoora -validate -invoice “your invoice.xml“
  2. For .Net version: use the following command: fatooranet validate -invoice “your invoice.xml”.

Additionally, you can use the Web-Based validator on this link: Zatca

To understand the main ZATCA SDK functionality, our recommendation is to download ZATCA SDK, then navigate to the following folder path: zatca-einvoicing-sdk-Java-238-R3.4.5\Readme

Thanks,
Ibrahem Daoud.

Thank you for your feedback. I’ve prepared the XML file as required; however, I have some confusion regarding the values for certain placeholders. Could you please guide me on what these placeholders represent and what their corresponding values should be?

  • XADES_DIGEST_PLACEHOLDER
  • CSID_SIGNATURE_PLACEHOLDER
  • CSID_CERTIFICATE_PLACEHOLDER
  • CERT_DIGEST_PLACEHOLDER
  • PREVIOUS_HASH_PLACEHOLDER