There are no direct flights to Bali from North America or most of Europe. So here is the one number that matters: connect through Singapore (SIN) or Doha (DOH), not Jakarta (CGK), and you save four to six hours and one less domestic transfer that almost nobody warns you about. That is the article in one sentence. The rest is the why, the when, the cost, and the things you find out the hard way at 3 a.m. local time.
In This Article
- Where you actually land: Ngurah Rai (DPS)
- Direct routes by region (the real list, 2025)
- Intra-Asia (the easy ones)
- Middle East (the long-haul connector tier)
- Oceania (the easy ones from down south)
- The reality from North America and most of Europe
- Why connecting through Jakarta is almost always the wrong move
- The hubs that actually work for Bali
- Singapore (SIN) on Singapore Airlines or Scoot
- Doha (DOH) on Qatar Airways
- Hong Kong (HKG) on Cathay Pacific
- Seoul (ICN) on Korean Air or Asiana
- Tokyo (NRT) on Garuda Indonesia
- Kuala Lumpur (KUL) on AirAsia or Malaysia Airlines
- When to book: best months for fares
- What it actually costs (rough fare bands)
- The Indonesian Tourism Levy (Rp 150,000)
- Pay it before you fly (the only sensible option)
- Visa: visa-on-arrival, e-VOA, or visa-exempt
- Getting from DPS to where you are actually staying
- Grab (the rideshare app)
- Bluebird taxi
- Hotel transfer
- The wild card: red taxi mafia
- The first few hours after landing
- What to skip and what to splurge on
- Putting it all together: a sample cheap Bali itinerary from London
- One last note on what changes

I have done the Bali run six different ways across four trips. Singapore Airlines from JFK via Frankfurt and SIN. Qatar from London via Doha. Cathay from LAX via HKG. KLM from Amsterdam via Singapore. The cheap one through Kuala Lumpur on AirAsia, which I will not do again. And the slow one via Jakarta on Garuda, which is also off my list. The price spread between best and worst was about 35 percent. The time spread was nearly twelve hours. So you will want to read past the headline fare on Skyscanner before you book.
Where you actually land: Ngurah Rai (DPS)

Bali has one international airport. It is officially I Gusti Ngurah Rai International Airport (DPS), named after a Balinese resistance leader killed by the Dutch in 1946. Locals just call it Ngurah Rai or sometimes Bandara. It sits on the narrow isthmus between the south coast and the Bukit peninsula, in the Tuban area just south of Kuta, and the runway juts out into the sea on a reclaimed strip. If you fly in at golden hour from the east or south, the descent is the best window seat on the trip.
Functionally there are two terminals: international (T2) and domestic (T1). They sit next to each other and you can walk between them in about ten minutes if you know what you are doing, which the airport’s wayfinding does not always make obvious. The international terminal is the one with the dramatic curved wave roof and the candi bentar (the traditional Balinese split-gate, in italics on first use, then plain) over the entrance.

One quirk worth knowing on arrival: the immigration hall has banks of e-gates for visa-on-arrival e-visa holders and a second set of counters for the in-person visa-on-arrival queue. The e-gate line is dramatically faster, sometimes 5 minutes versus 90, so it is worth doing the e-visa step before you board. More on that below.
Direct routes by region (the real list, 2025)

Direct service to DPS has expanded since 2023, but the geography hasn’t moved. Bali is a long way from anywhere outside Asia and Oceania. Here is the real list, broken by region. Specific carriers and frequencies change, so check Skyscanner or Google Flights for the day you actually want to fly.
Intra-Asia (the easy ones)
From within Asia, you have plenty of direct options:
- Jakarta (CGK): Garuda Indonesia, Citilink, Lion Air, Batik, Pelita, Super Air Jet. Over 25 flights daily, every hour or two. Roughly 1h50.
- Singapore (SIN): Singapore Airlines, Scoot, Jetstar Asia, AirAsia. Several daily, 2h35.
- Kuala Lumpur (KUL): AirAsia, Malaysia Airlines, Batik Air. Multiple daily, 3h.
- Bangkok (BKK): Thai Airways, AirAsia, Vietjet. Daily, 4h.
- Hong Kong (HKG): Cathay Pacific, sometimes Hong Kong Airlines. Daily, around 5h.
- Tokyo (NRT): Garuda. Daily, around 7h. (ANA and JAL do not currently fly DPS, which surprises people.)
- Seoul (ICN): Korean Air, Asiana, Garuda. Daily-ish, 7h.
- Taipei (TPE): China Airlines, EVA Air. Daily, around 5h.
- Shanghai (PVG), Guangzhou (CAN), Shenzhen (SZX): China Eastern, China Southern, Xiamen Airlines. Schedules less stable post-COVID, so verify before counting on it.
- Manila (MNL): Philippine Airlines, Cebu Pacific. Daily, 4h30.
Middle East (the long-haul connector tier)

