Security

You are about to connect your bank. Here is exactly what happens.

No vague reassurance about bank-grade encryption. What we can see, what we cannot do, where it lives, and what we can actually evidence.

We cannot move your money

Bank connections use the GoCardless Bank Account Data API, which is an account information service only. It grants access to your account list, balances and transaction history, and carries no payment initiation capability at all. There is no instruction we could send that would move a penny, because the connection has no mechanism for one.

We never see your bank login

You authenticate with your bank directly, through their own screens. Credentials never touch our systems, and we could not retrieve them if we wanted to.

You can disconnect at any time

From the app or from your bank. Access ends immediately, and you choose whether the history already imported stays or goes.

Your data is not the product

We do not sell it, we do not share it with advertisers, and we do not train anything on your books. Revenue comes from subscriptions, which is the only arrangement where our interests and yours point the same way.

How it is actually built

Isolation enforced underneath the app, not by it.

Most security pages describe intentions. These are mechanisms, and each one is checked by the build.

Row-level isolation in the database

Every table is governed by PostgreSQL row-level security, so one account cannot read another's rows even if application code were to ask for them. Isolation is enforced underneath the app rather than by it.

Privileged work happens server-side

Anything that needs elevated permission runs in an audited edge function with a registry of what may use service-role access, rather than in code shipped to your browser.

Logs are redacted by default

Bank tokens, HMRC credentials, names, balances, amounts, transaction descriptions and National Insurance numbers are on an explicit never-log list, enforced by a shared logging helper with regression tests.

The rules are enforced by the build

Secret scanning, a sensitive-logging guard, row-level-security proofs, schema-usage proofs and a service-role registry check all run in CI. A change that breaks one of them does not ship.

Never written to a log

An explicit list, enforced by tests.

Logging is where financial data usually leaks, because nobody means to do it. These values are on a never-log list with a shared helper and regression tests behind it.

  • Bank provider tokens
  • HMRC credentials and tokens
  • Service-role and payment provider secrets
  • Names, emails and addresses
  • Account numbers and balances
  • Transaction descriptions and amounts
  • Tax values and National Insurance numbers

The specifics

Everything here should be checkable. If a row cannot be evidenced, it does not belong on the page.

Bank feed provider
GoCardless Bank Account Data, an account information service
Open banking authorisation
Held by GoCardless Ltd as an authorised AISP in the UK
What the connection can access
Account list, balances, and up to 24 months of transaction history
Payment initiation
None. The API has no payment capability
Data isolation
PostgreSQL row-level security, proven in CI
Authentication
Supabase Auth
Sensitive-value logging
Explicit never-log list, enforced by a shared helper with tests
Data protection
Built to the UK GDPR principles set out by the ICO
Encryption in transit
TLS 1.2 or higher, with HTTP Strict Transport Security preloaded for a year
Encryption at rest
AES-256, across the database, file storage and hosting
Where your data is processed
Largely the United States. Application functions run in a US East region, and email and card processing are US-based too. Transfers rely on the UK International Data Transfer Addendum and standard contractual clauses.
Certifications
None. We hold no ISO 27001, SOC 2 or Cyber Essentials certification, and would rather say so than imply otherwise.
Staff access to customer data
Two employees and one director. Access is limited by role and enforced by row-level security rather than by policy alone, with step-up authentication on elevated roles.
Sub-processors
The full list is published below, and we give notice before it changes.
Breach notification
Qualifying breaches are reported to the ICO within 72 hours and affected customers told without undue delay, as UK GDPR requires. A written incident response process sits behind that.

Who else touches your data

Every company we rely on to run the product, what each one is for, and where it processes. We give notice before this list changes.

Supabase

Database, sign-in, file storage and server functions

VercelUnited States

Hosting, content delivery and request logs

GoCardlessUnited Kingdom

Read-only open banking connections to your bank

StripeUnited States and global

Subscription billing and card payments

ResendUnited States

Sign-in links, invitations and notification email

Have I Been PwnedAnonymised lookup

Checks a new password against known breaches. Your browser sends the first five characters of a hash, never the password itself

ipifyLookup only

Reads your public IP address, which HMRC requires inside the fraud prevention headers on any tax submission

And two who are not processors

These receive data because you instructed us to send it, not because we hired them to handle it on our behalf.

HM Revenue & CustomsUnited Kingdom

Tax submissions, obligations and the fraud prevention data HMRC requires with them

Companies HouseUnited Kingdom

Company lookup, and statutory filings where you choose to make them

Responsible disclosure

Found something? Tell us.

We will acknowledge it, keep you updated, and credit you if you want it. We will not threaten you with lawyers for reporting a bug in good faith.

Report it here
For procurement

Larger clients and their accountants tend to want documents rather than a web page.

  • Security overview, PDF
  • Sub-processor list
  • DPA and standard contractual clauses
Request the pack

Read-only by design.

Yours to disconnect at any time.