Error reference
Every status you can get from any endpoint, its literal body, and what to do. 503 before everything, then the key ladder, then 422 in the Laravel shape with Arabic messages, and 500 with the exception text.
Last updated: 2026-09-21
On this page
In the order they occur
| Status | Source | Body | What to do |
|---|---|---|---|
| 403 plain text | blocked IP | تم حظر الوصول من هذا العنوان. |
ask the administrator to unblock |
| 503 | integrations disabled | {"error":"Integrations are currently disabled"} |
turn on the master switch in the Integration screen |
| 401 | no key / wrong / inactive | {"error":"Unauthorized"} |
check the header and the key; the message is deliberately generic |
| 403 | key expired | {"error":"API key expired"} |
create a new key |
| 429 | over the limit | {"error":"Too many requests","retry_after_seconds":N} |
wait N seconds and retry; or raise the key’s limit |
| 422 | validation | {"message":"Validation failed","errors":{"field":["Arabic message"]}} |
fix the named field |
| 404 | Dynamics draft | {"message":"Dynamics launch draft not found or expired."} |
unknown token or its hour passed — prepare again |
| 500 | server error | {"message":"Error saving cheque log","error":"…"} |
log the text and contact support |
The 422 envelope is English and the messages inside are Arabic — except the Dynamics template resolver messages, deliberately English because they name English fields for an integrator (below). The 503 for the two session Dynamics endpoints comes as {"message":"Integrations are currently disabled."} (under message) — rely on the status, not the text.
422 messages — direct create
| Field | Message (Arabic) | Condition |
|---|---|---|
bank_name |
اسم البنك مطلوب. (bank name required) |
missing or empty |
cheque_number |
رقم الشيك {N} مستعمَل بالفعل على بنك {B} — اختر رقمًا آخر (already used on bank) |
duplicate on a confirmed cheque of the same bank |
cheque_number |
… مستعمَل بالفعل على شيك بلا اسم بنك … |
same conflict, empty bank name |
cheque_number |
هذا الرقم يخص دفتر شيكات — اطبعه من وضع الدفتر (belongs to a cheque book) |
the number is a leaf in a book of the same bank |
cheque_number |
الرقم :number محجوز في دفعة مفتوحة (الدفعة #:batch) … (reserved in an open batch) |
reserved in an open batch of the same company |
amount |
القيمة كبيرة جدًا — لا يزيد الجزء الصحيح عن {N} خانة. (integer part too long) |
|
amount |
كسر المبلغ يتجاوز خانات {العملة} ({خانتان عشريتان}). (too many decimals) |
|
partner_id |
المستفيد لا يتبع شركة الشيك. (partner not in the cheque’s company) |
partner’s company ≠ key’s company |
bank_account_id |
الحساب البنكي المختار لا يتبع شركة الشيك. |
account chain does not reach the key’s company |
cheque_book_id |
دفتر الشيكات المختار لا يتبع شركة الشيك. |
book chain does not reach the key’s company |
cheque_leaf_id |
ورقة الشيك المختار لا يتبع شركة الشيك. |
leaf chain does not reach the key’s company |
company_id |
مفتاح الـAPI غير منسوب لشركة — عيّن شركته من شاشة «التكامل ← مفاتيح API». (key has no company) |
key without a company |
company_id |
الحمولة تطلب شركة «{payload}» بينما مفتاح الـAPI منسوب لشركة «{key}» — احذف الحقل أو استعمل مفتاح الشركة الصحيحة. (payload company ≠ key company) |
company_id contradicts the key |
external_id |
السجل ده مسجّل لشركة تانية. (row belongs to another company) |
the row matched by external key is stamped for another company |
| — | the final-row message (damaged · cancelled · reissued) | not updatable |
422 messages — Dynamics template resolver (English)
| Field | Message | Condition |
|---|---|---|
template_id |
The selected template could not be resolved. |
no active template matches |
bank_id |
The selected bank could not be resolved. |
no bank matches |
bank_name |
The selected bank could not be resolved. |
no bank matches and template_name absent |
template_name |
Multiple active featured templates matched the request. Provide template_id or a more specific template_name. |
several matches with more than one active featured |
template_name |
Template name is ambiguous. Provide template_id or bank_name. |
several matches, no featured tie |
bank_name + template_name |
The selected bank could not be resolved. + The selected template could not be resolved for the provided bank label. |
both unresolved, together |
template_name |
The selected template could not be resolved. |
no match, bank resolved |
template_name |
No active templates are available for the selected bank. |
bank resolved, no active templates |
template |
Provide template_id, or provide bank_id/bank_name so a single active featured template can be auto-selected, or send template_name with the bank. |
nothing valid sent |
Handling tips
- Check the status first, then
errorsfor the field name. - Treat a 422 “already used” on
cheque_numberas a prior success if your system retries. - On 429 honour
retry_after_seconds— the limit is per key, not per server. - On 401 do not retry automatically; alert.
Related
Did this page answer your question?
Thanks — your feedback helps us improve the guide.
Couldn't send — please try again shortly.