رفتن به محتوا

محموله‌ها

مخاطب: برنامه‌نویس نرم‌افزار انبارداری یا حسابداری که می‌خواهد محموله‌های ارسالی به دیجی‌کالا را پیگیری کند، کسری دریافت را پیدا کند، یا برای تعهدهای ارسال از نرم‌افزار خود محموله‌ی سفارش بسازد.

محموله بسته‌ای است که شما به انبار دیجی‌کالا می‌فرستید. دو نوع محموله وجود دارد:

  • محموله‌ی سفارش (order_fulfilment): برای سفارش‌هایی که خریدار ثبت کرده است و شما تعهد ارسال آن‌ها را دارید.
  • محموله‌ی انبارش (consignment): کالایی که پیش از فروش به انبار دیجی‌کالا می‌فرستید تا با نشان «ارسال دیجی‌کالا» فروخته شود.

انبار دیجی‌کالا پس از رسیدن محموله، واحدها را با سریال می‌شمارد. سلر ۳۶۰ برای هر محموله نشان می‌دهد چند واحد فرستاده‌اید، چند واحد دریافت شده است و کدام سریال پیدا نشده یا رد شده است.

با مسیرهای این صفحه می‌توانید:

کار مسیر در دسترس
فهرست محموله‌ها GET /v1/packages فعال
یک محموله GET /v1/packages/{package_id} فعال
اقلام محموله، ارسالی در برابر دریافتی GET /v1/packages/{package_id}/items فعال
سریال‌های محموله GET /v1/packages/{package_id}/serials فعال
محل و نوبت‌های ممکن برای ساخت محموله‌ی سفارش GET /v1/packages/build-options فعال
ساخت محموله‌ی سفارش (در صف) POST /v1/packages فعال
حذف محموله‌ی سفارش (در صف) DELETE /v1/packages/{package_id} فعال
بازه‌ها و هزینه‌ی جمع‌آوری توسط دیجی‌کالا GET /v1/packages/pickups/quote فعال
ثبت جمع‌آوری توسط دیجی‌کالا (در صف) POST /v1/packages/pickups فعال

و با رویدادهای وب‌هوک package.status_changed و package.received_incomplete از تغییر وضعیت و دریافت ناقص خبردار شوید. ساخت خودکار محموله‌ی انبارش در صفحه‌ی ساخت خودکار محموله و انبارش هوشمند آمده است.

دسترسی برای
shipping:read همه‌ی خواندن‌های این صفحه، build-options و pickups/quote («خواندن محموله و نوبت انبار»)
shipping:write ساخت و حذف محموله‌ی سفارش و ثبت جمع‌آوری («ساخت محموله و تنظیم ارسال»)
orders:read پیشنهاد می‌شود: برای خواندن تعهد ارسال پیش از ساخت محموله

فعال بودن ماژول و اجازه‌ی ساخت

Section titled “فعال بودن ماژول و اجازه‌ی ساخت”

ماژول «API و وب‌هوک» باید برای پنل فعال باشد (module_inactive (ماژول API) یا module_required (ماژول این بخش، با نام آن در detail)). ساخت محموله در دیجی‌کالا فقط برای پنلی ممکن است که این امکان برای آن فعال باشد؛ در غیر این صورت پاسخ 403 با خطای shipping_write_unavailable برمی‌گردد. برای پنلی که اشتراک آن به پایان رسیده است، همه‌ی تغییرها با subscription_inactive رد می‌شوند.

