---
title: Revolut bank
description: "## Connect Revolut Business to INTERA The **Revolut Business integration** allows INTERA to access information from your Revolut Business account, such as bank accounts, balances and transactions, and to receive transaction-related events. Unlike many integrations, Revolut Business does not use…"
url: "https://intera-roles.com/docs/revolut-bank/"
updated: "2026-08-10"
category: INTEGRATIONS
---

# Revolut bank

## Connect Revolut Business to INTERA

The **Revolut Business integration** allows INTERA to access information from your Revolut Business account, such as bank accounts, balances and transactions, and to receive transaction-related events.

Unlike many integrations, Revolut Business does not use a simple permanent API key. Revolut's Business API uses an application certificate together with OAuth authorization. Access tokens are short-lived and INTERA uses the authorization process to maintain access to the account.

In addition, some Revolut functionality uses **webhooks**. A webhook is an HTTPS address on your INTERA installation to which Revolut can send events. Revolut requires this address to be reachable from the public Internet using HTTPS.

Because INTERA is normally installed as a private Docker application, additional network configuration may therefore be required.

---

## Before You Start

You need:

- an active **Revolut Business** account;
- administrator access to Revolut Business;
- administrator access to INTERA;
- permission to configure your network, DNS, firewall or public-access service;
- a stable Internet connection for the INTERA server.

You do **not** need to expose the complete INTERA application to the Internet.

Only the dedicated callback/webhook endpoint created for the Revolut integration needs to be publicly reachable.

For example, INTERA may show an endpoint similar to:

https://intera.example.com/api/integrations/revolut/callback

or:

https://revolut.example.com/webhooks/intera

Use the exact URL displayed by your INTERA installation.

---

## 1. Start the Integration in INTERA

Log in to INTERA as an administrator.

Go to:

**Settings → Integrations**

Click:

**Add Integration**

Find:

**Revolut Business**

and select **Install** or **Setup**.

INTERA will display the information required for the Revolut connection.

Depending on the installed version of the integration, this may include:

- OAuth Redirect URL;
- Webhook URL;
- public certificate;
- integration status;
- connection test.

Do not close this page. You will need these values during the following steps.

---

## 2. Check Whether INTERA Is Publicly Accessible

If your INTERA installation is already available using a public HTTPS address, for example:

https://intera.example.com

you can normally use this existing domain.

Proceed to **Configure the Public INTERA Endpoint** below.

If INTERA is accessible only through a local address such as:

`http://192.168.1.20`

`http://10.0.0.15`

`http://localhost:8080`

or only through a company VPN, Revolut cannot directly reach it.

You must create a public HTTPS endpoint.

---

## 3. Choose How to Provide Public Access

There are two recommended configurations.

## Option A — Existing Public Domain

Use this method if the INTERA server already has:

- a public IP address;
- a DNS name;
- an HTTPS certificate;
- a reverse proxy such as Nginx, Caddy, Traefik or another web gateway.

Create a public hostname such as:

`intera.example.com`

or preferably a dedicated integration hostname:

`api.intera.example.com`

The reverse proxy should forward only the required INTERA API path to the INTERA Docker service.

For example:

https://api.intera.example.com/integrations/revolut/...

→

`http://intera:8080/integrations/revolut/...`

The exact internal port and path depend on your INTERA installation.

**Do not expose the INTERA Docker container directly to the Internet.**

Use an HTTPS reverse proxy in front of it.

---

## 4. Recommended for Private Installations — Cloudflare Tunnel

For an INTERA server without a public IP address, the recommended approach is a secure outbound tunnel.

One suitable solution is **Cloudflare Tunnel**.

Cloudflare Tunnel can publish a local HTTP service through a public HTTPS hostname without opening inbound firewall ports or assigning a public IP address to the INTERA server. The `cloudflared` service establishes outbound connections from your network to Cloudflare.

This is particularly suitable for private INTERA Docker installations.

## Requirements

You need:

- a Cloudflare account;
- a domain managed through Cloudflare;
- permission to run an additional Docker container or service on the INTERA host.

