BR-KSA-70: Invoice issue time (KSA-25) is required as hh:mm:ss or hh:mm:ssZ

Explained by Matheel from ZATCA's rule text and the condition SDK 3.4.8 executes · Updated

Error: the invoice is rejectedAll invoicesFields: KSA-25

The invoice must have a non-empty cbc:IssueTime (KSA-25) in 24-hour hh:mm:ss (local time) or hh:mm:ssZ (UTC) format. Fractional seconds or offsets such as +03:00 are not accepted by the pattern.

How to fix it

Use exactly this shape: <cbc:IssueTime>19:20:30</cbc:IssueTime> or <cbc:IssueTime>19:20:30Z</cbc:IssueTime>.

ZATCA's official text

[BR-KSA-70]-The invoice must contain Invoice Issue Time (KSA-25). This value should be in the format: hh:mm:ss for time expressed in local time (eg 19:20:30) or hh:mm:ssZ for time expressed in UTC (eg 19:20:30Z)."The invoice must contain Invoice Issue Time (KSA-25). This value should be in the format: hh:mm:ss for time expressed in local time (eg 19:20:30) or hh:mm:ssZ for time expressed in UTC (eg 19:20:30Z).
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules

Fails when (the condition ZATCA's SDK runs)

not(exists(cbc:IssueTime) and (cbc:IssueTime) != '' and (matches(cbc:IssueTime, '^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$') or matches(cbc:IssueTime, '^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])Z$')))

Related rules

Validate your invoice against ZATCA's rules

Paste the XML and see every error and warning. It runs in your browser; the invoice goes nowhere.

Validate an invoice or try Matheel