From or via the Gulf, you have three solid options:
- Doha (DOH): Qatar Airways. Daily, 9h. This is the one to book from London, Manchester, Edinburgh and most of Europe.
- Dubai (DXB): Emirates. Daily, 9h. Slightly longer total trip from most European origins because DXB is further than DOH, but the lounge is famous.
- Abu Dhabi (AUH): Etihad, codeshare with Garuda. Less frequent, sometimes routed via Singapore, so check the actual itinerary.
Oceania (the easy ones from down south)
If you are coming from Australia or New Zealand, Bali is basically a long domestic flight:
- Perth (PER): 3h35
- Darwin (DRW): 3h10
- Brisbane (BNE): 6h
- Sydney (SYD), Melbourne (MEL): 6h20
- Adelaide (ADL): 5h30
- Cairns (CNS): 5h30
- Auckland (AKL): 8h via direct on Air New Zealand seasonally; otherwise SYD or MEL connection.
Carriers from Oceania include Jetstar, Virgin Australia, Qantas, Garuda Indonesia, AirAsia X, and Batik Air Malaysia. Aussies also get the most aggressive sale fares of any market into Bali; PER round-trips can drop into the low AU$300s on Jetstar in shoulder season.
The reality from North America and most of Europe

This is the section that actually changes how you book. There are no direct flights to Bali from anywhere in the continental US, Canada, the UK, or most of mainland Europe. Not yet, and probably not for the foreseeable future, despite Garuda periodically announcing a Los Angeles route that never quite materialises. Every single itinerary is one or two stops, somewhere in Asia or the Middle East.
That changes the calculation. Instead of comparing direct vs connecting, you are comparing connection points. And the connection point matters enormously, because:
- Two stops is significantly worse than one stop for total travel time and stress, and the price difference is rarely worth it.
- Some hubs are pleasant to transit (Doha, Singapore, Hong Kong); others are punishing (Beijing PEK transit visa rules, Manila MNL terminal-change confusion).
- The final leg from your hub to DPS is what determines whether you arrive at midnight or 6 a.m., which then determines whether you spend Rp 500,000 on a hotel room you barely sleep in.
Why connecting through Jakarta is almost always the wrong move

