Skip to content

Orders FBW Module

The Orders FBW (Fulfillment by Wildberries) module manages supply creation and warehouse operations for sellers who ship products to Wildberries warehouses for fulfillment. It covers acceptance options, warehouse listing, transit tariffs, supply lifecycle management, and DBW buyer information retrieval.


Overview

PropertyValue
Module NameOrdersFbwModule
SDK Namespacesdk.ordersFBW.*
Base URLhttps://supplies-api.wildberries.ru (most methods)
Alt Base URLhttps://marketplace-api.wildberries.ru (getClientInfo only)
Source Swaggerwildberries_api_doc/07-orders-fbw.yaml
Methods8
AuthenticationAPI Key (Header)

Quick Start

typescript
import { WildberriesSDK } from 'daytona-wildberries-typescript-sdk';

const sdk = new WildberriesSDK({ apiKey: process.env.WB_API_KEY! });

// List available warehouses
const warehouses = await sdk.ordersFBW.warehouses();

// Check acceptance options for a barcode
const options = await sdk.ordersFBW.createAcceptanceOption(
  [{ barcode: '1234567891234', quantity: 10 }]
);

// Get transit tariffs
const tariffs = await sdk.ordersFBW.transitTariffs();

// List supplies with filters
const supplies = await sdk.ordersFBW.listSupplies({});

// Get buyer information for DBW orders
const clientInfo = await sdk.ordersFBW.getClientInfo([987654321]);

Methods Reference

Acceptance and Warehouse Info (3 methods)

MethodHTTPEndpointDescription
createAcceptanceOption(data)POST/api/v1/acceptance/optionsGet available warehouses and packaging types for a supply
warehouses()GET/api/v1/warehousesList all WB warehouses
transitTariffs()GET/api/v1/transit-tariffsGet available transit directions

Supply Management (4 methods)

MethodHTTPEndpointDescription
listSupplies(data)POST/api/v1/suppliesList supplies (last 1000 by default)
getSupply(ID)GET/api/v1/supplies/{ID}Get supply details by ID
getSuppliesGood(ID)GET/api/v1/supplies/{ID}/goodsGet goods in a supply
getSuppliesPackage(ID)GET/api/v1/supplies/{ID}/packageGet supply packaging info

DBW Orders (1 method)

MethodHTTPEndpointDomainDescription
getClientInfo(orderIds)POST/api/marketplace/v3/dbw/orders/clientmarketplace-api.wildberries.ruGet buyer information for DBW orders

Note: getClientInfo() uses the marketplace-api.wildberries.ru domain, not supplies-api.wildberries.ru like the other FBW methods.

Previously Deprecated Methods (Removed)

These methods were deprecated and have been removed from the module source.

MethodReplacementNotes
getAcceptanceCoefficients(options?)sdk.tariffs.getAcceptanceCoefficients()Moved to Tariffs module.
createSupply(data)listSupplies(data)Renamed for clarity.

What's New (v3.4.0+)

getClientInfo() method

Retrieves buyer information (name, phone, country codes) for DBW (Delivery by Wildberries) assembly orders. Added in v3.4.0.

typescript
const result = await sdk.ordersFBW.getClientInfo([987654321, 123456789]);
for (const order of result.orders ?? []) {
  console.log(`Order ${order.orderID}: ${order.firstName}`);
  console.log(`  Full name: ${order.fullName}`);
  console.log(`  Phone: +${order.phoneCode}${order.phone}`);
  if (order.additionalPhoneCodes?.length) {
    console.log(`  Alt codes: ${order.additionalPhoneCodes.join(', ')}`);
  }
}

Key details:

  • Throws ValidationError if orderIds array is empty
  • Uses marketplace-api.wildberries.ru domain (not supplies-api)
  • Returns null for orders when no matching orders are found

isBoxOnPallet and boxTypeID fields

ModelsSupply and ModelsSupplyDetails now include:

