Simple Fatoora API

V1

مرجع API للفواتير والعملاء والتقارير وربط ZATCA Phase 2.

Base URLhttps://api.simplefatoora.com/v1
Simple Fatoora Developers

Simple Fatoora API V1

استخدم Simple Fatoora API V1 لربط الفواتير والعملاء والتقارير وإجراءات ZATCA Phase 2 مع نظامك.

Base URLhttps://api.simplefatoora.com/v1
Content typeJSON عبر HTTPS
الحساب والوصول
POST/users/registration_intent

بدء تسجيل حساب

يبدأ مسار إنشاء الحساب المعتمد على التحقق من البريد الإلكتروني ويعيد رمز التسجيل.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
registration_data
objectمطلوب
registration_data.first_name
stringاختياري
registration_data.last_name
stringاختياري
registration_data.email_id
string · emailمطلوب داخل الكائن
registration_data.password
string · passwordمطلوب داخل الكائن
registration_data.confirm_password
string · passwordمطلوب داخل الكائن
registration_data.company_name
stringمطلوب داخل الكائن
registration_data.mobile_number
stringاختياري
registration_data.country_code
stringاختياري
registration_data.company_registration_number
stringاختياري
registration_data.company_vat_number
stringاختياري
registration_data.address
stringاختياري
registration_data.terms_and_conditions

القيم: 1

integerمطلوب داخل الكائن
registration_data.source
stringاختياري
registration_journey_id

معرّف فريد ينشئه النظام المتكامل لمحاولة التسجيل الحالية.

stringمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "registration_intent": "registration-intent-token",
    "expires_in": 86400
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الحساب والوصول
POST/users/email_send_otp

إرسال رمز التحقق للبريد

يرسل رمز تحقق لمرة واحدة إلى عنوان البريد الإلكتروني المحدد.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
email_id
string · emailمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "OTP sent successfully",
    "is_register": false
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الحساب والوصول
POST/users/email_verify_otp

التحقق من رمز البريد

يتحقق من الرمز المرسل إلى البريد الإلكتروني لاستخدامه في إنشاء الحساب أو تحديث كلمة المرور.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
email_id
string · emailمطلوب
otp
integerمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "OTP verify successfully",
    "is_register": false
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الحساب والوصول
POST/users/register_from_intent

إكمال إنشاء الحساب

ينشئ الحساب بعد التحقق من البريد الإلكتروني ويعيد مفتاحي API للإنتاج والتجربة.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
registration_intent
stringمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "Welcome to Simple Fatoora",
    "activation_method": "email_otp",
    "email_id": "developer@example.com",
    "first_name": "Developer",
    "last_name": "Account",
    "uuid": "session-uuid",
    "api_key": "live_api_key_example",
    "production_api_key": "live_api_key_example",
    "sandbox_api_key": "sandbox_api_key_example"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الحساب والوصول
POST/users/validate_user

استرجاع مفاتيح API ببيانات الحساب

يتحقق من بيانات الحساب ويعيد مفتاحي API للإنتاج والتجربة.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
user_name

البريد الإلكتروني للحساب.

stringمطلوب
user_pass
string · passwordمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "api_key": "live_api_key_example",
  "production_api_key": "live_api_key_example",
  "sandbox_api_key": "sandbox_api_key_example",
  "response": "Validated successfully"
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الحساب والوصول
POST/users/validate_user_api_key

التحقق من مفتاح API

يتحقق من أحد مفاتيح API للحساب ويعيد مفتاحي الإنتاج والتجربة.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
api_key
stringمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "api_key": "live_api_key_example",
  "production_api_key": "live_api_key_example",
  "sandbox_api_key": "sandbox_api_key_example",
  "active_environment": "live",
  "response": "Validated successfully"
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الحساب والوصول
POST/users/update_password

تحديث كلمة المرور

يعيّن كلمة مرور جديدة باستخدام رمز تحديث كلمة المرور الناتج بعد التحقق من البريد.

عملية عامةapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
uuid
stringمطلوب
password
string · passwordمطلوب
confirm_password
string · passwordمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "Password updated successfully",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
ملف المنشأة
GET/users/get_profile

استرجاع ملف المنشأة

يعيد بيانات المنشأة وإعدادات عرض الفواتير للحساب.

يتطلب مفتاح API

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "user_id": 123,
    "company_name": "Example Company",
    "email_id": "developer@example.com",
    "address": "Riyadh",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "tax_setup_status": "vat_registered",
    "tax_registration_status": "vat_registered",
    "is_vat_registered": true,
    "environment": "live",
    "is_sandbox": false,
    "production_api_key": "live_api_key_example",
    "sandbox_api_key": "sandbox_api_key_example",
    "send_mail": 1,
    "client_send_mail": 1
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
ملف المنشأة
POST/users/update_profile

تحديث ملف المنشأة

يحدّث بيانات المنشأة وإعدادات عرض الفواتير المدعومة.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
first_name
stringاختياري
last_name
stringاختياري
company_name
stringاختياري
address
stringاختياري
country_code
stringاختياري
mobile_number
stringاختياري
tax_setup_status

القيم: vat_registered, non_vat

stringاختياري
company_registration_number
stringاختياري
company_vat_number
stringاختياري
notes
stringاختياري
footer_text
stringاختياري
send_mail

القيم: 0, 1

integerاختياري
client_send_mail

القيم: 0, 1

integerاختياري
zero_vat_default

تصنيف افتراضي للحساب. null لمسحه. يقرأ ويضاف صراحة إلى البنود المنطبقة؛ إنشاء الفاتورة عبر API لا يطبقه أو يغيره تلقائيًا.

objectاختياري
zero_vat_default.category

Z خاضع لنسبة الصفر؛ E معفى؛ O خارج النطاق. يمكن اشتقاقه من رمز السبب. القيم: Z, E, O

stringاختياري
zero_vat_default.reason_code

اختر الرمز المنطبق على التوريد. القيم: VATEX-SA-32, VATEX-SA-33, VATEX-SA-34-1, VATEX-SA-34-2, VATEX-SA-34-3, VATEX-SA-34-4, VATEX-SA-34-5, VATEX-SA-35, VATEX-SA-36, VATEX-SA-EDU, VATEX-SA-HEA, VATEX-SA-MLTRY, VATEX-SA-29, VATEX-SA-29-7, VATEX-SA-30, VATEX-SA-OOS

stringمطلوب داخل الكائن
zero_vat_default.reason

