رفتن به محتوا

سود و زیان هر کالا

GET
/v1/reports/profit/products
curl --request GET \
--url 'https://api.seller360.ir/v1/reports/profit/products?page=1&size=50&date_from=2026-10-23&date_to=2026-11-11&by=variant&filter=all' \
--header 'Authorization: Bearer <token>'

یک ردیف برای هر گروه کالا (به‌طور پیش‌فرض هر تنوع). اگر هیچ واحدی از گروه قیمت خرید نداشته باشد profit خالی (null) است؛ اگر برخی داشته باشند سود همان‌ها و تعداد بیرون‌مانده (unpriced_units) می‌آید. هزینه‌هایی که به هیچ کالایی تعلق ندارند در meta.unassigned آمده‌اند تا جمع ردیف‌ها با کل یکی بماند.

page
integer
default: 1 >= 1
size
integer
default: 50 >= 1 <= 500
date_from
string format: date

Example

2026-10-23

اولین روز بازه (میلادی، YYYY-MM-DD). بدون date_from و date_to، بازه از ابتدای ماه شمسی جاری تا امروز است. هر بازه حداکثر ۴۰۰ روز است.

date_to
string format: date

Example

2026-11-11

آخرین روز بازه (میلادی)، خود این روز هم شمرده می‌شود.

by
string
default: variant
Allowed values: variant dkp supplier

سطح گروه‌بندی کالاها: variant هر تنوع (DKPC)، dkp هر کالا (همه‌ی تنوع‌های یک DKP با هم)، supplier هر کد فروشنده (چند تنوع با یک کد با هم جمع می‌شوند).

filter
string
default: all
Allowed values: all profitable loss no_cost

all همه (بیشترین فروش اول)، profitable سودده (بیشترین سود اول)، loss زیان‌ده (بیشترین زیان اول)، no_cost هر کالایی که دست‌کم یک واحد بدون قیمت خرید دارد.

یک صفحه از کالاها.

Media typeapplication/json
object
status
required
Allowed value: ok
data
required
pager
required

همان نام فیلدهای صفحه‌بندی دیجی‌کالا.

object
page
required
integer
item_per_page
required
integer
total_pages
required
integer
total_rows
required
integer
data
Array
object
key
required
string
variant_id

خالی وقتی گروه چند تنوع دارد.

integer | null
variants
required
integer
product_id
integer | null
supplier_code
string
title
required
string
image_url
string | null format: uri
sales
required
integer
units
required
integer
returns_net
integer
units_returned
integer
deductions
required
integer
deductions_by

کسورات به تفکیک سرفصل، بدون مالیات و با علامت (منفی یعنی کم شده)، و مالیات در tax؛ ریال.

object
commission
required
integer
platform
required
integer
fulfilment
required
integer
storage
required
integer
freight
required
integer
penalty
required
integer
other
required
integer
tax
required
integer
storage
integer
net_payout
required
integer
cost

بهای خرید واحدهای دارای قیمت؛ خالی اگر هیچ واحدی قیمت ندارد.

integer | null
cost_missing_units
integer
expenses
integer
profit
required

خالی یعنی نامعلوم (هیچ واحدی قیمت خرید ندارد).

integer | null
margin_pct
number | null
profit_partial
boolean
status
required

final قطعی (همه‌ی واحدهای فروخته‌شده تسویه شده‌اند)، estimated تخمینی (هنوز هیچ واحدی تسویه نشده است)، mixed ترکیبی (بخشی تسویه شده است)، empty بدون فروش. عدد تخمینی ممکن است تا تسویه تغییر کند.

string
Allowed values: final estimated mixed empty
state
required

profitable سودده، loss زیان‌ده، no_cost بدون قیمت خرید.

string
Allowed values: profitable loss no_cost
profit_covered_sales
required

فروش ناخالص واحدهایی که قیمت خرید دارند و سود آن‌ها حساب شده است، ریال.

integer
unpriced_sales
required

فروش ناخالص واحدهای بدون قیمت خرید که در سود حساب نشده است، ریال.

integer
unpriced_sales_pct

سهم فروش بدون قیمت خرید، درصد.

number | null
unpriced_units
required
integer
avg_sale_price
integer | null
avg_net
integer | null
avg_cost
integer | null
avg_profit
integer | null
avg_deductions

اندازه‌ی کسورات هر واحد.

integer | null
deductions_pct

کسورات نسبت به فروش، درصد.

number | null
return_pct

برگشتی نسبت به فروخته‌شده، درصد.