FieldTypeDescription
boxTypeIDnumberSupply type ID: 0 = no boxes, 1/2 = boxes, 5 = monopallets, 6 = supersafe, 7 = piece pallet
isBoxOnPalletbooleanWhether the supply is a "piece pallet" type

canBoxOnPallet in warehouse options

When calling createAcceptanceOption(), each warehouse in the result now includes a canBoxOnPallet field indicating whether the "piece pallet" packaging type is available:

typescript
const options = await sdk.ordersFBW.createAcceptanceOption(
  [{ barcode: '1234567891234', quantity: 10 }]
);
for (const item of options.result ?? []) {
  for (const wh of item.warehouses ?? []) {
    console.log(`Warehouse ${wh.warehouseID}:`);
    console.log(`  Box: ${wh.canBox}, Monopallet: ${wh.canMonopallet}`);
    console.log(`  Supersafe: ${wh.canSupersafe}, BoxOnPallet: ${wh.canBoxOnPallet}`);
  }
}

Usage Examples

Full Supply Workflow

typescript
import { WildberriesSDK } from 'daytona-wildberries-typescript-sdk';

const sdk = new WildberriesSDK({ apiKey: process.env.WB_API_KEY! });

async function fbwSupplyWorkflow() {
  // 1. Check which warehouses accept your barcode
  const options = await sdk.ordersFBW.createAcceptanceOption(
    [{ barcode: '1234567891234', quantity: 100 }]
  );

  for (const item of options.result ?? []) {
    if (item.isError) {
      console.log(`Error for ${item.barcode}: ${item.error?.detail}`);
      continue;
    }
    for (const wh of item.warehouses ?? []) {
      console.log(`Warehouse ${wh.warehouseID}:`);
      console.log(`  Box: ${wh.canBox}, Monopallet: ${wh.canMonopallet}`);
      console.log(`  Supersafe: ${wh.canSupersafe}, BoxOnPallet: ${wh.canBoxOnPallet}`);
    }
  }

  // 2. List existing supplies filtered by status
  const supplies = await sdk.ordersFBW.listSupplies({
    statusIDs: [1, 2],  // Not planned + Planned
  });
  console.log(`Found ${supplies.length} supplies`);

  // 3. Get supply details
  if (supplies.length > 0) {
    const supplyID = supplies[0].supplyID!;
    const details = await sdk.ordersFBW.getSupply(supplyID);
    console.log(`Supply ${supplyID}: ${details.statusName}`);
    console.log(`  Box type: ${details.boxTypeName} (ID: ${details.boxTypeID})`);
    console.log(`  Is box-on-pallet: ${details.isBoxOnPallet}`);
    console.log(`  Acceptance cost: ${details.acceptanceCost} RUB`);

    // 4. Get goods in supply
    const goods = await sdk.ordersFBW.getSuppliesGood(supplyID);
    for (const good of goods) {
      console.log(`  ${good.vendorCode}: ${good.quantity} pcs`);
    }

    // 5. Get packaging info
    const packages = await sdk.ordersFBW.getSuppliesPackage(supplyID);
    for (const pkg of packages) {
      console.log(`  Package ${pkg.packageCode}: ${pkg.quantity} items`);
    }
  }
}

Listing Warehouses and Transit Tariffs

typescript
async function exploreWarehouses() {
  // List all WB warehouses
  const warehouses = await sdk.ordersFBW.warehouses();
  for (const wh of warehouses) {
    console.log(`${wh.name} (ID: ${wh.ID})`);
    console.log(`  Address: ${wh.address}`);
    console.log(`  Hours: ${wh.workTime}`);
    console.log(`  Accepts QR: ${wh.acceptsQR}`);
    console.log(`  Active: ${wh.isActive}, Transit: ${wh.isTransitActive}`);
  }

  // Get transit tariffs
  const tariffs = await sdk.ordersFBW.transitTariffs();
  for (const tariff of tariffs) {
    console.log(`${tariff.transitWarehouseName} -> ${tariff.destinationWarehouseName}`);
    console.log(`  Available from: ${tariff.activeFrom}`);
    console.log(`  Pallet tariff: ${tariff.palletTariff} RUB`);
  }
}

