TechnoMindsSaudi digital infrastructure

Developer center

Choose the rail. Make a real documented request.

Start with Fatoorah, Address, or a connected customer business. Every quickstart keeps credentials server-side and makes the sandbox, preview, and production boundary explicit.

Choose your first rail

Start with the customer task you actually need.

Each quickstart uses a real customer-facing route, an authenticated server-side request, and a synthetic fixture. No anonymous tool calls a privileged provider.

Fatoorah API

Generate a synthetic invoice

ERP, POS, accounting and finance-system developers

Receive a canonical invoice, validation result, XML and mapping evidence through the documented route.

POST /v1/zatca/invoices/generate/simplified
Show complete request
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 sandbox available; external production traffic remains gated.

Address Operations

Resolve a Saudi short address

Commerce, checkout, logistics and order-management teams

Return an explicit address result, missing fields and provenance instead of treating normalization as authoritative proof.

POST /v1/address/resolve-short
Show complete request
curl "$TECHNOMINDS_API_URL/v1/address/resolve-short" \
  -X POST \
  -H "Authorization: Bearer $TECHNOMINDS_API_KEY" \
  -H "Idempotency-Key: address-demo-001" \
  -H "Content-Type: application/json" \
  --data @- <<JSON
{
  "short_address": "RRRD2929",
  "language": "en"
}
JSON

Technical preview; authoritative external-source activation remains gated.

API Platform

Add a connected customer business

ERP, POS, SaaS and marketplace platforms serving many businesses

Create one downstream business boundary and attach separate Fatoorah and Address sandbox resources.

POST /v1/connected-businesses
Show complete request
curl "$TECHNOMINDS_API_URL/v1/connected-businesses" \
  -X POST \
  -H "Authorization: Bearer $TECHNOMINDS_API_KEY" \
  -H "Idempotency-Key: business-demo-001" \
  -H "Content-Type: application/json" \
  --data @- <<JSON
{
  "external_reference": "customer-demo-001",
  "display_name": "Synthetic Customer Business",
  "legal_name_ar": "منشأة عميل تجريبية",
  "legal_name_en": "Synthetic Customer Business",
  "products": [
    "fatoorah",
    "address"
  ]
}
JSON

Available to organizations created in Platform mode.

Fatoorah walkthrough

One session from signup to an inspectable invoice result.

  1. 01Verify your email and create the organization.
  2. 02Copy the first scoped key when it is revealed once.
  3. 03Send the documented simplified invoice payload with an idempotency key.
  4. 04Inspect the request ID, XML, QR, logs, usage, and lifecycle state.
  5. 05Register a signed webhook and test key revocation/replacement.

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

Environment boundary

The public sandbox is synthetic by design.

Examples show the TechnoMinds contract and local product behavior. They do not prove external ZATCA reporting or clearance, regulatory acceptance, production credentials, or an official-provider relationship.