🇪🇺 Fixed egress for trading bots

🇪🇺 Static IP for Algorithmic Trading

Trading bots on Binance, Coinbase, Kraken, and Bitfinex need IP whitelisting for API security. Route all exchange calls through two fixed EU IPs with one env var.

trading_bot.py

# .env

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

import requests

r = requests.post(

  "https://api.binance.com/api/v3/order",

  headers={"X-MBX-APIKEY": KEY},

  data={"symbol": "BTCEUR"}

)

The Problem

Crypto exchanges enforce strict IP whitelisting on API keys to protect against unauthorized access. Trading bots deployed on cloud infrastructure get dynamic IPs that break the whitelist.

Exchanges require IP whitelisting

Binance, Coinbase, Kraken, and Bitfinex all support (and for high-tier API keys, mandate) IP restrictions on API keys. If your trading bot's outbound IP doesn't match the whitelist, the exchange rejects the order.

Cloud bots rotate IPs

Trading bots deployed on cloud servers, VPS, or serverless functions get new outbound IPs on every restart or scale event. The exchange sees an unknown IP and blocks the trade.

Missed trades cost money

In algorithmic trading, a blocked API call isn't just an inconvenience. It's a missed arbitrage opportunity, a stop-loss order that doesn't execute, or a position that doesn't close. Every millisecond blocked is potential loss.

Regulatory and audit requirements

Regulators like SEBI and MiFID II require traceable, auditable trading infrastructure. Auditors want a documented outbound IP for every trade your bot places. Dynamic IPs make compliance reporting harder.

The Solution

Route all exchange API calls through a fixed EU IP pair

Every API call your trading bot makes to Binance, Coinbase, Kraken, Bitfinex, or any other exchange leaves from the same pair of EU addresses. Whitelist both on every exchange, and every trade passes their security checks.

One env var covers all exchanges. Set HTTPS_PROXY and every Python or Node.js trading bot routes through your fixed IPs.
Two fixed EU IPs with automatic failover. If one goes down, the other takes over. No missed trades.
TLS passthrough. The proxy never sees your API keys, order data, or wallet addresses.

Implementation

Set HTTPS_PROXY and your trading bot is done. No SDK changes.

Python (Binance order via requests)

Your existing trading bot code works as-is. requests reads HTTPS_PROXY automatically.

# .env
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
BINANCE_API_KEY=your_key

import os
import requests
import hmac, hashlib, time

# requests honours HTTPS_PROXY automatically
params = {
    "symbol": "BTCEUR",
    "side": "BUY",
    "type": "LIMIT",
    "quantity": "0.001",
    "price": "50000",
    "timestamp": int(time.time() * 1000),
}
resp = requests.post(
    "https://api.binance.com/api/v3/order",
    headers={"X-MBX-APIKEY": os.environ["BINANCE_API_KEY"]},
    data=params,
)
print(resp.json()["orderId"])

Node.js (ccxt library)

If you use the ccxt library for multi-exchange trading, pass the proxy explicitly with https-proxy-agent.

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

const ccxt = require('ccxt');
const { HttpsProxyAgent } = require('https-proxy-agent');

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

const exchange = new ccxt.binance({
  apiKey: 'your_key',
  secret: 'your_secret',
  agent, // pass proxy agent to ccxt
});

// Every order routes through your fixed EU IP
const order = await exchange.createLimitBuyOrder('BTC/EUR', 0.001, 50000);

Docker / Kubernetes / VPS

Set it wherever your trading bot runs.

# Docker Compose
services:
  bot:
    env_file: .env

# Kubernetes: Secret
env:
  - name: HTTPS_PROXY
    valueFrom:
      secretKeyRef:
        name: outboundgateway-proxy
        key: proxy-url

Two IPs, no missed trades

Your account comes with two static IP addresses. Whitelist both on every exchange. If one proxy node is briefly unavailable, traffic shifts to the other automatically. Your bot keeps trading.

📖 Complete Documentation: For detailed examples, error handling, and other languages, see the Python SSL Proxy Guide, Node.js Guide, and all other language guides.

Why algorithmic traders choose OutboundGateway

A pair of fixed IPs

Two addresses to whitelist on every exchange, with automatic failover. No rotating cloud pool.

Zero code changes

Set one env var and your existing trading bot code (requests, ccxt, python-binance) works as-is.

EU-hosted

European data centres. GDPR-conscious setup. Your trading API traffic stays within EU jurisdiction.

All exchanges

Binance, Coinbase, Kraken, Bitfinex, and any other exchange with IP whitelisting. One pair covers them all.

Encrypted end to end

TLS passthrough means the proxy can't read your traffic. API keys, secrets, and order data stay private.

Flexible plans

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

Give your trading bot a fixed EU IP

Stop letting dynamic IPs break your exchange API access and cost you trades. Set one env var and every order routes through two fixed EU IPs.

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

Frequently asked questions

Do Binance, Coinbase, Kraken, and Bitfinex support IP whitelisting?

Yes, all four exchanges support IP restrictions on API keys. Binance and Kraken allow you to add specific IPs to each API key in their dashboard. Coinbase requires IP whitelisting for certain API key types. Bitfinex also supports trusted IP addresses. OutboundGateway gives you two fixed IPs to register on every exchange.

Does this work with the ccxt library?

Yes. If you use ccxt for multi-exchange trading, pass an HttpsProxyAgent as the agent option when you instantiate the exchange. In Python, ccxt uses requests under the hood, so HTTPS_PROXY is picked up automatically.

Does this add latency to my trading bot?

The proxy adds one network hop. For most trading strategies (market making, arbitrage scanning, grid trading), the added latency is negligible compared to exchange API response times. For ultra-low-latency strategies (sub-millisecond HFT), you should run your bot on a bare-metal server co-located with the exchange, where you can pin your own IP without a proxy.

Still deciding?

Happy to talk through how a two-IP EU egress fits your trading setup, whether you run one bot or a fleet.

Contact Our Founders →