ثبت حرکت دستی
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://api.seller360.ir/v1/kardex/movements"), Headers = { { "Idempotency-Key", "example" }, { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"supplier_code\": \"5144\", \"movement_type\": \"opening\", \"quantity\": 40, \"occurred_at\": \"2026-11-10\", \"unit_cost\": 185000000, \"reference\": \"INV-482\", \"note\": \"example\" }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}const url = 'https://api.seller360.ir/v1/kardex/movements';const options = { method: 'POST', headers: { 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"supplier_code":"5144","movement_type":"opening","quantity":40,"occurred_at":"2026-11-10","unit_cost":185000000,"reference":"INV-482","note":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.seller360.ir/v1/kardex/movements \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --data '{ "supplier_code": "5144", "movement_type": "opening", "quantity": 40, "occurred_at": "2026-11-10", "unit_cost": 185000000, "reference": "INV-482", "note": "example" }'فقط انواع دستی قابل ثبتاند: opening، purchase، customer_return، supplier_return و wastage.
فروشها، رسیدهای سفارش خرید و اصلاحیههای انبارگردانی خودکار ثبت میشوند. حرکت ثبتشده تغییر نمیکند؛
برای اصلاح، حرکت مخالف ثبت کنید.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”یک شناسهی یکتا برای هر تغییر (مثلا UUID). اگر پاسخ را دریافت نکردید، همان درخواست را با همان کلید تکرار کنید؛ تغییر دو بار انجام نمیشود. پاسخ اول تا ۲۴ ساعت نگه داشته میشود.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Example
5144Example
40Example
2026-11-10برای حرکتهای ورودی، ریال.
Example
185000000Example
INV-482Responses
Section titled “Responses”حرکت ثبت شد.
object
object
ورودی: opening موجودی اول دوره، purchase خرید یا رسید، customer_return مرجوعی مشتری، count_increase اصلاح
انبارگردانی؛ خروجی: sale فروش، supplier_return مرجوعی به تامینکننده، wastage ضایعات، count_decrease اصلاح انبارگردانی.
همیشه مثبت؛ جهت از نوع حرکت میآید.
قیمت واحد ورودی به ریال.
«دستی»، «ورودی انبار»، «فروش دیجیکالا»، «انبارگردانی»، «فروشگاههای من» یا «سفارش خرید». حرکت ثبتشده با API منبع manual دارد.
مرجع بیرونی (سفارش، محموله، انبارگردانی).
ماندهی کد کالا پس از این حرکت؛ فقط با فیلتر supplier_code.
Example
{ "status": "ok", "data": { "id": 77120, "supplier_code": "5144", "title": "محافظ ولتاژ پارت الکتریک مدل PE5144", "movement_type": "opening", "direction": "in", "quantity": 40, "signed_quantity": 40, "unit_cost": 185000000, "occurred_at": "2026-11-10", "source": "manual", "reference": "po:204", "balance_after": 118 }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
پارامتر یا بدنهی نامعتبر.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
کلید ارسال نشده یا نامعتبر است.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}کلید دسترسی لازم را ندارد، یا ماژول یا پنل فعال نیست.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}تغییر با وضعیت فعلی سازگار نیست (موجودی ناکافی، نسخهی تغییرکرده، قفل یا کلید یکتای تکراری).
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
درخواست درست است اما قاعدهی کسبوکار اجازه نمیدهد (مثلا قیمت بیرون از بازه).
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
سقف درخواست گذشته است.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”چند ثانیه صبر کنید و دوباره تلاش کنید.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).