Getting DBW Buyer Information

typescript
async function getDBWBuyerInfo(orderIds: number[]) {
  try {
    const result = await sdk.ordersFBW.getClientInfo(orderIds);

    if (!result.orders) {
      console.log('No matching orders found');
      return;
    }

    for (const order of result.orders) {
      console.log(`Order ${order.orderID}:`);
      console.log(`  Name: ${order.firstName}`);
      console.log(`  Full name: ${order.fullName}`);
      console.log(`  Phone: +${order.phoneCode}${order.phone}`);
      if (order.additionalPhoneCodes?.length) {
        console.log(`  Additional phone codes: ${order.additionalPhoneCodes.join(', ')}`);
      }
    }
  } catch (error) {
    if (error instanceof ValidationError) {
      console.log('Validation error:', error.message);
    }
    throw error;
  }
}

Filtering Supplies by Date and Status

typescript
async function getRecentSupplies() {
  const thirtyDaysAgo = new Date();
  thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);

  const supplies = await sdk.ordersFBW.listSupplies({
    dates: [{
      from: thirtyDaysAgo.toISOString(),
      till: new Date().toISOString(),
      type: 'createDate'
    }],
    statusIDs: [4, 5]  // In acceptance + Accepted
  });

  for (const supply of supplies) {
    const id = supply.supplyID ?? supply.preorderID;
    console.log(`Supply ${id}: ${supply.statusName}`);
    console.log(`  Box type: ${supply.boxTypeName} (ID: ${supply.boxTypeID})`);
    console.log(`  Is box-on-pallet: ${supply.isBoxOnPallet}`);
    console.log(`  Created: ${supply.createDate}`);
  }
}

Types

Key Entity Types

typescript
// Supply list item
interface ModelsSupply {
  phone?: string;
  supplyID?: number;
  preorderID?: number;
  createDate?: string;
  supplyDate?: string;
  factDate?: string;
  updatedDate?: string;
  statusID?: 1 | 2 | 3 | 4 | 5 | 6;
  statusName?: string;
  boxTypeID?: number;          // 0=no boxes, 1/2=boxes, 5=monopallets, 6=supersafe, 7=piece pallet
  isBoxOnPallet?: boolean;     // true if piece pallet type
}

// Supply details (extended)
interface ModelsSupplyDetails {
  phone?: string;
  statusID?: 1 | 2 | 3 | 4 | 5 | 6;
  statusName?: string;
  boxTypeID?: number;
  boxTypeName?: string;
  isBoxOnPallet?: boolean;     // true if piece pallet type
  virtualTypeID?: number;
  virtualTypeName?: string;
  createDate?: string;
  supplyDate?: string;
  factDate?: string;
  updatedDate?: string;
  warehouseID?: number;
  warehouseName?: string;
  actualWarehouseID?: number;
  actualWarehouseName?: string;
  transitWarehouseID?: number;
  transitWarehouseName?: string;
  acceptanceCost?: number;
  paidAcceptanceCoefficient?: number;
  rejectReason?: string;
  supplierAssignName?: string;
  storageCoef?: string;
  deliveryCoef?: string;
  quantity?: number;
  readyForSaleQuantity?: number;
  acceptedQuantity?: number;
  unloadingQuantity?: number;
  depersonalizedQuantity?: number;
}

// Acceptance options result (with canBoxOnPallet)
interface ModelsOptionsResultModel {
  result?: {
    barcode?: string;
    error?: { title?: string; detail?: string };
    isError?: boolean;
    warehouses?: {
      warehouseID?: number;
      canBox?: boolean;
      canMonopallet?: boolean;
      canSupersafe?: boolean;
      canBoxOnPallet?: boolean;   // piece pallet availability
    }[];
  }[];
  requestId?: string;
}