A domain is required for a stable published Cloudflare Tunnel application.

A suitable hostname could be:

`intera-api.example.com`

You do not need to make your main INTERA user interface publicly accessible.

---

## 5. Create a Cloudflare Tunnel

Log in to your Cloudflare account.

Open:

**Networking → Tunnels**

Create a new tunnel.

For example, name it:

`INTERA`

or:

`INTERA-Revolut`

Cloudflare will provide a tunnel token and installation command.

If INTERA runs using Docker, Cloudflare supports running `cloudflared` as a Docker container.

The generated command will resemble:

`docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TUNNEL_TOKEN>`

For a permanent production installation, configure the `cloudflared` container to restart automatically with the INTERA Docker environment.

---

## 6. Create the Public Hostname

Open the newly created tunnel in Cloudflare and select:

**Routes → Add route → Published application**

Specify a public hostname, for example:

`intera-api.example.com`

Configure the destination as the local INTERA HTTP service.

For example:

`http://intera:8080`

or:

`http://192.168.1.20:8080`

depending on your Docker/network configuration.

Cloudflare will accept public HTTPS requests and forward them through the tunnel to the private HTTP service.

Your public INTERA endpoint can now look like:

https://intera-api.example.com/api/integrations/revolut/...

---

## 7. Important: Do Not Put Interactive Authentication in Front of the Webhook

The Revolut webhook URL must be callable directly by Revolut.

Do not configure the webhook path to require:

- INTERA user login;
- HTTP Basic Authentication;
- Cloudflare Access login;
- Microsoft/Google SSO;
- VPN access;
- an interactive authentication page.

Revolut sends webhook notifications automatically using HTTP POST requests.

The webhook endpoint itself should instead validate incoming Revolut requests using the webhook signing mechanism handled by the INTERA Revolut integration.

This means that although the endpoint is reachable from the Internet, a valid request can still be cryptographically verified.

---

## 8. Confirm the Public INTERA URL

Return to:

**INTERA → Settings → Integrations → Revolut Business**

Enter the public URL or public hostname if INTERA requests it.

For example:

https://intera-api.example.com

INTERA should then display the final URLs to use with Revolut.

For example:

**OAuth Redirect URL**

https://intera-api.example.com/api/integrations/revolut/callback

**Webhook URL**

https://intera-api.example.com/api/integrations/revolut/webhook

The actual paths may be different. Always copy the URLs displayed by INTERA rather than constructing them manually.

Both should use:

`https://`

Do not use:

`http://`

a private IP address,

`localhost`,

or a `.local` hostname.

---

## 9. Test the Public Endpoint

Before configuring Revolut, use the **Test Public Access** function in the INTERA Revolut integration.

INTERA should verify that its external endpoint is reachable.

A successful test means that an external HTTPS request can reach the integration endpoint.

A normal web browser request may return an error such as:

`Method Not Allowed`

or another API response.

This does not necessarily indicate a problem. A webhook endpoint normally expects a POST request from Revolut rather than an interactive browser request.

The important requirement is that:

- DNS resolves correctly;
- HTTPS works;
- the certificate is trusted;
- the request reaches INTERA.

---

## 10. Open Revolut Business API Settings

Log in to the Revolut Business web application.

Open:

**Settings → APIs → Business API**

Revolut's current Business API setup requires an API certificate to identify the application.

Choose:

**Add API certificate**

or select the existing certificate if one has already been created for INTERA.

---

## 11. Add the INTERA Public Certificate

During initial setup, INTERA generates or supplies the public certificate required for the Revolut application.

In Revolut:

**Settings → APIs → Business API → API Certificates**

select:

**Add API certificate**

Copy the **public certificate** displayed by INTERA into the X509 public key field.

The certificate normally contains:

`-----BEGIN CERTIFICATE-----`

...

`-----END CERTIFICATE-----`

Revolut requires the complete certificate, including these beginning and ending lines.

Never copy or upload INTERA's **private key** to Revolut.

The private key must remain stored securely inside the INTERA installation.

---