يلزم تفسير محدد للمعاملات خارج النطاق. تستخدم الرموز الأخرى الوصف القياسي عند حذفه. الطول الأقصى: 500

stringاختياري
invoice_logo

تفضيل قديم محفوظ للتوافق ولا يغير شعار الشركة المرفوع. استخدم upload_profile_image لتغيير الشعار. القيم: 0, 1

integerاختياري
show_simplified_customer_info

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_item_id

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_issuer_address

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_issuer_mobile

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_issuer_email

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_customer_address

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_customer_mobile

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
show_pdf_customer_email

1 لإظهار المعلومة في PDF و0 لإخفائها، مع مراعاة البيانات الإلزامية. القيم: 0, 1

integerاختياري
district

جزء من عنوان المنشأة. تخضع التعديلات لقيود هوية المرحلة الثانية.

stringاختياري
building_number

جزء من عنوان المنشأة. تخضع التعديلات لقيود هوية المرحلة الثانية.

stringاختياري
city

جزء من عنوان المنشأة. تخضع التعديلات لقيود هوية المرحلة الثانية.

stringاختياري
postal_code

جزء من عنوان المنشأة. تخضع التعديلات لقيود هوية المرحلة الثانية.

stringاختياري
street_name

جزء من عنوان المنشأة. تخضع التعديلات لقيود هوية المرحلة الثانية.

stringاختياري
business_identification_type

نوع معرّف البائع. يستخدم CRN للسجل التجاري، أو النوع المنطبق على المعرّف الرسمي الآخر. يؤدي حذف الحقلين إلى الاحتفاظ بالمعرّف المحفوظ. القيم: CRN, MOM, MLS, 700, SAG, OTH

stringاختياري
business_identification_number

الرقم المطابق لنوع المعرّف. السجل التجاري 10 أرقام، والرقم الموحد 10 أرقام تبدأ بالرقم 7. تستخدم الأنواع الأخرى حروفًا إنجليزية وأرقامًا. الطول الأقصى: 150

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "Profile updated successfully",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
العملاء
GET/client/kyc_category_list

قائمة تصنيفات العملاء

يعيد تصنيفات العملاء المتاحة.

يتطلب مفتاح API

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "categories": [
      {
        "id": 1,
        "title": "Retail",
        "ar_title": "التجزئة",
        "position": 1,
        "status": 1
      }
    ]
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
العملاء
POST/client/create

إنشاء عميل

ينشئ سجل عميل لاستخدامه في الفواتير والمستندات.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
first_name
stringمطلوب
email_id
string · emailاختياري
mobile_number
stringمطلوب
country_code
stringمطلوب
address
stringاختياري
company_registration_number
stringاختياري
company_vat_number
stringاختياري
category_id

معرّف تصنيف رقمي واحد أو أكثر، مفصولة بفواصل.

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "User created successfully",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
العملاء
POST/client/update

تحديث عميل

يحدّث سجل عميل موجود. أرسل رقم العميل مع الحقول المطلوب تعديلها.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
id
integerمطلوب
first_name
stringاختياري
email_id
string · emailاختياري
mobile_number
stringاختياري
country_code
stringاختياري
address
stringاختياري
company_registration_number
stringاختياري
company_vat_number
stringاختياري
category_id
stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "User updated successfully",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
العملاء
GET/client/get_byid/{client_id}

استرجاع عميل

يعيد بيانات عميل واحد تابع للحساب.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
client_id
pathintegerمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "id": 123,
    "user_id": 123,
    "first_name": "Example Customer",
    "email_id": "customer@example.com",
    "mobile_number": "500000000",
    "country_code": "+966",
    "address": "Riyadh",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "status": 1
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
العملاء
POST/client/get_all

قائمة العملاء

يعيد عملاء الحساب مع خيارات التصفح والبحث.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
page
integerاختياري
per_page
integerاختياري
limit
integerاختياري
search_key
stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "users": [
      {
        "id": 123,
        "full_name": "Example Customer",
        "email_id": "customer@example.com",
        "mobile_number": "500000000",
        "country_code": "+966",
        "address": "Riyadh",
        "client_type": 2
      }
    ],
    "pagination_meta": {
      "current_page": 1,
      "pages": 1,
      "per_page": 20,
      "total": 1
    }
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
العملاء
DELETE/client/delete/{client_id}

حذف عميل

يحذف عميلاً تابعًا للحساب.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
client_id
pathintegerمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "User deleted successfully"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
المنتجات
GET/invoice/products/search

البحث في المنتجات

يبحث في المنتجات المستخدمة سابقًا بالاسم أو الوصف.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
search_key

النص المستخدم للبحث عن المنتج.

querystringاختياري
limit
queryintegerاختياري

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "products": [
      {
        "id": 123,
        "product_id": "P0001",
        "description": "Example item",
        "unit_price": 100,
        "vat_percent": 15,
        "last_used_on": "2026-08-30T20:41:45"
      }
    ]
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
المنتجات
POST/invoice/products/list

قائمة المنتجات

يعيد المنتجات المستخدمة سابقًا في الحساب.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
page
integerاختياري
per_page
integerاختياري
limit
integerاختياري
search_key
stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "products": [
      {
        "id": 123,
        "product_id": "P0001",
        "description": "Example item",
        "unit_price": 100,
        "vat_percent": 15,
        "last_used_on": "2026-08-30T20:41:45"
      }
    ]
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الفواتير والمستندات
POST/invoice/create

إنشاء فاتورة أو مستند

ينشئ فاتورة مبسطة أو قياسية أو فاتورة مشتريات أو إشعارًا دائنًا أو مدينًا. تتطلب الإشعارات الدائنة والمدينة إرسال invoice_number للمستند الأصلي في parent_invoice_number. تتم معالجة زاتكا حسب إعداد الحساب وبيئة مفتاح API. لتحويل عرض سعر قائم، أرسل كذلك معرّفه في draft_id، واضبط created_type على quotation واستخدم quotation:{id} في source_uid. تؤدي إعادة طلب التحويل نفسه إلى إرجاع المستند الأصلي بدلًا من إنشاء نسخة مكررة. استخدم zero_vat_version=1 لتصنيف المبيعات بنسبة صفر. يجب توحيد التصنيف والسبب داخل الفئة الضريبية الواحدة. يتطلب التصدير فاتورة قياسية وبلدًا أجنبيًا واسم المشتري وشارعه ومدينته. ينشأ مرجع داخلي عند الحاجة دون إنشاء هوية حكومية. المشتريات العادية مستندات داخلية. تخضع رسائل المستندات لأذونات الحساب الحالية، وتعطل رسائل العملاء في البيئة التجريبية.