// Warehouse info
interface ModelsWarehousesResultItems {
  ID?: number;
  name?: string;
  address?: string;
  workTime?: string;
  acceptsQR?: boolean;
  isActive?: boolean;
  isTransitActive?: boolean;
}

// DBW buyer information (since v3.4.0)
interface DBWClientInfo {
  orderID?: number;
  firstName?: string;
  fullName?: string;
  phone?: string;
  phoneCode?: number;
  additionalPhoneCodes?: number[];
}

// DBW client info response
interface GetDBWClientInfoResponse {
  orders?: DBWClientInfo[] | null;
}

// Good in supply
interface ModelsGoodInSupply {
  barcode?: string;
  vendorCode?: string;
  nmID?: number;
  needKiz?: boolean;
  tnved?: string;
  techSize?: string;
  color?: string;
  supplierBoxAmount?: number;
  quantity?: number;
  readyForSaleQuantity?: number;
  acceptedQuantity?: number;
  unloadingQuantity?: number;
}

// Transit tariff
interface ModelsTransitTariff {
  transitWarehouseName?: string;
  destinationWarehouseName?: string;
  activeFrom?: string;
  boxTariff?: ModelsVolumeTariff[];
  palletTariff?: number;
}

// API error model
interface ModelsErrorModel {
  status?: number;
  title?: string;
  detail?: string;
  requestId?: string;
  origin?: string;
}

Supply Status IDs

IDStatus
1Not planned
2Planned
3Shipment allowed
4Acceptance in progress
5Accepted
6Shipped at gates

Box Type IDs

IDType
0No boxes (virtual supply)
1, 2Boxes
5Monopallets
6Supersafe
7Piece pallet (isBoxOnPallet: true)

Rate Limits

Rate Limit KeyOperationsLimitIntervalBurstPenalty
orders-fbw.acceptanceCoefficientsAcceptance coefficients (deprecated)6 req/min10s6--
orders-fbw.postAcceptanceOptionsCreate acceptance option6 req/min10s6--
orders-fbw.warehousesList warehouses6 req/min10s6--
orders-fbw.transitTariffsTransit tariffs6 req/min10s10--
orders-fbw.postSuppliesList supplies30 req/min2s10--
orders-fbw.suppliesGet supply details30 req/min2s10--
orders-fbw.suppliesGoodsGet supply goods30 req/min2s10--
orders-fbw.suppliesPackageGet supply packaging30 req/min2s10--
orders-fbw.getClientInfoGet DBW buyer info300 req/min200ms2010x on 409

409 Penalty: A single 409 response from getClientInfo() counts as 10 requests against the rate limit quota due to penaltyMultiplier: 10.


Error Handling

typescript
import { ValidationError, RateLimitError, WBAPIError } from 'daytona-wildberries-typescript-sdk';

try {
  const result = await sdk.ordersFBW.getClientInfo([987654321]);
} catch (error) {
  if (error instanceof ValidationError) {
    // Empty orderIds array
    console.log('Validation:', error.message);
  } else if (error instanceof RateLimitError) {
    console.log(`Rate limited. Retry after ${error.retryAfter}ms`);
  } else if (error instanceof WBAPIError) {
    console.log(`API error ${error.statusCode}: ${error.message}`);
  }
}


Changelog

VersionDateChanges
3.5.02026-03Added isBoxOnPallet and boxTypeID to ModelsSupply and ModelsSupplyDetails; added canBoxOnPallet to warehouse options
3.4.02026-03Added getClientInfo() method (DBW buyer info, 300 req/min, marketplace-api domain); added DBWClientInfo and GetDBWClientInfoResponse types; method count 8 -> 9 active
3.0.02026-02Renamed createSupply to listSupplies; deprecated getAcceptanceCoefficients
2.0.02025-10Initial Orders FBW module with 8 methods

Made with ❤️ for the Wildberries developer community