Introduction

When I worked at Shohoz, one of Bangladesh’s biggest online ticketing platforms, every Eid brought the same messages. Friends and acquaintances would reach out and ask if I could get them a ticket home.

Eid is when millions of people leave Dhaka and other cities to celebrate with their families in their hometowns and villages, so for a few days, almost everyone needs a ticket at the same time.

I never needed an Eid ticket myself. My immediate family all lived in Dhaka, so for me, Eid meant staying put. But a lot of people assumed that working at a ticketing company came with a secret supply of tickets. It didn’t, at least not while I was there. Shohoz sold bus and ferry tickets back then, and employees got no priority. If I wanted a ticket, I had to try my luck online like everyone else.

I left before Shohoz started selling railway tickets. What I know comes from the other ticketing systems I worked on there. Different seats, same pattern. When there aren’t enough seats, people stop trusting the system and start looking for someone who knows someone.

Back home, train tickets are now the big story. The railway is looking into claims that bots grabbed tickets for resale, and it plans to pick a new ticketing provider before the current contract ends in January 2027.1

The common conclusion is simple: change the vendor, build a better system, and the problem goes away. Having worked on ticketing and other high-traffic platforms, I think that’s only half right.

A better system can make it fairer. It can’t fix the shortage.

This isn’t a defence of the current system. The allegations deserve a proper investigation.

The Numbers Don’t Add Up

On a normal day, Bangladesh Railway issues around 150,000 tickets. Even counting intermediate stations and privately run trains, the total stays under 200,000. In the days just before and after Eid, demand goes up at least tenfold.2

The Eid ticket sales show the gap clearly:

Sale daySeats on offerHits on the ticketing site
Eid al-Adha, May 24, 202533,315 intercity seats from DhakaOver 11.4 million in the first 30 minutes3
Eid al-Fitr, March 29, 2024162,643 intercity seats nationwideOver 22.4 million in the first half hour of the two sales windows4

Hits aren’t people. One person might refresh fifty times, and the traffic and seat figures don’t cover exactly the same sales. Still, they show how hard the system gets hit whenever Eid tickets go on sale. A former railways minister once put the demand more plainly: about 100 people come to the counter for every one ticket.5

When 100 people want one seat, 99 of them will be unhappy. That’s true no matter who wrote the software.

What a Ticketing System Can and Can’t Do

A ticketing system is a way to share out seats. It doesn’t make seats.

Think of a shop with 100 loaves of bread and 10,000 customers in line. A better queue can stop people from cutting in. It can make the wait shorter and the rules clearer. It can’t put more bread on the shelf.

The hardest moment for the railway’s ticketing system is when Eid sales open, usually at 8 am. Millions of requests arrive at once, and the system has two jobs: stay up, and never sell the same seat twice. In my experience, most outages and “money taken but no ticket” complaints come from that moment. A virtual waiting room helps keep the site up by letting people in at a pace the system can handle. But it’s still a queue in front of the same small number of seats.

Sandeep Debnath, the former CTO of Shohoz, wrote a detailed piece on the engineering side of this, from waiting rooms to seat holds. He reaches the same conclusion: you can’t autoscale a train.

If someone built the best ticketing system in the world tomorrow, the site would stay up and the bots would have a much harder time. The seats would still sell out in minutes, and most people would still go home without a ticket. The only difference is that they’d lose fairly.

Where the System Does Matter

That doesn’t mean today’s complaints are wrong. Some of them point to real system problems, and as a developer, those are the parts I know best.

Bots win races. Eid tickets are sold as a race: sales open at a fixed time, and the fastest request wins. That’s the perfect setup for a bot, which never gets tired and can send requests from many accounts at once. In October 2026, the railway said bots working through an unauthorised website were grabbing tickets as soon as sales opened and holding large numbers of them for resale.1

Holding a seat is cheap. In most ticketing systems, picking a seat puts it on hold while you pay. If holds last too long or are too easy to create, a bot can lock hundreds of seats and pass them only to its own buyers. Real users see “sold out” while those seats sit in someone else’s cart.

Too many keys. An audit of the ticketing system found around 169 administrator accounts.1 Every admin account is a door. Without least-privilege access, proper logging and regular reviews, it’s hard for anyone to verify how that access is being used.

These are all solvable, and a new system should treat bot protection, short seat holds and tight admin access as core features, not extras. But the attacks exist for a reason. When a seat is worth far more to a passenger than its printed price, someone will try to capture that gap. Whether it’s bots or misused access, those are just the tools. Scarcity is the motive.