يتطلب مفتاح APIapplication/json

المعاملات

الحقلالموقعالنوعالمتطلب
Idempotency-Key

اختياري عند created_type=api. يعاد استخدامه مع البيانات والحساب والبيئة نفسها فقط. يعاد المستند الأصلي عند الاكتمال؛ اختلاف البيانات أو استمرار المعالجة أو النتيجة غير المؤكدة يعيد 409.

headerstringاختياري

بيانات الطلب

الحقلالنوعالمتطلب
invoice_type

0 فاتورة مبسطة، 1 فاتورة قياسية، 2 فاتورة مشتريات، 3 إشعار دائن، 4 إشعار مدين. القيم: 0, 1, 2, 3, 4

integerمطلوب
client_type

القيم: 0, 1, 2

integerاختياري
taxes_included

القيم: 0, 1

integerاختياري
client_id
integerاختياري
client_name
stringاختياري
client_address
stringاختياري
client_email_id
string · emailاختياري
client_vat_number
stringاختياري
date_time

يقبل للتوافق ويتحقق من تنسيقه، لكن الخادم يحدد وقت الإصدار بتوقيت الرياض. استخدم transaction_date لتاريخ التوريد أو الشراء.

stringاختياري
reference_number
stringاختياري
parent_invoice_number

مطلوب للإشعارات الدائنة والمدينة. استخدم invoice_number للمستند الأصلي في بيئة مفتاح API نفسها.

stringاختياري
document_reason

سبب إصدار الإشعار الدائن أو المدين.

stringاختياري
created_type

معرّف اختياري لقناة المصدر.

stringاختياري
source_uid

معرّف اختياري لسجل المصدر في قنوات التكامل المدعومة.

stringاختياري
draft_id

معرّف اختياري لعرض السعر الذي سيصبح محوّلًا بعد إنشاء المستند. استخدمه مع created_type=quotation وsource_uid=quotation:{id}.

integerاختياري
invoice_detail
array<object>مطلوب
invoice_detail[].description
stringمطلوب داخل الكائن
invoice_detail[].unit_price
numberمطلوب داخل الكائن
invoice_detail[].quantity

كمية موجبة. تدعم الكسور حتى ست منازل عشرية. الدقة: 0.000001

numberمطلوب داخل الكائن
invoice_detail[].vat_percent_product
numberاختياري
invoice_detail[].vat_percent

نسبة ضريبة القيمة المضافة. تستخدم بدلًا من vat_percent_product عند إرسالها.

numberاختياري
invoice_detail[].discount_percent
numberاختياري
invoice_detail[].zero_vat

تصنيف بند مبيعات بضريبة صفرية. تختار المنشأة المعالجة المنطبقة وفق القسم 11.2.4 من معيار زاتكا لتنفيذ XML الإصدار 1.2.

objectاختياري
invoice_detail[].zero_vat.category

Z خاضع لنسبة الصفر؛ E معفى؛ O خارج النطاق. يمكن اشتقاقه من رمز السبب. القيم: Z, E, O

stringاختياري
invoice_detail[].zero_vat.reason_code

اختر الرمز المنطبق على التوريد. القيم: VATEX-SA-32, VATEX-SA-33, VATEX-SA-34-1, VATEX-SA-34-2, VATEX-SA-34-3, VATEX-SA-34-4, VATEX-SA-34-5, VATEX-SA-35, VATEX-SA-36, VATEX-SA-EDU, VATEX-SA-HEA, VATEX-SA-MLTRY, VATEX-SA-29, VATEX-SA-29-7, VATEX-SA-30, VATEX-SA-OOS

stringمطلوب داخل الكائن
invoice_detail[].zero_vat.reason

يلزم تفسير محدد للمعاملات خارج النطاق. تستخدم الرموز الأخرى الوصف القياسي عند حذفه. الطول الأقصى: 500

stringاختياري
invoice_detail[].product_id

معرّف اختياري للصنف يظهر عند تفعيل عرضه.

stringاختياري
invoice_detail[].discount_type

1 نسبة مئوية؛ 2 مبلغ ثابت لكل وحدة. يستخدم مع discount_value. القيم: 1, 2

integerاختياري
invoice_detail[].discount_value

نسبة الخصم أو مبلغه لكل وحدة بحسب نوعه.

numberاختياري
invoice_detail[].total_discount

خصم ثابت بديل للبند كاملًا. استخدم طريقة خصم واحدة لكل بند.

numberاختياري
zero_vat_version

القيمة 1 تلزم تصنيفًا صالحًا لكل بند مبيعات ضريبي بنسبة صفر. يحافظ حذفها على التحقق المتوافق مع العملاء السابقين. القيم: 1

integerاختياري
transaction_date_mode

current يستخدم تاريخ الخادم بتوقيت الرياض؛ previous يتطلب تاريخًا سابقًا لليوم. للمبيعات والمشتريات فقط. القيم: current, previous

stringاختياري
transaction_date

تاريخ التوريد للمبيعات أو تاريخ الشراء للمشتريات. تستخدمه التقارير، بينما تستخدم الإشعارات تاريخ إصدارها.

string · dateاختياري
buyer_country

رمز الدولة المكون من حرفين وفق ISO 3166-1. يلزم بلد أجنبي للتصدير.

stringاختياري
currency

عملة ISO 4217، والافتراضي SAR. تحفظ إجماليات المستند بالريال مع بيانات العملة الأصلية وسعر التحويل.

stringاختياري
shipping_charge

قيمة الشحن بعملة الطلب.

numberاختياري
shipping_taxable

هل يخضع الشحن لمعدل الضريبة المستخدم للمستند. القيم: 0, 1

integerاختياري
extra_discount

خصم على مستوى المستند. استخدم خصم البنود عند تعدد تصنيفات الصفر أو وجود بنود خارج النطاق.

numberاختياري
notes

ملاحظات هذا المستند. يستخدم الافتراضي عند الحذف أو الفراغ دون تحديثه.

stringاختياري
footer_text

شروط هذا المستند. يستخدم الافتراضي عند الحذف أو الفراغ.

stringاختياري
street_name

شارع الطرف المقابل؛ مطلوب للتصدير.

stringاختياري
city

مدينة الطرف المقابل؛ مطلوبة للتصدير.

stringاختياري
district

حي الطرف المقابل.

stringاختياري
building_number

رقم مبنى الطرف المقابل.

