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
curl https://alfasil.com/v1/documents \
-H "Authorization: Bearer $ALFASIL_KEY" \
-H "Content-Type: application/pdf" \
--data-binary @invoice-4471.pdfResult (shortened)
{
"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
Upload a file
Send the PDF, image or e-invoice XML as the request body. You get a document id back at once.
- 2
Get checked JSON
Fetch the document when it's done: every field, line items, the VAT breakdown and warnings.
- 3
Or wait for a webhook
document.processed and document.failed, signed with HMAC-SHA256 so you can verify them.
Limits by plan
| Plan | Requests a minute | Largest file | Pages a month |
|---|---|---|---|
| Starter | 60 | 20 MB | 500 |
| Pro | 120 | 25 MB | 1,500 |
| Firm | 240 | 25 MB | 5,000 |