https://api.seller360.ir
فیلد برچسب در پنل معنی
package_id — شناسه‌ی محموله‌ی دیجی‌کالا.
package_number «شماره محموله» شماره‌ی محموله، همان‌گونه که در پنل دیجی‌کالا دیده می‌شود.
type، type_title «نوع» order_fulfilment («محموله سفارش») یا consignment («محموله انبار»).
status، status_title «وضعیت» کلید وضعیت دیجی‌کالا، بدون تغییر، و عنوان فارسی آن (جدول وضعیت‌ها).
delivery_type «روش ارسال» روش تحویل به زبان دیجی‌کالا.
shipping_nature «اندازه‌ی مرسوله» کوچک، متوسط یا سنگین.
warehouse_title «انبار» انبار مقصد.
created_at «تاریخ ساخت» زمان ساخت محموله.
received_at_forecast «نوبت تحویل» نوبتی که محموله برای آن رزرو شد.
delivered_at «تحویل به دیجی‌کالا» زمان رسیدن محموله به دیجی‌کالا (هشدار ۲).
received_at «تاریخ دریافت» زمان دریافت و شمارش در انبار.
is_open «ایجاد شده و در راه انبار» ساخته‌شده و هنوز دریافت‌نشده (حداکثر ۶۰ روز پس از ساخت).
handed_over «در انتظار جای‌گذاری» وقتی is_delivered هنوز false است محموله به دیجی‌کالا رسیده است، حتی اگر هنوز شمرده نشده باشد.
is_delivered «تحویل‌شده» انبار دیجی‌کالا محموله را شمرده است.
is_incomplete «محموله‌های دریافت ناقص» محموله ناقص دریافت شده است.
totals «ارسالی»، «دریافتی»، «کسری» جمع sent، received و missing اقلام.
items_stale، items_synced_at — اقلام پیش از دریافت خوانده شده‌اند و اعداد دریافتی هنوز تازه نیستند.
built_here — اگر محموله‌ی سفارش در سلر ۳۶۰ (پنل یا API) ساخته شده باشد، جزئیات ساخت؛ وگرنه خالی.
synced_at — زمان آخرین خواندن از دیجی‌کالا.

جزئیات ساخت در سلر ۳۶۰ (built_here)

Section titled “جزئیات ساخت در سلر ۳۶۰ (built_here)”
فیلد معنی
delivery_method روش تحویل (جدول روش‌ها).
day، time_scope روز و بازه‌ی تحویل یا جمع‌آوری.
place نام انبار یا نشانی جمع‌آوری انتخاب‌شده.
units واحدهای محموله.
cost هزینه‌ی اعلام‌شده‌ی دیجی‌کالا، به ریال.
pickup_number شماره‌ی مرسوله‌ی جمع‌آوری دیجی‌کالا.
needs_pickup روش digikala است و هنوز جمع‌آوری ثبت نشده است.
deleted_at زمان حذف محموله از سلر ۳۶۰.

اقلام: ارسالی در برابر دریافتی

Section titled “اقلام: ارسالی در برابر دریافتی”
فیلد برچسب در پنل معنی
variant_id، product_id «کد تنوع (DKPC)»، «کد کالا (DKP)» شناسه‌های تنوع و کالا.
supplier_code، sku «کد فروشنده»، «کد کالای فروشنده» کدها.
title «عنوان کالا» عنوان.
sent «ارسالی» واحدهای ارسالی (شمار سریال‌ها).
received «دریافتی» واحدهای تحویل‌شده، به گفته‌ی دیجی‌کالا.
missing «کسری» ارسالی منهای تحویل‌شده.
status_title «وضعیت» وضعیت قلم به زبان دیجی‌کالا.
missing = sent − received
کلید معنی
new ساخته شده و هنوز دریافت نشده است.
received انبار دیجی‌کالا محموله را دریافت و شمرده است.
partially_received با کسری دریافت شده است (مرجع دیجی‌کالا آن را received_incomplete می‌نامد).
deleted محموله حذف شده است.
cancelled یا canceled لغو شده است؛ دیجی‌کالا هر دو املا را به کار می‌برد.
rejected انبار دیجی‌کالا محموله را رد کرده است.

این‌ها مقادیری است که تا امروز دیده شده است؛ فهرست کامل مقادیر دیجی‌کالا مشخص نیست. برای تصمیم‌گیری از is_open، is_delivered و is_incomplete استفاده کنید و status_title را نمایش دهید.

وضعیت سریال (PackageSerial.status)

Section titled “وضعیت سریال (PackageSerial.status)”
کلید معنی
received تحویل شد.
not_exist ارسال شد اما در انبار پیدا نشد.
rejected رد شد؛ مثلا به دلیل بسته‌بندی.
deleted از محموله حذف شد و ارسال نشد.

روش تحویل محموله‌ی سفارش (delivery_method)

