Fatoorah sandbox
AvailableSynthetic/local validation, XML, QR, request logs, usage, keys and webhooks.

Saudi e-invoicing for businesses and software teams
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.
Availability, stated plainly
Evaluation and production are different environments with different evidence. The public site, API, and console use the same boundary.
Fatoorah sandbox
AvailableSynthetic/local validation, XML, QR, request logs, usage, keys and webhooks.
API Platform
AvailableOrganizations, scoped credentials, tenant resources, metering and evidence controls.
Address Operations
Technical previewLocal workflow and API surfaces; authoritative external-source activation is separately gated.
Connect WhatsApp sandbox
Developer previewSynthetic WhatsApp conversations, contacts, consent, campaigns, templates, delivery state and signed webhooks.
Production eligibility
RequiredSandbox signup never enables external ZATCA or SPL production traffic.
Start here
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.
01
For businesses
Start with a hosted Saudi invoice workspace for finance and operations.
02
For software teams
Validate, generate, reconcile, and observe Saudi invoice workflows from ERP, POS, accounting, and SaaS products.
Developer first
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": {}
}
JSONSynthetic 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 buildingOne control plane
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 platformA verified Saudi workspace owns subscriptions, resources, credentials, usage, and evidence.
Sandbox behavior and credentials remain structurally separate from production eligibility.
Idempotency, correlation IDs, durable state, and tenant attribution travel with every operation.
Success, failure, retry safety, unknown outcome, and reconciliation remain distinct states.
Request logs, metering, webhooks, audit history, and key lifecycle are visible in one console.
Operate the non-happy path
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.
Preserve the operation and check authoritative state before creating a second external effect.
Use a request ID and idempotency key to connect support, logs, usage, evidence, and outcome.
Organization, resource, credential, entity, environment, and operation are not inferred from browser input.
Synthetic results are labeled in the response and console, with production traffic disabled.
Transparent paths
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
Create a verified account, provision a Saudi organization, receive the first scoped key once, and continue in the Fatoorah quickstart.