ساختار درخواستهای ارسالی
همه درخواست ها باید در قالب JSON به همراه Header احراز هویت ارسال
شود.
METHOD https://envoice.ir/api/v1/{api}
Authorization: "Bearer {api_key}"
Content-Type: "appplication/json"
تمامی مقادیر قرار گرفته در
{ }
متغیر بوده و باید با مقادیر واقعی در درخواست جایگزین شود.
-
api:
آدرس API مورد نظر که در ادامه سند توضیح داده میشود.
-
api_key:
کلید دسترسی 64 کاراکتری که باید از طریق پنل کاربری تهیه
شود
کدهای خطا
پردازش درخواست شما ممکن است با خطا همراه باشد. خطای رخ داده با کدهای
استاندارد HTTP در پاسخ در خواست شما به شرح زیر ارسال میشود:
-
400:
ساختار دادههای ارسالی به سرور نامعتبر است و امکان پردازش
درخواست شما وجود ندارد
-
401:
کد دسترسی شما نامعتبر است و احراز هویت شما ناموفق است
-
403:
دسترسی مجاز به API را ندارید یا اشتراک شما منقضی شده باشد.
-
404:
آدرس API درخواستی نامعتبر است
-
422:
دادههای ارسالی نامعتبر است (لیست خطاهای اعتبار سنجی در بدنه
پاسخ ارسال میشود)
-
429:
تعداد درخواستهای شما در دقیقه از حد مجاز رد شده و باید دقایقی
دیگر درخواست خود را تکرار کنید
-
500:
مشکلی در سرویس دهنده رخ داده و انجام درخواست شما ناموفق بود
-
503:
سرور در حال بروزرسانی است و موقتا از دسترس خارج است
دریافت اطلاعات حساب و اشتراک
به کمک این API میتوانید اطلاعات حساب و اشتراک خود را دریافت کنید
const api = new HttpClient();
api.setHeader("Authorization", "Bearer qEnovbIIQiQfUoG0qCRbjbd64HA1BvclahG7tdSjSvcaoaTAC3GXfLXB102ojDVq");
const res = api.Get("https://envoice.ir/api/v1/me");
# Result
{
"bootstraped": true,
"economic_code": "12345678900",
"expiration": "2024-03-19T20:29:59Z",
"fiscal_id": "A0002T",
"name": "نام شرکت شما",
"remainder": 367
}
-
bootstraped:
تعیین میکند که شناسه یکتا و کلید خصوصی در پنل کاربری ثبت
شده و امکان صدور صورتحساب الکترونیکی وجود دارد
-
fiscal_id:
شناسه یکتا حافظه مالیاتی شما
-
economic_code:
کد یا شناسه ملی شما
-
name:
عنوان شرکت یا کسب و کار شما
-
remainder:
تعداد صورتحساب باقیمانده از اشتراک شما
-
expiration:
تاریخ انقضا اشتراک
درج یا بروزرسانی مشتری
به کمک این API میتوانید اطلاعات مشتریان خود را به حساب کاربری خود
انتقال دهید یا اطلاعات مشتریان را بروز کنید. در هرمرحله مجاز به
ارسال
500
مشتری هستید
const api = new HttpClient();
api.setHeader("Authorization", "Bearer qEnovbIIQiQfUoG0qCRbjbd64HA1BvclahG7tdSjSvcaoaTAC3GXfLXB102ojDVq");
api.setHeader("Content-type", "application/json");
const body = {
"on_exists": "ignore",
"customers": [
{
"name": "شرکت صنایع فولاد اصفهان",
"type": 2,
"code": 1,
"economic_code": "10000364889",
"economic": "",
"passport_no": "",
"branch_no": "0000",
"postal_code": "",
"address": "",
"province": "",
"city": "",
}
]
}
const res = api.Post("https://envoice.ir/api/v1/customer", body);
# Result On Success
{
"created": 1,
"updated": 0,
}
# Error Response Example
{
"duplicate": ["3", "100044329123"],
"name": ["required"],
"economic_code": ["number", "legal"],
}
مقادیر اختیاری میتواند خالی باشد ولی نمیتواند به صورت null
ارسال شود
بدنه درخواست
-
on_exists:
تعیین میکند که اگر مشتری با این شناسهملی قبلا ثبت شده
باشد اطلاعات چگونه پردازش شود. مقادیر مجاز:
-
error:
خطای اعتبار سنجی تولید میکند
-
ignore:
از ثبت رکورد چشمپوشی میکند
-
override:
مشتری را با اطلاعات جدید به روز رسانی میکند
-
customers:
آرایه ای از مشتریان که شامل مقادیر زیر است:
-
name:
نام مشتری
رشتهای
اجباری
بین 2 تا 100 کاراکتر
-
type:
نوع مشتری
عددی
اجباری
1 برای حقیقی — 2 برای حقوقی — 3 برای مشارکت مدنی — 4
برای اتباع
-
code:
شناسه داخلی (حسابداری)
عددی
بزرگتر یا مساوی صفر
-
economic_code:
کد یا شناسه ملی
رشته عددی
بین 10 تا 12 رقم
-
economic:
کد اقتصادی (اشخاص)
رشته عددی
14 رقم
-
passport_no:
شماره پاسپورت
رشته عددی
حداکثر 15 رقم
-
branch_no:
کد شعبه
رشته عددی
4 رقم
-
postal_code:
کدپستی
رشته عددی
حداکثر 10 رقم
-
address:
آدرس
رشتهای
حداکثر 250 کاراکتر
-
province:
استان
رشتهای
حداکثر 100 کاراکتر
-
city:
شهر
رشتهای
حداکثر 100 کاراکتر
خطاهای اعتبار سنجی
در صورت بروز خطای اعتبارسنجی اطلاعات، نتیجه با کد 422 و به صورت
آرایه ای از خطاهای رخ داده در جواب درخواست شما بازگردانده
میشود.
-
not_found:
آرایه ای شامل استان و شهرهای نامعتبر است
-
exists:
آرایه ای شامل شناسه ملیهای تکراری است (فقط زمانی که مقدار
on_exists برابر error باشد)
-
duplicate:
آرایه ای شامل شناسه ملی، کداقتصادی، شناسه حسابداری و شماره
پاسپورتهای تکراری است
-
on_exists:
-
invalid
مقدار وارد شده نامعتبر است
-
customers:
-
require:
طول آرایه مشتریان صفر است
-
max:
طول آرایه مشتریان بیشتر از حد مجاز (500 مشتری) است
-
name:
-
required:
نمیتواند خالی باشد
-
min:
حداقل 2 کاراکتر
-
max:
حداکثر 100 کاراکتر
-
type:
-
required:
نمیتواند خالی باشد
-
invalid:
نوع وارد شده نامعتبر است
-
code:
-
economic_code:
-
number:
باید رشته عددی باشد
-
max:
حداکثر میتواند 12 رقم باشد
-
real:
کدملی نامعتبر است
-
legal:
شناسه ملی نامعتبر است
-
participation:
شناسه مشارکت مدنی نامعتبر است
-
foreigners:
شناسه اتباع خارجی نامعتبر است
-
passport_no:
-
number:
باید رشته عددی باشد
-
max:
حداکثر میتواند 15 رقم باشد
-
branch_no:
-
number:
باید رشته عددی باشد
-
len:
باید 4 رقم باشد
-
postal_code:
-
number:
باید رشته عددی باشد
-
max:
حداکثر 10 رقم
-
address:
-
province:
-
city:
نتیجه درخواست
-
created:
تعداد مشتریان جدید درج شده
-
updated:
تعداد مشتریان بروزرسانی شده
صدور صورتحساب فروش
به کمک این API میتوانید اقدام به صدور صورتحساب فروش در سامانه
نمایید. در هرمرحله مجاز به ارسال
500
صورتحساب هستید
این درخواست تنها صدور صورتحساب با شناسه یکتا 22 کاراکتری را
انجام میدهد و اطلاعات را به کاپوشه سامانه مودیان ارسال نمیکند
const api = new HttpClient();
api.setHeader("Authorization", "Bearer qEnovbIIQiQfUoG0qCRbjbd64HA1BvclahG7tdSjSvcaoaTAC3GXfLXB102ojDVq");
api.setHeader("Content-type", "application/json");
const body = {
"invoices": [
{
"date": "1402-10-01",
"serial": 0,
"is_private": false,
"is_consumer": false,
"customer": "10000364889",
"description": "Test invoice from api",
"tax17": 0,
"pay_mode": 1,
"items": [
{
"product": "1200009301234",
"amount": 3,
"fee": 100000,
"discount": 0,
"cash": 0,
"contract_id": "",
},
{
"product": "4",
"amount": 25,
"fee": 100000,
"discount": 0,
"cash": 200000,
"contract_id": "",
}
]
}
]
}
const res = api.Post("https://envoice.ir/api/v1/sale", body);
# Result On Success
[ "A0002T04D1300000000019" ]
# Error Response Example
{
"customers": ["3", "100044329123"],
"account": ["information"],
"date": ["invalid", "future"],
}
مقادیر اختیاری میتواند خالی باشد ولی نمیتواند به صورت null
ارسال شود
صورتحسابهای داخلی دارای شناسه یکتای 22 کاراکتری نمیباشد
بدنه درخواست
-
invoices:
آرایهای از صورتحسابها که شامل مقادیر زیر است:
-
date:
تاریخ صدور
رشته
اجباری
تاریخ شمسی
-
serial:
شماره سریال
عددی
اگر 0 باشد به صورت خودکار تخصیص داده میشود
-
is_private:
صورتحساب داخلی
Boolean
تعیین میکند صورتحساب داخلی است یا اصلی
-
is_consumer:
مصرفکننده نهایی
Boolean
تعیین میکند صورتحساب نوع 1 است یا نوع 2
-
customer:
مشتری
رشته عددی
اجباری برای نوع 1
شناسه داخلی (حسابداری) یا شناسه ملی مشتری
-
description:
توضیحات
رشته
حداکثر 200 کاراکتر
-
tax17:
موضوع مالیات ماده 17
عددی
نمی تواند از مجموع ارزش افزوده بیشتر باشد
-
pay_mode:
نحوه اظهار پرداخت در سامانه مودیان
عددی
مقدار 0 برای ارسال بر اساس مقادیر وارد شده، مقدار 1
برای نقدی و مقدار 2 برای نسیه
-
items:
آرایهای از اقلام کالا/خدمات که شامل مقادیر زیر
است:
-
product:
کالا/خدمت
رشته عددی
اجباری
شناسه داخلی یا شناسه 13 رقمی کالا
-
amount:
مقدار/تعداد
عددی
اجباری
تعداد/مقدار محصول
-
fee:
مبلغ واحد
عددی
اجباری
مبلغ واحد کالا/خدمت
-
discount:
مبلغ تخفیف
عددی
نمی تواند از مبلغ کل (تعداد × مبلغ واحد)
بیشتر باشد
-
cash:
مبلغ نقدی
عددی
نمی تواند از مبلغ قابل پرداخت (مبلغ کل -
مبلغ تخفیف) بیشتر باشد
-
contract_id:
شناسه یکتا قرارداد
رشته عددی
حداکثر 12 رقم
خطاهای اعتبار سنجی
-
customers:
آرایه ای شامل مشتریان یافت نشده
-
products:
آرایه ای شامل کالا/خدمات یافت نشده
-
duplicate:
آرایهای شامل شماره سریالهای تکراری است
-
account:
-
information:
اطلاعات حساب ناقص است و امکان صدور صورتحساب وجود ندارد
-
limit:
تعداد صورتحساب ارسالی از تعداد صورتحساب باقی مانده حساب
بیشتر است
-
invoices:
-
require:
طول آرایه صورتحسابها صفر است
-
max:
طول آرایه صورتحسابها بیشتر از حد مجاز (500 مشتری) است
-
date:
-
required:
نمیتواند خالی باشد
-
invalid:
تاریخ وارد شده نامعتبر است
-
future:
تاریخ صدور برای صورتحساب اصلی نمیتواند برای آینده باشد
-
customer:
-
required:
برای صورتحساب نوع 1 نمیتواند خالی باشد
-
description:
-
max:
حداکثر میتواند 200 کاراکتر باشد
-
tax17:
-
max:
نمیتواند از مجموع ارزش افزوده بیشتر باشد
-
pay_mode:
-
invalid:
مقدار نامعتبر است
-
product:
-
required:
نمیتواند خالی باشد
-
amount:
-
required:
نمیتواند خالی یا 0 باشد
-
fee:
-
required:
نمیتواند خالی یا 0 باشد
-
discount:
-
max:
نمیتواند از مبلغ کل بیشتر باشد
-
cash:
-
max:
نمیتواند از مبلغ قابلپرداخت بیشتر باشد
نتیجه درخواست
آرایهای از شناسه یکتا صورتحسابهای صادر شده در جواب درخواست ارسال
میشود.
برای صورتحسابهای داخلی به جای شناسه
یکتا شماره سریال ارسال می شود