Here is the thing that travel agents and naive booking engines will not tell you. Yes, on paper, Jakarta has the most flights to Bali. Garuda alone runs almost two dozen daily. Lion Air and Citilink run more. From a search engine’s perspective, CGK looks like the obvious connection.
It is not. Here is what actually happens when you connect through CGK from a long-haul international flight:
- You land at CGK Terminal 3 international arrivals.
- You clear Indonesian immigration in Jakarta even though Bali is your final destination. This is a real queue, sometimes 60-90 minutes during peak.
- You collect your bags from the international carousel.
- You walk or shuttle (signs vary in clarity) to the domestic check-in for your CGK-DPS leg.
- You re-check your bags, clear domestic security, and wait at the gate.
- You fly the final two-hour leg.
- You collect bags again at DPS and clear customs.
That is two immigration stamps, two baggage claims, and a domestic transfer that adds 4-6 hours minimum to a trip that was already 18+ hours. The fare is rarely cheaper than just flying SIN-DPS or KUL-DPS instead. And if your inbound long-haul is delayed, you almost certainly miss the domestic connection because separate tickets do not protect each other.
The exception: if you are flying Garuda end-to-end on a single ticket from a city Garuda serves direct (like Tokyo NRT, Seoul ICN, or Sydney), and they are routing you via CGK on their own metal with through-checked bags. Then it is fine. Otherwise pick a different hub.
The hubs that actually work for Bali
If you are flying from outside Asia, these are the connection points that make sense, ranked roughly by how often I would pick them.
Singapore (SIN) on Singapore Airlines or Scoot
SIN-DPS is 2h35, with several flights a day on Singapore Airlines, Scoot (the budget arm), Jetstar Asia, and AirAsia. Singapore Airlines runs a long-haul network that hits the US (LAX, SFO, JFK, ORD, IAH, EWR, SEA), the UK (LHR, MAN), and most of mainland Europe. The transit experience at Changi is genuinely good: terminal 2 has the Jewel waterfall, you can take a free city tour if your layover is over five hours, and the showers are affordable. Total time from JFK or LHR to DPS via SIN is typically 22-25 hours including layover.
Best for: most of Europe, and the US East Coast and West Coast.
Doha (DOH) on Qatar Airways
DOH-DPS is 9h, daily, on Qatar’s 777 or 787. Qatar’s network out of Doha is enormous: most of Europe, most of the US East Coast, much of South America, and a heavy African presence. Hamad International Airport is one of the better transit airports anywhere; the Al Mourjan business lounge is iconic, and even the public terminal is comfortable. Total LHR-DOH-DPS or LGW-DOH-DPS is around 21 hours.
Best for: the UK, most of Europe, and the US East Coast.
Hong Kong (HKG) on Cathay Pacific
HKG-DPS is around 5h, daily on Cathay. HKG is well-connected from the US West Coast (LAX, SFO, ORD, JFK, EWR, BOS, IAD, YVR) and from London. The Cathay business cabin and the Pier lounge are both highly regarded. Total time from SFO via HKG is roughly 21-23 hours.
Best for: the US West Coast and Canada.
Seoul (ICN) on Korean Air or Asiana
ICN-DPS is about 7h, daily on Korean Air (SkyTeam) and several times a week on Asiana (Star Alliance). Seoul is a strong hub from US West Coast cities and from JFK, ORD, IAD, ATL, SEA. ICN is consistently rated one of the best airports in the world for transits.
Best for: US West Coast, JFK, and anyone collecting SkyTeam or Star Alliance miles.
Tokyo (NRT) on Garuda Indonesia
NRT-DPS is direct on Garuda, daily. Tokyo is well served from the US (LAX, SFO, JFK, ORD, IAH, SEA) on Delta, ANA, JAL, United, and others. ANA and JAL do not fly direct to Bali themselves, but you can fly them to NRT or HND, then connect to Garuda for the final leg. The ANA cabin is famously good. Total LAX-NRT-DPS is around 22 hours.
Best for: anyone with ANA, JAL, or United miles, and travellers who want to add a few days in Tokyo to the trip.
Kuala Lumpur (KUL) on AirAsia or Malaysia Airlines
KUL-DPS is about 3h, multiple daily on AirAsia and Malaysia Airlines. Often the cheapest connection from Europe via the AirAsia X long-haul network from London Stansted or Manchester. The catch: separate tickets and budget-airline baggage rules mean you really need to plan the layover. AirAsia X has had famously inconsistent schedules; double-check the day you fly.
Best for: Europe travellers who want the absolute cheapest fare and have time on the ground at KUL.
When to book: best months for fares