number | null
ded_commission
integer
ded_platform
integer
ded_fulfilment
integer
ded_storage
integer
ded_freight
integer
ded_penalty
integer
ded_return_refund
integer
ded_other
integer
ded_tax
integer
meta
object
range
required
object
from
required
string format: date
to
required
string format: date
days
required
integer
cutover

اولین روز تراکنش‌های این پنل؛ ارقام پیش از آن از صورت‌حساب‌های پایان‌یافته‌ی قدیم است و قطعی‌اند.

string | null format: date
filter
required
string
Allowed values: all profitable loss no_cost
by
required
string
Allowed values: variant dkp supplier
counts
required
object
all
required
integer
profitable
required
integer
loss
required
integer
no_cost
required

کالاهایی با دست‌کم یک واحد بدون قیمت خرید.

integer
totals
required
object
sales
required

فروش ناخالص بدون مالیات.

integer
units
required
integer
returns
required

برگشت از فروش (منفی).

integer
return_refund
required

کسوراتی که دیجی‌کالا بابت مرجوعی برگرداند (مثبت).

integer
returns_net
required
integer
units_returned
required
integer
deductions_by
required

کسورات به تفکیک سرفصل، بدون مالیات و با علامت (منفی یعنی کم شده)، و مالیات در tax؛ ریال.

object
commission
required
integer
platform
required
integer
fulfilment
required
integer
storage
required
integer
freight
required
integer
penalty
required
integer
other
required
integer
tax
required
integer
deductions
required

جمع کسورات با مالیات (منفی).

integer
tax
required

مالیات بر ارزش افزوده (درون deductions).

integer
net_payout
required

خالص دریافتی از دیجی‌کالا.

integer
cost_known
required

بهای خرید ثبت‌شده‌ی واحدهای دارای قیمت (مثبت).

integer
expenses
required

هزینه‌های شما (مثبت).

integer
expenses_general

هزینه‌های بدون کالا.

integer
expenses_products

هزینه‌های مربوط به کالا.

integer
period_costs

کسوراتی که به هیچ کالایی تعلق ندارند (مثل حمل محموله).

integer
profit_certain

سود واحدهای دارای قیمت خرید، پیش از کسورات بدون کالا و هزینه‌های عمومی.

integer
net_profit
required

سود خالص؛ اگر هیچ واحدی قیمت خرید نداشته باشد خالی است (نامعلوم، نه صفر).

integer | null
margin_pct

سود خالص نسبت به فروش پوشش‌داده‌شده، درصد.

number | null
unpriced_net

خالص دریافتی فروش‌های بدون قیمت خرید که در سود حساب نشده است.

integer
profit_partial

سود فقط بخشی از فروش را پوشش می‌دهد.

boolean
real_pct

سود نسبت به بهای خرید، درصد.

number | null
nominal_pct

سود نسبت به فروش، درصد.

number | null
units_costed
integer
units_missing_cost
integer
accuracy_pct

سهم واحدهای فروخته‌شده‌ی دارای قیمت خرید، درصد بدون اعشار.

number | null
products_missing_cost
integer
units_settled

واحدهای تسویه‌شده.

integer
status
required

final قطعی (همه‌ی واحدهای فروخته‌شده تسویه شده‌اند)، estimated تخمینی (هنوز هیچ واحدی تسویه نشده است)، mixed ترکیبی (بخشی تسویه شده است)، empty بدون فروش. عدد تخمینی ممکن است تا تسویه تغییر کند.

string
Allowed values: final estimated mixed empty
profit_covered_sales
required

فروش ناخالص واحدهایی که قیمت خرید دارند و سود آن‌ها حساب شده است، ریال.

integer
unpriced_sales
required

فروش ناخالص واحدهای بدون قیمت خرید که در سود حساب نشده است، ریال.

integer
unpriced_sales_pct

سهم فروش بدون قیمت خرید، درصد.

number | null
unpriced_units
required
integer
unassigned
required

مبالغی که روی هیچ ردیف کالایی نیستند.

object
period_costs
required
integer
expenses_general
required
integer
finance

تازگی داده‌های مالی این پنل.

object
synced_at
required

زمان آخرین همگام‌سازی تراکنش‌ها و واریزها با دیجی‌کالا.

string | null format: date-time
history_complete
required

آیا تاریخچه‌ی یک‌ساله‌ی تراکنش‌ها کامل خوانده شده است. دریافت اولیه ممکن است چند شب طول بکشد.

boolean
oldest_date