stringاختياري
postal_code

الرمز البريدي للطرف المقابل.

stringاختياري
client_cr_number

السجل التجاري للطرف المقابل.

stringاختياري
client_contact_number

هاتف الطرف المقابل دون مفتاح الدولة.

stringاختياري
client_country_code

مفتاح الاتصال، ويختلف عن رمز دولة المشتري.

stringاختياري

رموز تصنيف الضريبة الصفرية

أرسل الرمز المنطبق على كل بند مبيعات بنسبة صفر في zero_vat.reason_code. اضبط zero_vat_version على 1 للتحقق من تصنيف جميع بنود المبيعات بنسبة صفر.

مواصفات الفاتورة الإلكترونية لدى زاتكا
VATEX-SA-32نسبة الصفر (Z)
تصدير السلع
VATEX-SA-33نسبة الصفر (Z)
تصدير الخدمات
VATEX-SA-34-1نسبة الصفر (Z)
النقل الدولي للسلع
VATEX-SA-34-2نسبة الصفر (Z)
النقل الدولي للركاب
VATEX-SA-34-3نسبة الصفر (Z)
الخدمات المرتبطة مباشرة بالنقل الدولي للركاب
VATEX-SA-34-4نسبة الصفر (Z)
توريد وسائل النقل المؤهلة
VATEX-SA-34-5نسبة الصفر (Z)
الخدمات المتعلقة بنقل السلع أو الركاب وفق المادة 25
VATEX-SA-35نسبة الصفر (Z)
أدوية ومعدات طبية مؤهلة
VATEX-SA-36نسبة الصفر (Z)
معادن مؤهلة
VATEX-SA-EDUنسبة الصفر (Z)
التعليم الأهلي للمواطنين السعوديين
VATEX-SA-HEAنسبة الصفر (Z)
الرعاية الصحية الخاصة للمواطنين السعوديين
VATEX-SA-MLTRYنسبة الصفر (Z)
توريد السلع العسكرية المؤهلة
VATEX-SA-29معفى (E)
الخدمات المالية المعفاة وفق المادة 29
VATEX-SA-29-7معفى (E)
خدمات التأمين على الحياة وفق المادة 29
VATEX-SA-30معفى (E)
المعاملات العقارية المعفاة وفق المادة 30
VATEX-SA-OOSخارج النطاق (O)
خارج نطاق ضريبة القيمة المضافة

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "id": 123,
    "invoice_number": "ST123-456",
    "invoice_type_code": 0,
    "document_label": "Simplified Tax Invoice",
    "document_label_ar": "فاتورة ضريبية مبسطة",
    "seller_tax_status": "vat_registered",
    "is_tax_document": true,
    "vat": 22.5,
    "total": 172.5,
    "date_time": "2026-10-15 12:00:00",
    "transaction_date": null,
    "environment": "sandbox",
    "pdf_ready": false,
    "xml_available": false
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
409تعارض في مفتاح منع التكرار أو طلب ينتظر الاكتمال أو المراجعة.
application/json
{
  "status": false,
  "message": "This request is processing or requires review. Check its document before retrying.",
  "response": {
    "invoice_id": 123
  }
}
الفواتير والمستندات
POST/invoice/get_all

قائمة الفواتير والمستندات

يعيد مستندات بيئة مفتاح API مع خيارات التصفح والتصفية.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
page
integerاختياري
per_page
integerاختياري
limit
integerاختياري
search_key
stringاختياري
include_all_invoice_types

القيم: 0, 1

integerاختياري
invoice_types
array<integer>اختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "invoices": [
      {
        "id": 123,
        "invoice_number": "ST123-456",
        "invoice_type": 0,
        "date_time": "2026-08-30 23:41:18",
        "reference_number": "POS-1001",
        "total": 115,
        "invoice": "https://example.com/invoices/ST123-456.pdf",
        "pdf_ready": true,
        "pdf_download_url": "https://api.example.com/v1/invoice/pdf/123",
        "xml_available": true,
        "xml_archive_state": "reported",
        "xml_download_url": "https://api.example.com/v1/invoice/xml/123",
        "environment": "live",
        "is_test": false
      }
    ],
    "pagination_meta": {
      "current_page": 1,
      "pages": 1,
      "per_page": 20,
      "total": 1
    }
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الفواتير والمستندات
GET/invoice/get_byid/{document_id}

استرجاع فاتورة أو مستند

يعيد مستندًا واحدًا تابعًا للحساب.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
document_id
pathintegerمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "id": 123,
    "invoice_number": "ST123-456",
    "invoice_type": 0,
    "date_time": "2026-08-30 23:41:18",
    "reference_number": "POS-1001",
    "seller_name": "Example Company",
    "seller_vat_number": "300000000000003",
    "buyer_name": "Example Customer",
    "buyer_email_id": "customer@example.com",
    "sub_total": 100,
    "vat": 15,
    "total": 115,
    "invoice": "https://example.com/invoices/ST123-456.pdf",
    "qrcode": "https://example.com/invoices/ST123-456-qr.png",
    "pdf_ready": true,
    "pdf_download_url": "https://api.example.com/v1/invoice/pdf/123",
    "xml_available": true,
    "xml_archive_state": "reported",
    "xml_download_url": "https://api.example.com/v1/invoice/xml/123",
    "environment": "live",
    "invoice_details": [
      {
        "description": "Example item",
        "unit_price": 100,
        "quantity": 1,
        "vat_percent": 15,
        "vat": 15,
        "total": 115
      }
    ],
    "document_label": "Simplified Tax Invoice",
    "document_label_ar": "فاتورة ضريبية مبسطة",
    "seller_tax_status": "vat_registered",
    "is_tax_document": true,
    "transaction_date": "2026-09-15"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الفواتير والمستندات
GET/invoice/pdf/{document_id}

تنزيل PDF للفاتورة

ينزّل ملف PDF لمستند صادر تابع لحساب مفتاح API. استخدم download=1 للتنزيل كمرفق.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
document_id
pathintegerمطلوب
download
queryintegerاختياري

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200ملف PDF.
application/pdf
%PDF binary document
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الفواتير والمستندات
GET/invoice/xml/{document_id}

تنزيل XML النهائي من زاتكا

ينزّل XML النهائي فقط للمستند الضريبي المؤهل للمرحلة الثانية والتابع للحساب. تعيد المستندات القياسية XML المعتمد من زاتكا، بينما تعيد المستندات المبسطة والإشعارات المؤهلة XML الموقّع والمبلّغ بنجاح.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
document_id
pathintegerمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200ملف XML النهائي.
application/xml
<?xml version="1.0"?><Invoice>...</Invoice>
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الفواتير والمستندات
POST/invoice/archive/export

