🇪🇺 EU egress for Vercel, on any plan

🇪🇺 Static IP for Vercel

Vercel functions ship dynamic egress by default, and its native Static IPs are a paid addon on Vercel regions. Route your outbound calls through two fixed static EU IPs set as an HTTPS_PROXY env var, on any plan.

Vercel Function

# Vercel env var (any plan)

HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443

# app/api/route.ts

const res = await fetch(

  'https://api.partner.eu/orders',

  { agent: new HttpsProxyAgent(..) }

)

Why Vercel apps keep losing a stable source IP

Vercel does offer static egress, but it's a paid, plan-gated addon on Vercel regions, not a fixed EU address you get by default.

Dynamic egress by default

Serverless and edge functions run on ephemeral cloud infrastructure, so their outbound IP rotates across large subnets. A call to an IP-whitelisted partner API passes one moment and fails the next with no code change.

Native Static IPs are a paid addon

Vercel's Static IPs feature exists, but it's gated to Pro and Enterprise plans and billed separately. Hobby and many Pro projects end up looking elsewhere rather than paying up just to get an allowlisted address.

No EU egress natively

Vercel is a US company and its native static egress leaves from Vercel regions, not from EU-sovereign infrastructure. For GDPR-minded teams, the native option doesn't solve the data-residency side of the problem.

Many functions, many environments

A Next.js app spreads across Development, Preview, and Production environments, each with its own function instances. Without a single fixed egress, there's no one address to whitelist or to point at in an audit.

When a partner asks

"What IP will your Vercel app call from, so I can allow it?"

You want one fixed answer that holds across Preview and Production, not "whichever serverless instance Vercel happened to run."

The Solution

Send Vercel's outbound calls through a fixed EU IP

Vercel function

HTTPS Proxy

(Static EU IP)

Whitelisted API

Every outbound HTTPS call from your Vercel function leaves from the same pair of EU addresses, whether it's a partner API or a payment endpoint. Two IPs back the account, and if one is down the other takes over.

One env var covers the function. fetch and axios honour HTTPS_PROXY with no code rewrite, on Hobby or Pro.
The address holds across Preview and Production, so whitelists and audit answers stay valid through every deploy.
TLS passes straight through, so API tokens and request payloads stay unreadable at the proxy.

What this gives a Vercel deployment

Two fixed EU addresses to whitelist, with automatic failover between them. You hand partners one stable thing to trust instead of a rotating Vercel list.
Works on any plan, including Hobby. You don't need Vercel's paid Static IPs addon or an Enterprise seat just to get an allowlisted address.
EU egress where Vercel offers none natively. Your function calls leave from European infrastructure, which lines up with GDPR data-residency expectations.
Stable across all your environments. One pair of IPs covers Development, Preview, and Production, so the same address follows your app from staging into prod.
No function rewrite. Set the proxy as a Vercel env var and your existing fetch code starts routing through it.

Who it's built for

Next.js & frontend teams

Shipping on Vercel whose route handlers and server actions call partner APIs behind an IP allowlist.

Indie & Hobby projects

On plans below Vercel's paid Static IPs feature, who still need a fixed address to reach IP-whitelisted APIs.

EU SaaS builders

Running EU products on Vercel that need GDPR-aligned outbound access from a fixed EU address.

Compliance-minded teams

Accountable for where their Vercel functions send data, who want a documented EU egress rather than an ever-changing address.

Implementation

Set HTTPS_PROXY as a Vercel environment variable. Outbound calls then leave through your fixed EU IP, with no function rewrite.

Node.js (fetch, in a route handler)

Add HTTPS_PROXY in the Vercel dashboard (Project > Settings > Environment Variables) or with the CLI. In a Node runtime, pass it explicitly with https-proxy-agent.

// Vercel env var (any plan)
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
PARTNER_API_TOKEN=your_token

// app/api/orders/route.ts
import { HttpsProxyAgent } from 'https-proxy-agent';

const agent = new HttpsProxyAgent(process.env.HTTPS_PROXY);

