Interactive Arrival Guide: Tan Son Nhat Airport (SGN)
https://cdn.tailwindcss.com
https://cdn.jsdelivr.net/npm/chart.js
body {
font-family: ‘Inter’, sans-serif;
background-color: #F7F5F2;
color: #3D3D3D;
}
.bg-primary { background-color: #F7F5F2; }
.bg-secondary { background-color: #FFFFFF; }
.bg-accent { background-color: #4C7C7D; }
.text-accent { color: #4C7C7D; }
.border-accent { border-color: #4C7C7D; }
.btn-primary {
background-color: #4C7C7D;
color: white;
transition: background-color 0.3s ease, transform 0.2s ease;
}
.btn-primary:hover {
background-color: #3E6667;
transform: translateY(-2px);
}
.btn-secondary {
background-color: #E0E0E0;
color: #3D3D3D;
transition: background-color 0.3s ease;
}
.btn-secondary.active {
background-color: #4C7C7D;
color: white;
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
}
.tab-btn.active {
border-bottom: 2px solid #4C7C7D;
color: #4C7C7D;
font-weight: 600;
}
.tab-btn {
border-bottom: 2px solid transparent;
}
.flow-step {
transition: all 0.5s ease-in-out;
border: 2px solid #D1D5DB;
background-color: white;
}
.flow-step.active {
border-color: #4C7C7D;
background-color: #E8F1F1;
transform: scale(1.05);
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
.flow-step.skipped {
border-color: #FECACA;
background-color: #FEF2F2;
opacity: 0.6;
text-decoration: line-through;
}
.flow-line {
transition: all 0.5s ease-in-out;
background-color: #D1D5DB;
}
.flow-line.active {
background-color: #4C7C7D;
}
.flow-line.skipped {
background-color: #FECACA;
opacity: 0.6;
}
.chart-container {
position: relative;
width: 100%;
max-width: 600px;
margin-left: auto;
margin-right: auto;
height: 280px;
max-height: 400px;
}
@media (min-width: 640px) {
.chart-container {
height: 320px;
}
}
@media (min-width: 1024px) {
.chart-container {
height: 350px;
}
}
Arrive in Vietnam Like a VIP
Don’t let long airport queues ruin the start of your trip. Discover how to navigate Tan Son Nhat Airport in minutes, not hours.
Interactive Arrival Simulator
See your specific journey through the airport. First, select your visa type, then compare the standard process with the Fast Track option.
E-Visa / Visa-Free
Visa on Arrival (VOA)
Standard Arrival
With Fast Track
Toggle to see how the Fast Track service dramatically reduces your time in queues.
Plan Your Arrival
A smooth journey starts before you fly. Here’s everything you need to prepare for a hassle-free entry into Vietnam.
Pre-Flight Checklist
Customs Rules
Airport Transport
Passport & Visa: The Non-Negotiables
Passport Validity: Must be valid for at least **six months** beyond your entry date, with at least two blank pages.
Visa Status: Know your category:
💻
E-Visa
Recommended for most tourists (up to 90 days). You must bring a printed physical copy.
✈️
Visa on Arrival (VOA)
Requires a pre-obtained “Approval Letter”. Now used mainly for urgent cases.
What You Can Bring In
Currency Declaration
You must declare cash amounts exceeding:
$5,000 USD (or equivalent)
15,000,000 VND
Duty-Free Allowances
Alcohol: 1.5L (spirits >20%) OR 2L (wine/etc. <20%)
Tobacco: 200 cigarettes OR 20 cigars OR 250g tobacco
Medication
Carry prescription medicine in original packaging with a doctor’s note. Bring only a reasonable quantity for personal use.
Prohibited Items
Do NOT bring weapons, narcotics, explosives, pornography, or anti-government materials.
Getting to the City Center
The airport is just 6km from District 1. You have several great options:
Ride-Hailing Apps (Grab, Be, Xanh SM)
Cost-effective with upfront pricing. Xanh SM is a popular all-electric option. Find their pickup lane on the ground floor.
~130,000 – 170,000 VND
Official Taxis (Vinasun, Mai Linh)
Reliable and easy to find at the designated taxi stands. Insist on using the meter.
~150,000 – 200,000 VND
Public Bus (#109, #152)
The most budget-friendly option. Great for travelers with light luggage.
~15,000 – 40,000 VND
The Fast Track Solution
Here’s how our service transforms your arrival experience from a stressful wait into a seamless VIP welcome.
1
Meet & Greet
Our agent greets you at the jet bridge with a personalized sign.
2
VIP Visa Processing
For VOA holders, we handle all paperwork and payments while you relax.
3
Priority Immigration
We escort you through a dedicated lane, bypassing all queues.
4
Effortless Exit
You’re guided through baggage claim and customs towards your transport.
Ready for Your VIP Welcome?
Booking takes less than two minutes. Secure your stress-free arrival in three simple steps.
Step 1: Fill Form
Provide your flight and passenger details online.
Step 2: Secure Payment
Pay for the service via our secure portal.
Step 3: Get Confirmation
Receive your confirmation and arrival instructions via email.
Book Arrival Fast Track Now
Why Trust Vietnamimmigration.org?
15+ Years Experience
Serving travelers successfully since 2008.
Money-Back Guarantee
Our services are guaranteed, or you don’t pay.
PayPal Buyer Protection
Secure payments for total peace of mind.
Trusted by Travelers
See our stellar reviews on Sitejabber .
Need a Vietnamese Visa?
Don’t risk delays or rejection with complicated government forms. Let our experts handle your E-Visa or Visa on Arrival application for a fast, hassle-free process.
✓
100% Success Rate or your money back, guaranteed.
✓
Expert Review to avoid common mistakes and ensure approval.
Apply for Your Visa Securely →
© 2025 SGN Arrival Guide. All rights reserved. This is an informational tool based on the guide provided by Vietnamimmigration.org.
document.addEventListener(‘DOMContentLoaded’, function () {
const visaTypeButtons = {
evisa: document.getElementById(‘evisa-btn’),
voa: document.getElementById(‘voa-btn’)
};
const fastTrackToggle = document.getElementById(‘fastTrackToggle’);
const flowchartContainer = document.getElementById(‘flowchart-container’);
const toggleDot = document.querySelector(‘label[for=”fastTrackToggle”] .dot’);
const tabButtons = document.querySelectorAll(‘.tab-btn’);
const tabContents = document.querySelectorAll(‘.tab-content’);
let chart;
let currentVisaType = ‘evisa’;
let isFastTrack = false;
const flowchartData = {
evisa: [
{ id: ‘disembark’, text: ‘Disembark Aircraft’, fastTrackSkips: false },
{ id: ‘immigration’, text: ‘Arrival Immigration Queue’, fastTrackSkips: true },
{ id: ‘baggage’, text: ‘Baggage Claim’, fastTrackSkips: false },
{ id: ‘customs’, text: ‘Customs Check’, fastTrackSkips: false },
{ id: ‘exit’, text: ‘Exit Airport’, fastTrackSkips: false }
],
voa: [
{ id: ‘disembark’, text: ‘Disembark Aircraft’, fastTrackSkips: false },
{ id: ‘voa-counter’, text: ‘Visa on Arrival Counter Queue’, fastTrackSkips: true },
{ id: ‘immigration’, text: ‘Arrival Immigration Queue’, fastTrackSkips: true },
{ id: ‘baggage’, text: ‘Baggage Claim’, fastTrackSkips: false },
{ id: ‘customs’, text: ‘Customs Check’, fastTrackSkips: false },
{ id: ‘exit’, text: ‘Exit Airport’, fastTrackSkips: false }
]
};
const timeData = {
evisa: { standard: 60, fast: 15 },
voa: { standard: 90, fast: 20 }
};
function createFlowchart(visaType) {
flowchartContainer.innerHTML = ”;
const steps = flowchartData[visaType];
steps.forEach((step, index) => {
const stepEl = document.createElement(‘div’);
stepEl.id = `step-${step.id}`;
stepEl.className = ‘flow-step p-4 rounded-lg text-center font-semibold text-sm sm:text-base’;
stepEl.textContent = step.text;
flowchartContainer.appendChild(stepEl);
if (index {
const stepEl = document.getElementById(`step-${step.id}`);
const lineEl = document.getElementById(`line-${step.id}`);
stepEl.classList.remove(‘active’, ‘skipped’);
if (isFastTrack && step.fastTrackSkips) {
stepEl.classList.add(‘skipped’);
} else {
stepEl.classList.add(‘active’);
}
if (lineEl) {
lineEl.classList.remove(‘active’, ‘skipped’);
const nextStepIsSkipped = isFastTrack && steps[index + 1]?.fastTrackSkips;
if (isFastTrack && step.fastTrackSkips && nextStepIsSkipped) {
lineEl.classList.add(‘skipped’);
} else {
lineEl.classList.add(‘active’);
}
}
});
}
function updateChart() {
const data = timeData[currentVisaType];
const chartData = isFastTrack ? [data.fast] : [data.standard, data.fast];
const chartLabels = isFastTrack ? [‘With Fast Track’] : [‘Standard Arrival’, ‘With Fast Track’];
const datasets = [{
label: ‘Time in Minutes’,
data: chartData,
backgroundColor: [‘#FCA5A5’, ‘#4C7C7D’],
borderColor: [‘#EF4444’, ‘#3E6667’],
borderWidth: 1,
barThickness: 50
}];
if(isFastTrack) {
datasets[0].backgroundColor = [‘#4C7C7D’];
datasets[0].borderColor = [‘#3E6667’];
}
if (chart) {
chart.data.labels = chartLabels;
chart.data.datasets = datasets;
chart.update();
} else {
const ctx = document.getElementById(‘timeChart’).getContext(‘2d’);
chart = new Chart(ctx, {
type: ‘bar’,
data: {
labels: chartLabels,
datasets: datasets
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { display: false },
tooltip: {
callbacks: {
label: function(context) {
return `${context.dataset.label}: ${context.raw} mins`;
}
}
}
},
scales: {
y: {
beginAtZero: true,
title: {
display: true,
text: ‘Estimated Time (Minutes)’
}
}
}
}
});
}
}
function fullUpdate() {
updateFlowchart();
updateChart();
}
function setActiveVisaType(visaType) {
currentVisaType = visaType;
Object.values(visaTypeButtons).forEach(btn => btn.classList.remove(‘active’));
visaTypeButtons[visaType].classList.add(‘active’);
createFlowchart(visaType);
fullUpdate();
}
Object.keys(visaTypeButtons).forEach(key => {
visaTypeButtons[key].addEventListener(‘click’, () => setActiveVisaType(key));
});
fastTrackToggle.addEventListener(‘change’, (e) => {
isFastTrack = e.target.checked;
if (isFastTrack) {
toggleDot.style.transform = ‘translateX(1.5rem)’;
} else {
toggleDot.style.transform = ‘translateX(0)’;
}
fullUpdate();
});
tabButtons.forEach(button => {
button.addEventListener(‘click’, () => {
const targetTab = button.getAttribute(‘data-tab’);
tabButtons.forEach(btn => btn.classList.remove(‘active’));
button.classList.add(‘active’);
tabContents.forEach(content => {
if (content.id === `${targetTab}-content`) {
content.classList.remove(‘hidden’);
} else {
content.classList.add(‘hidden’);
}
});
});
});
setActiveVisaType(‘evisa’);
});