Skip to content
Riyadh · Jeddah · Dammam

App, AI & ERP Development Company in Saudi Arabia

Inovsion builds mobile apps, AI systems and ZATCA-compliant ERP and e-invoicing platforms for Saudi businesses — engineered for Vision 2030 ambitions, Arabic-first users and local regulatory reality.

10+Years of engineering
3Markets: KSA, UAE, India
End-to-endStrategy to support
What we build

Software that earns its place in your business

Four practices, one delivery team. Most Saudi engagements combine at least two — an app that needs an AI layer, or an ERP that needs e-invoicing to be legal.

Mobile app development

Native iOS and Android, or Flutter and React Native when one codebase serves you better. Arabic-first RTL layouts, local payment gateways and offline resilience for patchy coverage.

AI development

Generative AI, LLM assistants, document extraction, forecasting and computer vision — scoped against a measurable business outcome, not a demo, and deployed with data residency in mind.

ERP development

Finance, inventory, procurement, HR and operations in one platform — with VAT and ZATCA e-invoicing built in from the start rather than bolted on after an audit finding.

Custom application development

When off-the-shelf software forces you to change how you work, we build around your actual process — integrated with what you already run, and owned by you.

Compliance, solved

ZATCA e-invoicing (Fatoora) solutions for Saudi businesses

E-invoicing in Saudi Arabia is not a PDF with a logo on it. ZATCA requires invoices to be generated in a structured format, cryptographically stamped, and either cleared with or reported to the Fatoora platform. We build that into your systems.

Phase 1 · Generation

Generate compliant e-invoices

The generation phase requires invoices to be created and stored electronically in a structured format, with a QR code on simplified invoices and the mandatory VAT fields present and correct.

  • Structured electronic invoice generation
  • QR codes on simplified (B2C) invoices
  • Arabic and English invoice templates
  • Tamper-resistant electronic archiving
Phase 2 · Integration

Integrate directly with Fatoora

The integration phase connects your invoicing system to ZATCA itself. Invoices move as UBL 2.1 XML, carry a cryptographic stamp and UUID, and follow either the clearance or the reporting path depending on invoice type.

  • Fatoora API integration and onboarding (CSID)
  • UBL 2.1 XML generation and validation
  • Cryptographic stamp, UUID, invoice hash and PIH chaining
  • Clearance for standard (B2B/B2G) invoices
  • Reporting for simplified (B2C) invoices

Clearance vs reporting: which path your invoices take

Under Phase 2 every invoice follows one of two routes, and which one it takes is decided by the invoice type — not by your preference. Getting this wrong is the most common design mistake we see in half-finished integrations.

Clearance · Standard invoices

ZATCA sees it before your buyer does

Standard tax invoices — typically B2B and B2G — must be submitted to the Fatoora platform and cleared before you share them with the buyer. ZATCA validates the invoice, applies its own stamp, and returns a cleared document. That cleared version is the one the buyer is entitled to receive.

  • Applies to standard tax invoices (B2B, B2G)
  • Submitted to ZATCA before the buyer receives it
  • ZATCA validates and stamps, then returns the cleared invoice
  • A rejected invoice is not a valid tax invoice — it cannot be issued
  • Needs an online path at the moment of issuance

Design consequence: your ERP has to tolerate a synchronous round trip and a rejection, so the user-facing flow needs a queue and a clear error state.

Reporting · Simplified invoices

Your buyer sees it first, ZATCA after

Simplified tax invoices — typically B2C, the receipt handed over at the till — go to the customer immediately, complete with QR code. They are then reported to ZATCA within 24 hours of issuance. The customer is never kept waiting on a network call.

  • Applies to simplified tax invoices (B2C)
  • Issued to the customer straight away with a QR code
  • Reported to ZATCA within 24 hours
  • Tolerates brief offline operation, then catches up
  • Failures surface after the sale, so monitoring matters more

Design consequence: the store-and-forward queue is the real system. It must be durable, retry safely, and never silently drop an invoice.

What ZATCA Phase 2 actually requires from your system

Vendors tend to describe Phase 2 as a checkbox. It isn't — it's a set of specific technical obligations, each of which has to be right for the invoice to be accepted. Here is what your invoicing system genuinely has to do.

UBL 2.1 XML invoices

Invoices must be produced as structured UBL 2.1 XML — or as PDF/A-3 with the XML embedded inside it. The XML is the invoice; the human-readable rendering is a convenience. Field-level validation is strict, so mapping your ERP's data model onto the required elements is most of the real work.

Cryptographic stamp

Each invoice carries a cryptographic stamp generated with keys held by your e-invoicing solution. It proves the invoice came from an onboarded system and hasn't been altered since. Key storage and rotation are security decisions, not paperwork.

CSID via EGS onboarding

Every EGS unit — each e-invoicing generation solution, whether that's an ERP instance or a till — is onboarded with ZATCA to obtain a cryptographic stamp identifier (CSID). Onboarding is per unit, so a chain of twenty branches is twenty onboardings, and renewal has to be operationalised rather than remembered.

UUID and invoice hash