تصدير أرشيف الفواتير

ينزل جزء ZIP بحد 250 مستندًا و50 ميجابايت من ملفات المستندات، و10 ميجابايت لكل ملف. استخدم cursor للمتابعة حتى تفرغ ترويسة X-SF-Archive-Next. يتضمن ZIP بيان الملفات وarchive-info.json لحالة الاكتمال والمتابعة والملفات غير المتاحة. يبدأ طلب جديد محاولة جديدة لإتاحة الملفات. ترشح تواريخ الأرشيف حسب تاريخ الإصدار، لا تاريخ التوريد أو الشراء المستخدم في التقارير.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
format

القيم: pdf, xml

stringمطلوب
start_date

اختياري. أرسله مع end_date، أو احذف التاريخين لتضمين جميع التواريخ.

string · dateاختياري
end_date

اختياري. أرسله مع start_date، أو احذف التاريخين لتضمين جميع التواريخ.

string · dateاختياري
invoice_types

اختياري. احذفه لتضمين جميع أنواع الفواتير والإشعارات الصادرة.

array<integer>اختياري
cursor

رمز المتابعة من الترويسة أو archive-info.json. يحفظ مرشحات التصدير. يحذف لبدء تصدير جديد.

stringاختياري

الاستجابات

200أرشيف ZIP.
application/zip

X-SF-Archive-Next: رمز متابعة الجزء التالي؛ يكون فارغًا في الجزء الأخير.

X-SF-Archive-Part: رقم الجزء.

X-SF-Archive-Exported: عدد الملفات المضمنة في هذا الجزء.

X-SF-Archive-Skipped: عدد الملفات غير المتاحة التي تم تجاوزها في هذا الجزء.

Binary ZIP archive with documents and manifest.csv
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
الفواتير والمستندات
GET/invoice/get_byinvoice_number

البحث برقم الفاتورة