Section titled “روش تحویل محموله‌ی سفارش (delivery_method)”
روش معنی
seller خودتان محموله را به انبار دیجی‌کالا می‌برید؛ محل و نوبت لازم است.
digikala دیجی‌کالا از نشانی شما جمع‌آوری می‌کند؛ پس از ساخت، جمع‌آوری را ثبت کنید.
mobile_hub تحویل به انبار سیار، با هزینه.
post ارسال با پست.
  • فهرست محموله‌ها هر شب ساعت ۰۲:۵۰ و پس از هر وب‌هوک محموله‌ی دیجی‌کالا به‌روز می‌شود. زمان آخرین خواندن در synced_at است.
  • اقلام و سریال‌ها همراه محموله خوانده می‌شوند. اگر اقلام پیش از دریافت محموله خوانده شده باشند، items_stale: true است و اعداد دریافتی با همگام‌سازی بعدی تازه می‌شوند.
  • محل و نوبت ساخت و هزینه‌ی جمع‌آوری (build-options و pickups/quote) همان لحظه از دیجی‌کالا خوانده می‌شوند، نه از نسخه‌ی ذخیره‌شده.

GET /v1/packages — فهرست محموله‌ها فعال

Section titled “GET /v1/packages — فهرست محموله‌ها ”

محموله‌های سفارش و انبارش پنل، تازه‌ترین اول.

GET /v1/packages?open=1&type=consignment HTTP/1.1
Host: api.seller360.ir
Authorization: Bearer s360_live_...

پارامترها

پارامتر نوع اجباری توضیح
type order_fulfilment، consignment خیر نوع محموله.
status متن خیر کلید وضعیت دیجی‌کالا، مثلا new یا received.
open 0 یا 1 خیر فقط محموله‌های باز (1)، یعنی ساخته‌شده و هنوز دریافت‌نشده، یا فقط بسته‌شده‌ها (0).
incomplete 0 یا 1 خیر فقط محموله‌هایی که ناقص دریافت شده‌اند (1).
created_from، created_to زمان خیر بازه‌ی زمان ساخت.
page، size عدد خیر صفحه‌بندی.

پاسخ نمونه

{
"status": "ok",
"data": [
{
"package_id": 51870231,
"package_number": "P-1405-51870231",
"type": "consignment",
"type_title": "انبارش",
"status": "partially_received",
"status_title": "دریافت ناقص",
"delivery_type": "توسط فروشنده",
"shipping_nature": "کوچک",
"warehouse_title": "انبار کرج",
"created_at": "2026-11-02T13:20:44+03:30",
"received_at_forecast": "2026-11-04T10:00:00+03:30",
"delivered_at": "2026-11-04T10:37:00+03:30",
"received_at": "2026-11-06T15:12:09+03:30",
"is_open": false,
"is_delivered": true,
"handed_over": true,
"is_incomplete": true,
"totals": { "sent": 250, "received": 248, "missing": 2 },
"items_stale": false,
"items_synced_at": "2026-11-07T02:51:30+03:30",
"built_here": null,
"synced_at": "2026-11-13T02:50:42+03:30"
}
],
"pager": { "page": 1, "item_per_page": 50, "total_pages": 1, "total_rows": 7 }
}

GET /v1/packages/{package_id} — یک محموله فعال

Section titled “GET /v1/packages/{package_id} — یک محموله ”

همان ساختار، برای یک محموله. اگر محموله در این پنل نباشد، کد 404 و خطای not_found برمی‌گردد.

GET /v1/packages/{package_id}/items — اقلام محموله فعال

Section titled “GET /v1/packages/{package_id}/items — اقلام محموله ”
{
"status": "ok",
"data": [
{
"package_item_id": 90311275,
"variant_id": 84780448,
"product_id": 22961150,
"supplier_code": "5144",
"sku": "PE-5144",
"title": "محافظ ولتاژ پارت الکتریک مدل PE5144",
"image_url": "https://dkstatics-public.digikala.com/digikala-products/22961150.jpg",
"sent": 50,
"received": 48,
"missing": 2,
"status_title": "دریافت ناقص"
}
]
}

GET /v1/packages/{package_id}/serials — سریال‌های محموله فعال

Section titled “GET /v1/packages/{package_id}/serials — سریال‌های محموله ”

