penduses Start the pilot

For apps on Vercel, serverless platforms and CI

Deploy a hundred times. Same IP, every time.

Your partner’s API wants one fixed IP to allowlist. Penduses gives your app a dedicated outbound IPv4 that stays the same on every deploy. Send them one address, route only the calls that need it, and keep shipping on Vercel. From $39 a month, in France or Germany.

Your IP in three steps.Your app stays put.

Nothing migrates. The only thing that changes is which address your partner sees.

  1. 1

    Get your IP

    One dedicated IPv4, allocated to your service and nobody else’s. Send it to your partner.

    Your app
    Stays on Vercel
    Your outbound IP
    203.0.113.25
    Valid
    For as long as you keep the service

    Redeploy as often as you like. The address does not change.

  2. 2

    Allowlist both ways

    Your partner allows your IP. You allow your partner’s API. Nothing else gets through.

    Your partner allows
    203.0.113.25
    You allow
    198.51.100.42:443
    Anything else
    Refused

    You edit your destination list in the panel. A call to anything not on it is refused with an error, so a misconfigured request fails fast instead of leaving from another address.

  3. 3

    Verify, then ship

    Check which address the other side sees, then make the real call.

    await egress.verifyIp(echoUrl)
    expectedIp
    203.0.113.25
    observedIp
    203.0.113.25
    ok
    true

    The SDK compares the observed address with the one you expect. Then confirm the real API call in your partner’s logs.

Example addresses. The board and the responses above are illustrations, not live test results.

Three lines of code.Nothing else moves.

Create the client once. Send the calls that need the fixed IP through egress.fetch. Every other fetch keeps its current route.

egress-example.mjsNode.js, server-side
import { createEgress } from '@penduses/egress';

const egress = createEgress({
  endpoints: [{
    host: process.env.PENDUSES_HOST,
    httpPort: Number(process.env.PENDUSES_HTTP_PORT),
    username: process.env.PENDUSES_USER,
    password: process.env.PENDUSES_PASSWORD,
    tls: true,
  }],
  expectedIp: process.env.PENDUSES_EXPECTED_IP,
});// Use an HTTPS IP-echo endpoint you trust.
// Add its destination to your allowlist first.
const { observedIp, ok } = await egress.verifyIp(
  process.env.PENDUSES_ECHO_URL
);
console.log({ observedIp, ok });// TARGET_URL must also be on your allowlist.
const response = await egress.fetch(
  process.env.TARGET_URL
);
console.log(response.status);
  1. 1

    Configure

    Paste the endpoint, port, credentials and expected IP from your panel into your server-side environment. They never go to the browser.

  2. 2

    Verify

    Call an HTTPS IP-echo endpoint you trust (allowlisted first). egress.verifyIp tells you whether the other side sees your dedicated address.

  3. 3

    Connect

    Call your partner’s API with egress.fetch. Their own API authentication still applies; only the source address changes.

Before you run it

  • Node.js 20.18.1 or newer, server-side only. Edge Runtime and browsers are not supported.
  • The SDK installs from the repository; it is not published to npm yet.
  • The Next.js example has been run from a real Vercel deployment against a third-party host, which saw the dedicated IP.

Does it fit your setup?

Vercel with Next.js is the setup we test against. Other Node.js hosts connect the same way; a few setups need a quick look before you pay.

Your setupHow it connectsStatus
Vercel and Next.jsNode.js runtime Server-side Route Handlers call the SDK. This is the reference setup, tested end to end. Supported
Partner HTTP(S) APIsBanks, KYC, ERP, payments, webhooks Any HTTPS API that allowlists by source IP. Your partner adds one address; their existing API keys and tokens stay as they are. Supported
Netlify, Railway, Render, Lambda, Cloud RunOther Node.js hosts A Node.js runtime that can open an outbound TLS connection uses the same SDK. Tell us the platform; we confirm it before you pay. Ask first
CI and scheduled jobsGitHub Actions, GitLab CI, cron The Node SDK, or any client with HTTP CONNECT support. A GitHub Action is in the repository, without a standalone release yet. In the repository
Edge Runtime or browser The SDK does not run there. Move the call into a Node.js Route Handler. Not supported
Databases, SFTP and other TCP The SDK is for HTTP(S). Other protocols need a compatible client or WireGuard on a host you control. We check it with you first. Ask first

Our own addresses.Built for allowlists.

We are the network operator, not a reseller. The people answering your email are the people running the routers.

Our own IPv4 space

RIPE-registered addresses we hold and announce ourselves, on servers we operate in France and Germany. No cloud NAT gateway to build, no rented pool that someone else’s traffic shares.

One address per service

Your IP is allocated to your service and shared with no other customer. Redeploys do not touch it. Pro gives you two, one in each country, so your partner can allow both.