يبحث عن مستند مملوك للحساب ضمن بيئة المفتاح. يعاد المستند مباشرة دون غلاف response؛ status الرقمي يمثل حالة المستند. يعاد خطأ عدم الإتاحة بالقيمة المنطقية status=false.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
invoice_number
querystringمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200استجابة ناجحة.
application/json
{
  "id": 123,
  "invoice_number": "ST123-456",
  "status": 1,
  "invoice_type": 0,
  "environment": "live"
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
عروض الأسعار
POST/drafts/create

إنشاء عرض سعر

ينشئ عرض سعر. يتم إرسال بيانات العرض كسلسلة JSON داخل الحقل json_data.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
json_data

كائن QuotationPayload مرمز كنص JSON. تستخدم البنود vat_percent. يحدد تاريخ التوريد أو الشراء عند التحويل.

stringمطلوب
json_data.document_kind

القيم: quotation

stringمطلوب داخل الكائن
json_data.client_type

القيم: 0, 1, 2

integerاختياري
json_data.client_name
stringاختياري
json_data.client_address
stringاختياري
json_data.client_email_id
string · emailاختياري
json_data.client_vat_number
stringاختياري
json_data.buyer_country

رمز الدولة المكون من حرفين وفق ISO 3166-1. يلزم بلد أجنبي للتصدير.

stringاختياري
json_data.street_name

شارع الطرف المقابل؛ مطلوب للتصدير.

stringاختياري
json_data.city

مدينة الطرف المقابل؛ مطلوبة للتصدير.

stringاختياري
json_data.district

حي الطرف المقابل.

stringاختياري
json_data.building_number

رقم مبنى الطرف المقابل.

stringاختياري
json_data.postal_code

الرمز البريدي للطرف المقابل.

stringاختياري
json_data.notes

ملاحظات هذا المستند. يستخدم الافتراضي عند الحذف أو الفراغ دون تحديثه.

stringاختياري
json_data.footer_text

شروط هذا المستند. يستخدم الافتراضي عند الحذف أو الفراغ.

stringاختياري
json_data.invoice_detail
array<object>مطلوب داخل الكائن
json_data.invoice_detail[].description
stringمطلوب داخل الكائن
json_data.invoice_detail[].unit_price
numberمطلوب داخل الكائن
json_data.invoice_detail[].quantity

كمية موجبة. تدعم الكسور حتى ست منازل عشرية. الدقة: 0.000001

numberمطلوب داخل الكائن
json_data.invoice_detail[].vat_percent

نسبة ضريبة القيمة المضافة. تستخدم بدلًا من vat_percent_product عند إرسالها.

numberاختياري
json_data.invoice_detail[].discount_percent
numberاختياري
json_data.invoice_detail[].zero_vat

تصنيف بند مبيعات بضريبة صفرية. تختار المنشأة المعالجة المنطبقة وفق القسم 11.2.4 من معيار زاتكا لتنفيذ XML الإصدار 1.2.

objectاختياري
json_data.invoice_detail[].zero_vat.category

Z خاضع لنسبة الصفر؛ E معفى؛ O خارج النطاق. يمكن اشتقاقه من رمز السبب. القيم: Z, E, O

stringاختياري
json_data.invoice_detail[].zero_vat.reason_code

اختر الرمز المنطبق على التوريد. القيم: VATEX-SA-32, VATEX-SA-33, VATEX-SA-34-1, VATEX-SA-34-2, VATEX-SA-34-3, VATEX-SA-34-4, VATEX-SA-34-5, VATEX-SA-35, VATEX-SA-36, VATEX-SA-EDU, VATEX-SA-HEA, VATEX-SA-MLTRY, VATEX-SA-29, VATEX-SA-29-7, VATEX-SA-30, VATEX-SA-OOS

stringمطلوب داخل الكائن
json_data.invoice_detail[].zero_vat.reason

يلزم تفسير محدد للمعاملات خارج النطاق. تستخدم الرموز الأخرى الوصف القياسي عند حذفه. الطول الأقصى: 500

stringاختياري
json_data.invoice_detail[].product_id

معرّف اختياري للصنف يظهر عند تفعيل عرضه.

stringاختياري
json_data.company_name

اسم منشأة الطرف المقابل.

stringاختياري
json_data.buyer_name

اسم الفرد الطرف المقابل.

stringاختياري
environment

يحدد مفتاح API البيئة المستخدمة. القيم: live, sandbox

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "Draft created successfully",
    "id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
عروض الأسعار
POST/drafts/update

تحديث عرض سعر

يحدّث عرض سعر موجود وبيانات المستند المرسلة كسلسلة JSON.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
json_data

كائن QuotationPayload مرمز كنص JSON. تستخدم البنود vat_percent. يحدد تاريخ التوريد أو الشراء عند التحويل.

stringمطلوب
json_data.document_kind

القيم: quotation

stringمطلوب داخل الكائن
json_data.client_type

القيم: 0, 1, 2

integerاختياري
json_data.client_name
stringاختياري
json_data.client_address
stringاختياري
json_data.client_email_id
string · emailاختياري
json_data.client_vat_number
stringاختياري
json_data.buyer_country

رمز الدولة المكون من حرفين وفق ISO 3166-1. يلزم بلد أجنبي للتصدير.

stringاختياري
json_data.street_name

شارع الطرف المقابل؛ مطلوب للتصدير.

stringاختياري
json_data.city

مدينة الطرف المقابل؛ مطلوبة للتصدير.

stringاختياري
json_data.district

حي الطرف المقابل.

stringاختياري
json_data.building_number

رقم مبنى الطرف المقابل.

stringاختياري
json_data.postal_code

الرمز البريدي للطرف المقابل.

stringاختياري
json_data.notes

ملاحظات هذا المستند. يستخدم الافتراضي عند الحذف أو الفراغ دون تحديثه.

stringاختياري
json_data.footer_text

شروط هذا المستند. يستخدم الافتراضي عند الحذف أو الفراغ.

stringاختياري
json_data.invoice_detail
array<object>مطلوب داخل الكائن
json_data.invoice_detail[].description
stringمطلوب داخل الكائن
json_data.invoice_detail[].unit_price
numberمطلوب داخل الكائن
json_data.invoice_detail[].quantity

كمية موجبة. تدعم الكسور حتى ست منازل عشرية. الدقة: 0.000001

numberمطلوب داخل الكائن
json_data.invoice_detail[].vat_percent

نسبة ضريبة القيمة المضافة. تستخدم بدلًا من vat_percent_product عند إرسالها.

numberاختياري
json_data.invoice_detail[].discount_percent
numberاختياري
json_data.invoice_detail[].zero_vat

تصنيف بند مبيعات بضريبة صفرية. تختار المنشأة المعالجة المنطبقة وفق القسم 11.2.4 من معيار زاتكا لتنفيذ XML الإصدار 1.2.

objectاختياري
json_data.invoice_detail[].zero_vat.category

Z خاضع لنسبة الصفر؛ E معفى؛ O خارج النطاق. يمكن اشتقاقه من رمز السبب. القيم: Z, E, O

stringاختياري
json_data.invoice_detail[].zero_vat.reason_code

اختر الرمز المنطبق على التوريد. القيم: VATEX-SA-32, VATEX-SA-33, VATEX-SA-34-1, VATEX-SA-34-2, VATEX-SA-34-3, VATEX-SA-34-4, VATEX-SA-34-5, VATEX-SA-35, VATEX-SA-36, VATEX-SA-EDU, VATEX-SA-HEA, VATEX-SA-MLTRY, VATEX-SA-29, VATEX-SA-29-7, VATEX-SA-30, VATEX-SA-OOS

stringمطلوب داخل الكائن
json_data.invoice_detail[].zero_vat.reason

يلزم تفسير محدد للمعاملات خارج النطاق. تستخدم الرموز الأخرى الوصف القياسي عند حذفه. الطول الأقصى: 500

stringاختياري
json_data.invoice_detail[].product_id

معرّف اختياري للصنف يظهر عند تفعيل عرضه.

stringاختياري
json_data.company_name

اسم منشأة الطرف المقابل.

stringاختياري
json_data.buyer_name

اسم الفرد الطرف المقابل.

stringاختياري
environment

يحدد مفتاح API البيئة المستخدمة. القيم: live, sandbox

stringاختياري
id
integerمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "Draft updated successfully"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
عروض الأسعار
POST/drafts/get_all

قائمة عروض الأسعار

يعيد عروض الأسعار في بيئة مفتاح API المحددة.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
page
integerاختياري
per_page
integerاختياري
limit
integerاختياري
search_key
stringاختياري
document_kind
stringاختياري
environment

القيم: live, sandbox

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "drafts": [
      {
        "id": 123,
        "environment": "sandbox",
        "created_on": "2026-08-30 20:41:45",
        "json_data": "{\"document_kind\":\"quotation\",\"client_name\":\"Example Customer\",\"invoice_detail\":[{\"description\":\"Example item\",\"unit_price\":100,\"quantity\":1}]}"
      }
    ],
    "pagination_meta": {
      "current_page": 1,
      "pages": 1,
      "per_page": 20,
      "total": 1
    }
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
عروض الأسعار
GET/drafts/get_byid/{quotation_id}

استرجاع عرض سعر

يعيد عرض سعر تابعًا للحساب مع quotation_summary الذي يحتوي الأصناف والإجماليات المحسوبة نفسها في ملف PDF. يبقى عرض السعر منفصلًا عن الفاتورة المصدرة.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
quotation_id
pathintegerمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "id": 123,
    "environment": "sandbox",
    "status": 1,
    "created_on": "2026-08-30 20:41:45",
    "json_data": "{\"document_kind\":\"quotation\",\"client_name\":\"Example Customer\",\"invoice_detail\":[{\"description\":\"Example item\",\"unit_price\":100,\"quantity\":1}]}",
    "quotation_summary": {
      "quotation_reference": "Q-00123",
      "document_kind": "quotation",
      "invoice_issued": false,
      "currency": "SAR",
      "items": [
        {
          "description": "Example item",
          "quantity": 1,
          "unit_price": 100,
          "discount_percent": 0,
          "discount": 0,
          "vat_percent": 0,
          "vat": 0,
          "total": 100
        }
      ],
      "sub_total": 100,
      "discount": 0,
      "taxable_amount": 100,
      "vat": 0,
      "total": 100
    }
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
عروض الأسعار
GET/drafts/quotation_pdf/{quotation_id}

تنزيل عرض السعر PDF

يعيد ملف PDF لعرض السعر. استخدم القيمة 1 في download لتنزيله كمرفق.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
quotation_id
pathintegerمطلوب
download
queryintegerاختياري

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200ملف PDF لعرض السعر.
application/pdf
%PDF-1.7 (binary PDF content)
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
عروض الأسعار
DELETE/drafts/delete/{quotation_id}

حذف عرض سعر

يحذف عرض سعر واحدًا تابعًا للحساب.

يتطلب مفتاح API

المعاملات

الحقلالموقعالنوعالمتطلب
quotation_id
pathintegerمطلوب

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "message": "Draft deleted successfully"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
التقارير
POST/invoice/get_report

تقرير المبيعات

يعيد بيانات المبيعات أو المشتريات أو الضريبة مجمعة حسب الشهر للفترة والنوع المحددين. تستخدم المبيعات والمشتريات تاريخ المعاملة المحفوظ عند توفره، وتستخدم الإشعارات الدائنة والمدينة تاريخ إصدارها. يستخدم النوع revenue_dashboard تواريخ الإصدار. جميع المبالغ بالريال السعودي. يحدد مفتاح API الحساب والبيئة.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
start_date
string · dateمطلوب
end_date
string · dateمطلوب
type

القيم: revenue_dashboard, sale_report, purchase_report, vat_report

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "sale_report": [
      {
        "month_name": "September 2026",
        "company_name": "Example Company",
        "total": 460,
        "vat": 60,
        "net": 400,
        "sale_net": 400,
        "sale_vat": 60,
        "sale_total": 460,
        "credit_net": 0,
        "credit_vat": 0,
        "credit_total": 0
      }
    ]
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
التقارير
POST/invoice/get_vat_return_report

تقرير الإقرار الضريبي

تعيد بيانات التقرير ضمن نطاق الحساب والبيئة المحددين بالمفتاح. تستخدم المبيعات والمشتريات تاريخ المعاملة المحفوظ أو تاريخ الإصدار عند غيابه؛ تستخدم الإشعارات تاريخ إصدارها. المبالغ بالريال.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
start_date
string · dateمطلوب
end_date
string · dateمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "sale_sub_total": 1000,
    "sale_vat": 150,
    "sale_discount": 0,
    "purchase_sub_total": 200,
    "purchase_vat": 30,
    "purchase_discount": 0,
    "credit_total": 0,
    "debit_total": 0,
    "vat_out": 150,
    "vat_in": 30,
    "vat_payable": 120
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
التقارير
POST/invoice/export_documents_excel

تنزيل Excel للمبيعات أو المشتريات

ينزّل سجلات المبيعات أو المشتريات للحساب بصيغة Excel. يشمل التقرير تاريخي البداية والنهاية ويستخدم قواعد تاريخ المعاملة نفسها المطبقة في التقرير المقابل. حدد en أو ar في lang.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
start_date
string · dateمطلوب
end_date
string · dateمطلوب
type

القيم: sale_report, purchase_report

stringمطلوب
lang

القيم: en, ar

stringاختياري

الاستجابات

200استجابة ناجحة.
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Binary XLSX workbook
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
التقارير
POST/invoice/export_vat_excel

تنزيل Excel للضريبة

ينزّل إجماليات تقرير ضريبة القيمة المضافة بصيغة Excel. يشمل التقرير تاريخي البداية والنهاية. تجمع المبالغ الفئات الضريبية المنطبقة دون تفصيل حسب رمز الإعفاء. حدد en أو ar في lang.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
start_date
string · dateمطلوب
end_date
string · dateمطلوب
lang

القيم: en, ar

stringاختياري

الاستجابات

200استجابة ناجحة.
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Binary XLSX workbook
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
GET/zatca-phase2/status

حالة ربط المرحلة الثانية

اقرأ next_step وerror_category وerror_code قبل الاسترداد. تتطلب جلسة الامتثال المنتهية أو غير القابلة للاستكمال طلب توقيع جديدًا ورمز زاتكا جديدًا. تتاح إعادة المحاولة عند can_retry_compliance_checks فقط. تحمى حقول الهوية القانونية بعد الربط.

يتطلب مفتاح API

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "draft",
    "status_label": "Draft",
    "next_step": "review_info",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": false,
    "is_renewal_flow": false,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": false,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
POST/zatca-phase2/save-draft

حفظ مسودة المرحلة الثانية

يحفظ بيانات المنشأة والجهاز المستخدمة في ربط المرحلة الثانية.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
source_channel
stringاختياري
company_name
stringمطلوب
organization_name
stringمطلوب
organization_identifier
stringمطلوب
organization_unit_name
stringمطلوب
company_registration_number
stringاختياري
company_vat_number
stringمطلوب
industry_business_category
stringمطلوب
street_name
stringمطلوب
building_number
stringمطلوب
district
stringمطلوب
city
stringمطلوب
postal_code
stringمطلوب
country_name
stringمطلوب
business_identification_type

نوع معرّف البائع. يستخدم CRN للسجل التجاري، أو النوع المنطبق على المعرّف الرسمي الآخر. يؤدي حذف الحقلين إلى الاحتفاظ بالمعرّف المحفوظ. القيم: CRN, MOM, MLS, 700, SAG, OTH

stringاختياري
business_identification_number

الرقم المطابق لنوع المعرّف. السجل التجاري 10 أرقام، والرقم الموحد 10 أرقام تبدأ بالرقم 7. تستخدم الأنواع الأخرى حروفًا إنجليزية وأرقامًا. الطول الأقصى: 150

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "draft",
    "status_label": "Draft",
    "next_step": "review_info",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": false,
    "is_renewal_flow": false,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": false,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
POST/zatca-phase2/generate-csr

إنشاء طلب الشهادة CSR

اقرأ next_step وerror_category وerror_code قبل الاسترداد. تتطلب جلسة الامتثال المنتهية أو غير القابلة للاستكمال طلب توقيع جديدًا ورمز زاتكا جديدًا. تتاح إعادة المحاولة عند can_retry_compliance_checks فقط. تحمى حقول الهوية القانونية بعد الربط.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
source_channel
stringاختياري
company_name
stringمطلوب
organization_name
stringمطلوب
organization_identifier
stringمطلوب
organization_unit_name
stringمطلوب
company_registration_number
stringاختياري
company_vat_number
stringمطلوب
industry_business_category
stringمطلوب
street_name
stringمطلوب
building_number
stringمطلوب
district
stringمطلوب
city
stringمطلوب
postal_code
stringمطلوب
country_name
stringمطلوب
business_identification_type

نوع معرّف البائع. يستخدم CRN للسجل التجاري، أو النوع المنطبق على المعرّف الرسمي الآخر. يؤدي حذف الحقلين إلى الاحتفاظ بالمعرّف المحفوظ. القيم: CRN, MOM, MLS, 700, SAG, OTH

stringاختياري
business_identification_number

الرقم المطابق لنوع المعرّف. السجل التجاري 10 أرقام، والرقم الموحد 10 أرقام تبدأ بالرقم 7. تستخدم الأنواع الأخرى حروفًا إنجليزية وأرقامًا. الطول الأقصى: 150

stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "awaiting_otp",
    "status_label": "Awaiting OTP",
    "next_step": "enter_otp",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": false,
    "is_renewal_flow": false,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": false,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123,
    "csr_generated_on": "2026-08-30T20:42:00Z",
    "csr_expires_on": "2026-08-31T20:42:00Z"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
POST/zatca-phase2/submit-otp

إرسال رمز زاتكا

يرسل رمز التحقق الصادر من بوابة زاتكا لمتابعة الربط.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
source_channel
stringاختياري
otp
stringمطلوب

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "production_issued",
    "status_label": "Integrated",
    "next_step": "completed",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": true,
    "is_renewal_flow": false,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": true,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123,
    "activated_on": "2026-08-30T20:48:00Z",
    "production_issued_on": "2026-08-30T20:48:00Z"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
POST/zatca-phase2/retry-compliance

إعادة اختبارات الامتثال

اقرأ next_step وerror_category وerror_code قبل الاسترداد. تتطلب جلسة الامتثال المنتهية أو غير القابلة للاستكمال طلب توقيع جديدًا ورمز زاتكا جديدًا. تتاح إعادة المحاولة عند can_retry_compliance_checks فقط. تحمى حقول الهوية القانونية بعد الربط.

يتطلب مفتاح APIapplication/json

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "production_issued",
    "status_label": "Integrated",
    "next_step": "completed",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": true,
    "is_renewal_flow": false,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": true,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
POST/zatca-phase2/refresh-status

تحديث حالة المرحلة الثانية

يحدّث حالة المرحلة الثانية من سجلات الربط الحالية.

يتطلب مفتاح APIapplication/json

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "awaiting_otp",
    "status_label": "Awaiting OTP",
    "next_step": "enter_otp",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": false,
    "is_renewal_flow": false,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": false,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
زاتكا المرحلة الثانية
POST/zatca-phase2/renew

تجديد ربط المرحلة الثانية

يبدأ تجديدًا منظمًا لربط الحساب مع المرحلة الثانية.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
source_channel
stringاختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "awaiting_otp",
    "status_label": "Awaiting OTP",
    "next_step": "enter_otp",
    "environment": "sandbox",
    "is_sandbox": true,
    "is_integrated": false,
    "is_renewal_flow": true,
    "can_manage": true,
    "can_refresh": true,
    "can_renew": false,
    "can_retry_compliance_checks": false,
    "company_name": "Example Company",
    "company_registration_number": "1010000000",
    "company_vat_number": "300000000000003",
    "source": "api",
    "user_id": 123
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
مرسل بريد الفواتير
GET/users/invoice-email-sender

قراءة مرسل بريد الفواتير

يعيد إعدادات مرسل بريد الفواتير للحساب وسجلات التحقق من النطاق والمراجعة الحالية وحالات الإرسال الأخيرة. يمكن قراءتها بمفتاح الإنتاج أو المفتاح التجريبي، وتعديلها بمفتاح الإنتاج فقط.

يتطلب مفتاح API

بيانات الطلب

لا تحتوي هذه العملية على بيانات طلب.

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "status": "Not configured",
    "active": false,
    "verified": false,
    "revision": 0,
    "domain": "",
    "records": [],
    "test_status": "not_sent",
    "sandbox": false,
    "draft": null,
    "details": {
      "sender_name": "",
      "sender_email": "",
      "reply_to": [],
      "subject": "Invoice {invoice_number}",
      "body_html": "<p>Your invoice is ready.</p>"
    },
    "provider_ready": true,
    "error": "",
    "deliveries": []
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}
مرسل بريد الفواتير
POST/users/invoice-email-sender

