Urgent Vietnam Visa Rescue | 2-Hour Expedited Service
https://cdn.tailwindcss.com
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js
body {
font-family: ‘Lato’, sans-serif;
background-color: #fdfbf7; /* Warm neutral background */
color: #334155;
}
h1, h2, h3, h4, .serif-font {
font-family: ‘Playfair Display’, serif;
}
.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;
}
}
/* Custom Shapes for Icons since no SVG */
.circle-icon {
width: 40px;
height: 40px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
font-size: 1.2rem;
}
.step-line {
width: 2px;
background-color: #cbd5e1;
flex-grow: 1;
min-height: 20px;
}
.active-tab {
border-bottom: 2px solid #d97706;
color: #1e3a8a;
font-weight: 700;
}
.inactive-tab {
color: #64748b;
}
.pulse-dot {
width: 10px;
height: 10px;
background-color: #22c55e;
border-radius: 50%;
box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7);
animation: pulse-green 2s infinite;
}
.pulse-dot-red {
width: 10px;
height: 10px;
background-color: #ef4444;
border-radius: 50%;
box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7);
animation: pulse-red 2s infinite;
}
@keyframes pulse-green {
0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7); }
70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(34, 197, 94, 0); }
100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
}
@keyframes pulse-red {
0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7); }
70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); }
100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
}
Don’t Miss Your Flight to Vietnam
The Definitive 2-Hour Expert Lifeline for Urgent Visas. We navigate the bureaucracy so you can board your plane.
Select Your Current Situation
We need to know where you stand to provide the correct accelerated solution.
Pending Application
“I submitted on the Gov portal but it’s stuck.”
Accelerate Now →
New Emergency
“I haven’t applied or I just realized I need one.”
Start Fresh Application →
Why You Need a Specialist Right Now
When you are facing a tight departure deadline, the standard “official” channels become risky due to unpredictable processing times and a lack of support.
The section below visualizes exactly how our intervention transforms a variable, stressful wait into a guaranteed timeline.
We leverage direct local connections to bypass the queue.
Processing Time Comparison: Standard vs. Expert
* Standard times vary based on workload. Our times are guaranteed within working hours.
Please Select Your Situation Above
Choose “Pending Application” or “New Emergency” to see your customized rescue plan, pricing, and requirements.
The Gold Standard of Reliability
Since 2007, we have been the industry leader in Vietnam visa solutions.
When your trip is on the line, “hope” is not a strategy. You require a partner with a proven track record of excellence.
Our 99.9% success rate is built on meticulous pre-checks and established government relationships.
Our Approval Success Rate
We offer a 100% Money-Back Guarantee if we fail to deliver on time.
© 2025 Visa-Vietnam.org. All rights reserved.
Disclaimer: We are a private agency, not the government. We charge a service fee for professional handling and expedited delivery.
// — 1. STATE MANAGEMENT —
const appState = {
currentPath: null,
gmt7Offset: 7,
officeHours: {
morning: { start: 8, end: 12 },
afternoon: { start: 14, end: 18 }
}
};
// — 2. DATA STORAGE —
const contentData = {
pending: {
title: “Accelerate Your Pending Application”,
subtitle: “Boost your existing registration code to the front of the queue.”,
description: “You have already applied, but it’s stuck. We use your Registration Code to intervene directly.”,
requirements: [
“E-visa Registration Code (e.g., E322…)”,
“Registration Email Address”
],
pricing: [
{ time: “8 Hours”, price: “$145 USD”, desc: “Delivery by 18:30 today if ordered by 08:00.” },
{ time: “4 Hours”, price: “$175 USD”, desc: “Gold Standard. Delivery by 18:30 if ordered by 14:00.” },
{ time: “2 Hours”, price: “$200 USD”, desc: “Elite Service. Immediate intervention for urgent flights.” }
],
ctaUrl: “
https://www.vietnamimmigration.org/boost-your-e-visa-application-form/” ;,
ctaText: “Boost Application Now”
},
new: {
title: “Start a New Emergency Application”,
subtitle: “The fail-safe ‘White Glove’ submission service.”,
description: “Skip the complex government forms. We handle the data entry, photo editing, and submission to guarantee error-free processing.”,
requirements: [
“Passport Scan (No glare)”,
“Portrait Photo (Plain background)”,
“Arrival Date & Port”
],
pricing: [
{ time: “8 Hours”, price: “$170 USD”, desc: “Full service fee included. Stress-free delivery.” },
{ time: “4 Hours”, price: “$200 USD”, desc: “Priority handling for tomorrow’s flight.” },
{ time: “2 Hours”, price: “$230 USD”, desc: “Maximum Priority. Form to Approval in 120 mins.” }
],
ctaUrl: “
https://www.visa-vietnam.org/vietnam-visa-application-online” ;,
ctaText: “Start Emergency App”
}
};
const faqs = [
{ q: “Is it truly possible to get a visa in 2 hours?”, a: “Yes. During working hours, we use established channels to prioritize your file. We have done this daily since 2007.” },
{ q: “What if it’s the weekend?”, a: “Government offices are closed Sat/Sun. Submit now, and you will be at the front of the queue Monday at 08:00 AM. This is your fastest option.” },
{ q: “Is the e-visa official?”, a: “Absolutely. It is issued directly by the Vietnam Immigration Department. Our role is strictly expedited processing and error correction.” },
{ q: “What about Chinese E-Passports?”, a: “Holders of Chinese passports with the ‘nine-dash line’ map will receive the e-visa but must visit the VOA counter upon arrival to get a loose-leaf visa. No extra fee, but bring a photo.” }
];
// — 3. CORE LOGIC —
function updateTimeAndStatus() {
const now = new Date();
const utcTime = now.getTime() + (now.getTimezoneOffset() * 60000);
const vietnamTime = new Date(utcTime + (3600000 * 7));
const hours = vietnamTime.getHours();
const minutes = vietnamTime.getMinutes();
const day = vietnamTime.getDay();
const timeString = `${hours.toString().padStart(2, ‘0’)}:${minutes.toString().padStart(2, ‘0’)}`;
document.getElementById(‘current-hanoi-time’).innerText = timeString;
document.getElementById(‘current-hanoi-time-mobile’).innerText = timeString;
let statusText = “Closed (Weekend)”;
let isOpen = false;
let cssClass = “pulse-dot-red”;
if (day > 0 && day = 8 && hours = 14 && hours = 12 && hours < 14) {
statusText = "Lunch Break (Back at 14:00)";
} else {
statusText = "Closed (Opens 08:00)";
}
}
document.getElementById('office-status-text').innerText = statusText;
document.getElementById('office-status-text-mobile').innerText = statusText;
const dot = document.getElementById('status-dot');
const dotMob = document.getElementById('status-dot-mobile');
dot.className = cssClass + " mr-2";
dotMob.className = cssClass + " mr-2";
}
function renderPricingCard(item, index) {
const isBest = item.time.includes("2 Hours");
const borderClass = isBest ? "border-amber-500 ring-2 ring-amber-500 ring-offset-2" : "border-gray-200";
const bgClass = isBest ? "bg-white" : "bg-gray-50";
const badge = isBest ? `
FASTEST ` : “”;
return `
${badge}
${item.time}
${item.price}
${item.desc}
`;
}
function selectPath(path) {
appState.currentPath = path;
const data = contentData[path];
const container = document.getElementById(‘solution-container’);
document.getElementById(‘btn-pending’).classList.remove(‘ring-4’, ‘ring-blue-300’);
document.getElementById(‘btn-new’).classList.remove(‘ring-4’, ‘ring-blue-300’);
document.getElementById(`btn-${path}`).classList.add(‘ring-4’, ‘ring-blue-300’);
let pricingHTML = data.pricing.map(renderPricingCard).join(”);
let reqHTML = data.requirements.map(r => `
✓ ${r}`).join(”);
container.innerHTML = `
${data.title}
${data.subtitle}
Service Overview
${data.description}
${pricingHTML}
`;
container.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ });
}
function renderFAQs() {
const container = document.getElementById(‘faq-container’);
container.innerHTML = faqs.map((faq, idx) => `
`).join(”);
}
function toggleFaq(idx) {
const ans = document.getElementById(`faq-ans-${idx}`);
const icon = document.getElementById(`faq-icon-${idx}`);
if (ans.classList.contains(‘hidden’)) {
ans.classList.remove(‘hidden’);
icon.innerText = ‘-‘;
} else {
ans.classList.add(‘hidden’);
icon.innerText = ‘+’;
}
}
function initCharts() {
const ctxComp = document.getElementById(‘comparisonChart’).getContext(‘2d’);
new Chart(ctxComp, {
type: ‘bar’,
data: {
labels: [‘Government Portal’, ‘Standard Agency’, ‘Our Expert Service’],
datasets: [{
label: ‘Time to Approval (Hours)’,
data: [72, 24, 2],
backgroundColor: [‘#cbd5e1’, ‘#94a3b8’, ‘#d97706’],
borderRadius: 4,
barPercentage: 0.6
}]
},
options: {
indexAxis: ‘y’,
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { display: false },
tooltip: {
callbacks: {
label: function(context) {
return context.parsed.x + ‘ Hours (Estimated)’;
}
}
}
},
scales: {
x: {
beginAtZero: true,
title: { display: true, text: ‘Hours (Lower is Better)’ }
}
}
}
});
const ctxSucc = document.getElementById(‘successChart’).getContext(‘2d’);
new Chart(ctxSucc, {
type: ‘doughnut’,
data: {
labels: [‘Approved’, ‘Rejected’],
datasets: [{
data: [99.9, 0.1],
backgroundColor: [‘#1e3a8a’, ‘#ef4444’],
borderWidth: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
cutout: ‘75%’,
plugins: {
legend: { position: ‘bottom’ },
tooltip: { enabled: true }
}
},
plugins: [{
id: ‘textCenter’,
beforeDraw: function(chart) {
var width = chart.width,
height = chart.height,
ctx = chart.ctx;
ctx.restore();
var fontSize = (height / 114).toFixed(2);
ctx.font = “bold ” + fontSize + “em sans-serif”;
ctx.textBaseline = “middle”;
ctx.fillStyle = “#1e3a8a”;
var text = “99.9%”,
textX = Math.round((width – ctx.measureText(text).width) / 2),
textY = height / 2.2;
ctx.fillText(text, textX, textY);
ctx.font = “normal ” + (fontSize*0.4).toFixed(2) + “em sans-serif”;
ctx.fillStyle = “#64748b”;
var subtext = “Success”,
subtextX = Math.round((width – ctx.measureText(subtext).width) / 2),
subtextY = height / 1.7;
ctx.fillText(subtext, subtextX, subtextY);
ctx.save();
}
}]
});
}
document.addEventListener(‘DOMContentLoaded’, () => {
updateTimeAndStatus();
setInterval(updateTimeAndStatus, 60000);
renderFAQs();
initCharts();
});