TechnoMindsSaudi digital infrastructure

TechnoMinds Fatoorah features

Everything below maps to implemented components with local test evidence in the underlying platform. External access and production proof remain separate gates. See our Security page for the same plain-statement approach applied to data protection, including what does not exist yet.

Invoice generation

Standard, simplified, credit & debit note support

One canonical invoice model covers standard tax invoices (B2B), simplified tax invoices (B2C), and credit/debit notes, with automatic classification of which submission path an invoice type requires.

Deterministic tax calculation

Tax is calculated with integer arithmetic, never floating point, so line items and totals always reconcile to the halala.

UBL 2.1-shaped invoice XML

Every invoice generates a UBL-shaped XML document, plus a human-readable rendering for internal review.

Immutable once issued

An issued, reported, or cleared invoice is never edited in place. Corrections are always a new credit or debit note referencing the original.

Cryptography & QR

Real key material, not a simulator

A genuine secp256k1 keystore, CSR generation, invoice-hash chaining, and digital signing back every invoice's security artifact.

QR TLV build, decode, and verify

Every invoice gets a scannable QR code built from the TLV elements ZATCA's e-invoicing model requires, with the same logic able to decode and verify a QR it produced.

Device lifecycle & onboarding

13-state EGS unit lifecycle

Every invoicing device/branch (EGS unit) moves through a defined lifecycle from setup through compliance onboarding to production, with renewal, suspension, and revocation states modeled explicitly.

Fail-closed production guard

A unit cannot be marked production-ready until its production credentials are actually validated — this is enforced unconditionally in code, not left to a manual checklist.

Customer action & OTP workflow

The taxpayer-facing steps required during onboarding (authorization, OTP entry) are tracked as first-class, time-limited, attempt-limited actions.

Submission & reconciliation

Separate reporting & clearance workflows

Simplified (B2C) invoices follow ZATCA's reporting model; standard (B2B) invoices follow the clearance model. Each is handled by its own correctly-shaped workflow instead of one workflow pretending to fit both.

Idempotent submission, no blind retries

A retried submission with the same idempotency key never resubmits to ZATCA a second time. If an outcome can't be determined, it's reported as genuinely unresolved rather than guessed.

Three-layer reconciliation

Canonical invoice data, generated XML, and ZATCA's own submission response are reconciled against each other and against your commercial billing records.

Immutable, tenant-isolated archive

Every submitted invoice and its artifacts are archived with a hash chain, scoped so one organization's archive is never visible to another.

All of the above is tested against a ZATCA-conformant local simulator we built and control, not against ZATCA’s real production or sandbox service. No official ZATCA SDK integration exists in this build. Connecting to ZATCA’s real service requires your own ZATCA-issued taxpayer credentials.