نظر دیجی‌کالا درباره‌ی هر واحد ارسالی. برای پیدا کردن واحدهای گم‌شده، status=not_exist بفرستید.

پارامتر نوع اجباری توضیح
status متن خیر فقط سریال‌هایی با این وضعیت.
page، size عدد خیر صفحه‌بندی.
{
"status": "ok",
"data": [
{ "serial": "DK-7Q2M9X4R", "status": "not_exist", "package_item_id": 90311275, "variant_id": 84780448, "product_id": 22961150, "supplier_code": "5144" }
],
"pager": { "page": 1, "item_per_page": 50, "total_pages": 1, "total_rows": 2 }
}

GET /v1/packages/build-options — محل و نوبت‌های ساخت فعال

Section titled “GET /v1/packages/build-options — محل و نوبت‌های ساخت ”

همان لحظه از دیجی‌کالا می‌پرسد که سبد داده‌شده در روز انتخابی به کجا و در چه نوبتی قابل تحویل است. چیزی ساخته یا رزرو نمی‌شود. نوبتی که برای این سبد کوچک باشد، با open: false برمی‌گردد.

GET /v1/packages/build-options?date=2026-11-14&items=84780448:3,84780512:2 HTTP/1.1
Host: api.seller360.ir
Authorization: Bearer s360_live_...
پارامتر نوع اجباری توضیح
date تاریخ بله روز ارسال، از امروز تا ۷ روز بعد (به وقت تهران).
items متن بله سبد به شکل variant_id:count جداشده با ویرگول.

پاسخ نمونه

{
"status": "ok",
"data": {
"date": "2026-11-14",
"available_methods": ["seller", "digikala", "mobile_hub", "post"],
"places": {
"seller": [
{
"id": 1,
"title": "انبار کرج",
"address": "کرج، جاده‌ی ملارد، انبار مرکزی دیجی‌کالا",
"shipping_nature_id": 1,
"price": null,
"has_slot": true,
"slots": [
{ "capacity_id": 9081733, "starts_at": "10:00", "ends_at": "11:00", "open": true },
{ "capacity_id": 9081734, "starts_at": "11:00", "ends_at": "12:00", "open": false }
]
}
],
"digikala": [
{ "id": 1180244, "title": "انبار فروشگاه", "address": "تهران، خیابان ولیعصر، کوچه‌ی نهم", "has_slot": false, "slots": [] }
],
"mobile_hub": [],
"post": []
}
}
}

این مسیر چون همان لحظه از دیجی‌کالا می‌خواند، ممکن است 502 (digikala_refused) یا 503 (digikala_unavailable، digikala_rate_limited) برگرداند.

POST /v1/packages — ساخت محموله‌ی سفارش فعال

Section titled “POST /v1/packages — ساخت محموله‌ی سفارش ”

برای اقلامی که تعهد ارسال دارند، محموله‌ی سفارش می‌سازد. اقلام کوچک در یک محموله و اقلام متوسط و سنگین در محموله‌ی دوم قرار می‌گیرند؛ حداکثر دو محموله در هر درخواست.

  1. تعهد هر تنوع را از GET /v1/commitments بخوانید.
  2. محل و نوبت را از GET /v1/packages/build-options بخوانید (برای روش digikala لازم نیست).
  3. محموله را با یک Idempotency-Key تازه بسازید؛ پاسخ فوری 202 با یک کار است.
  4. نتیجه را از رویداد job.completed یا GET /v1/jobs/{job_id} بخوانید؛ شناسه‌ی محموله در result.package_id است.
  5. برای روش digikala، جمع‌آوری را با POST /v1/packages/pickups ثبت کنید.
POST /v1/packages HTTP/1.1
Host: api.seller360.ir
Authorization: Bearer s360_live_...
Idempotency-Key: pkg-1405-08-23-karaj-1
Content-Type: application/json
{
"delivery_method": "seller",
"date": "2026-11-14",
"place_id": 1,
"capacity_id": 9081733,
"items": [ { "variant_id": 84780448, "count": 3 } ]
}
فیلد بدنه نوع اجباری توضیح
delivery_method seller، digikala، mobile_hub، post بله روش تحویل.
date تاریخ بله روز ارسال، از امروز تا ۷ روز بعد.
items فهرست variant_id و count بله تعداد هر تنوع حداکثر برابر تعهد ارسال فعلی آن.
place_id عدد برای همه جز digikala شناسه‌ی محل از build-options.
capacity_id عدد برای همه جز digikala شناسه‌ی نوبت از build-options.