Every invoice needs a UUID and a hash of its own content. The hash is what makes tampering detectable after the fact, and it must be computed over exactly the canonical form ZATCA expects — a subtle source of rejections when it isn't.

PIH chaining

Each invoice records the previous invoice hash (PIH), linking your invoices into an ordered chain. This is where naive implementations break: parallel tills, retries and restores can all fracture the chain. Sequencing has to be designed deliberately, per EGS unit.

QR code

Simplified invoices carry a QR code encoding the mandated fields in the specified format, so anyone can verify the invoice from the printed receipt. Standard invoices carry a QR code once cleared.

Archiving and retention

Invoices, their XML and the responses from ZATCA must be stored electronically, tamper-resistant, and retrievable on request. In practice this means an immutable store and an audit trail you can hand to an inspector without a three-week export project.

Arabic content and mandated fields

Invoices must carry the mandatory VAT fields and Arabic content where required. This sounds trivial until you find that your product master has no Arabic names and your address fields don't split the way the specification wants.

How we integrate with your existing ERP or POS

Inovsion has built and delivered an ERP-integrated ZATCA e-invoice solution: EGS onboarding and integration, broad ERP compatibility, and automated compliance and validation. It sits alongside your finance system rather than replacing it.

The compliance layer approach

Your ERP or POS keeps doing what it already does well — pricing, stock, ledgers, customers. Our layer takes the invoice data it produces, maps it to UBL 2.1, stamps it, talks to Fatoora, handles clearance or reporting, and writes the outcome back. If ZATCA changes a specification, the change lands in one isolated component instead of scattering through your finance code.

  • EGS onboarding and CSID lifecycle handled per unit
  • Field mapping from your existing data model to UBL 2.1
  • Automated validation before submission, so rejections are rare
  • Durable queue with safe retries and no duplicate submissions
  • Clearance and reporting paths routed by invoice type
  • Dashboards and alerts when something is stuck or rejected

How we connect to what you run

Integration method depends on what your system exposes, and we pick the least invasive option that is still reliable:

  • API integration — where your ERP or POS has a usable API, this is the cleanest route.
  • Database or event hooks — for older on-premise systems without an API surface.
  • Middleware and file exchange — batch flows for systems that only export.
  • Direct build-in — where we built or maintain the ERP, compliance goes in the core.

We work across cloud and on-premise deployments, on AWS or Microsoft Azure, with data residency treated as a design constraint from day one.

What we need from you to start

A ZATCA integration stalls on missing information far more often than on missing code. These four things let us scope accurately instead of padding an estimate.

01

VAT registration details

Your VAT registration number and the legal entity structure behind it. Group registrations and multiple entities change how EGS units are organised, so we need this before, not after, the design.

02

ERP / POS inventory

Which systems issue invoices today, their versions, whether they're cloud or on-premise, and what integration surface they expose. Include the till in the branch that everyone forgets — it's an EGS unit too.

03

Invoice types and volumes

The split between standard and simplified invoices, monthly volumes, peak rates, and whether you issue credit and debit notes, exports or self-billed invoices. Volume decides architecture; invoice types decide scope.

04

A finance sign-off owner

One named person in finance who can decide what a compliant invoice looks like for your business and sign it off. Without that, testing has no arbiter and go-live slips.

Want the detail rather than the summary?

We keep a dedicated page on our ZATCA e-invoicing solution covering the architecture, EGS onboarding and the integration options in full — plus a longer written guide to the programme for finance and IT teams who have to make the call together.

Related: ERP development · Construction ERP · Restaurant POS · Custom applications · Our work

Keep the ERP you already run

We build the compliance layer around your current ERP, POS or billing system. Replacing a working finance platform to satisfy a regulator is rarely the cheapest path.

Tested against the sandbox

We validate invoice structure, stamping and the clearance and reporting flows in ZATCA's developer sandbox before anything touches a live tax position.

Built to survive rule changes

Requirements and onboarding waves have moved repeatedly since launch. We isolate the compliance layer so a specification change is a contained update, not a rewrite.

Note: ZATCA's onboarding waves, thresholds and technical specifications are updated periodically. We confirm the current requirements that apply to your business against ZATCA's published guidance at the start of every engagement — we don't rely on yesterday's rules.

Why Inovsion

Built for the Saudi market, not translated into it

Arabic-first, genuinely

Right-to-left is a design decision, not a CSS flag flipped at the end. We plan layout, typography, numerals and content flow for Arabic from the first wireframe.

Regulation is part of the build

VAT, ZATCA e-invoicing and data residency shape architecture. We treat them as requirements at design time, which is considerably cheaper than discovering them at audit time.

One team, three markets

The same team delivers across Saudi Arabia, the UAE and India — useful when you operate regionally and want one platform rather than three divergent ones.

Senior engineers on your project

The people who scope your build are the people who deliver it. No bait-and-switch between the pitch and the sprint.

You own everything

Source code, infrastructure, documentation and IP are yours. No lock-in to a proprietary platform you can't leave.

Support after launch

Launch is the start. We offer monitoring, iteration and support agreements so the system keeps working when the market and the rules move.

