Skip to content

Online store / 2025

EcoLED: 1,700 products with no manual entry, on 3 sales channels

Case study: 1,700 products from 3 suppliers with no manual entry, 3 sales channels with their own prices, card payments and B2B pro forma invoices.

EcoLED store home page: the headline LED lighting and electrical supplies for home and business, with search by name, code and barcode
Client
EcoLED
Year
2025
Build time
almost 2 months, including a redesign
Role
Full development: store, admin panel, supplier imports, sales channels and integrations
Technologies
PHP, MySQL, JavaScript

1,700

products, no manual entry

3

suppliers imported automatically

3

sales channels with their own prices

This is a case study of the EcoLED online store. If you are looking for LED lighting and electrical supplies, their store is ecoled.rs.

Client and context

EcoLED sells LED lighting and electrical supplies in Serbia: bulbs, floodlights, ceiling lights, track and magnetic lighting and LED strips. The stock sits with suppliers, not in the store's own warehouse, and it sells through three channels: its own site and the Serbian marketplaces Ananas and Shoppster. Both consumers and businesses buy.

Problem

A store with thousands of products held by someone else has one job that never ends: upkeep. Stock changes during the day, prices change, suppliers add new products. Entered by hand, the store is always behind, selling what is gone or missing what just arrived. The same work multiplies with every sales channel, because each marketplace wants its own prices and catalog.

Constraints

The hardest part was card payments. OTP Bank has its own requirements for an internet point of sale and its security standards, and the store had to meet them before card payments could go live.

The second constraint is the law. Since May 1, 2026, the Serbian Law on Trade requires that a product on sale shows, as its previous price, the lowest price it was offered at in the 30 days before the discount. A store that changes prices automatically several times a day has to remember the price history of every product.

The third is time: the build waited for supplier APIs, and the client adjusted margins and promotions along the way, so the project took almost two months, including a full redesign of the site for better SEO.

Solution

Imports from 3 suppliers

The store mirrors its suppliers on a schedule: stock every hour, prices several times a day, the full catalog once a day. A new product lands in its category with that category's preset margin. Every such job is logged in the admin, under Logs and Cron jobs, so you can see what ran, when and with what result.

Three channels, three price lists

Products and prices are sent automatically to Ananas and Shoppster, and each channel has its own prices, discounts, margins and promotions, independent of the others. A price is changed in one place.

Payments and B2B

Consumers pay by card through OTP Bank. Businesses order as B2B customers and automatically get a pro forma invoice by email with an IPS QR code, the Serbian instant payment code they scan in their banking app. Customers get an email on every order status change, and their fiscal receipt arrives by email as a PDF, through the efakture.exe service.

Connection to the company's own software

The store has an API from which the company's local software fetches orders. Each order is sent as XML, so the software processes it without retyping.

Delivery and catalog checks

Shipping is calculated from parcel weight and shown at checkout. Shipment statuses arrive from the courier BEX through its API, and an X Express connection is in progress. Filters are built from product attributes in each category, with a count next to every value, and quick filters in the admin find products missing a price, barcode, weight or image.

One day in the store

When What happens on its own
every hour stock is pulled from suppliers
several times a day prices refresh, separately for the site, Ananas and Shoppster
once a day the full catalog is checked and new products are sorted into categories
on every order the customer gets an email, a business gets a pro forma invoice with an IPS QR code, and the company's software gets the order as XML
on every status change the customer gets another email, and the shipment status arrives from BEX
when the receipt is issued the customer gets the fiscal receipt by email as a PDF

Staff only change what is a decision: margins, promotions and per channel prices. The store does the rest, and every job leaves a record in the admin.

Technologies and why

The store is built in PHP and MySQL, with JavaScript for filters and the cart. I did not use a hosted platform here, because imports from three suppliers, per channel pricing, B2B pro forma invoices and fiscal receipts from POS software are hard to fit into someone else's template and straightforward in code written for them.

Result

The 1,700 product catalog maintains itself. Whatever a supplier adds appears in the store the same day, in the right category at the right price, and stock on the site follows real stock through the day. Three sales channels run from one source, each at its own prices, and promotions follow the lowest 30 day price rule (as of October 2026).

Sources

The previous price rule was checked on October 5, 2026, in the text of the Law amending the Law on Trade (Official Gazette no. 35/2026), Article 37, in force since May 1, 2026.

Inside the application

The EcoLED store on a phone, with search and cart in the header
The EcoLED store on a phone, with search and cart in the header

Services used on this project

Questions about the project

What is EcoLED?

A Serbian store for LED lighting and electrical supplies: bulbs, floodlights, ceiling lights, track and magnetic lighting and LED strips. This is a case study of their store; the official site is ecoled.rs.

How do products update without manual entry?

The store pulls data from 3 suppliers on a schedule: stock every hour, prices several times a day, the full catalog once a day. A new product lands in its category with that category's preset margin.

What would a store like this cost?

A store with an admin panel costs 350 to 400 EUR; supplier imports, extra sales channels and a link to your own software are quoted separately. Prices are on the pricing page.

How do orders reach the company's software?

The store has an API from which the local software fetches orders as XML, so they are processed without retyping.

How does the store follow the lowest 30 day price rule?

When a product is on sale, the previous price shown is the lowest price it was offered at in the 30 days before the discount, as the amended Serbian Law on Trade requires from May 1, 2026.

Got a similar job?

Describe what you need in a few sentences. Messages sent before 5 pm CET get a same day reply with an estimate of price and timeline.