إدارة مرسل بريد الفواتير

يعدّل إعدادات مرسل بريد الفواتير للحساب وفق الإجراء المحدد. المفتاح التجريبي للقراءة فقط. استخدم save_draft لحفظ تقدم الإعداد وpreview لمعاينة القالب دون إرسال رسالة. يتطلب الإجراء save اسم المرسل وبريده في details.sender_name وdetails.sender_email. أرسل reply_to كمصفوفة عناوين تطابق نطاق المرسل تمامًا. تستخدم القوالب details.subject وdetails.body_html. تحقق من إثبات ملكية النطاق وسجلات الإرسال قبل activate. اقرأ revision الحالية قبل تعديل المرسل وdraft_revision قبل تعديل المسودة. لا يفعّل التحقق الإرسال تلقائيًا. ترسل الاختبارات الاختيارية دون مرفقات إلى بريد المرسل المتحقق منه؛ اقرأ test_status قبل تكرار اختبار غير مؤكد النتيجة. يخضع إرسال المستندات أيضًا لأذونات البريد الحالية للحساب.

يتطلب مفتاح APIapplication/json

بيانات الطلب

الحقلالنوعالمتطلب
action

القيم: save_draft, preview, save_template, save_active, save, disable, verify, activate, test

stringمطلوب
revision

مراجعة المرسل الحالية؛ تلزم للتحقق والتفعيل والاختبار.

integerاختياري
draft_revision

مراجعة المسودة الحالية.

integerاختياري
mode

القيم: default, custom

stringاختياري
step
integerاختياري
details

حقول المرسل للإجراءات المحددة. تستخدم القوالب المتغيرات المبينة بين أقواس مفردة.

objectاختياري
details.sender_name
stringاختياري
details.sender_email
stringاختياري
details.subject
stringاختياري
details.body_html
stringاختياري
details.reply_to
array<string · email>اختياري

الاستجابات

200نتيجة الطلب أو خطأ في قواعد المعالجة. تحقق من الحقل المنطقي status؛ تعني status=false فشل الطلب حتى إذا كانت حالة HTTP هي 200.
application/json
{
  "status": true,
  "response": {
    "subject": "Invoice TEST-001",
    "html": "<!doctype html><html><body><p>Your invoice is ready.</p></body></html>"
  }
}
400بيانات الطلب غير صالحة.
application/json
{
  "status": false,
  "response": [
    "Invalid request data."
  ]
}
403مفتاح API مفقود أو غير صالح.
application/json
{
  "status": false,
  "response": "Invalid API key"
}