Bali fares move on a few overlapping calendars: Indonesian school holidays, Australian holidays, Chinese New Year, Japanese Golden Week, and the southern-hemisphere summer rush around Christmas and New Year. The cheapest weeks consistently are:
- February to early April: low season for international, the tail of the wet season. Fewer flights are full. Wet-season weather is mostly afternoon thunderstorms, not all-day rain, so the trade-off is real but workable.
- October to mid-November: shoulder season. Dry weather is back, the Australian summer rush hasn’t kicked in, and Northern Hemisphere school holidays are over.
The cheapest weeks to avoid:
- July to August: peak season. Australian and European summer holidays. Fares from London or Sydney can double versus shoulder.
- December 25 to January 5: holiday peak. Worst of the year. From Sydney during Christmas week, you can pay AU$1,200+ for what costs AU$450 in October.
- Chinese New Year week (varies, late Jan to mid-Feb): regional Asian fares spike on intra-Asia routes.
- Indonesian Eid holiday (varies): Jakarta-Bali domestic flights become impossible to find at any price for about a week. If you are connecting via CGK during Eid, build in a day buffer or pick a different hub.
Book three to four months in advance for shoulder season; six months for July-August or Christmas. Tuesday-Wednesday departures are typically cheaper than Friday-Sunday by 10-20 percent.
What it actually costs (rough fare bands)
Specific fares date the moment you publish them, so these are the bands you should expect to see in shoulder season for round-trip economy. Peak season pushes the upper end. Sales push the lower end. Premium cabins are 3-5x economy.
- London to Bali: GBP 600-1,200 economy round-trip. Qatar via DOH and Singapore Airlines via SIN are the consistent best-value full-service options. AirAsia X via KUL can drop into the GBP 450 range if you pack light.
- Amsterdam to Bali: EUR 650-1,400. KLM via SIN is the obvious option (codeshare with Singapore Airlines), but Qatar via DOH is often cheaper.
- New York (JFK) to Bali: USD 1,100-1,800. Singapore Airlines direct JFK-FRA-SIN-DPS is comfortable. Cathay via HKG is sometimes a few hundred cheaper. Qatar via DOH is the third option.
- Los Angeles (LAX) to Bali: USD 1,000-1,500. Singapore Airlines via NRT-SIN, EVA via TPE, Korean via ICN, Cathay via HKG are all competitive. China Eastern and China Southern via PVG/CAN are usually cheapest but the layover experience is rough.
- Sydney to Bali: AU$450-1,000. Jetstar, Virgin Australia, Garuda. Direct flights so it is a straight comparison.
- Tokyo (NRT) to Bali: JPY 50,000-100,000 round-trip on Garuda direct.
- Singapore to Bali: SGD 170-360. Genuinely cheap if you find yourself in Singapore on the way back from somewhere else and want to tack on a Bali week.
For points and miles, the sweet spot is Singapore Airlines KrisFlyer (Amex Membership Rewards transfer partner) for premium cabin, or Aeroplan / United for Star Alliance saver awards. Expect 38,000-45,000 miles each way in economy from the US to DPS, and 88,000-120,000 in business. Qatar via Avios is also routinely good value out of Europe.
The Indonesian Tourism Levy (Rp 150,000)

Since 14 February 2024, every foreign visitor entering Bali has had to pay an International Tourist Levy of Rp 150,000 (about $9.50 / GBP 7.50), one-time, valid for the duration of your trip. This is not the visa fee. It is separate. Every foreign tourist pays it, including infants, including people transiting from Jakarta to Bali on a domestic flight, including everyone who is not a permit holder (KITAP, KITAS, diplomatic visa, student visa, golden visa, or crew).
The levy was introduced under Bali Provincial Regulation No. 6 of 2023. The official line is that the money funds three things: cultural preservation (temple maintenance, ceremony support, traditional arts), environmental protection (waste management, beach cleanup, marine conservation), and tourism infrastructure. Locals I have spoken with are skeptical about how transparently the funds are used, which is fair, but the levy itself is real and required.
Pay it before you fly (the only sensible option)
Two ways to pay:
- Online via the official Love Bali platform at lovebali.baliprov.go.id, or via the Love Bali mobile app. You enter passport details, arrival date, and pay by card or QRIS. You get a QR code voucher emailed within minutes (check spam). Print it or save it offline. This is what to do.
- At the airport on arrival. There are dedicated counters in the international arrivals area at DPS that take cashless payment only. The queue can be 30-60 minutes during peak arrivals. Skip this if at all possible.
Two warnings worth flagging. First: the only legitimate website is lovebali.baliprov.go.id (note the .go.id government domain). There are several scam sites that look identical and charge inflated fees, sometimes Rp 500,000-1,000,000. If you Google it, double-check the URL. Second: pay in IDR if your card supports it, not in your home currency. The platform’s fixed exchange rate is sometimes worse than your card’s.
While you are sorting out the practical bits, the Travel Tips section has a few more pieces worth reading before you fly.
Visa: visa-on-arrival, e-VOA, or visa-exempt

