Handling ZATCA Error 409 for e-Invoice Resubmission

We are encountering an issue with e-invoice submissions to ZATCA. We receive an HTTP 409 error:

Full error JSON:

{“validationResults”:{“infoMessages”:,“warningMessages”:,“errorMessages”:[{“type”:“ERROR”,“code”:“Invoice-Errors”,“category”:“Duplicate-Invoice”,“message”:“Invoice was already Reported successfully earlier.”,“status”:“ERROR”}],“status”:“ERROR”},“reportingStatus”:“NOT_REPORTED”}

According to our understanding of the ZATCA guidelines, in case an e-invoice is “not reported” (i.e. a failure / error), the correct approach is to re-send the e-invoice. However, in this case the 409 error seems to imply the invoice was already accepted earlier, leading to ambiguity.

Our queries are:

In case of receiving error code 409 (Duplicate-Invoice), should we attempt to resend the same e-invoice, or should we treat it as already successfully reported and not resend?

If the correct approach is not to resend, how should we handle internally the invoices that have status “NOT_REPORTED” with 409?

Are there any documented ZATCA guidelines or official statements that clarify what to do on 409 in the “not reported” context?

In particular, could you share the link or reference for the guideline that says “in case of not reported, resend the e-invoice”, if such exists in your official documentation?

We want to ensure we follow the correct and compliant process and avoid duplicate or wrongful submissions.

Regarding the error 409, as the response suggests, the invoice is successfully reported. You must stop retrying the same payload as ZATCA has already received this invoice successfully.

Dear @mohammed-danish

Kindly note that the invoice is successfully reported and please stops submitting it again

409 to be treated as successful reporting When you receive 409 responses, it is implied that B2C invoice with same hash value was successfully reported in first instance and saved at ZATCA’s end.

Thanks

1 Like

Dear halrashidy,

Please let us know how to retrieve details from ZATCA when we receive a 409 error, as no response has been received from ZATCA for this error.

Is there any separate GET API call available to fetch the response from ZATCA in such cases?

If not, please advise on how to handle this scenario.

Regards

Hari Krishna