پاسخ نمونه (کد 202)

{
"status": "ok",
"data": { "id": "job_8f2c1e", "kind": "package_build", "status": "queued", "created_at": "2026-11-13T10:15:03+03:30" }
}

خطاهای این مسیر

کد HTTP خطا معنی تکرار بی‌خطر است؟
400 invalid_parameter بدنه نامعتبر است؛ مثلا place_id برای روش seller نیامده است. خیر؛ بدنه را اصلاح کنید.
400 idempotency_key_required سرآیند Idempotency-Key نیامده است. خیر؛ کلید بفرستید.
403 shipping_write_unavailable ساخت محموله برای این پنل ممکن نیست. خیر.
403 subscription_inactive اشتراک پنل فعال نیست. خیر.
409 stock_write_locked تقسیم موجودی در حال اجراست. بله، پس از Retry-After و با همان کلید.
409 build_in_progress ساخت یا ثبت جمع‌آوری دیگری در جریان است. بله، پس از پایان کار قبلی.
409 idempotency_mismatch این کلید قبلا با بدنه‌ی دیگری استفاده شده است. خیر؛ کلید تازه بسازید.
409 idempotency_in_progress درخواستی با همین کلید در حال انجام است. بله، چند ثانیه بعد.
422 commitment_exceeded تعداد یک تنوع بیشتر از تعهد فعلی آن است. خیر؛ تعهد را دوباره بخوانید.
429 rate_limited سقف درخواست کلید پر است. بله، پس از Retry-After.

نتیجه‌ی کار (package_build)

وضعیت کار معنی چه کنید
completed محموله ساخته شد؛ result.package_id را ذخیره کنید. برای روش digikala جمع‌آوری را ثبت کنید.
failed دیجی‌کالا نپذیرفت و چیزی ساخته نشد. علت را بررسی کنید؛ تکرار با کلید تازه بی‌خطر است.
unknown پاسخ دیجی‌کالا نرسید؛ محموله ممکن است ساخته شده باشد. تکرار نکنید؛ منتظر job.completed بمانید یا GET /v1/packages را بخوانید.

DELETE /v1/packages/{package_id} — حذف محموله‌ی سفارش فعال

Section titled “DELETE /v1/packages/{package_id} — حذف محموله‌ی سفارش ”

فقط محموله‌ی سفارشی که در سلر ۳۶۰ (پنل یا API) ساخته شده است حذف می‌شود. اگر جمع‌آوری دیجی‌کالا برای آن ثبت شده باشد، ابتدا همان مرسوله حذف می‌شود. محموله‌ای که دیجی‌کالا پیش‌تر حذف‌شده نشان می‌دهد، حذف‌شده به حساب می‌آید. پاسخ فوری 202 با کاری از نوع package_delete است؛ اگر پاسخ دیجی‌کالا نرسد، وضعیت کار unknown است.

DELETE /v1/packages/51870231 HTTP/1.1
Host: api.seller360.ir
Authorization: Bearer s360_live_...
Idempotency-Key: del-51870231
کد HTTP خطا معنی تکرار بی‌خطر است؟
404 not_found محموله در این پنل نیست. خیر.
404 package_not_built_here محموله در سلر ۳۶۰ ساخته نشده است. خیر؛ از پنل دیجی‌کالا حذف کنید.
409 stock_write_locked تقسیم موجودی در حال اجراست. بله، پس از Retry-After و با همان کلید.
409 build_in_progress ساخت یا ثبت جمع‌آوری دیگری در جریان است. بله، پس از پایان کار قبلی.
409 idempotency_mismatch، idempotency_in_progress کلید یکتای درخواست مانند جدول ساخت.

GET /v1/packages/pickups/quote — بازه‌ها و هزینه‌ی جمع‌آوری فعال

Section titled “GET /v1/packages/pickups/quote — بازه‌ها و هزینه‌ی جمع‌آوری ”