The Real Bottleneck Is on the Tracks

The supply problem lives in the workshops and engine sheds, not on the servers.

  • Locomotives. In March 2026, the Eastern Zone needed 119 engines a day but could only get 70 to 75, and eight to ten engines broke down every day.2 Engines are often taken off freight trains for passenger services, leaving freight stuck for days.6
  • Coaches. Many trains already run with fewer coaches than their standard set, so the extra coaches announced for Eid mostly bring trains back to their normal size.2
  • Workshops. The Pahartali workshop in Chattogram repairs an average of only two coaches a day, with 710 staff against 2,255 approved posts.2
  • Time. The railway’s own director general has said the rolling stock crisis can’t be solved quickly, because buying even one engine or coach takes years.7
    ---
config:
  xyChart:
    height: 160
    showDataLabel: true
---
xychart-beta horizontal
    title "Eastern Zone locomotives per day, March 2026"
    x-axis ["Needed", "Available"]
    y-axis "Locomotives" 0 --> 130
    bar [119, 75]
Source: Bonik Barta, March 2026. “Available” uses the top of the reported 70 to 75 range.

There’s some good news. India is due to supply 200 coaches by the end of 2027,8 and more engines are planned with support from China and the AIIB.910 These are what actually add seats, and they deserve at least as much attention as the choice of software vendor.

Even FIFA Couldn’t Solve It

I’ve seen this problem from the buyer’s side too, when I tried to get tickets for the 2026 FIFA World Cup. FIFA did a lot of the things people suggest for Bangladesh Railway. It sold tickets through lottery draws, and it used demand-based pricing for the first time.

I won the very first draw, the Visa presale. Even the email was careful to say that being selected didn’t guarantee there would be any tickets left. It was right. After a long wait in the online queue, I couldn’t buy the tickets I wanted.

I ended up buying on FIFA’s own resale platform instead, paying a reseller’s price plus a 15% fee.

FIFA said it received 508 million ticket requests in its third lottery phase alone.11 A lottery that hands out more chances than there are seats doesn’t end the race. It just moves the race behind a waiting room. So if Bangladesh Railway tries a lottery, it has to hand out seats. FIFA’s handed out the right to queue.

And when seats are that scarce, resale prices climb, even on the official platform. That’s the same gap the black market in Bangladesh lives on.

If one of the richest organizations in sport, with a modern platform, lotteries and dynamic pricing, couldn’t make demand fit supply, a new vendor for Bangladesh Railway won’t either.

What Would Actually Help

If the goal is getting more people home, the answer has three parts: add supply, spread out the demand, and share what’s there fairly.

Add Supply

  1. Get more out of the coaches that already exist. Fill the workshop vacancies, fund spare parts, and keep spare coaches for each train. This is probably the fastest way to add seats.
  2. Keep buying engines and coaches, and plan them together with new lines, so new routes don’t open without trains to run on them.

Spread the Demand

  1. Ease the peak. Stagger Eid leave across offices and garment factories where possible, and run more special trains on the days just before and after, announced early.

Share Fairly

  1. Consider a lottery for the busiest days instead of a race, with one entry per verified NID to make it harder to game with extra accounts, and a way to enter at station counters for people who can’t apply online. A lottery takes away the speed advantage bots rely on. It also flattens the 8 am spike, since entries can come in over a day or two. And as FIFA showed, it has to hand out seats.
  2. Keep strict limits per person and check NIDs at boarding, so resold tickets are much harder to use.
  3. Publish the numbers: seats per train, seats sold per minute, and audit results. Trust grows when people can see the gap for themselves.

Some people also suggest higher prices on peak days. FIFA tried that: prices went up in at least one category for 95 of its 104 matches,11 and tickets were still hard to get. Higher prices might reduce black market profits, but they would also make train travel less affordable for the people who rely on it the most. It’s a real tradeoff, and it should be debated openly, not slipped in through software.

Conclusion

The railway will choose a new ticketing provider soon. That’s a good chance to fix security, tighten insider access, and make the rules clear, and we should push for all of it.

We should also be honest about what to expect. Whoever wins the tender, Eid tickets will still sell out in minutes next year. That won’t mean the new system failed. It’ll mean there still aren’t enough trains.

No software can solve a problem made of steel and wheels. Until supply gets closer to demand, the best any ticketing system can promise is this: you might not get a seat, but you’ll get a fair shot at one.