🟢 Open Source · MIT Licensed · Free

ZATCA High Speed
ERPNext app for full ZATCA Phase 2

Native ERPNext v15 solution that connects directly to Saudi Arabia's ZATCA Phase-2 e-invoicing platform — no middleware. Live invoice submission, QR codes, CSID onboarding, and VAT reports built for the Saudi market.

v15ERPNext / Frappe
Phase 2ZATCA
AR + ENFull UI
MITLicense

📦What is ZATCA High Speed?

ZATCA High Speed is a native ERPNext app, built by HIGH SPEED IT specifically for Saudi merchants running ERPNext as their accounting backbone. It adds a complete Phase-2 e-invoicing layer — from CSID onboarding to live invoice transmission and acceptance tracking — entirely inside ERPNext, no external middleware required.

Key Features

Everything a Saudi merchant needs to stay ZATCA-compliant, built with native ERPNext patterns.

🚀

Live Invoice Submission

Three modes: Live (automatic), Batch (queued), or Manual (user-controlled) — your choice.

🧙

Smart Activation Wizard

Guides merchants step-by-step: readiness checks, OTP, compliance CSID, then production CSID.

🔄

Sandbox-Safe Testing

Temporary compliance tests run inside DB transactions with auto-rollback — zero ledger pollution.

📱

Phase-2 QR Codes

Cryptographic QR generated from ZATCA's response — not a plain-text fallback.

🖨️

A4 + Thermal Print

Bilingual templates for tax invoices, simplified invoices, and credit / debit notes.

💳

Prepayment Support

Converts customer receipts into prepayment invoices, links them to final sales, and tracks VAT properly.

📊

VAT Tax Return Report

Pre-built report covering sales, returns, purchases, journal entries, and prepayments.

📋

Submission Status Board

Real-time tracking: Accepted, Rejected, Pending, Failed — with XML, signature, and UUID.

🔍

Pre-Submission Validation

Warnings before save / submit — catch issues before ZATCA rejects them.

🎯

Auto-Classification

Auto-decides Standard vs. Simplified based on the customer's VAT status.

🇸🇦

Full Arabic UI

UI, validation messages, workspace, and ZATCA statuses — all professionally localized.

🏢

Company-Level Config

Each company has its own ZATCA settings — no confusing global config.

🧾Supported Invoice Types

Full coverage of every Phase-2 invoice type ZATCA requires.

🧾Standard Tax Invoice 🧾Simplified Tax Invoice ↩️Credit Note ↪️Debit Note 💰Prepayment Invoice

⚙️Technical Stack

Built on native Frappe tooling — no paid cloud services required.

🐍

Python 3.10+

Server-side core

Frappe v15

Framework
📊

ERPNext v15

ERP layer
📜

JavaScript

Form scripts

Java Runtime

For ZATCA CLI
📦

ZATCA CLI

Auto-setup helper

🚀Install in 5 Commands

Assumes you already have an ERPNext v15 bench. Paste these on your server:

shell
# 1) Pull the app from GitHub (production branch)
$ bench get-app https://github.com/fuhaed/zatca_high_speed \
        --branch production

# 2) Install on your site
$ bench --site your-site.local install-app zatca_high_speed

# 3) Migrate DB + build assets
$ bench --site your-site.local migrate
$ bench build --app zatca_high_speed

# 4) Restart to activate the workspace
$ bench restart

🎛️Configuration Options

Settings live on the Company doctype — every company has its own profile.

🌐ZATCA Environment

  • Sandbox — Initial development env
  • Simulation — Pre-production testing
  • Production — Live, official endpoint

📨Invoice Mode

  • Auto — Decides based on customer VAT
  • Simplified — Force simplified for all
  • Standard — Force standard for all

Sync Mode

  • Live — Submit immediately on save
  • Batch — Queued background jobs
  • Manual — User decides when to send

Validation

  • Local CLI validation
  • Block invalid XML
  • Pre-save warnings

📍First-Time Onboarding

Once the app is installed, follow these steps to connect your company to ZATCA.

  1. Enable ZATCA Integration on the Company form

    Open Company → enable "ZATCA Integration" and save.

  2. Verify company data

    Country: Saudi Arabia, Currency: SAR, 15-digit VAT (starts & ends with 3), and a valid CR.

  3. Link a valid Saudi address

    City, postal code, building number, district — all mandatory for ZATCA.

  4. Launch the Activation Wizard

    From the ZATCA High Speed workspace → Activation Wizard. Pick your environment.

  5. Complete OTP and request the Compliance CSID

    Enter the OTP from the Fatoora portal, request the compliance CSID, then run the temp invoice checks.

  6. Request the Production CSID and go live

    Once compliance checks pass, request the production CSID and start submitting real invoices.

🛡️Pre-Submission Requirements

The app validates this checklist automatically and warns you before ZATCA would reject the invoice.

15-digit VAT, starts & ends with 3
Currency SAR + country Saudi Arabia
Full address: city, district, postal code, building#
Valid customer VAT for Standard invoices
Items, quantities, prices all valid
Tax table includes VAT setup
Payment uses approved Mode of Payment
XML matches ZATCA schema pre-submission

💚Why we open-sourced it

ZATCA compliance shouldn't be a competitive moat — it's a baseline right for every Saudi merchant. That's why we released the app under the MIT license, so any ERPNext user can comply with ZATCA without subscription fees or vendor lock-in. The code is open for review, contribution, and modification by the community.

Ready to get started?

Pull the app from GitHub for free, or reach out for installation & onboarding support.