The Legal Mandate: Articles 40, 53 & 54 of the VAT Regulations
Under the Saudi VAT Implementing Regulations, taxable entities are legally prohibited from modifying accounting ledgers retroactively.
Article 40 defines the strict statutory grounds under which an enterprise may adjust the tax liability declared on an original tax invoice:
Original Sale Finalized
Standard B2B invoice cleared by ZATCA and delivered to corporate buyer
Dispute / Return Occurs
Buyer returns 30% of inventory; parties agree on financial downward adjustment
Credit Note Generation
ERP generates UBL 2.1 Credit Note (Type 381) embedding original invoice UUID
ZATCA Clearance Engine
Credit Note clears in real time; ZATCA ledger automatically reduces seller output VAT
VAT Return Reconciliation
Adjustment reflected automatically in quarterly VAT Return Line 1 (Standard Rated Supplies)
Architectural Taxonomy: Credit Notes (381) vs Debit Notes (383)
ZATCA enforces international OASIS UBL 2.1 document types to distinguish between downward and upward ledger adjustments:
| Architectural Dimension | Credit Note (Ish'ar Da'in) | Debit Note (Ish'ar Madeen) |
|---|---|---|
| Document Type Code | <cbc:InvoiceTypeCode>381</cbc:InvoiceTypeCode> | <cbc:InvoiceTypeCode>383</cbc:InvoiceTypeCode> |
| Financial Nature | Downward Adjustment (Decreases receivable / payable). | Upward Adjustment (Increases receivable / payable). |
| Common Business Triggers | Customer returns, post-sale discounts, billing overcharges. | Post-sale freight additions, under-billed quantities, price increases. |
| Output VAT Impact | Reduces Seller Output VAT owed to ZATCA. | Increases Seller Output VAT owed to ZATCA. |
| Input VAT Impact | Reduces Buyer Input VAT deduction entitlement. | Increases Buyer Input VAT deduction entitlement. |
| Root XML Element | <CreditNote> or <Invoice> | <DebitNote> or <Invoice> |
| Mandatory Reference | <cac:BillingReference> linking original UUID. | <cac:BillingReference> linking original UUID. |
Technical Anatomy of Mandatory Reference Linkage (BR-KSA-70)
The single most common rejection error encountered by enterprise developers when issuing credit notes is `BR-KSA-70: A credit or debit note must reference the invoice that is being amended.`
In the UBL 2.1 XML schema, the adjustment note must inject the parent document's metadata inside the <cac:BillingReference> block immediately following the invoice type definition:
<!-- MANDATORY ORIGINAL INVOICE LINKAGE -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<!-- 1. Original Commercial Serial Number -->
<cbc:ID>INV-2026-00842</cbc:ID>
<!-- 2. Original Invoice RFC 4122 UUIDv4 (CRITICAL) -->
<cbc:UUID>c4a1e9b2-3f84-4e91-8a62-1029481bc39a</cbc:UUID>
<!-- 3. Original Invoice Issue Date -->
<cbc:IssueDate>2026-01-15</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>Strict Validation of the Original UUID:
When a Standard B2B Credit Note is submitted to ZATCA's live clearance API, ZATCA's database cross-references the <cbc:UUID> against its historical clearing ledger. If the referenced UUID does not exist, belongs to a different taxpayer TRN, or was previously cancelled, the credit note is rejected with HTTP 400 Bad Request: Original Invoice Not Found.
Mandatory Instruction Note: Stating the Reason for Adjustment
Under Schematron business rule `BR-KSA-72`, every credit or debit note must articulate a clear legal reason for the adjustment. This justification must be injected inside <cac:PaymentMeans> under <cbc:InstructionNote>:
<!-- MANDATORY REASON FOR ADJUSTMENT -->
<cac:PaymentMeans>
<cbc:PaymentMeansCode>10</cbc:PaymentMeansCode>
<cbc:InstructionNote>Defective goods return - 40 units of Model X4 damaged during transit. Agreed credit agreement #CR-912.</cbc:InstructionNote>
</cac:PaymentMeans>Acceptable standard reasons recognized during tax audits include:
Financial Arithmetic & Line Item Restrictions
Developers must adhere to strict mathematical constraints when building adjustment payloads:
Statutory Safeguards & Rights Protection
Mandatory protections enforced by MHRSD & Saudi Labor Law
Complete Working UBL 2.1 XML Credit Note Snippet
The following excerpt demonstrates the core structure of a ZATCA-compliant Phase 2 Credit Note:
<?xml version="1.0" encoding="UTF-8"?>
<CreditNote xmlns="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:ID>CN-2026-00041</cbc:ID>
<cbc:UUID>8e1f4a9b-2c34-4d81-9f62-71029481bc5e</cbc:UUID>
<cbc:IssueDate>2026-02-07</cbc:IssueDate>
<cbc:IssueTime>11:20:00</cbc:IssueTime>
<cbc:CreditNoteTypeCode name="0100000">381</cbc:CreditNoteTypeCode>
<!-- Billing Reference to Original Cleared Invoice -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>INV-2026-00842</cbc:ID>
<cbc:UUID>c4a1e9b2-3f84-4e91-8a62-1029481bc39a</cbc:UUID>
<cbc:IssueDate>2026-01-15</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Sequential Counter & Hash Chain -->
<cac:AdditionalDocumentReference>
<cbc:ID>ICV</cbc:ID>
<cbc:UUID>1043</cbc:UUID>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>PIH</cbc:ID>
<cac:Attachment>
<cbc:EmbeddedDocumentBinaryObject mimeCode="text/plain">
bWVMZXhlMjAyNmhhc2hvZnByZXZpb3VzaW52b2ljZTMyeWVz==
</cbc:EmbeddedDocumentBinaryObject>
</cac:Attachment>
</cac:AdditionalDocumentReference>
<!-- Adjustment Justification -->
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:InstructionNote>Customer return: 10 units defective hardware.</cbc:InstructionNote>
</cac:PaymentMeans>
<!-- Financial Tax Summary -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="SAR">150.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="SAR">1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="SAR">150.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>15.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- Credited Line Item -->
<cac:CreditNoteLine>
<cbc:ID>1</cbc:ID>
<cbc:CreditedQuantity unitCode="PCE">10</cbc:CreditedQuantity>
<cbc:LineExtensionAmount currencyID="SAR">1000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Network Switch 24-Port Gigabit</cbc:Name>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="SAR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:CreditNoteLine>
</CreditNote>Real-World Case Study: Handling a SAR 120,000 Industrial Equipment Return in Jeddah
In December 2025, a heavy machinery importer in Jeddah supplied 3 industrial generator sets valued at SAR 120,000 + 15% VAT (SAR 18,000) to an infrastructure contractor:
1. The supplier's ERP located the original cleared invoice UUID (f72b...) issued two weeks earlier.
2. The system generated Credit Note CN-2026-0012 specifying <cbc:CreditedQuantity>1</cbc:CreditedQuantity> with line extension SAR 40,000 and VAT SAR 6,000.
3. The credit note inherited sequential counter ICV = 412 and embedded the hash of transaction 411.
4. The document cleared through /invoices/clearance/single within 1.1 seconds.
5. The contractor received the cleared PDF/A-3 credit note, allowing both parties' accounting ledgers to reconcile their VAT returns without discrepancy.
Common Credit & Debit Note Rejection Codes & Developer Fixes
| Schematron Code | Underlying Error | Immediate Developer Remedy |
|---|---|---|
| `BR-KSA-70` | Missing <cac:BillingReference> structure. | Inject <cac:InvoiceDocumentReference> with valid original ID, UUID, and IssueDate. |
| `BR-KSA-71` | Original invoice UUID syntax is invalid or not RFC 4122 Version 4. | Verify that the referenced UUID contains exact 36-character hyphenated UUIDv4 syntax. |
| `BR-KSA-72` | Missing adjustment reason text. | Add <cbc:InstructionNote> inside <cac:PaymentMeans> explaining the adjustment. |
| `BR-KSA-73` | Negative values passed in line amounts or quantity tags. | Convert all quantities and unit prices to positive positive values; document type handles sign. |
| `400 Bad Request` | Referenced invoice UUID belongs to a different VAT registration number. | Verify your multi-tenant ERP database logic; ensure the parent invoice belongs to the same seller TRN. |
Frequently Asked Questions (FAQ)
Can an enterprise delete an erroneous invoice instead of issuing a Credit Note?
No. Under Saudi tax law and ZATCA Phase 2 tamper-proofing rules, electronic invoices can never be deleted or removed from the database. Any error must be rectified by issuing a formal Credit Note (for cancellations/rebates) or Debit Note (for upward corrections).
What happens if I issue a Credit Note against an un-cleared invoice?
A Credit Note can only reference an invoice that has already been successfully cleared (for B2B) or reported (for B2C). Attempting to clear a credit note referencing an un-cleared or rejected UUID will result in immediate API rejection.
Does a Credit Note have its own QR Code?
Yes. On Simplified (B2C) Credit Notes, a complete Phase 2 cryptographic QR code must be printed on the credit receipt, encoding all 9 mandatory TLV tags reflecting the credited financial values.
Can a single Credit Note adjust multiple original invoices?
Under ZATCA Phase 2 UBL 2.1 specifications, each Credit Note should reference a single original invoice via its primary <cac:BillingReference> to preserve clean one-to-one audit traceability in tax reconciliation ledgers.
How do Credit Notes affect the quarterly VAT return filed on ERAD?
Credit Notes automatically reduce the taxpayer's declared Output Tax on Line 1 of the VAT return, while Debit Notes increase declared Output Tax. During ZATCA audits, the total values declared on Line 1 are automatically cross-checked against cleared credit and debit notes on the Fatoora Portal.
Was this compliance guide helpful?
Your feedback helps our legal editorial team maintain authoritative KSA guidance.
Advocate High Court (Punjab Bar Council) and ATT GCC VAT Certified Specialist. Author of comprehensive regulatory commentaries on Saudi corporate law, ZATCA e-invoicing protocols, and Labor Reform Initiatives.