As of 2025, citizens of about 90 countries can get a visa on arrival (VOA) or an electronic visa on arrival (e-VOA) for Bali. This is the most common path. The list includes the US, UK, Canada, Australia, New Zealand, all EU member states, Singapore, Malaysia, Japan, South Korea, India, Brazil, the UAE, and many others. ASEAN passport holders (Brunei, Cambodia, Laos, Malaysia, Myanmar, Philippines, Singapore, Thailand, Vietnam) can enter visa-free under the regional bilateral agreement.
Key facts as I understand them right now (verify on the official Indonesian e-visa portal, evisa.imigrasi.go.id, before you fly because policy moves):
- Visa fee: Rp 500,000 (about $32). Payable in IDR, USD, or by card.
- Validity: 30 days from entry, extendable once for another 30 days for an additional Rp 500,000.
- Passport rule: minimum six months validity beyond your departure date from Indonesia. This is enforced. They check.
- Onward ticket: a return or onward flight ticket is technically required. Spot-checked rather than universally enforced, but I would not gamble on it.
- e-VOA: pay online before you fly at evisa.imigrasi.go.id and you get a PDF with a QR code. Use the e-gates at DPS instead of the manual VOA queue. Saves an hour easily.
- Electronic customs declaration: also mandatory, fill it out at ecd.beacukai.go.id within three days before arrival. Brings up your QR code at customs.
- Overstay penalty: Rp 1,000,000 per day. Add it up before you decide to wing it.
For longer stays (remote work, retirement, surf seasons that bleed into months), you are looking at the B211A visit visa (60 days, extendable twice), the new E33G remote-worker visa, the Second Home Visa, or the KITAS work permit if you are actually being employed locally. All are beyond the scope of a flight article, but it is worth knowing they exist before you assume you can just keep extending VOAs forever (you cannot).
Getting from DPS to where you are actually staying

The airport-to-accommodation transfer is where Bali first tries to charge you a tourist tax of its own. The fares vary wildly depending on whether you negotiate, prebook, or just walk out and use Grab. Here is what you should expect.
Grab (the rideshare app)
Grab is the Southeast Asian Uber. It works at DPS, but with a quirk: the airport doesn’t allow Grab pickup at the curb directly, the result of a long-running dispute with the licensed taxi mafia. You walk from arrivals to the designated Grab pickup zone (signposted, but ten minutes from the terminal). Expected fares from DPS:
- To Kuta or Legian: Rp 70,000-120,000 (about $4.50-7.50). 15-30 minutes depending on traffic.
- To Seminyak: Rp 100,000-180,000 (about $6.50-11.50). 25-50 minutes.
- To Canggu: Rp 150,000-250,000 ($9.50-16). 40-90 minutes. Canggu traffic is genuinely the worst.
- To Sanur: Rp 100,000-160,000 ($6.50-10). 25-45 minutes.
- To Ubud: Rp 250,000-400,000 ($16-25.50). 60-90 minutes.
- To Uluwatu: Rp 150,000-250,000 ($9.50-16). 40-60 minutes.
- To Nusa Dua: Rp 100,000-180,000 ($6.50-11.50). 20-30 minutes.
The Grab app in Indonesia accepts foreign credit cards and is in English. Download and create the account before you fly so you are not fighting the airport WiFi after a 14-hour journey. Gojek is the local rival and works similarly; either is fine.
Bluebird taxi
The licensed taxi at DPS is Bluebird (the actual blue sedan ones, not the imitators wearing similar paint jobs). Metered, generally fair, marginally pricier than Grab. From DPS to Seminyak you might pay Rp 150,000-220,000. Worth knowing about for late-night arrivals when Grab pickup at the designated zone feels less appealing. Bluebird also has its own app (My Blue Bird) which is reliable.
Hotel transfer
Almost every hotel will offer to arrange airport pickup. The fare is typically 50-100 percent above Grab. From DPS to Ubud, hotel transfer might be Rp 600,000-800,000 versus Grab at Rp 300,000-400,000. The exception: villas in Canggu, Uluwatu, or Sidemen where signage is poor and the driver knowing the place matters. For a first arrival into somewhere remote, the hotel transfer overpayment is sometimes worth it. For Kuta or Seminyak, just take Grab.
The wild card: red taxi mafia
Outside the airport you will be approached by drivers offering “official airport taxi” for “a special price.” It is rarely a special price. They will quote Rp 350,000 to Kuta, which is roughly four times what Grab charges. Decline politely, walk to the Grab pickup zone, and use the app. The fare is not the only reason; the drivers also have a track record of routing through “their friend’s gold shop” or “a quick Pak’s spice plantation” before getting you to the hotel.
The first few hours after landing