## 12. Configure the OAuth Redirect URI

Revolut asks for an:

**OAuth Redirect URI**

Copy the **OAuth Redirect URL** displayed by INTERA.

For example:

https://intera-api.example.com/api/integrations/revolut/callback

Paste this into the corresponding Revolut API certificate configuration.

The OAuth redirect is the address Revolut uses after the administrator grants INTERA permission to access the Business account. Revolut's Business API authorization process returns an authorization code that INTERA exchanges for an access token.

Save the API certificate configuration.

---

## 13. Authorize INTERA

Return to:

**INTERA → Settings → Integrations → Revolut Business**

Click:

**Connect Revolut**

or:

**Authorize**

INTERA will start the Revolut authorization process.

You will be redirected to Revolut Business.

Sign in if requested and approve INTERA's requested access.

After authorization, Revolut redirects your browser to the INTERA OAuth Redirect URL.

INTERA receives the authorization code and completes the API authorization.

Revolut Business API access tokens are short-lived; Revolut also supplies a refresh token which applications can use to obtain new access tokens. INTERA should therefore handle token renewal automatically after the initial authorization.

You should not need to repeat the authorization every time an access token expires.

---

## 14. Permissions

Only grant the permissions required by the INTERA Revolut integration.

Revolut Business currently distinguishes scopes including:

- **READ** — read account and transaction information;
- **WRITE** — modify counterparties, webhooks and payment drafts;
- **PAY** — initiate or cancel transactions and exchanges;
- **READ_SENSITIVE_CARD_DATA** — retrieve sensitive card information.

For a normal INTERA monitoring and analytics integration, INTERA should request the minimum necessary permissions.

If the integration only reads banking information, payment initiation permissions should not be enabled unless specifically required by an installed INTERA package.

---

## 15. Configure the Revolut Webhook

After API authorization succeeds, INTERA can register its webhook with Revolut.

The webhook URL will normally be the public address created earlier, for example:

https://intera-api.example.com/api/integrations/revolut/webhook

Revolut's current Business API webhook interface accepts **HTTPS URLs only**.

The integration may subscribe to events such as transaction creation or transaction state changes depending on the data used by INTERA.

INTERA should create and maintain the webhook automatically.

When a webhook is created, Revolut returns both a webhook ID and a **signing secret**.

INTERA stores this information as part of the integration instance.

---

## 16. Webhook Security

A public webhook URL does **not** mean that arbitrary Internet requests should be trusted by INTERA.

Revolut signs webhook messages using a signing secret. Its Business API webhook documentation provides signature verification specifically so that receiving applications can confirm that the event originated from Revolut.

INTERA performs this verification automatically.

The integration should reject:

- requests with an invalid signature;
- malformed webhook messages;
- unsupported event types;
- replayed or outdated requests.

Revolut additionally provides a request timestamp that can be used to protect against replay attacks.

For this reason, do not disable INTERA's Revolut webhook verification even when another reverse proxy or firewall is present.

---

## 17. Verify the Connection

Return to:

**INTERA → Settings → Integrations → Revolut Business**

The integration should show:

**Connection: Connected**

**Authorization: Active**

**Public endpoint: Reachable**

**Webhook: Active**

Click:

**Test Connection**

INTERA should attempt to read basic account information from Revolut.

If successful, the Revolut integration is ready for use.

---

## 18. What INTERA Requires to Remain Accessible

The complete INTERA installation does not have to remain publicly accessible.

Only the configured integration endpoint must remain accessible to Revolut.

A recommended deployment therefore looks like:

**Internet**

↓ HTTPS

**`intera-api.example.com`**

↓

**Cloudflare Tunnel / Reverse Proxy**

↓

**INTERA integration API**

The normal INTERA interface may remain available only inside the company network:

**Company LAN / VPN**

↓

**INTERA UI**

This provides the public callback required by Revolut without unnecessarily exposing the entire INTERA application.

---

## Troubleshooting

### INTERA says "Public endpoint unavailable"

Check:

