Interactive Guide: Dong Hoi Airport Arrival
https://cdn.tailwindcss.com
https://cdn.jsdelivr.net/npm/chart.js
body {
font-family: ‘Inter’, sans-serif;
scroll-behavior: smooth;
}
.step-connector {
flex-grow: 1;
height: 2px;
background-color: #d1d5db;
}
.process-step {
transition: all 0.3s ease-in-out;
border-color: #d1d5db;
}
.process-step.active {
border-color: #0d9488;
background-color: #ccfbf1;
transform: translateY(-4px);
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
}
.process-step.inactive {
filter: grayscale(80%);
opacity: 0.6;
}
.process-step.pain-point.active {
border-color: #ef4444;
background-color: #fee2e2;
}
.chart-container {
position: relative;
width: 100%;
max-width: 600px;
margin-left: auto;
margin-right: auto;
height: 300px;
max-height: 400px;
}
@media (min-width: 768px) {
.chart-container {
height: 350px;
}
}
Arrive in Vietnam Stress-Free
This guide makes navigating Dong Hoi Airport simple. Select your traveler type below to see your personalized arrival process and discover how to skip the queues.
Start Here: How Are You Arriving?
I have an E-Visa or am Visa-Free
I need a Visa On Arrival (VOA)
Please select your traveler type above to view your arrival steps.
Your Arrival Pathway
Details about the selected step will appear here.
The Ultimate Solution: Expedited Entry Service
Why wait? Our VIP service is designed to get you through the airport in minutes, not hours.
โฑ๏ธ
Save Precious Time
Bypass all queues at the VOA counter and immigration. Your vacation starts the moment you land.
๐
Eliminate Stress
No need to worry about procedures or long waits. Our staff handles everything for you.
๐ค
Personal Assistance
Be greeted by our professional, English-speaking staff who will escort you through every step.
๐
Problem Solver
Forgot your passport photo or cash for the stamping fee? We’ll help you sort it out on the spot.
Your Pre-Travel Checklist
Passport valid for 6+ months with 2 blank pages.
Printed copy of E-Visa or VOA Approval Letter.
Hotel address and contact info accessible.
For VOA: 1 passport photo (4x6cm) & cash for stamping fee (US$25 or US$50).
No prohibited items in luggage.
Transport from VDH Airport
Compare options for getting to Dong Hoi city center (~6km).
Ready to Book Your VIP Arrival?
100%
Money-Back Guarantee
โ
PayPal Buyer Protection
We are a trusted, long-standing service dedicated to making your Vietnam trip seamless from the very start. See what our customers say and book with confidence.
© 2024 VietnamImmigration.org. Your trusted partner for Vietnam travel.
document.addEventListener(‘DOMContentLoaded’, function() {
const btnEvisa = document.getElementById(‘btn-evisa’);
const btnVoa = document.getElementById(‘btn-voa’);
const processPlaceholder = document.getElementById(‘process-placeholder’);
const processDiagram = document.getElementById(‘process-diagram’);
const detailsText = document.getElementById(‘details-text’);
const steps = {
voaCounter: document.getElementById(‘step-voa-counter’),
immigration: document.getElementById(‘step-immigration’),
baggage: document.getElementById(‘step-baggage’),
customs: document.getElementById(‘step-customs’),
exit: document.getElementById(‘step-exit’),
};
const stepDetailsContent = {
default: “Click on a step above to see more details.”,
voaCounter: “
Step 1: Landing Visa Counter. You must first get your visa sticker here. This is a common bottleneck with long waits.
Problem: Long queues and strict requirements (photo, cash). Our
Expedited Service handles this for you.”,
immigration: “
Step 2: Immigration Checkpoint. Present your passport and visa/e-visa for your entry stamp.
Problem: All passengers face potentially long queues here. Our
Expedited Service escorts you through the priority lane.”,
immigration_evisa: “
Step 1: Immigration Checkpoint. Go directly here with your passport and printed e-visa.
Problem: You will still face queues with all other passengers. Our
Expedited Service escorts you through the priority lane to skip the wait.”,
baggage: “
Next Step: Baggage Claim. Proceed downstairs to collect your checked luggage from the assigned carousel.”,
customs: “
Next Step: Customs Check. With your bags, walk through the Green Channel (nothing to declare) or Red Channel (items to declare).”,
exit: “
Final Step: Welcome to Vietnam! You’ve cleared all formalities. Exit to the arrivals hall to find taxis, and start your adventure.”
};
function resetAllSteps() {
Object.values(steps).forEach(step => {
step.classList.remove(‘active’, ‘inactive’, ‘pain-point’);
});
detailsText.innerHTML = stepDetailsContent.default;
}
function activateStep(stepElement, contentKey) {
Object.values(steps).forEach(s => s.classList.remove(‘active’));
stepElement.classList.add(‘active’);
detailsText.innerHTML = stepDetailsContent[contentKey];
}
btnEvisa.addEventListener(‘click’, () => {
processPlaceholder.classList.add(‘hidden’);
processDiagram.classList.remove(‘hidden’);
resetAllSteps();
btnEvisa.classList.add(‘bg-teal-50’);
btnVoa.classList.remove(‘bg-teal-50’);
steps.voaCounter.classList.add(‘inactive’);
steps.immigration.classList.add(‘active’, ‘pain-point’);
steps.baggage.classList.add(‘active’);
steps.customs.classList.add(‘active’);
steps.exit.classList.add(‘active’);
activateStep(steps.immigration, ‘immigration_evisa’);
});
btnVoa.addEventListener(‘click’, () => {
processPlaceholder.classList.add(‘hidden’);
processDiagram.classList.remove(‘hidden’);
resetAllSteps();
btnVoa.classList.add(‘bg-teal-50’);
btnEvisa.classList.remove(‘bg-teal-50’);
steps.voaCounter.classList.add(‘active’, ‘pain-point’);
steps.immigration.classList.add(‘active’, ‘pain-point’);
steps.baggage.classList.add(‘active’);
steps.customs.classList.add(‘active’);
steps.exit.classList.add(‘active’);
activateStep(steps.voaCounter, ‘voaCounter’);
});
steps.voaCounter.addEventListener(‘click’, () => {
if(!steps.voaCounter.classList.contains(‘inactive’)) {
activateStep(steps.voaCounter, ‘voaCounter’);
}
});
steps.immigration.addEventListener(‘click’, () => {
const content = steps.voaCounter.classList.contains(‘inactive’) ? ‘immigration_evisa’ : ‘immigration’;
activateStep(steps.immigration, content);
});
steps.baggage.addEventListener(‘click’, () => activateStep(steps.baggage, ‘baggage’));
steps.customs.addEventListener(‘click’, () => activateStep(steps.customs, ‘customs’));
steps.exit.addEventListener(‘click’, () => activateStep(steps.exit, ‘exit’));
const ctx = document.getElementById(‘transportChart’).getContext(‘2d’);
const transportChart = new Chart(ctx, {
type: ‘bar’,
data: {
labels: [‘Taxi’, ‘Bus’, ‘Private Car’],
datasets: [{
label: ‘Estimated Cost (VND)’,
data: [125000, 15000, 450000],
backgroundColor: [ ‘rgba(13, 148, 136, 0.6)’, ‘rgba(203, 213, 225, 0.6)’, ‘rgba(59, 130, 246, 0.6)’],
borderColor: [ ‘rgb(13, 148, 136)’, ‘rgb(203, 213, 225)’, ‘rgb(59, 130, 246)’],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: ‘y’,
scales: {
x: {
beginAtZero: true,
ticks: {
callback: function(value, index, values) {
return new Intl.NumberFormat(‘vi-VN’).format(value) + ‘ โซ’;
}
}
}
},
plugins: {
legend: { display: false },
title: {
display: true,
text: ‘Cost vs. Convenience’
},
tooltip: {
callbacks: {
label: function(context) {
let label = context.dataset.label || ”;
if (label) {
label += ‘: ‘;
}
if (context.parsed.x !== null) {
label += new Intl.NumberFormat(‘vi-VN’, { style: ‘currency’, currency: ‘VND’ }).format(context.parsed.x);
}
let extraInfo = ”;
if (context.label === ‘Taxi’) extraInfo = ‘ | ~10-15 mins’;
if (context.label === ‘Bus’) extraInfo = ‘ | ~20-30 mins’;
if (context.label === ‘Private Car’) extraInfo = ‘ | ~10-15 mins (pre-booked)’;
return label + extraInfo;
}
}
}
}
}
});
});