// Adds dimensions UUID, Author and Topic into GA4
Wednesday, June 24, 2026
28.9 C
Singapore

Diner says restaurants now imposing 10% service charge for ordering via QR codes

SINGAPORE: After discovering that restaurants use QR codes to impose a 10% service charge, a Reddit user took to social media to vent his frustration at this system.

QR codes have become increasingly popular in recent years because of their many advantages to customers and restaurants. For example, QR codes allow customers to browse menus, make orders, and settle their bills without interacting with a waitperson or cashier. However, according to some, restaurants have taken advantage of this technology to add a service charge.

A Reddit user u/haikallp on r/singapore stated that this practice in restaurants had “rubbed him the wrong way.”

“More and more restaurants are moving towards diners having to scan a QR code that brings you to the restaurant’s page, order from there and some even force you to pay on there,” he wrote.

“They have the cheek to charge a 10% service charge when all they do is serve the food. IDK, it just seems sh**ty. What are your thoughts?” he added.

Diners vs QR code

Numerous Reddit users have also aired their frustrations and shared their experiences in the comments sections, criticizing the establishments that employ QR codes to tack on a charge.

“I dont mind the QR code ordering / Paying / DIY payment. No difference to a book of Menu vs online payment. What pisses me off – Remove all the manpower, no one to ask questions or suggestions or waiting for ages to get the food. Then slapping with a 10% service charge. Refuse to go to the kind of places,” one wrote.

“Actually, is it just me who feels the 10% svc charge should go to the wait team only, not through the management? I always felt like it is akin to tipping in the US but of course more transparent upfront to paying customers,” another one commented.

One Reddit user also offered a plausible explanation for why restaurants might charge an extra 10% for the service fee, even though they’re just technically serving the food.

“I saw someone suggesting perhaps service charge for the chef/cooks. I think the service charge is still valid if you include the staff who make the drinks, runs the food & drinks, busses the tables, and washes the dishes,” the user wrote.

10% Service Charge

The 10% service charge is a common practice among restaurants in Singapore, and there appears to be no law that requires it, according to Singapore Legal Advice.

If, however, the court is informed of instances where a customer refuses to pay the service charge due to inadequate service at a certain establishment, there is an extremely high likelihood that the customer will still be liable for the service charge. 

The 10% service charge is usually stated on the menus and signs of the establishment, which means the customer is aware of the charge before placing their order and paying for their food. Therefore, it would not be right for the customer to refuse payment after dining at the establishment.

In addition, it is also stated that the 10% fee does not depend on the level of service provided.

- Advertisement -

Hot this week

Johor’s RM260 billion economic blueprint: What JETP means for the state and for Singapore

Johor's long-term economic blueprint, the Johor Economic Transformation Plan, targets a GDP of RM260 billion and 200,000 new jobs by 2030, with each region assigned a distinct strategic role from A...

‘I hope they continue spotlighting NS to build momentum’: Singaporeans applaud MenToo movement for acknowledging what goes unsaid

Reactions to the MenToo movement. Singaporeans online have been largely positive to MenToo, A Reddit user wrote, "I’m very, very surprised to see our state media, for a rare time, acknowledge how ...

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //
Enable Notifications OK No thanks