- the public hostname resolves in DNS;
- the Cloudflare Tunnel or reverse proxy is running;
- the INTERA Docker container is running;
- the configured local INTERA port is correct;
- outbound Internet access is available from the server.

With Cloudflare Tunnel, the INTERA host does not normally require a public IP or incoming firewall port because the tunnel connection is outbound.

---

### Revolut rejects the webhook URL

Check that the URL begins with:

`https://`

Revolut Business webhook URLs must use HTTPS.

Do not use:

`http://192.168...`

`http://10...`

`http://localhost...`

or other private/internal addresses.

---

### Authorization redirects to an error page

Verify that the OAuth Redirect URI configured in Revolut is exactly the same URL shown by INTERA.

Pay particular attention to:

- `http` versus `https`;
- hostname;
- path;
- trailing slash.

Do not manually alter the callback URL produced by INTERA.

---

### Webhook shows authentication errors

Make sure there is no interactive authentication layer in front of the webhook URL.

For example, if Cloudflare Access displays:

**Sign in with Google**

before the endpoint can be opened, Revolut will not be able to deliver webhook messages.

Exclude the Revolut webhook endpoint from interactive access control and allow INTERA to validate Revolut's webhook signature instead.

---

### Webhook works temporarily and then stops

Check that:

- the public hostname has not changed;
- the tunnel is configured to restart automatically;
- the DNS record still exists;
- the webhook still exists in Revolut;
- the INTERA integration still has a valid refresh token.

Avoid temporary or randomly generated tunnel addresses for production use. The webhook and OAuth callback should have a **stable URL**.

---

### Revolut API access stops after approximately 40 minutes

Revolut access tokens have a limited lifetime; the Business API documentation currently specifies 40 minutes. A refresh token is issued during initial setup and is intended to obtain new access tokens.

INTERA should refresh these tokens automatically.

If it cannot, use:

**Settings → Integrations → Revolut Business → Reconnect**

and check the integration log for the reason the refresh operation failed.

---

## Security Recommendations

For production installations:

1. **Expose only the required integration endpoint.** Do not make the complete INTERA administrative interface public merely to support Revolut.
2. **Always use HTTPS.** Revolut requires HTTPS for Business API webhooks.
3. **Keep the private certificate key inside INTERA.** Never send it to Revolut, Cloudflare or another third party.
4. **Do not expose Docker ports directly to the Internet.** Use a reverse proxy or secure tunnel.
5. **Keep the webhook signing secret private.** INTERA uses it to verify incoming notifications from Revolut.
6. **Use the minimum Revolut permissions required by the integration.** Do not grant PAY or sensitive card access to an integration that only needs account and transaction information.
7. **Use a permanent hostname.** For example:`intera-api.company.com`rather than a temporary tunnel URL.
8. **Back up the INTERA integration configuration securely.** The integration contains credentials required to maintain the Revolut connection.

---

## Recommended INTERA Deployment

For most small and medium INTERA installations where INTERA itself should remain private, the recommended configuration is:

**INTERA installed privately in Docker**

**Cloudflare Tunnel**

**Dedicated public hostname**

`intera-api.company.com`

**Only INTERA's external integration API exposed**

This configuration satisfies Revolut's requirement for a publicly reachable HTTPS webhook while avoiding the need for:

- a public IP address;
- router port forwarding;
- exposing the complete INTERA interface;
- installing INTERA directly on a public server.

Cloudflare Tunnel is specifically designed to map a public HTTPS hostname to a service on a private network using outbound connections from the private server.

---

## Connection Checklist

Before completing the integration, confirm:

- Revolut Business account is available
- Revolut Business API certificate has been created
- INTERA public certificate has been added to Revolut
- INTERA has a stable public HTTPS hostname
- OAuth Redirect URI matches the value shown in INTERA
- INTERA webhook URL is publicly reachable
- No interactive login blocks the webhook URL
- Revolut authorization has been completed
- INTERA has created/registered the Revolut webhook
- INTERA reports the integration as Connected
- Test Connection completes successfully

Once all checks pass, the Revolut Business integration is ready for use.
