Inventory discrepancies between website and supplier: how to avoid order problems
-
Anton Koval
Copywriter Elbuz
On Thursday morning, a customer ordered a Samsung Galaxy S24 smartphone for $899. The website said "In stock - 5 units." The manager placed the order with the supplier and received the reply: "The product was out of stock last night." The customer was disappointed, the order was canceled, and their reputation was damaged. Sound familiar?
Inventory discrepancies between online stores and suppliers are one of the main causes of cancelled orders and lost customers. According to RetailDive statistics, 34% of shoppers will never return to a store after receiving an "out of stock" notification after placing an order. This problem is critical, but solvable. In this article, we'll explore all the causes of discrepancies and effective strategies for preventing them.
Why do balance discrepancies occur: 6 main reasons
Before solving a problem, you need to understand its root cause. Balance discrepancies rarely arise from a single cause—usually it's a combination of several factors.
1. Data synchronization delay
The most common reason is a time lag between a change in the supplier's inventory and the update on your website.
Typical scenarios:
- Scheduled synchronization: The supplier updates the inventory every hour, and during this time the goods have already been sold through other channels
- Nightly updates: The data is updated once a day at night - a lot changes in 24 hours
- Manual download of price lists: The manager uploads files with a delay of several hours or days
- Slow processing: Importing a large price list takes 30-60 minutes, during which time the data becomes outdated
Statistics: When synchronizing every 4 hours for popular products, the probability of discrepancy is 23%. When synchronizing every 15 minutes, the probability is less than 3%.
2. Omnichannel supplier sales
If your supplier works with multiple clients at the same time, their products are sold through multiple channels in parallel.
Omnichannel Challenges:
- Competition for leftovers: The same product is sold by 10 other dropshipping stores
- Retail outlets: The supplier may have offline stores that sell from the same warehouse
- Your own online store: the supplier competes with you for its own goods
- Marketplaces: Amazon and eBay are taking a significant portion of the remaining inventory.
- No reservations: the supplier does not reserve goods for specific partners
Result: by the time you receive the updated price list, the product has already been sold in another channel, but your website still shows it as "in stock."
3. Human errors during manual updates
When managers manually update inventory, errors are inevitable.
Error types:
- Typos: instead of "15 pieces" it says "150"
- Forgotten goods: We updated 500 positions out of 520, but forgot about 20.
- Incorrect identification: Updated the balance for article number ABC-123 instead of ABC-132
- Incomplete update: They updated the price but forgot about the remaining stock.
- Copying old data: accidentally downloaded yesterday's file instead of today's
4. Accounting differences between systems
You and the supplier may have different interpretations of the term "remainder".
Discrepancies in accounting:
- Reserved items: The supplier has 10 pieces, but 7 are already reserved for other orders - only 3 are available
- Goods in transit: There are 0 units physically in stock, but 50 more are on the way from the manufacturer—the supplier indicates 50 are "in stock"
- Marriage and returns: There are 15 pieces in stock, but 5 are defective - only 10 are actually available.
- Product under inspection: returns from customers who have not yet been verified
- Minimum balance: The supplier does not sell the last 2-3 units for insurance
An example of an accounting conflict
Situation: The supplier sends a price list with a balance of "20 pcs" for article number LAPTOP-456.
Reality:
- Physically in stock: 20 pieces
- Reserved for orders: 12 pieces
- Damaged during transportation: 2 pieces
- Safety stock (not for sale): 3 pieces
- Actually available: 3 pieces
You display "20 items in stock" but can only sell 3. The remaining 17 orders will be cancelled.
5. Time zones and working hours
If you and the supplier are in different time zones, additional complications arise.
Time zone issues:
- Night sales: Your site operates 24/7, and the provider updates data only during business hours (9:00-18:00 in their time zone)
- Processing delay: An order from your website arrives at night according to the supplier's time and is processed only in the morning—the item has already been sold.
- Days off: The supplier does not work on Saturday and Sunday, the stock is not updated for 2 days.
- Holidays: differences in the holiday calendars of the USA, EU, and Ukraine
6. Technical failures and integration errors
Even automated systems fail.
Types of technical problems:
- Lost connection: FTP server is unavailable, API is not responding
- Changing data format: The supplier changed the price list structure, your parser broke.
- Queue overflow: Data processing is stuck, new updates are not applied
- Expired tokens: API keys are out of date, syncing has silently stopped
- Update conflicts: simultaneous change of one product from different sources
Combined effect
Most often, discrepancies arise not from a single cause, but from a combination of several. For example: synchronization every 4 hours (reason 1) + a supplier selling through 5 marketplaces (reason 2) + different definitions of "reserve" (reason 4) = catastrophic for the business.
The Cost of the Problem: How Much Does a Business Lose Due to Discrepancies?
Before investing in a solution, it's important to understand the true cost of the problem. Residual discrepancies impact several areas simultaneously.
Direct financial losses
1. Cancelled orders
- Loss of revenue: Average order value: $120, 15 canceled orders per month = $1,800 in lost revenue
- Lost profit: at a 25% margin, that's $450/month or $5,400/year
- Time spent: The manager spends 20 minutes processing each canceled order (searching for an alternative, contacting the client)
2. The cost of attracting lost customers
- CAC (Customer Acquisition Cost): The average cost of customer acquisition in e-commerce is $45-80.
- 34% will not return: If 15 orders are cancelled, you lose approximately 5 customers forever.
- Loss of investment in marketing: 5 clients x $60 CAC = $300 wasted every month
Reputational damage
Negative reviews and ratings:
- Rating decrease on platforms: Trustpilot, Google Reviews, Facebook
- Negative word of mouth: One dissatisfied customer tells 9-15 friends
- Conversion rate drop: Potential customers read reviews and go to competitors
- CPO (Cost Per Order) growth: have to spend more on advertising to compensate for the decline in trust
Operating expenses
- Managers' time: processing cancelled orders, explaining to customers, searching for alternatives
- Support load: increase in the number of support requests
- Employee Stress and Burnout: Constantly apologizing to clients demotivates the team
Calculation of actual losses
Example of an average online store (revenue $50,000/month):
- Average bill: $120
- Percentage of discrepancies in balances: 8% (industry standard without automation)
- Orders per month: ~417
- Orders with problems: 33
- Cancelled due to lack of product: 22 (65%)
Monthly losses:
- Lost revenue: $2,640
- Lost Profit: $660
- Managers' time (22 x 20 min): 7.3 hours x $25/hour = $182
- Loss of repeat customers: 7 x $60 CAC = $420
- Total: $1,262 per month or $15,144 per year
And these are only direct measurable losses, not counting the damage to reputation and brand.
Strategies to prevent discrepancies
Now on to the solution. An effective strategy includes multiple layers of protection, from technical automation to business processes.
Strategy 1: Increase the sync frequency
The more frequently data is updated, the less likely it is to inconsistencies. However, a balance must be struck between relevance and the load on systems.
Frequency recommendations:
| Product category | Turnover | Synchronization frequency | Probability of discrepancy |
|---|---|---|---|
| Top 50 Bestsellers | Very high | Every 5-15 minutes | <2% |
| Popular products | High | Every 30-60 minutes | 3-5% |
| Active assortment | Average | Every 2-4 hours | 5-8% |
| Slow moving goods | Low | 2 times a day | 2-3% |
| Niche/rare | Very low | Once a day | <1% |
Learn more about setup automatic synchronization of prices and balances with the website for different CMS platforms.
Strategy 2: Implementing Safety Stock
Safety stock is a reserve you subtract from the supplier's actual inventory before displaying it on the website. This protects against situations where the data isn't updated in a timely manner.
Formula for calculating safety stock:
Simple formula:
Displayed Balance = Actual Balance - Safety Stock
Example:
- From the supplier: 25 pieces
- Safety stock: 5 pieces
- We show 20 items on the website.
If you receive 3 orders of 2 pieces each (6 in total), you show the remaining stock as 14, but in reality the supplier still has 19 – the safety margin has been activated.
Dynamic calculation of safety stock:
For more precise control, use a formula that takes into account sales velocity and update frequency:
Safety Stock = (Average Sales Per Hour × Sync Interval in Hours) × 1.5
Calculation example:
- The product is sold on average 3 pieces per hour.
- Synchronization every 2 hours
- Safety Stock = (3 × 2) × 1.5 = 9 pieces
The factor 1.5 is a safety factor to compensate for peak loads.
Setting by category:
- High demand + rare synchronization: Safety Stock = 20-30% of the balance
- Average demand + frequent synchronization: Safety Stock = 10-15%
- Low demand + frequent sync: Safety Stock = 5-10%
- Exclusive products: Safety Stock = 1-2 pieces (fixed value)
Strategy 3: Product Reservation System
A reservation is a temporary blocking of a product while an order is being processed and confirmed.
How does the reservation work:
- The customer adds an item to the cart: the system checks the available balance
- Proceed to checkout: the item is reserved for 15-30 minutes
- Payment: If payment is successful, the reserve is confirmed and the balance is reduced.
- Time expires: If the client does not pay, the reservation is automatically cancelled.
- Sending an order to the supplier: final confirmation of availability before shipping
Backup settings:
- Basket Reservation Time: 15-20 minutes (average order processing time)
- Reservation time after payment: 24-48 hours (before dispatch to supplier)
- Priority: Paid orders have priority over unpaid reservations
- Notifications: Automatic notification to the client 5 minutes before the reservation expires
Important: Coordinate your reservation with the supplier.
Reservations are only effective if the supplier also reserves the goods on their side after receiving your order. Discuss this in your contract—the supplier must reserve the goods for at least 24-48 hours after the order is confirmed.
Strategy 4: Rules of Priority and Conflict
When conflicting balance data comes from different sources, the system needs to know which source to trust.
Example of priority rules:
- Priority 1 (highest): Manual update by administrator always takes priority
- Priority 2: Real-time provider API - if available
- Priority 3: Automatic download of price lists
- Priority 4 (lowest): Cached data is older than 24 hours
Conflict resolution rules:
- If the data contradicts each other: choose a lower balance value (it's safer to show "out of stock" than to sell a non-existent item)
- If the source has not been updated for more than 48 hours: Automatically hide items marked "Check availability"
- If the balance drops to zero suddenly: Do not update automatically, send an alert to the manager for verification
Strategy 5: Monitoring and Automatic Alerts
Proactively detecting problems allows you to respond before customers are impacted.
Critical alerts:
- Synchronization has not occurred for more than 4 hours - immediate notification
- Bulk zeroing of balances (>50 items at a time) — there is likely an error in the data
- The order has been placed, but the supplier does not have the product. - requires manual processing
- The percentage of cancelled orders exceeded 5%. - a systemic problem
For more information on setting up monitoring, read the article. automatic synchronization of prices and balances.
Setting up real-time synchronization with the provider
Real-time synchronization is the gold standard for preventing discrepancies. Instead of periodically importing price lists, changes are transferred instantly.
Real-time synchronization methods
1. Webhooks (callbacks)
The supplier automatically sends a notification to your server every time the balance changes.
Advantages:
- Delay 1-5 seconds
- Minimal server load
- Only modified data is transferred
Requirements:
- The provider must support webhooks.
- You need an endpoint to receive data.
- Handler for parsing and applying changes
Webhook configuration example:
1. Provide your handler URL to the provider:
https://your-shop.com/api/supplier-webhook2. The supplier sends a POST request when changing:
{ "event": "stock_updated", "timestamp": "2025-01-15T14:23:17Z", "product":{ "sku": "LAPTOP-XPS-15", "stock_quantity": 8, "status": "in_stock" } }3. Your system processes and updates the product:
- Data validation
- Using safety stock (8 - 2 = 6 for display)
- Updating the database
- Logging changes
2. REST API with frequent requests
If webhooks are not available, use polling—regular requests to the provider's API.
Polling optimization:
- Differential frequency: Check popular items every 5 minutes, and check others every hour.
- Use the "since" parameter: request only the changes since the last request, not the entire directory
- Batch requests: Group the check of 50-100 products into one request
- Caching: keep the latest values, update only when there is a real change
3. Hybrid approach
Combination of methods for maximum reliability:
- Webhooks as the main channel - instant updates
- Polling as a backup — We check every 30 minutes to make sure no webhooks have been missed.
- Night full synchronization - once a day a full comparison of all products to eliminate discrepancies
Real-time synchronization efficiency
Case: Online electronics store, 5,000 SKUs, transitioning from 4-hour synchronization to real-time webhooks.
Before implementation:
- Residual discrepancies: 8.7%
- Cancelled orders: 28/month
- Losses: $1,400/month
After implementation (3 months of operation):
- Residual discrepancies: 1.2%
- Cancelled orders: 4/month
- Losses: $200/month
- Savings: $1,200/month or $14,400/year
Implementation cost: $3,000. Payback: 2.5 months.
Checking availability before finalizing an order
Even with real-time synchronization, add a final check before sending the order to the supplier.
Two-step verification:
- Time of order placement: check against local database (instant)
- Before sending to the supplier: Real-time API request for final confirmation of availability
This approach protects against the situation where several customers simultaneously order the last unit of an item.
Troubleshooting: Solving Common Problems
Even with a perfect setup, unexpected situations can arise. Here's a guide to diagnosing and resolving the most common issues.
Problem 1: Synchronization works, but there are still discrepancies
Possible reasons:
- Insufficient safety stock: the reserve is too small for the speed of sales
- Omnichannel sales: the supplier sells through other channels between your syncs
- Different understandings of "remainder": the supplier includes reserved goods in the general balance
Solution:
- Increase safety stock by 5-10 units for problematic products
- Ask your supplier to provide "available balance" instead of "total"
- Increase the synchronization frequency for popular products to every 5-10 minutes
- Implement a final availability check before order dispatch
Problem 2: Mass zeroing of balances
Signs:
- Suddenly, 100+ items show a remaining stock of "0"
- Happened in one go during synchronization
- The supplier actually has the goods
Possible reasons:
- Error in the supplier's price list: technical failure, empty column with residues
- Changing data format: The "remainder" column has been renamed or moved
- Parsing error: Your script interpreted the data incorrectly.
Solution:
- Data rollback: Restore the previous version of the remains from the backup
- Check the source file: Download the latest price list from the supplier manually and check the format.
- Set up protection: If >10% of products are reset at a time, block the update and send an alert
- Logging: keep source files for analysis
Automatic protection against mass zeroing
// Pseudocode of the protection rule if (more than 10% of products are reset) { cancel_update(); restore_previous_values(); send_alert_to_administrator(); block_automatic_updates(); wait_for_manual_check(); }Problem 3: Balances are not updated for some products
Signs:
- Some products update correctly, others do not.
- Problematic products are always the same
Possible reasons:
- Article numbers mismatch: your SKU and the supplier's SKU are different
- Duplicates in the database: one product was created twice with different IDs
- Incorrect mapping: The connection between your catalog and the supplier's price list is broken.
Solution:
- Export a list of problematic products
- Check the part numbers against the supplier's price list (the supplier may have changed the SKU)
- Check the mapping table - update the mappings
- Find and merge duplicate products in the database
Learn more about resolving duplicate issues in this article. How to eliminate duplicate products in the catalog.
Problem 4: Synchronization delays during peak hours
Signs:
- At certain hours, synchronization slows down
- The update queue is piling up
- The processing time for one item increases by 5-10 times
Possible reasons:
- High server load: the site's peak traffic coincides with synchronization
- API rate limits: The provider limits the number of requests per hour.
- Insufficient resources: the server can't handle the load
Solution:
- Shift your schedule: run heavy synchronizations at night
- Use queues: asynchronous processing via RabbitMQ, Redis Queue
- Optimize queries: batch updates instead of single ones
- Scale your infrastructure: add workers for parallel processing
Problem 5: Conflicts between multiple suppliers
Situation:
The same item is available from two suppliers with different stock levels. How do I determine which stock level to display?
Solution - aggregation rules:
- Summation: total balance = sum of balances from all suppliers (apply safety stock to each)
- Preferred Supplier: choose data from your preferred provider
- Best conditions: choose the supplier with the highest balance or the lowest price
- Source marking: show the client "Available from 2 suppliers"
Read more about aggregating data from multiple providers in this article. How to combine price lists from multiple suppliers.
FAQ: Frequently Asked Questions
1. What if the provider does not provide a synchronization API?
Answer: Есть несколько альтернатив:
- Автоматическая загрузка прайсов: настройте автоматическое скачивание прайс-листов с FTP, email или по прямой ссылке. Периодичность — каждые 1-4 часа.
- Парсинг сайта поставщика: если поставщик публикует остатки на своем сайте, можно настроить автоматический парсер. Легально, но требует согласования.
- Google Sheets + API: попросите поставщика вести остатки в Google Sheets, подключитесь через Google Sheets API.
- Консервативный safety stock: при редких обновлениях увеличьте страховой запас до 30-50% от остатка.
Additionally: автоматическая загрузка прайс-листов по email и FTP.
2. Как объяснить клиенту, что товар закончился уже после оформления заказа?
Answer: Честность и проактивность — лучшая стратегия:
- Немедленное уведомление: свяжитесь с клиентом в течение 2-4 часов после заказа
- Explanation: "К сожалению, последняя единица товара была зарезервирована за несколько минут до вашего заказа."
- Alternative: предложите аналогичный товар, возможно, с небольшой скидкой
- Compensation: промокод на 5-10% для следующей покупки
- Priority: "Как только товар появится, вы будете первым в очереди"
Превратите негатив в возможность показать отличный сервис. 67% клиентов прощают проблему, если она решена быстро и с заботой.
3. Стоит ли скрывать точное количество остатков от клиентов?
Answer: Зависит от стратегии бизнеса:
Показывать точное количество:
- Plus: прозрачность, клиент видит дефицитность товара
- Plus: срабатывает FOMO (fear of missing out) — "осталось 2 шт, надо брать!"
- Minus: если товаров много (>100), клиент может подождать со покупкой
Показывать статус без точного числа:
- "В наличии" — более 10 штук
- "Мало" — 3-10 штук
- "Последние единицы" — 1-2 штуки
- "Под заказ" — 0 штук, но можно заказать
Recommendation: для дропшиппинга лучше не показывать точное количество. Используйте статусы — это безопаснее и все равно создает urgency.
4. Что лучше: показывать "нет в наличии" или "под заказ"?
Answer: Зависит от вашей модели работы и возможностей поставщика:
"Нет в наличии" + скрыть товар:
- Подходит для быстро меняющегося ассортимента
- Не перегружает каталог недоступными товарами
- Меньше разочарованных клиентов
"Под заказ" + возможность заказать:
- Подходит если поставщик может доставить товар за приемлемый срок (7-14 дней)
- Не теряете потенциальные продажи
- Позволяет собирать предзаказы
- Обязательно указывайте реальные сроки: "Доставка 10-14 дней"
Recommendation: если товар вернется в наличие через 3-7 дней — используйте "под заказ". Если непонятно когда — лучше скрыть и добавить кнопку "Уведомить о поступлении".
Больше информации о предотвращении проблем с остатками: как предотвратить дефицит товаров и потерю продаж.
Conclusion
Расхождения остатков между сайтом и поставщиком — решаемая проблема при правильном подходе. Комбинация технических решений (частая синхронизация, real-time API, webhooks) и бизнес-процессов (safety stock, резервирование, правила приоритетов) снижает вероятность проблем с 8-10% до менее 2%.
Key recommendations
- Увеличьте частоту синхронизации: популярные товары — каждые 15-30 минут, остальные — каждые 2-4 часа
- Внедрите safety stock: 10-30% от остатка в зависимости от скорости продаж и частоты обновлений
- Настройте резервирование: блокируйте товары на время оформления заказа (15-30 минут)
- Используйте real-time синхронизацию: webhooks или API polling каждые 5-15 минут для хитов
- Установите правила конфликтов: при противоречивых данных выбирайте меньшее значение остатка
- Настройте мониторинг: алерты при массовых обнулениях, задержках синхронизации, высоком проценте отмен
- Финальная проверка: перед отправкой заказа поставщику делайте real-time запрос наличия
Поэтапное внедрение
- Аудит текущей ситуации (неделя 1): анализ частоты расхождений, процента отмен, причин проблем
- Настройка базовой автоматизации (неделя 2-3): автоматическая загрузка прайсов, увеличение частоты синхронизации
- Внедрение safety stock (неделя 4): расчет и применение страховых запасов по категориям
- Real-time синхронизация (неделя 5-8): настройка webhooks или API polling для критичных товаров
- Мониторинг и оптимизация (постоянно): отслеживание метрик, корректировка правил
ROI от внедрения
Средний интернет-магазин с выручкой $50,000/месяц экономит $1,200-1,500/месяц после внедрения комплексной системы предотвращения расхождений. Инвестиции $2,000-5,000 окупаются за 2-4 месяца.
Автоматизируйте управление остатками с Elbuz
Полный гайд по управлению данными поставщиков: импорт и синхронизация прайс-листов.
Платформа Elbuz автоматизирует синхронизацию остатков с любыми поставщиками: real-time обновления, настройка safety stock, автоматические алерты, интеграция с WooCommerce, Shopify, Magento и другими CMS. Начните с бесплатной консультации.
- Why do balance discrepancies occur: 6 main reasons
- The Cost of the Problem: How Much Does a Business Lose Due to Discrepancies?
- Strategies to prevent discrepancies
- Setting up real-time synchronization with the provider
- Troubleshooting: Solving Common Problems
- FAQ: Frequently Asked Questions
- Conclusion
Save a link to this article
Anton Koval
Copywriter ElbuzIn the world of business, words are my pencils and automation is my art. Welcome to the gallery of online store effectiveness, where every text is a masterpiece of success!
Discussion of the topic – Inventory discrepancies between website and supplier: how to avoid order problems
Inventory discrepancies between website and supplier: how to avoid order problems
There are no reviews for this product.


Write a comment
Your email address will not be published. Required fields are checked *