Skip to content

Revolut Business

Built, not certified Built and tested against recorded and synthetic responses (version 1.0.0, 10 November 2026). Not yet run against the vendor's sandbox or a client environment.

Reads a Revolut Business account’s accounts and balances, bank details, transactions, counterparties, expenses, FX rates and cards (never card numbers), so cash and reconciliation agents can check them against the books. It is read-only, and it is built to refuse a consent that can pay or read card numbers. It reads in place, in your deployment; only ids, hashes and counts reach LightHouse.

CollectorRevolut Business, version 1.0.0
ReadsRevolut: Revolut Business API (the vendor's documentation)
FamilyFinance
KindBank
Ways to connectOAuth approval, Key pair
Scopes
  • Read: READ
Read onlyYes, except: [object Object]
Vendor's API can move moneyYes
Personal dataFinancial, Contact
Hosts it may contactb2b.revolut.com, sandbox-b2b.revolut.com, revolut.com, {host}
Vendor API versionsBusiness API 1.0
Lowest engine version0.46.0
  • Accounts and balances: balance per account, with name, state and the account’s bank details (IBAN, BIC, account number, sort code, beneficiary). A snapshot: rewritten only when it changes.
  • FX rates for the pairs you name in fx_pairs (for example EUR/USD).
  • Counterparties: name, type, state and their account identifiers.
  • Cards: only the id, last four digits, state, label, holder, product, whether virtual, and dates. A card number, CVV or expiry is never requested and never recorded.
  • Transactions and expenses, newest first in windows, from the last cursor less a week (so a transaction whose state moved on is read again). Each transaction’s legs carry amount, fee, currency, account, description and counterparty id. Expenses are skipped on plans that do not have them.
  • The first read goes back history_days (default 90, at most 3,650).
  1. In Revolut Business, open Settings, APIs, Business API; upload the public key of a key pair you made, with your deployment’s redirect domain.
  2. Consent with the READ scope only.
  3. In LightHouse, open Setup and admin, Connectors, choose Revolut Business, and give the environment (production or sandbox) and any fx_pairs.
  4. Paste the client id, the private key (PEM), the issuer (the redirect domain), and the refresh token (or the one-off authorisation code), and confirm the consent was READ only. Your browser seals it to your deployment; LightHouse never sees it.

The credential is JSON in the variable the source names (AAL_REVOLUT by default): client_id, private_key, issuer, environment, and refresh_token or authorization_code, and view_only_confirmed when needed.

This collector is read-only in what it does: GET requests, and one POST /api/1.0/auth/token to exchange the token. Its read-only test proves it on every change. Nothing is paid, transferred or changed.

  • Refused by the code: where Revolut’s token answer states the granted scope, a consent that includes WRITE, PAY or READ_SENSITIVE_CARD_DATA is refused, naming it. The error is, for example, Revolut: refused: the credential can pay (PAY scope), read card numbers (READ_SENSITIVE_CARD_DATA); make a view-only one (naming whichever apply).
  • Not detectable by the code: if the token answer carries no scope, Revolut does not state what was consented. The collector then reads only once you have confirmed the certificate was consented with READ only (view_only_confirmed); without it the error is Revolut does not state this key's permissions; confirm the key is view-only (view_only_confirmed) before it is read.
  • Signing: each access token is minted with a client assertion, a JWT signed here with your private key (RS256; iss the issuer, sub the client id, aud https://revolut.com, five minutes). The private key never leaves your store. revolut.com is only the audience; it is never contacted.
  • Refresh token: Revolut documents it as not expiring, but a withdrawn consent ends it. When a one-off authorisation code is exchanged, the new refresh token is written back to your own secret store in your deployment (not to Revolut) and the code is dropped.
  • Hosts: only b2b.revolut.com or sandbox-b2b.revolut.com, over https; redirects are never followed.
  • Business API 1.0.
  • Requests are paced one second apart and retried on 429 and 5xx with back-off.
  • Transactions are paged down by to date, 1,000 a page; expenses 500.
  • The access token lasts 40 minutes and is minted again as needed.
  • Amounts are exact decimals; a number that arrives as a float is refused.
  • Records hold financial and personal data: balances, bank details, transactions, counterparties’ names and account identifiers, and cardholders’ ids. Documents carry the label you give the source (default confidential).
  • Content is read in place, in your deployment. LightHouse receives ids, hashes and counts, never the records, and never opens the credential.
  • Errors carry a status and fixed text, never a provider’s body.
  • The data is audit-ready for your own agents; nothing here certifies anyone against any regulation.
What you see What it means What to do
Revolut: refused: the credential can pay (PAY scope); make a view-only one The consent includes a scope that moves money or reads card numbers (named) Consent again with READ only
Revolut does not state this key's permissions; confirm the key is view-only (view_only_confirmed) before it is read The consent’s scope is not stated and you have not confirmed Confirm it was READ only
Revolut answered HTTP 401 (consent again in Revolut Business) The refresh token was refused (withdrawn or expired consent) Consent again in Revolut Business
Revolut: neither a refresh token nor an authorisation code The credential has neither Re-enter the credential
fx_pairs are currency pairs, e.g. EUR/USD A pair is not two 3-letter codes Correct the pair
environment is production or sandbox The environment is something else Correct it

Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See How collectors are certified.

DateCollectorEngineVendor APIMethodExpires
10 November 20261.0.00.46.0Business API 1.0Fixtures only: built, not certifiedNot applicable

From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.

Last scanned10 November 2026
Critical findings0
High findings0
Medium findings0
Low findings0
Info findings0
Release blockedNo
Network allow-list checkPass
Read-only behavioural testPass
SBOM (CycloneDX)Produced
Dependency licencesPass
Scannersbandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only