برای محموله‌های سفارش با روش digikala، بازه‌های جمع‌آوری پیشنهادی دیجی‌کالا و هزینه‌ی هر محموله را همان لحظه می‌خواند. چیزی رزرو نمی‌شود. برای پنلی که جمع‌آوری دیجی‌کالا برای آن فعال نیست، پاسخ 403 با خطای pickup_unavailable برمی‌گردد.

GET /v1/packages/pickups/quote?package_ids=51870231&address_id=1180244 HTTP/1.1
Host: api.seller360.ir
Authorization: Bearer s360_live_...
{
"status": "ok",
"data": {
"time_scopes": ["8-10", "10-12", "12-14", "14-16"],
"costs": [ { "package_id": 51870231, "cost": 850000 } ],
"total": 850000
}
}

POST /v1/packages/pickups — ثبت جمع‌آوری فعال

Section titled “POST /v1/packages/pickups — ثبت جمع‌آوری ”

برای محموله‌های سفارش با روش digikala که در سلر ۳۶۰ ساخته شده‌اند، مرسوله‌ی جمع‌آوری ثبت می‌کند. پاسخ فوری 202 با کاری از نوع pickup_book است؛ شماره‌ی مرسوله، بازه و زمان پیش‌بینی‌شده در نتیجه‌ی کار اعلام می‌شود و در built_here.pickup_number محموله هم می‌نشیند.

{ "package_ids": [51870231], "address_id": 1180244, "date": "2026-11-14", "time_scope": "10-12" }
فیلد بدنه نوع اجباری توضیح
package_ids فهرست عدد بله محموله‌های سفارش با روش digikala که در سلر ۳۶۰ ساخته شده‌اند.
address_id عدد بله نشانی جمع‌آوری شما.
date تاریخ بله روز جمع‌آوری.
time_scope متن بله یکی از time_scopes پاسخ quote.

خطاها مانند ساخت محموله است، به‌علاوه‌ی 403 و pickup_unavailable برای پنل بدون جمع‌آوری دیجی‌کالا و 404 برای محموله‌ای که در این پنل نیست.

رویداد چه وقت
package.status_changed وضعیت یک محموله تغییر کرد؛ previous_status کلید وضعیت پیشین است.
package.received_incomplete انبار دیجی‌کالا محموله را با کسری دریافت کرد (وضعیت partially_received)؛ اقلام کسری و سریال‌های پیدانشده یا ردشده همراه آن است.
job.completed ساخت، حذف یا ثبت جمع‌آوری تمام شد (کارهای در صف).

نمونه‌ی پیام package.received_incomplete

{
"id": "evt_01HZYC9Q",
"type": "package.received_incomplete",
"created_at": "2026-11-06T15:14:02+03:30",
"panel_id": 1,
"livemode": true,
"data": {
"package": {
"package_id": 51870231,
"package_number": "P-1405-51870231",
"type": "consignment",
"status": "partially_received",
"status_title": "دریافت ناقص",
"is_open": false,
"is_delivered": true,
"is_incomplete": true,
"totals": { "sent": 250, "received": 248, "missing": 2 },
"synced_at": "2026-11-06T15:13:55+03:30"
},
"short_items": [
{ "package_item_id": 90311275, "variant_id": 84780448, "supplier_code": "5144", "sent": 50, "received": 48, "missing": 2 }
],
"missing_serials": [
{ "serial": "DK-7Q2M9X4R", "status": "not_exist", "package_item_id": 90311275, "variant_id": 84780448 },
{ "serial": "DK-7Q2M9X4S", "status": "rejected", "package_item_id": 90311275, "variant_id": 84780448 }
]
}
}

پیش از استفاده از هر پیام، امضای آن را بررسی کنید.

💻 نمونه‌کد: ساخت محموله‌ی سفارش

Section titled “💻 نمونه‌کد: ساخت محموله‌ی سفارش”
Terminal window
curl -X POST https://api.seller360.ir/v1/packages \
-H "Authorization: Bearer $S360_API_KEY" \
-H "Idempotency-Key: pkg-1405-08-23-karaj-1" \
-H "Content-Type: application/json" \
-d '{"delivery_method": "seller", "date": "2026-11-14", "place_id": 1,
"capacity_id": 9081733, "items": [{"variant_id": 84780448, "count": 3}]}'