Продажи
GET /api/v1/supplier/salesБаза: https://statistics-api.wildberries.ru · Модуль: reports · Раздел: Основные отчёты · Документация спецификации ↗
Метод возвращает информацию о продажах и возвратах. Данные обновляются раз в 30 минут.
1 строка = 1 заказ = 1 сборочное задание = 1 единица товара. Для определения заказа рекомендуем использовать поле srid.
Информация о заказе хранится 90 дней с момента оформления.
Данные этого отчёта являются предварительными и служат для оперативного мониторинга
- В ответах могут отсутствовать заказы, по которым не подтверждена оплата, даже если эти заказы есть в детализациях к отчётам реализации. Например, заказы с отложенными платежами или оплатой в рассрочку
- Значения полей
priceWithDiscиforPayрассчитываются по упрощённой логике и могут отличаться отretail\_price\_withdisc\_rubиppvz\_for\_payсоответственно в детализациях к отчётам реализации - Поля
finishedPrice,priceWithDisc,forPayмогут временно иметь значение0: данные заполняются асинхронно, актуализируются в течение 24 часов - Для заказов, которые оплачены в валюте, отличной от валюты продавца, возможны округления цен из-за конвертации валют Для точных финансовых расчётов, сверки и отчётности используйте детализации к отчётам реализации.
Для одного ответа на запрос с flag=0 или без flag в системе установлено условное ограничение 80000 строк. Поэтому, чтобы получить все продажи и возвраты, может потребоваться более, чем один запрос. Во втором и далее запросе в параметре dateFrom используйте полное значение поля lastChangeDate из последней строки ответа на предыдущий запрос. Если в ответе отдаётся пустой массив [], все продажи и возвраты уже выгружены.
Лимит запросов на один профиль продавца:
| Тип | Период | Лимит | Интервал | Всплеск |
|---|---|---|---|---|
| Персональный | 1 мин | 1 запрос | 1 мин | 1 запрос |
| Сервисный | 1 мин | 1 запрос | 1 мин | 1 запрос |
| Базовый с секретом | 1 мин | 1 запрос | 1 мин | 1 запрос |
| Базовый | 2 ч | 1 запрос | 2 ч | 1 запрос |
Параметры
| Имя | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
dateFrom | query | string | да | Дата и время последнего изменения по продаже/возврату. Дата в формате RFC3339. Можно передать дату или дату со временем. Время можно указывать с точностью до секунд или миллисекунд. Время передаётся в часовом поясе Москва (UTC+3). Примеры: - 2019-06-20 - 2019-06-20T23:59:59 - 2019-06-20T00:00:00.12345 - 2017-03-25T00:00:00 |
Ответы
| Код | Описание | Схема |
|---|---|---|
200 | Успешно | GetV1SupplierSalesResponse200 |
400 | Неправильный запрос | object |
401 | Не авторизован | object |
402 | Требуется платёж | object |
403 | Доступ запрещён | object |
429 | Слишком много запросов | object |
Структура 200 — SalesItem[]:
datestring— Дата и время продажи. Это поле соответствует параметруdateFromв запросе, если параметрflag=1. Если часовой пояс не указан, то берётся Московское время (UTC+3).lastChangeDatestring— Дата и время обновления информации в сервисе. Это поле соответствует параметруdateFromв запросе, если параметрflag=0 или не указан. Если часовой пояс не указан, то берётся Московское время (UTC+3).warehouseNamestring— Склад отгрузкиwarehouseTypestring=Склад WB|Склад продавца— Тип склада хранения товаровcountryNamestring— СтранаoblastOkrugNamestring— ОкругregionNamestring— РегионsupplierArticlestring— Артикул продавцаnmIdinteger<int64>— Артикул WBbarcodestring— Баркодcategorystring— Категорияsubjectstring— Предметbrandstring— БрендtechSizestring— Размер товараincomeIDinteger<int64>— Номер поставкиisSupplyboolean— Договор поставкиisRealizationboolean— Договор реализацииtotalPricenumber— Цена без скидокdiscountPercentinteger<int64>— Скидка продавца, %sppnumber— Скидка WB, %paymentSaleAmountinteger<int64>— Скидка за оплату WB Кошельком, ₽forPaynumber— К перечислению продавцу. Синхронизация данных занимает до 24 часов, в течение этого времени в поле может отображаться значение0finishedPricenumber— Фактическая цена с учётом всех скидок (к взиманию с покупателя). Синхронизация данных занимает до 24 часов, в течение этого времени в поле может отображаться значение0priceWithDiscnumber— Цена со скидкой продавца, в том числе со скидкой WB Клуба, от которой рассчитывается сумма к перечислению продавцуforPay. Синхронизация данных занимает до 24 часов, в течение этого времени в поле может отображаться значение0saleIDstring— Уникальный ID продажи/возврата -S**********— продажа -R**********— возврат (на склад WB)stickerstring— ID стикераgNumberstring— ID корзины покупателя. Заказы одной транзакции будут иметь одинаковыйgNumbersridstring— Уникальный ID заказа. Примечание для использующих API Маркетплейс:sridравенridв ответах методов сборочных заданий.
Структура 400:
- один из вариантов:
responseErrorStatistics,responseErrorStatistics2
Структура 401:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Структура 402:
titlestring— Заголовок ошибкиdetailstring— Детали ошибки. Ошибка возвращается только сервисам из Каталога решений для бизнеса
Структура 403:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Структура 429:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Примеры вызова
Аргументы показаны именами параметров — подставьте свои значения. Языки, в клиенте которых этой операции нет, не показаны.
from wb_api_client.reports import Configuration, ApiClient
from wb_api_client.reports.api import ReportsApi
cfg = Configuration(access_token="<ваш JWT WB>")
api = ReportsApi(ApiClient(cfg))
result = api.get_v1_supplier_sales(date_from=..., flag=...)
print(result)import {
Configuration,
ReportsApi,
} from "@valeryverkhoturov/wb-api-client/reports";
const cfg = new Configuration({});
cfg.setAccessToken("<ваш JWT WB>");
const api = new ReportsApi(cfg);
const { data } = await api.getV1SupplierSales(dateFrom, flag);
console.log(data);import (
"context"
"fmt"
wbreports "github.com/ValeryVerkhoturov/wb-api-client-go/reports"
)
cfg := wbreports.NewConfiguration()
cfg.SetAccessToken("<ваш JWT WB>")
client := wbreports.NewAPIClient(cfg)
result, _, err := client.ReportsAPI.GetV1SupplierSales(context.Background()).DateFrom(dateFrom).Execute()
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", result)import io.github.valeryverkhoturov.wbapi.reports.ApiClient;
import io.github.valeryverkhoturov.wbapi.reports.SecretString;
import io.github.valeryverkhoturov.wbapi.reports.api.ReportsApi;
ApiClient client = new ApiClient();
client.setAccessToken(new SecretString("<ваш JWT WB>"));
ReportsApi api = new ReportsApi(client);
System.out.println(api.getV1SupplierSales(dateFrom, flag));use ValeryVerkhoturov\WbApiClient\Reports\Configuration;
use ValeryVerkhoturov\WbApiClient\Reports\SecretString;
use ValeryVerkhoturov\WbApiClient\Reports\Api\ReportsApi;
use GuzzleHttp\Client;
$config = (new Configuration())
->setAccessTokenSecret(new SecretString('<ваш JWT WB>'));
$api = new ReportsApi(new Client(), $config);
print_r($api->getV1SupplierSales($date_from));#Использовать "wb-api-client"
Настройки = Новый Конфигурация();
Настройки.УстановитьТокен("<ваш JWT WB>");
Клиент = Новый ReportsApi(Настройки);
Сообщить(Клиент.GetV1SupplierSales(dateFrom).Тело);using ValeryVerkhoturov.WbApiClient.Reports.Api;
using ValeryVerkhoturov.WbApiClient.Reports.Client;
var config = new Configuration();
config.AccessTokenSecret = new SecretString("<ваш JWT WB>");
var api = new ReportsApi(config);
Console.WriteLine(api.GetV1SupplierSales(dateFrom));use wb_api_client::reports::apis::{configuration::Configuration, reports_api};
#[tokio::main]
async fn main() {
let mut cfg = Configuration::new();
cfg.set_access_token("<ваш JWT WB>");
let result = reports_api::get_v1_supplier_sales(&cfg, date_from, flag).await;
println!("{:#?}", result);
}