How we work

A process that de-risks the expensive parts first

Discovery

We map your process, systems, users and compliance obligations, then write down what success actually means.

Architecture & scope

A costed plan with the risky assumptions tested early — integrations, data model, compliance flow.

Build & validate

Two-week increments you can use, with QA, security review and sandbox testing throughout.

Launch & support

Deployment, handover, documentation and an agreed support model so nothing goes quiet after go-live.

Industries

Sectors we know well

Domain knowledge shortens discovery and avoids expensive wrong turns.

Retail & eCommerce

Storefronts, POS and marketplaces with Mada, Apple Pay and ZATCA-compliant billing.

Finance

Payments, lending and wallets built to regulatory and security expectations.

Logistics & supply chain

Fleet, warehouse and last-mile visibility across the Kingdom.

Healthcare

Patient apps, scheduling and records with clinical safety and privacy first.

Real estate

Listings, CRM, leasing and property management platforms.

Construction

Project controls, site progress, HSE and cost tracking.

Energy

Asset monitoring, field operations and trading platforms.

Government & semi-government

Citizen services and digital transformation aligned to Vision 2030.

FAQ

ZATCA and delivery questions, answered

What is ZATCA e-invoicing (Fatoora)?

ZATCA e-invoicing, branded Fatoora, is the Saudi Zakat, Tax and Customs Authority programme requiring VAT-registered businesses to issue invoices electronically in a structured format rather than as paper or a plain PDF. It rolls out in two phases: a generation phase and an integration phase that connects your system to ZATCA directly.

What is the difference between ZATCA Phase 1 and Phase 2?

Phase 1 (Generation) requires compliant electronic invoices to be generated and stored, including a QR code on simplified invoices. Phase 2 (Integration) adds direct integration with the Fatoora platform: invoices as UBL 2.1 XML, a cryptographic stamp and UUID, and either clearance or reporting depending on the invoice type.

What is the difference between clearance and reporting?

Standard tax invoices — typically B2B and B2G — must be cleared by ZATCA before you share them with the buyer. Simplified tax invoices — typically B2C — go to the customer immediately and are reported to ZATCA afterwards, within the required window.

Can Inovsion make our existing ERP ZATCA compliant?

Yes, and that's usually the right call. We build the compliance layer — Fatoora integration, XML generation, cryptographic stamping, QR codes and the clearance or reporting flow — and connect it to the ERP, POS or billing platform you already run, rather than replacing a finance system that works.

What is a CSID and what is EGS onboarding?

An EGS (E-invoicing Generation Solution) is any unit that generates invoices — an ERP instance, a POS till, a billing service. Each unit is onboarded with ZATCA, which issues it a CSID (cryptographic stamp identifier). The CSID is what allows that unit's invoices to be cryptographically stamped and accepted. Onboarding is per unit rather than per company, so twenty branches means twenty onboardings. We automate the onboarding and the renewal cycle rather than tracking it in a spreadsheet.

What happens if ZATCA rejects an invoice?

It depends on the path. A standard invoice that fails clearance is not a valid tax invoice, so you cannot issue it to the buyer until the problem is fixed and it clears. A simplified invoice has already reached the customer, so a rejection on reporting is a compliance issue to correct rather than a blocked sale. In our experience most rejections come from field-level data problems rather than the integration itself, which is why we validate against the rules before submission and surface failures on a dashboard instead of in a log file.

Do we have to replace our ERP to comply with ZATCA?

Usually not. Compliance is about what your invoices contain and where they go, not about which vendor's badge is on your finance system. We build the e-invoicing layer around the ERP or POS you already run — our delivered ERP-integrated ZATCA e-invoice solution covers EGS onboarding and integration across a broad range of ERPs, with automated compliance and validation. Replacing a working finance platform to satisfy a regulator is expensive and rarely necessary. If we do recommend a change, it will be for a reason that stands on its own.

How do you test a ZATCA integration before going live?

We build and validate against ZATCA's developer sandbox and simulation environments first, so invoice structure, cryptographic stamping, hashing, PIH chaining and both the clearance and reporting flows are exercised without touching a live tax position. We then run your real invoice types through the flow — including the awkward ones such as credit notes, debit notes and exports — with your finance owner signing each off, before we onboard the production EGS units and cut over.

Do you work with businesses outside Riyadh?

Yes. We work across Saudi Arabia including Riyadh, Jeddah, Dammam and the Eastern Province, and also serve the UAE and India. Projects run remotely with on-site workshops where they genuinely help.

How long does a mobile app or ERP project take?

A focused mobile app MVP is typically 10–16 weeks. ERP and e-invoicing integrations depend on how many systems they touch and usually run 8–20 weeks. We scope precisely after a discovery workshop rather than quoting blind.

Let's talk about your project

Tell us what you're trying to build or which compliance deadline you're up against. You'll get a straight answer about scope, cost and timeline — not a sales sequence.

  • Free initial consultation
  • Response within one business day
  • NDA on request before you share anything sensitive

Prefer email? [email protected]

Request a free consultation

We'll only use your details to respond to this enquiry.