export async function GET() {
  const res = await fetch('https://api.partner.eu/orders', {
    headers: { 'Authorization': `Bearer ${process.env.PARTNER_API_TOKEN}` },
    agent,
  });
  return Response.json(await res.json());
}

Setting the variable on Vercel

Add it as an environment variable scoped to the environments you need. Keep the proxy URL in a sensitive env var so it never sits in plaintext in your repo.

# Dashboard: Project > Settings > Environment Variables
HTTPS_PROXY = https://user:pass@eu-01.outboundgateway.com:8443   (mark as Sensitive)
Scope: Production, Preview, Development (as needed)

# Or via the Vercel CLI
vercel env add HTTPS_PROXY production
vercel env add HTTPS_PROXY preview

# In code, read it like any env var
const proxy = process.env.HTTPS_PROXY;

Two IPs, so a deploy doesn't break your integration

Your account comes with two static IP addresses (for example 51.xx.xx.10 and 51.xx.xx.11). Whitelist both on your partner API. If one proxy node is briefly unavailable, traffic shifts to the other, so a Vercel redeploy isn't the thing that severs your connection.

📖 Want the longer version? Worked examples, error handling, and other languages are in the Node.js Guide, Python SSL Proxy Guide, and the rest of the docs.

EU egress for Vercel workloads

Vercel is US-hosted and its native static egress leaves from Vercel regions. For GDPR-minded teams, a fixed EU egress fills that gap.

European infrastructure

The proxy runs in EU data centres, so your Vercel function's outbound traffic leaves from European infrastructure instead of a US Vercel region.

GDPR-conscious by design

Because TLS passes straight through, the proxy never decodes your API tokens or request payloads. It forwards encrypted bytes; it doesn't read them.

No transatlantic detours

Traffic doesn't bounce through US infrastructure on its way to your partner API, which keeps the data path inside the EU and removes a wrinkle from GDPR reviews.

An egress you can name

When a partner asks where your Vercel function calls from, the answer is two fixed EU addresses, not a list that changes with every deploy. The failover pair covers maintenance windows.

Why teams route Vercel through OutboundGateway

A pair of fixed IPs

Two addresses to register, with automatic failover, so your traffic isn't riding on a single point of failure.

Any plan, including Hobby

No need for Vercel's paid Static IPs addon or an Enterprise seat. Set an env var and you have a fixed egress.

EU-hosted

European data centres and a GDPR-conscious setup, giving your Vercel app a predictable EU address it doesn't have natively.

All your environments

Development, Preview, and Production all leave through the same stable pair of IPs.

Encrypted end to end

TLS passthrough means the proxy can't read your traffic. Tokens and request data stay private the whole way.

Flexible plans

Starting from €29/month. Flexible plans for every scale. Cancel anytime.

Give your Vercel functions a fixed EU egress

Stop letting dynamic egress and plan-gated addons decide whether your IP-whitelisted APIs keep working. Put your Vercel outbound traffic behind one stable, GDPR-conscious address.

€29/month starter plan • 7-day refund policy • Direct founder support

Frequently asked questions

Doesn't Vercel offer static IPs natively?

Yes, Vercel has a Static IPs feature, but it's a paid addon gated to Pro and Enterprise plans, and it egresses from Vercel (US) regions rather than EU-sovereign infrastructure. OutboundGateway gives you a fixed pair of EU addresses on any plan, set as a simple HTTPS_PROXY env var, which is useful if you're on Hobby, want EU data residency, or would rather not pay for the addon.

How do I set the proxy on Vercel?

Add HTTPS_PROXY in Project > Settings > Environment Variables, scoped to Production, Preview, or Development, or with vercel env add. Mark it as sensitive so it isn't exposed in plaintext. In a Node runtime, pass it to https-proxy-agent; requests in Python reads it automatically.

Does it work on the Hobby plan?

Yes. Because the proxy is just an environment variable, it works regardless of your Vercel plan. Hobby projects that can't access Vercel's plan-gated Static IPs can still get a fixed pair of EU addresses for their outbound HTTPS calls.

Still weighing it up?

Happy to talk through how a two-IP egress fits your specific Vercel setup, whether it's a Next.js route handler or a serverless function.

Contact Our Founders →