Configuring Transit Delivery from Supplier Warehouse 1С-Bitrix
Transit delivery is a dropshipping scheme: order arrives at site, store forwards it to supplier, supplier ships goods directly to customer. Store doesn't physically hold goods. In Bitrix this scheme requires: goods-supplier binding, mechanism for automatic order transmission, and status tracking from supplier.
Binding goods to suppliers
Create custom infoblock property SUPPLIER_ID of type "List" or "Binding to infoblock" — depends on whether suppliers are stored as infoblock elements or in separate table. If many suppliers or detailed data needed (API key, email, order format) — use separate bl_suppliers table.
Structure bl_suppliers: id, name, order_method (api/email/edi), api_url, api_key, email, order_template, active.
Goods-supplier binding: table bl_product_supplier with fields product_id, supplier_id, supplier_sku (supplier's article), price, lead_time_days.
Transmitting order to supplier
On payment (OnSaleOrderPaid) or manual status transition — determine supplier by basket goods and transmit order:
$basket = $order->getBasket();
$supplierOrders = [];
foreach ($basket as $item) {
$supplierId = SupplierMap::getBySku($item->getProductId());
$supplierOrders[$supplierId][] = [
'sku' => SupplierMap::getSupplierSku($item->getProductId()),
'qty' => $item->getQuantity(),
'address' => $deliveryAddress,
'order_id' => $orderId,
];
}
foreach ($supplierOrders as $supplierId => $items) {
$supplier = SupplierTable::getById($supplierId)->fetch();
SupplierGateway::send($supplier, $items);
}
SupplierGateway::send() sends HTTP request to supplier API, forms letter, or XML for EDI — depending on order_method.
Receiving tracking number from supplier
Supplier sends tracking number back — via webhook to your site endpoint or API response. Create public handler /bitrix/supplier_webhook.php, which:
- Receives
supplier_order_id,tracking_number,carrier - Finds related Bitrix order by
supplier_order_idviabl_supplier_orderstable - Writes tracking number to custom order fields (
UF_TRACKING_NUMBER,UF_CARRIER) - Sends customer email with tracking number via
\Bitrix\Main\Mail\Event::send() - Changes order status to "Shipped to delivery"
Deadline control
Agent every 6 hours checks orders to suppliers older than lead_time_days. If supplier didn't send tracking number in time — creates task for manager via CRM or sends notification to administrator.
What we configure
- Tables
bl_suppliersandbl_product_supplierwith goods-supplier binding - Payment event handler with supplier routing logic
- Class
SupplierGatewaywith adapters for API/email/EDI - Webhook-endpoint to receive tracking numbers from suppliers
- Agent for deadline control and overdue notifications







