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.

- 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

Services used on this project
- Online stores without manual product entry
- SEO that starts in the code
- Website maintenance after launch
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.
Similar projects
Case study
Relax Home: from under 100 to 10,000+ visits a month
Case study: a prefab house builder from Montenegro had under 100 visits a month. A new site and search focused copy brought 10,000+ a month.
Case study
efakture.exe: POS software sends to SEF without a rewrite
Case study: POS software could not send to SEF. A Go service has sent more than 10,000 invoices and 5,000 delivery notes since 2023.
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.