TechnoMindsSaudi digital infrastructure

Saudi e-invoicing for businesses and software teams

Create Saudi invoices in TechnoMinds—or use the Fatoorah API in your software.

Start with a free Fatoorah workspace or a synthetic API sandbox, reach first value quickly, and keep the durable logs, usage, evidence, and controls that make production operations explainable.

Verified-email signupScoped sandbox keyRequest logs and usageNo routine sales gate

Availability, stated plainly

Know what you can use before you create an account.

Evaluation and production are different environments with different evidence. The public site, API, and console use the same boundary.

Fatoorah sandbox

Available

Synthetic/local validation, XML, QR, request logs, usage, keys and webhooks.

API Platform

Available

Organizations, scoped credentials, tenant resources, metering and evidence controls.

Address Operations

Technical preview

Local workflow and API surfaces; authoritative external-source activation is separately gated.

Connect WhatsApp sandbox

Developer preview

Synthetic WhatsApp conversations, contacts, consent, campaigns, templates, delivery state and signed webhooks.

Production eligibility

Required

Sandbox signup never enables external ZATCA or SPL production traffic.

Start here

Saudi e-invoicing for businesses and software teams.

Choose the path that matches your work today. Address, Connect, and the shared Platform remain available as deliberate expansion rails after the first Fatoorah workflow.

02

For software teams

Use the API in your software

Validate, generate, reconcile, and observe Saudi invoice workflows from ERP, POS, accounting, and SaaS products.

Developer first

From account to first request in one working session.

Use cURL, TypeScript, PHP, Python, or .NET. Every sandbox response says that it is synthetic and production access is false.

First sandbox request

Create a simplified invoice

curl "$TECHNOMINDS_API_URL/v1/zatca/invoices/generate/simplified" \
  -X POST \
  -H "Authorization: Bearer $TECHNOMINDS_API_KEY" \
  -H "Idempotency-Key: invoice-demo-001" \
  -H "Content-Type: application/json" \
  --data @- <<JSON
{
  "organization_id": "$TECHNOMINDS_ORGANIZATION_ID",
  "egs_unit_id": null,
  "taxpayer_profile_id": null,
  "tax_calculation_mode": "TECHNOMINDS_CALCULATES",
  "requested_invoice_type": "SIMPLIFIED_TAX_INVOICE",
  "seller": {
    "legal_name": "Synthetic Najd Retail",
    "vat_number": "310000000000003",
    "commercial_registration": null,
    "address": null,
    "branch": "Riyadh",
    "additional_identifiers": []
  },
  "buyer": {
    "legal_name": null,
    "vat_number": null,
    "commercial_registration": null,
    "address": null,
    "additional_identifiers": [],
    "buyer_type": "individual"
  },
  "supply": {
    "supply_date": "2026-08-10",
    "end_date": null,
    "purchase_order_reference": null,
    "contract_reference": null,
    "delivery_reference": null,
    "payment_terms": null,
    "payment_method": "card"
  },
  "line_items": [
    {
      "line_id": "line-1",
      "name_ar": "عنصر تجريبي",
      "name_en": "Synthetic sandbox item",
      "description": "Fictional developer fixture",
      "quantity": 1,
      "unit_code": "PCE",
      "unit_price": 10000,
      "discounts": [],
      "charges": [],
      "tax_category": "standard_rated",
      "tax_rate": 15,
      "tax_exemption_reason": null
    }
  ],
  "notes": {}
}
JSON

Synthetic response

201 created
{
  "invoice": {
    "id": "inv_01J...",
    "status": "GENERATED",
    "identity": {
      "invoice_type": "SIMPLIFIED_TAX_INVOICE"
    }
  },
  "classification": {
    "selected_type": "SIMPLIFIED_TAX_INVOICE"
  },
  "validation": {
    "internal_validation": { "valid": true, "issues": [] }
  },
  "tax_discrepancies": [],
  "xml": { "content": "<?xml ...", "mapping_report": [] }
}
Start building

One control plane

Product-specific behavior. Platform-wide control.

An ERP, SaaS platform, marketplace, or logistics product can add multiple Saudi rails without inventing a new organization and credential system for each one.

Explore the platform
01

Organization

A verified Saudi workspace owns subscriptions, resources, credentials, usage, and evidence.

02

Environment

Sandbox behavior and credentials remain structurally separate from production eligibility.

03

Request

Idempotency, correlation IDs, durable state, and tenant attribution travel with every operation.

04

Outcome

Success, failure, retry safety, unknown outcome, and reconciliation remain distinct states.

05

Operations

Request logs, metering, webhooks, audit history, and key lifecycle are visible in one console.

Operate the non-happy path

Infrastructure you can explain after something goes wrong.

Technical credibility is not a badge. It is the state and evidence available when a request times out, a worker retries, or a tenant context is wrong.

01

A timeout is not permission to retry

Preserve the operation and check authoritative state before creating a second external effect.

02

Every request gets an identity

Use a request ID and idempotency key to connect support, logs, usage, evidence, and outcome.

03

Tenant context stays explicit

Organization, resource, credential, entity, environment, and operation are not inferred from browser input.

04

Sandbox never impersonates production

Synthetic results are labeled in the response and console, with production traffic disabled.

Transparent paths

Evaluate the API before a sales conversation.

Inspect product capability, pricing, documentation, security boundaries, live service status, and the sandbox journey on your own. Contact sales only for enterprise scope.

Create your sandbox

Your first successful request should not need an employee.

Create a verified account, provision a Saudi organization, receive the first scoped key once, and continue in the Fatoorah quickstart.

Start building →