قدیمی‌ترین روزی که تراکنش‌های آن خوانده شده است.

string | null format: date
stale
required

آیا آخرین همگام‌سازی موفق بیش از ۳۶ ساعت پیش بوده است.

boolean

Example

{
"status": "ok",
"pager": {
"page": 1,
"item_per_page": 50,
"total_pages": 12,
"total_rows": 587
},
"data": [
{
"key": "v84780448",
"variant_id": 84780448,
"variants": 1,
"product_id": 22961150,
"supplier_code": "5144",
"title": "محافظ ولتاژ پارت الکتریک مدل PE5144",
"sales": 440400000,
"units": 12,
"returns_net": -32600000,
"units_returned": 1,
"deductions": -83400000,
"deductions_by": {
"commission": -458400000,
"platform": -21000000,
"fulfilment": -190000000,
"storage": -4200000,
"freight": -1382883,
"penalty": -3000000,
"other": 0,
"tax": -62300000
},
"storage": 0,
"net_payout": 324400000,
"cost": 265100000,
"cost_missing_units": 0,
"expenses": 0,
"profit": 59300000,
"margin_pct": 13.5,
"status": "final",
"state": "profitable",
"profit_covered_sales": 3610000000,
"unpriced_sales": 210000000,
"unpriced_sales_pct": 5.5,
"unpriced_units": 7,
"avg_sale_price": 36700000,
"avg_net": 29800000,
"avg_cost": 24100000,
"avg_profit": 5700000,
"avg_deductions": 6900000,
"deductions_pct": 18.8,
"return_pct": 3.1,
"ded_commission": 4160000,
"ded_fulfilment": 1950000,
"ded_tax": 611000
}
],
"meta": {
"range": {
"from": "2026-10-23",
"to": "2026-11-11",
"days": 20
},
"filter": "all",
"by": "variant",
"counts": {
"all": 87,
"profitable": 71,
"loss": 9,
"no_cost": 7
},
"totals": {
"sales": 3820000000,
"units": 104,
"returns": -96000000,
"return_refund": 11200000,
"returns_net": -84800000,
"units_returned": 3,
"deductions_by": {
"commission": -458400000,
"platform": -21000000,
"fulfilment": -190000000,
"storage": -4200000,
"freight": -1382883,
"penalty": -3000000,
"other": 0,
"tax": -62300000
},
"deductions": -740282883,
"tax": -62300000,
"net_payout": 2994917117,
"cost_known": 2410000000,
"expenses": 85000000,
"expenses_general": 60000000,
"expenses_products": 25000000,
"period_costs": -1382883,
"profit_certain": 342000000,
"net_profit": 331917117,
"margin_pct": 7.8,
"unpriced_net": 168000000,
"units_costed": 97,
"units_missing_cost": 7,
"accuracy_pct": 93,
"products_missing_cost": 2,
"units_settled": 61,
"status": "final",
"profit_covered_sales": 3610000000,
"unpriced_sales": 210000000,
"unpriced_sales_pct": 5.5,
"unpriced_units": 7
},
"unassigned": {
"period_costs": -1382883,
"expenses_general": 60000000
}
}
}
X-Request-Id
string

کد پیگیری این درخواست.

X-RateLimit-Limit
integer

سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.

X-RateLimit-Remaining
integer

درخواست‌های باقی‌مانده تا پایان دقیقه‌ی جاری.

X-RateLimit-Reset
integer

زمان شروع دقیقه‌ی بعد، به ثانیه از ۱۹۷۰ (Unix).

پارامتر یا بدنه‌ی نامعتبر.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}
X-Request-Id
string

کد پیگیری این درخواست.

X-RateLimit-Limit
integer

سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.

X-RateLimit-Remaining
integer

درخواست‌های باقی‌مانده تا پایان دقیقه‌ی جاری.

X-RateLimit-Reset
integer

زمان شروع دقیقه‌ی بعد، به ثانیه از ۱۹۷۰ (Unix).

کلید ارسال نشده یا نامعتبر است.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}

کلید دسترسی لازم را ندارد، یا ماژول یا پنل فعال نیست.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}

سقف درخواست گذشته است.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}
Retry-After
integer

چند ثانیه صبر کنید و دوباره تلاش کنید.

X-RateLimit-Limit
integer

سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.

X-RateLimit-Remaining
integer

درخواست‌های باقی‌مانده تا پایان دقیقه‌ی جاری.

X-RateLimit-Reset
integer

زمان شروع دقیقه‌ی بعد، به ثانیه از ۱۹۷۰ (Unix).