Encrypted to us, locked to your list

The SDK verifies our TLS certificate before it sends credentials. Through Penduses, only the destinations on your allowlist are reachable; everything else is refused.

Fails loudly, never sideways

If Penduses cannot be reached, the call returns an error. It does not fall back to a direct connection, so your partner never sees your traffic from an address they did not approve.

Starter $39. Pro $79.No quote needed.

Per month, excl. VAT. A paid 30-day pilot with the terms written out below, not buried in a contract.

Starter

One IP

$39per month, excl. VAT

One partner API that needs one dedicated source IP.

Addresses
1 dedicated outbound IPv4
Region
France or Germany
Transfer
200 GB a month, fair use
Connection
TLS to our proxy, HTTP CONNECT
Destinations
Your allowlist
Support
By email, from the operators

Pro

Two IPs, two countries

$79per month, excl. VAT

A second connection path, for integrations your partner can allow two IPs for.

Addresses
2 dedicated outbound IPv4
Region
One in France, one in Germany
Transfer
1,000 GB a month, fair use
Second path
SDK failover for eligible new connections
Destinations
Your allowlist; allow both IPs at your partner
Support
By email, from the operators

Keep the price you start with.

The monthly price of the plan you buy stays fixed until you cancel. Upgrade later and the then-current price of the higher plan applies.

Pilot terms: best effort, no SLA, support by email. Fair-use transfer is per month; what happens at the limit is in your pilot terms before you pay. Price protection covers your purchased plan, not usage charges or future plans. Your hosting provider may still bill its own outbound traffic.

Asked beforesigning up.

Something else? Ask it in the pilot form.

My platform already offers static IPs. Why Penduses?

Use it if it satisfies your partner. Platform options are usually shared by every project in a region, apply to all of your traffic, or need a NAT gateway you run and pay for. Penduses gives you one address allocated to your service only, applied just to the calls you choose, with the allowlist and the verification built in. If your platform’s option already passed your partner’s review, you do not need us.

Do I need to move my app or route all its traffic?

No. Keep your deployment and send only the server-side calls that need the fixed IP through the SDK. Everything else keeps its current route. This is an application-level change, not a network switch for the whole project.

When can my IP change?

Redeploying never changes it. The address is released only when you end the service. If you ever need to migrate, we plan the allowlist update with you first.

How fast can I start?

Send the form below. We reply by email with your credentials, the allowlist setup and the pilot terms. Adding the SDK to a Next.js app is the three-step change shown above; the longest part is usually your partner updating their allowlist.

What happens if a connection fails?

The call returns an error for your code to handle. Pro can retry eligible new connections through the second endpoint before a request is sent. In-flight requests are never replayed, and the SDK never falls back to a direct connection from another address.

Can I connect to PostgreSQL, MongoDB or SFTP?

Not with the HTTP(S) SDK. Those need a compatible client or WireGuard on a host you control; a database driver on Vercel will not use an HTTP proxy on its own. Tell us the client and destination and we will say whether it works before you pay.

How do I know my partner sees the right address?

Run egress.verifyIp against an allowlisted HTTPS IP-echo endpoint, then make a real call with your actual client and check your partner’s logs. An IP check alone does not prove that every library in your app takes the same route.

Which region should I pick?

France or Germany, with your app and your partner’s location in mind. Routing through Penduses adds one network hop; measure real request times during the pilot. We do not publish a latency figure.

What happens at the fair-use limit?

Starter includes 200 GB a month and Pro 1,000 GB. What happens beyond that is written in your pilot terms before you pay. Most partner API integrations use a small fraction of it.

Can several apps or customers share one service?

Several of your own apps and environments can, and their usage counts toward the same limits. If you act for different customers who each need their own identity, they need separate IPs and credentials; we confirm the arrangement with you first.

What if my partner’s API changes its IP?

Your allowlist uses IP addresses and ports, so a hostname or CDN that resolves to new addresses needs those addresses kept on the list. We review this with you at setup. It is separate from your own source IP, which stays fixed.

Does this give my app a fixed inbound IP?

No. Static Egress is for outbound connections. For routed inbound and outbound IPv4 on a host you control, see Tunnel IP below.

Running your own servers instead?

Tunnel IP

A routed public IPv4 /32, /29 or /28 over WireGuard for a host you control. Inbound and outbound, no NAT.

Ask about Tunnel IP

Managed /24

IPv4 blocks for hosting companies and network operators, with routing, address management and reputation monitoring handled by us.

Discuss a block

Start the pilot.

Tell us where the app runs and which API it needs to reach. We reply by email with your credentials, the allowlist setup and the pilot terms. Asking costs nothing; you pay only when you start.

Prefer plain email? hello@penduses.com

Opens a pre-filled email in your mail app. Nothing is stored on this page.