If you have been awake for 24 hours and your only goal is to not collapse before sunset local time, the move is: eat something hot, drink water, do not nap. The standard cure is a plate of nasi goreng at the first warung (small family-run eatery, in italics first use, then plain) you pass. Rp 30,000-50,000, comes out in five minutes, sets you right. Your hotel restaurant will charge Rp 90,000-180,000 for the same plate; do not pay the markup unless you are too jet-lagged to walk.
If you land late and want to sleep, fine. If you land in the morning, force yourself to stay up until at least 9 p.m. Get a swim in the ocean in the late afternoon; the cold-water shock is genuinely useful for resetting the body clock.
While you are settling in, it is worth knowing what the offerings on the dashboard, the morning chants from the banjar, and the small palm-leaf baskets at every doorway actually mean. The Balinese Hindu cultural framework shapes daily life on the island in ways that are easy to walk past for the first few days.
What to skip and what to splurge on

A few opinions from someone who has done this trip more times than I want to count.
Skip: the airport SIM card desk. The kiosks at DPS arrivals charge double what you pay at any phone shop in Kuta the next morning, and an eSIM (Airalo, Holafly, GigSky) is faster, cheaper, and active before you walk out of the terminal. Skip the airport ATMs unless you have to (they have lower limits and worse rates than the BCA ATMs in town). Skip pre-buying transport vouchers from your hotel before you have looked at Grab fares.
Splurge: on lounge access if your layover is over four hours, particularly at SIN, DOH, HKG, or NRT. The PriorityPass or Plaza Premium fee is genuinely worth it if you want to land in Bali functional rather than wrecked. Splurge on premium economy if it is within reach for a 14-hour leg; the leg-room-and-recline difference is large.
Genuinely worth booking ahead: a fast-track immigration service if you are arriving on a Saturday-morning peak slot (Bali Premium Pass and similar, about $30-50). Saves you an hour to ninety minutes when six wide-body flights land in a 30-minute window.
Putting it all together: a sample cheap Bali itinerary from London
For concrete grounding, here is what a no-frills first-timer trip from London might look like at the cheap end.
- Book Qatar Airways London-Doha-Denpasar in early November for around GBP 700 round-trip economy. Tuesday departure, Thursday return.
- Pay the Indonesian Tourism Levy online: Rp 150,000.
- Apply for the e-VOA online: Rp 500,000.
- Fill the electronic customs declaration the day before flying: free.
- Land at DPS around 5 p.m. local. E-gate immigration in 5 minutes.
- Grab from DPS pickup zone to a Seminyak homestay: Rp 130,000.
- First dinner at a warung: Rp 40,000 nasi goreng, Rp 10,000 Bintang.
- Total before accommodation, day one: about GBP 720 plus the in-country bits, which is roughly the price of a long-weekend in Lisbon.
The trip is worth doing properly. The bit nobody tells you is that the flight is the largest single decision and it is the one you have most leverage over. Pick the right hub, fly in shoulder season, do the visa and levy paperwork before you board, and the rest is mostly easier than you think. Then once you are on the ground, the real work starts: figuring out which beach, which warung, which morning ceremony to wander past. The Things to Do section has some starting points.
One last note on what changes
Indonesia tweaks visa rules, the tourism levy amount, and the airport’s fast-track services more often than most countries. The big things (DPS being the only international airport, no direct flights from North America or most of Europe, Qatar via DOH and Singapore Airlines via SIN being your best long-haul options, the levy being a real and required Rp 150,000) are stable. Specific fees and processes shift quarterly. Cross-check the current state on the official sites before you fly: lovebali.baliprov.go.id for the levy, evisa.imigrasi.go.id for the visa, ecd.beacukai.go.id for the customs declaration. Not the look-alike scam ones.
And if you are reading this as someone about to take their first long-haul flight to Indonesia, here is the only travel advice I have not put in any of the practical sections above: when the wheels touch down at Ngurah Rai and the cabin smells of sugarcane and faint frangipani through the door seal, you have already done the hard part. The rest is just figuring out where to put your bags down.
