The AlFasil API

Send a file, get checked JSON back, and receive a signed webhook when it's processed. Included on every paid plan.

  • Amounts are exact decimal strings and dates are YYYY-MM-DD
  • Every warning has a stable code and messages in English and Arabic
  • E-invoice XML is read exactly, without AI
  • Idempotency keys make retries safe
UploadPOST /v1/documents
curl https://alfasil.com/v1/documents \
  -H "Authorization: Bearer $ALFASIL_KEY" \
  -H "Content-Type: application/pdf" \
  --data-binary @invoice-4471.pdf
Result (shortened)GET /v1/documents/{id}
{
  "document": {
    "id": "doc_0mgf3k2q1zA8b2Kc9dX1",
    "status": "done",
    "data": {
      "supplier": { "name": "Al Noor Stationery Est." },
      "invoice_number": "INV-4471",
      "issue_date": "2026-09-14",
      "currency": "AED",
      "tax_total": "80",
      "total": "1680"
    },
    "warnings": []
  }
}

How it works

  1. 1

    Upload a file

    Send the PDF, image or e-invoice XML as the request body. You get a document id back at once.

  2. 2

    Get checked JSON

    Fetch the document when it's done: every field, line items, the VAT breakdown and warnings.

  3. 3

    Or wait for a webhook

    document.processed and document.failed, signed with HMAC-SHA256 so you can verify them.

Limits by plan

PlanRequests a minuteLargest filePages a month
Starter6020 MB500
Pro12025 MB1,500
Firm24025 MB5,000

Hand the typing to AlFasil.

Try it on one of your own invoices. No sign-up, no card.