Skip to content
LeakIQDetect. Manage. Recover.
PlatformFeaturesUse CasesPricingTourLogin
Free leakage report
‹Trust Centre
  1. Homepage
  2. ›Trust Centre
  3. ›Technical Documentation

Contents

Audience key

TechITSecurityDataComplianceLegal

Technical documentation

LeakIQ technical reference

This document is for engineering, IT, security, data, compliance and legal teams conducting pre-procurement evaluation of LeakIQ. It covers how the platform is built, how data flows through it, how credentials are protected, and how LeakIQ meets enterprise security and regulatory requirements.

For questions not answered here, including security questionnaire completion, data processing agreements or architecture review calls, contact support@leakiq.io.

See also the Security overview for a plain-English summary, and the Trust Centre for all security, privacy and compliance documentation in one place.

Security posture

SecurityITCompliance

LeakIQ is designed to be safe to connect to your financial systems and straightforward to approve through an IT or InfoSec review. The key commitments:

Read-only use. No write-back.

LeakIQ only ever reads. We surface gaps, we never create, update or delete records in any connected system.

AES-256-GCM credential encryption

All connector credentials are encrypted before storage. The encryption key is held separately from the database and is never logged or returned in API responses.

Workspace isolation

Workspace IDs are scoped to every database query, and workspace membership is verified server-side before a workspace resolves, so a request cannot reach another customer's data. To be precise about the mechanism: this is enforced in application code and by review, not by an ORM-level or row-level-security rule. The only ORM-layer extension in the platform is the one that makes the audit log append-only.

Layered RBAC

Account-level Owner and a delegatable Integrations grant govern billing, users and connector setup; workspace-level Admin, Operator and Viewer roles govern recovery operations. All enforced server-side and audit-logged, no client-side-only gating.

Tamper-evident audit log

Every action taken in a workspace is written to an append-only log with actor identity and timestamp. Each entry is hash-chained to the one before it, so a deleted, reordered or altered entry is detectable. The hash covers the workspace, actor, action, entity type, entity id, timestamp and the preceding hash; the metadata payload attached to an entry is deliberately outside the hash, so that personal data can be removed on an erasure request without invalidating the chain.

GDPR compliant

Data is stored in the EU (Neon PostgreSQL, AWS eu-central-1, Frankfurt). LeakIQ acts as a data processor. A signed Data Processing Agreement is available on request.

Authentication & session security

Sessions are signed with a rotating HMAC secret and stored in HTTP-only cookies. Passwords are hashed with scrypt (memory-hard KDF). MFA is available for all workspace members.

Data retention & deletion

Data is retained for the workspace subscription lifetime. Deleting a connection removes its encrypted credentials immediately. Clearing workspace data removes issues, recovery actions, outcomes, metrics, raw events and connections. The audit log is retained rather than deleted, with personal identifiers pseudonymised, because it is a tamper-evident hash chain.

Share this page with your IT and InfoSec teams, everything needed for a pre-connection security review is here. For security questionnaire completion, a DPA, or a technical review call, contact security@leakiq.io. We respond within one business day.

Architecture

TechIT

LeakIQ is a cloud-native SaaS application deployed on Vercel's serverless infrastructure. There are no persistent application servers, each request is handled by an ephemeral serverless function that spins up on demand and is discarded after the response. This eliminates an entire class of infrastructure-level attack surface.

LayerTechnologyNotes
Frontend & APINext.js 15 App RouterReact Server Components; server actions for mutations
DeploymentVercel (serverless)No persistent servers; ephemeral per-request execution
DatabaseNeon PostgreSQL 18Managed serverless Postgres; connection pooled
ORMPrisma 5Type-safe query builder; no raw SQL in application code
Session managementNextAuth v4, JWT strategySessions in signed, encrypted HTTP-only cookies only
Email deliveryResendTransactional email only; no marketing email
BillingStripeSubscription management; no card data touches LeakIQ servers
Network requirements: LeakIQ is accessed entirely over HTTPS. No VPN, IP allowlisting or inbound firewall rules are required on your end. All outbound connector API calls originate from Vercel's serverless infrastructure. LeakIQ makes no inbound connections into your network, connector credentials are used to make read-only API calls to your existing cloud services.

All routes under /operations/* enforce authentication at the layout level, unauthenticated requests are redirected to /login before any data is fetched. Workspaces with a paused subscription are redirected to the billing page before any operational data is accessible.

Connectors

TechITDataSecurity

LeakIQ connects to your existing billing, accounting, payment and CRM systems and only ever reads from them. LeakIQ never writes back to any connected system. Each connector is individually managed, you can add, pause or remove any connection at any time.

Five native connectors are live today, Stripe, Xero, QuickBooks, Salesforce and GoCardless, alongside a generic CSV / JSON finance import that runs the same detection on an export from any other system. The remaining connectors below are in progress and are marked accordingly.

ConnectorCategoryAuth methodData LeakIQ reads (read-only)Status
StripeBilling & paymentsOAuth 2.0 (Stripe App)Invoices and payment intents, including failed collectionsLive
XeroAccountingOAuth 2.0Invoices and paymentsLive
QuickBooks OnlineAccountingOAuth 2.0Invoices and paymentsLive
SalesforceCRMOAuth 2.0Opportunities, with amount, stage and close dateLive
GoCardlessDirect debitAPI access tokenMandates, payments, payment failuresLive
CSV / JSON importAny accounting, billing, CRM or ERP exportSigned file upload or POSTAny invoice, payment or subscription rows you exportLive
HubSpotCRMOAuth 2.0Deals, contacts, renewal activity, pipeline eventsIn progress
NetSuiteERP / accountingOAuth 2.0 (token-based)Invoices, customer payments, AR activityIn progress
ZuoraSubscription billingOAuth 2.0Subscriptions, invoices, payment failuresIn progress
Sage IntacctAccountingAPI credentials (session)Invoices, payments, AR ageingIn progress
ChargebeeSubscription billingAPI keySubscriptions, invoices, dunning eventsIn progress
BraintreePaymentsAPI keyTransactions, disputes, chargebacksIn progress
Zapier (inbound)Automation / webhookWebhook secret (timing-safe verified)Any event payload from Zapier-connected apps, recorded against the workspace but not yet read by detectionLive

Live OAuth 2.0 connectors (Xero, Salesforce, QuickBooks) use short-lived access tokens with automatic refresh token rotation. Stripe connects through the Stripe App using OAuth, and GoCardless uses a read-only API access token, in both cases a scoped, read-only credential your team authorises and retains full control over. You can revoke access at any time by rotating or deleting the credential in the source system, LeakIQ will immediately stop making calls once it is invalid.

Removing a connection from the Connected Systems page deletes the encrypted credential immediately. LeakIQ will make no further API calls to that system.

What LeakIQ detects

DataTech

LeakIQ runs a fixed library of deterministic revenue-leak detectors over the read-only financial records it ingests. There is no machine learning and no black box, each finding maps to one of the signals below and is surfaced with the source record attached so your team can verify it. LeakIQ does not detect tax or VAT errors, currency or FX loss, usage or metering discrepancies, and it does not read contracts or reconcile bank feeds.

SignalWhat it flagsNotes
Overdue invoiceInvoice past its due date and still unpaid, including an aged unpaid invoice with no due date once it is well past any normal payment term
Part-paid invoiceInvoice partly paid, remainder overdue and never chased
Failed paymentCard payment declined or failedSuppressed if a later payment recovered it
Failed direct debitGoCardless direct debit failedSuppressed if a later payment recovered it
Disputed payment / chargebackPayment contested by the customerTime-sensitive
Duplicate chargeSame customer charged the same amount twice, both succeededPossible duplicate, confirm before refunding
Duplicate invoiceSame customer invoiced the same amount twice in a short window, or one document number reused across invoicesPossible duplicate, confirm before crediting
Unapplied cash / overpaymentCustomer paid more than they were invoiced
Unused credit noteCustomer holds a credit while open invoices could be cleared by it, or a credit beyond any open balance that is effectively refund-due
Duplicate credit noteSame customer credited the same amount twice in a short window, for example a returns or SLA-penalty credit raised twicePossible duplicate, confirm before it stands
At-risk renewal / silent churnA regular billing cadence has gone quiet and the next invoice is overdue to appear
Price never moved / missed upliftSame recurring amount billed across anniversariesAmount is an estimate; LeakIQ cannot see contracts
Discount creepRecurring price stepped down and never recoveredAmount is an estimate
Stalled dealCRM opportunity past its close date and still open

Every signal above runs identically whether the data arrives from a live connector or from a CSV / JSON finance export, detection is source-agnostic. Amounts for the two pricing signals (price never moved, discount creep) are estimates, because LeakIQ observes billing history but never sees the underlying contract. Duplicate charge, duplicate invoice and duplicate credit note are surfaced as possible duplicates for a human to confirm before any refund or credit.

For an overdue UK (GBP) commercial invoice, LeakIQ also shows the statutory late-payment interest and fixed compensation you are entitled to add under the Late Payment of Commercial Debts Act, calculated from the invoice due date and the public Bank of England reference rate. This is an entitlement surfaced alongside the overdue finding, not money already lost, so it is deliberately never added to the amount at risk.

Every finding also carries a confidence score. It is deterministic, not a machine-learning probability, and reflects how directly the signal is observed in your data. A fact read straight from the ledger (an invoice that is overdue, a direct debit that failed) scores highest. A finding that needs matching (an unapplied payment, a duplicate invoice) scores a little lower. A forward-looking estimate (an expected-but-unbilled renewal, a stalled deal) lower again. Scores are capped so LeakIQ never claims total certainty, and every issue links back to the source record behind it.

Read-only, end to end: LeakIQ surfaces each finding and tracks its recovery, it never writes back, retries a payment, issues a refund or moves money. Every recovery action is taken by your team in your own systems.

Authentication & access control

ITSecurityCompliance

LeakIQ uses a layered role-based access control model with two levels: account-level roles that govern the company (billing, users, connector setup) and workspace-level roles that govern day-to-day recovery operations. A user can belong to one or more workspaces and is assigned a workspace role independently in each, a single login carries all of a user's memberships, and switching workspace applies that workspace's role. Permission checks are enforced server-side on every request: recovery actions (execute, approve, reject and record-outcome) and all connector, user and billing changes are role-gated in the API layer, not only in the UI.

Account-level roles (company)

RoleCapabilities
Account OwnerCompany-level authority across all workspaces on the account: billing and subscriptions, company settings, user and workspace management, connector/integration setup, and governance oversight.
Integrations managerA delegatable grant that lets a nominated user set up and manage connectors on the Owner's behalf, without conferring full Owner authority over billing or users.

Workspace-level roles (per workspace)

RoleCapabilities
AdminFull operational control within a workspace: recovery cases, approval thresholds, member roles and audit-log export. Connector setup and billing are account-level (Owner/Integrations) and are not exposed to workspace Admins.
OperatorCan triage, progress, execute and close recovery cases within a workspace. Cannot manage connectors, users or billing.
ViewerRead-only access to recovery cases, queues and reports. Cannot take actions or change settings.

Business email enforcement: Registration is restricted to business email addresses. Personal email domains (Gmail, Outlook, iCloud, Yahoo, Hotmail and others) are rejected at account creation before any database write occurs. This check is enforced server-side and cannot be bypassed.

Login rate limiting and account lockout: After 5 consecutive failed login attempts for a given email address, the account is locked for 15 minutes. Lockout state is stored in the database against the user record, it persists across serverless cold starts and multiple Vercel instances. Attempt counters reset to zero on the next successful authentication. Failed attempts against unknown email addresses are silently dropped.

PropertyDetail
Lockout threshold5 consecutive failed login attempts for the same email address
Lockout duration15 minutes from the time the 5th failure is recorded
Lockout scopePer email address, not per IP address
PersistenceDB-backed (User.lockedUntil), survives serverless restarts
Reset conditionSuccessful authentication clears the counter and removes any lockout
Admin unlockPlatform administrators can unlock accounts immediately from the platform-admin Users panel

Session tokens: Sessions are managed by NextAuth v4 using a JWT strategy. The JWT is stored in a signed, encrypted HTTP-only cookie. There is no server-side session store, tokens are stateless and self-contained. Sessions expire on an activity-based cycle.

Privileged action controls: Sensitive actions, connector credential changes, user and role management, and audit-log exports, are restricted to the Admin role, enforced server-side, and written to the append-only audit trail with the acting user, timestamp and affected entity.

Recovery approval governance: High-value recoveries require sign-off before they can execute, segregation of duties is enforced by the platform, not left to process. Approval authority is threshold-based and configurable per workspace: recoveries at or above the workspace's approval threshold require management approval, and those at or above the higher senior threshold require senior-management sign-off. Below the threshold no approval is required. Thresholds default to £10,000 (management) and £50,000 (senior management) and are set by Admins under Settings → Approvals. The gate is enforced server-side, an over-threshold recovery cannot execute without a recorded approval, and every approval decision is written to the append-only audit log.

Platform administrator actions: LeakIQ platform administrators have access to a set of privileged actions, listed in full below. Each one is written to the audit log of the workspace it affects, marked as a platform-administrator action, so it appears in your own audit log and audit export rather than only in ours, and is distinguishable from the same action taken by someone on your own team.

Admin actionWhat it doesAudit event
Unlock accountImmediately clears a rate-limit lockout and resets the failed attempt counteruser.account_unlocked
Send password resetGenerates a signed HMAC recovery token (1-hour expiry) and delivers a password reset link to the user's registered email addressuser.password_reset_sent
Suspend workspaceSets client status to SUSPENDED, workspace remains accessible but is flagged for reviewclient.status_changed
Reactivate workspaceRestores client status to ACTIVEclient.status_changed
Grant or revoke a client roleAdds or removes an account-level Owner or Integrations grantclient.role_granted / client.role_revoked
Delete clientPermanently removes a client with no attached workspaces. Recorded internally, because no customer workspace remains to record it inclient.deleted
Create a workspaceCreates a new customer workspace, optionally linked to a clientworkspace.created
Invite a memberSends an invitation into a customer workspace at a chosen roleworkspace.invite.created / workspace.invite.revoked
Change or remove a memberChanges a workspace member's role, or removes their membershipmember.role_changed / member.removed
Revoke an API keyRevokes one of the workspace's API keys immediatelyapi_key.revoked
Disconnect a connectorDisconnects a connected system and revokes the OAuth grant at the provider where that provider supports itconnector.disconnected
Change retention stateMoves a workspace between active and archived retention statesworkspace.retention_state_changed
Export the audit trailExports a workspace's audit log as CSV, including the hash chaincompliance.audit_exported

Multi-factor authentication

SecurityITCompliance

LeakIQ supports TOTP-based multi-factor authentication (RFC 6238). MFA is compatible with any standards-compliant authenticator app including Google Authenticator, Microsoft Authenticator, Authy and 1Password.

PropertyDetail
ProtocolTOTP, RFC 6238 (Time-based One-Time Password)
Token length6 digits, 30-second window
EnrolmentQR code scan or manual secret entry in authenticator app
Backup codes8 single-use recovery codes generated at enrolment, stored hashed (scrypt)
AvailabilityOpt-in for any account; self-service enrolment. Enrolled accounts are challenged for a code at sign-in
Audit eventsEnable and disable events written to the audit log

Two-factor authentication is optional and off by default; a normal sign-in remains a single step for accounts that have not enrolled. MFA status is tracked per user, and enrolment and removal are written to the audit log.

Data handling

DataComplianceLegalSecurity

LeakIQ ingests read-only financial event data from connected systems and stores structured records for case analysis and workflow management. Data ingested is limited to what is necessary to identify and recover billing discrepancies.

What LeakIQ stores:

  • Raw event records from connector syncs (invoice records, payment records, dispute records, as returned by the source system API)
  • Recovery case metadata (amounts, statuses, SLA states, assigned operators)
  • Approval records with timestamps and approver identity
  • A full, append-only audit log of every action taken in a workspace
  • Encrypted connector credentials (API keys and OAuth tokens)

What LeakIQ does not store:

  • Payment card data (no PCI scope, card processing is handled entirely by Stripe)
  • Bank account details or sort codes
  • User passwords in plaintext (passwords are hashed with scrypt, a memory-hard key-derivation function, before storage)
  • Connector credentials in plaintext (all encrypted at rest, see Security & encryption)
Workspace isolation: Every query that reads workspace-scoped data carries a workspaceId filter, and each API route and server action resolves the caller's workspace from their authenticated session before it queries anything. To be precise about how that is guaranteed: it is enforced in application code and by review, not by an ORM-level constraint that would make a mistake impossible to write. Each workspace's records are logically separated by that key rather than held in a shared pool.
Data categoryWhere storedRetention
Connector event recordsNeon PostgreSQL (RawIntegrationEvent)Retained for the lifetime of the workspace. Disconnecting stops collection and destroys the credential, but does not delete events already read
Recovery cases & queue itemsNeon PostgreSQLRetained for workspace lifetime
Audit logNeon PostgreSQL (AuditLog)Retained indefinitely; append-only
Connector credentialsNeon PostgreSQL (IntegrationCredential, encrypted)Deleted immediately on connection removal
Session tokensSigned/encrypted HTTP-only cookie (client-side only)Expiry-bounded; no server-side copy exists

Data residency: Persistent data is stored in the EU (Neon PostgreSQL, AWS eu-central-1, Frankfurt). Application compute also runs in Frankfurt: Vercel serverless functions are pinned to the fra1 region, co-located with the database. Vercel Inc. and Resend are US companies, so any parent-company access is covered by Standard Contractual Clauses, but no customer data is stored on those layers and all persistent data lives in the EU database. See leakiq.io/legal/data-transfers for the full position.

Want to see an example of the free report you'd receive?

The headline figures, then every finding with its amount, the customers affected and the source records behind it.

See an example report

Security & encryption

SecurityITCompliance

Connector credentials (API keys, OAuth tokens) are encrypted before being written to the database and decrypted in-memory only when a connector call is made. The plaintext credential is never stored and never logged.

PropertyDetail
Encryption algorithmAES-256-GCM (authenticated encryption with associated data)
IV12-byte cryptographically random IV, generated per encryption operation
Authentication tag16-byte GCM auth tag verified on every decryption, tampered or corrupted ciphertext is rejected
Key derivationSHA-256 hash of CONNECTOR_CREDENTIAL_SECRET environment variable
Storage formatbase64(IV) · base64(authTag) · base64(ciphertext) stored as a single field
Transport encryptionTLS 1.2+ enforced by Vercel on all connections (inbound and outbound)

Timing-safe secret comparison: Webhook secrets (used by the inbound Zapier connector) are compared using Node.js crypto.timingSafeEqual, preventing timing-oracle attacks on secret verification.

Access boundary design: the properties below describe how access is bounded in the application. They are design properties upheld by the code paths described above, not assertions re-evaluated by a runtime check on every request:

BoundaryState
Workspace isolation enforcedYes, every workspace-scoped query carries workspaceId, enforced in application code and by review
Runtime isolation enforcedYes, no shared runtime state across workspaces
Cross-workspace data accessBlocked in application code and by review, not by a database-level constraint
Replay executionDisabled
Distributed cross-workspace coordinationDisabled

Security event monitoring: Security-relevant events, permission denials, role and access changes, MFA enable/disable, and connector and billing changes, are recorded in the append-only, hash-chained audit trail described below, where they are queryable and exportable for review.

We are happy to complete your organisation's security questionnaire, provide architecture detail, or join a pre-connection technical review call. Contact support@leakiq.io.

Audit trail

ComplianceLegalSecurity

Every action taken in a workspace, recovery decisions, approvals, escalations, connector events, role changes, billing events, MFA changes, is written to an append-only audit log. Entries are never updated or deleted after creation.

The audit log implements a hash-chain integrity model. Each entry carries a reference to the previous entry, making retrospective tampering detectable. The full log is exportable by Admin users from the Audit & Evidence section at any time.

FieldDescription
eventMachine-readable event name (e.g. recovery.case.approved, queue.item_auto_assigned)
entityTypeThe type of entity the event relates to (e.g. RecoveryCase, Workspace)
entityIdThe ID of the entity
userIdThe user who performed the action (null for system-generated events)
metadataJSON payload with event-specific context
createdAtUTC timestamp, immutable after write

High-sensitivity events are written to that same append-only log: recovery workflow transitions, escalations, manual operator interventions, subscription and payment lifecycle events, role assignments and permission changes, MFA enrolment and removal, approval decisions, and privileged administrative actions.

Audit log extracts for specific time ranges can be provided on request as part of an audit or compliance exercise. Contact support@leakiq.io.

GDPR & data privacy

LegalComplianceData

LeakIQ processes personal data as a data processor on behalf of its customers (the data controller). Personal data processed is limited to what is contained within financial records (invoices, payments, dispute records) as returned by connected source systems.

TopicLeakIQ position
Data controllerLeakIQ's customer (the workspace owner)
Data processorLeakIQ
Lawful basisContractual necessity / legitimate interests (revenue recovery operations)
Data subjectsYour customers whose billing records are being reconciled
Right to erasureSupported. Clear workspace data yourself from Settings, Security, or ask us and we will delete it within 30 days of the request
Data portabilityA complete export of your workspace records, from first ingestion onwards, run by the account owner at any time from Settings, Data export. Credentials and a short list of other items are held back, and the archive carries a manifest naming each one and why. A standing right under clause 12.5 of the Master Subscription Agreement
Data Processing Agreement (DPA)Published at leakiq.io/legal/dpa, and incorporated as Schedule 1 of the Master Subscription Agreement
UK GDPRApplicable, LeakIQ operates as a UK-based service

Sub-processors: LeakIQ relies on the following sub-processors to deliver its service. Full sub-processor details, data locations and applicable data protection frameworks are included in the DPA.

Sub-processorRoleData handled
VercelApplication hosting & serverless runtimeRequest metadata; no persistent customer data stored
NeonDatabase (PostgreSQL)All persistent workspace and customer data
ResendTransactional email deliveryRecipient email address and notification content
AnthropicAI-assisted drafting in the issue assistant (off unless a workspace enables it)Where enabled: an individual issue description, its metadata and figures. No credentials, no bulk export
StripeBilling & payment processingSubscription and billing data only; no revenue recovery data
UpstashRate limiting on login, password reset and detection runsIP address and workspace identifier, held transiently
Sentry (Functional Software, Inc.)Server-side error and performance monitoring, EU data regionException stack traces and request diagnostics tagged with a workspace identifier; personal-data capture is not enabled

Enterprise SSO

ITSecurity

LeakIQ supports federated authentication via OpenID Connect (OIDC). SSO is enabled per tenant: an explicit allowlist of approved domains is configured for your organisation, and a sign-in from any domain outside that list is refused. There is no permissive default. SSO governs authentication only. User accounts and their roles are provisioned and managed within LeakIQ, not derived from the identity provider, so a person must already have been invited into a workspace before they can sign in through your identity provider. An unrecognised account is refused rather than created.

ProviderProtocolAvailability
Google WorkspaceOAuth 2.0 / OIDCAvailable
Microsoft Azure AD / Entra IDOAuth 2.0 / OIDCAvailable
SAML 2.0 (any compatible IdP)SAMLRoadmap

Roles are assigned within LeakIQ and are not derived from IdP group membership. Identity provider connections are configured by LeakIQ at the platform level rather than from workspace settings.

InfoSec Q&A

SecurityITComplianceLegal

The questions we receive most often from IT and security teams during vendor review.

Do you store our financial data?

We store the invoice, payment, credit-note and subscription records read from your systems, one row per source record with its source reference, plus the metrics and issues derived from them. We do not store cardholder data. All data is associated with your workspace and deleted when the workspace is closed.

Can you write to our systems?

No. LeakIQ only ever reads: no code path creates, updates or deletes a record in a connected system, and the only write-shaped calls are OAuth token exchanges. Where a provider offers read-only scopes we take them (Stripe, Xero, GoCardless). Intuit and Salesforce publish no read-only scope covering the records we need, so those grants are broader than our use. Per-connector detail at leakiq.io/trust/access.

How are credentials protected?

Credentials are encrypted with AES-256-GCM using a secret key that is stored separately from the database. Credentials are never returned in API responses or written to logs. Rotating the key is a planned operation rather than a drop-in change: the stored format carries no key version, so stored credentials are encrypted with the current key only and a rotation means re-encrypting them. Changing the key without that step would require every connector to be reauthorised.

Where is data stored?

In the EU, Neon PostgreSQL on AWS eu-central-1 (Frankfurt). Application compute runs in Frankfurt too: Vercel serverless functions are pinned to fra1, co-located with the database. Vercel is a US company, so parent-company access is covered by Standard Contractual Clauses, and workspace exports you generate are stored there for collection, but nothing else is. See leakiq.io/legal/data-transfers.

Do you offer a DPA?

Yes. Contact security@leakiq.io and we will provide a signed Data Processing Agreement within two business days.

Are you SOC 2 certified?

No. We do not hold a SOC 2 report and are not currently under audit; it is on our roadmap. Our infrastructure providers (Vercel, Neon, AWS) hold their own SOC 2 attestations, which cover their layer, not ours. Contact us for our current security posture documentation.

How do we revoke access?

Disconnect a connector from the Connected Systems page at any time. LeakIQ deletes its stored credential immediately and stops all API calls. For QuickBooks, Salesforce and Xero it also revokes the OAuth grant with the provider, so the authorisation itself is withdrawn, not just our copy of it. For connectors that offer no revocation API, remove the connection in the source system as well. Clearing workspace data from Settings, Security removes issues, recovery actions, outcomes, metrics, raw events and connections. The audit log is retained rather than deleted, with personal identifiers pseudonymised, because it is a tamper-evident hash chain.

What happens if LeakIQ is compromised?

We follow a documented Incident Response Plan covering detection, triage, containment, eradication, recovery and notification. Affected customers are notified without undue delay, and in any event within 72 hours of confirming a personal data breach, by email, with the information they need to meet their own regulatory obligations.

Can we get a penetration test report?

Vendor selection is in progress: a CREST-accredited firm has been identified and the test is not yet booked. When it completes the executive summary will be available under NDA. Contact security@leakiq.io.

How do we conduct a security review before connecting?

Start with the Security posture section above and this Q&A. For deeper review, email security@leakiq.io, we can schedule a technical call with your InfoSec team and complete your security questionnaire.

Zapier webhook connector

TechIT
Status: receiving, not yet detecting. The inbound connector is live: you can generate a workspace webhook URL today and LeakIQ will authenticate and record every event Zapier POSTs to it. Those events are stored as raw integration events and are not yet converted into the canonical finance records the detectors read, so sending an event to LeakIQ does not currently produce an issue. Turning a Zapier payload into a detectable record needs a per-payload field mapping, which is on the roadmap.
API base URL: All LeakIQ API endpoints are available at https://api.leakiq.io. Requests to api.leakiq.io/<path> map directly to the corresponding API route, no additional prefix required.

The inbound connector uses a webhook rather than an outbound API call. LeakIQ generates a unique, per-workspace webhook URL, and Zapier POSTs to it when a trigger fires in your account, so LeakIQ can receive events from any of Zapier's connected apps. For the opposite direction, sending LeakIQ events out to a Zapier Catch Hook, see Settings, Webhooks in the application, which holds a per-workspace endpoint and the event types it subscribes to.

Endpoint:

POST https://api.leakiq.io/integrations/zapier/webhook?connectionId=<id>&secret=<plaintext>

Authentication:

  • The connectionId is looked up and must exist as an active connection
  • The stored encrypted secret is decrypted at runtime and compared to the query parameter using crypto.timingSafeEqual, preventing timing-oracle attacks
  • Invalid or missing credentials return 401 Unauthorized

Accepted payload (JSON body):

{
  "eventType": "payment_failed",   // optional, defaults to "zapier_event"
  "externalId": "evt_abc123",      // optional, used for deduplication
  // any additional fields are stored as-is in the event payload
}

Successful delivery creates an event record with status RECEIVED. Events are deduplicated on (connectionId, externalId, eventType), duplicate deliveries are safely ignored. The webhook URL can be regenerated at any time from the Connected Systems page, immediately invalidating the previous secret. Failed deliveries are automatically retried (see Operational automation).

Operational automation

TechIT

LeakIQ runs a set of scheduled background processes that drive operational workflows. All jobs are authenticated using a server-to-server bearer token (CRON_SECRET) and run on Vercel's managed cron infrastructure.

ProcessScheduleWhat it does
Issue auto-assignmentEvery 15 minutesAssigns unassigned open queue items to Operator/Admin members using workload-balanced round-robin (fewest open items first)
First-detection notificationHourlyFires once per workspace after the first connector sync that surfaces at least one revenue issue; sends a detection summary email to the workspace Admin. Idempotent, skips if already sent (Workspace.firstDetectionEmailSentAt is set)
Escalation notificationDaily at 08:00Emails workspace Admins when queue items are at-risk or breached SLA; marks associated workflows as escalated
Approval reminderDaily at 09:00Sends reminder emails for pending approvals at 48-hour (amber) and 7-day (red) thresholds
Payment dunningDaily at 09:00Emails workspace Admins at day 3 and day 7 of a payment failure; skips if payment has since succeeded
Trial expiry warningDaily at 08:00Sends warning emails at 7 days and 3 days before trial expiry (24-hour final warning sent 12-36 hours before expiry)
Inactivity re-engagementDaily at 09:00 UTCEmails trial workspace Admins when no AuditLog activity has been recorded in the past 7 days. Idempotent within the deduplication window
NPS pulseDaily at 10:00 UTCSends a single-question Net Promoter Score email to workspaces that are 21-28 days old (mid-trial for 30-day pilots). Responses are recorded at /api/nps. Fires once per workspace
Monthly reconciliation summary1st of month at 07:00Emails Growth and Enterprise workspace Admins a prior-month summary: issues detected, resolved, open and total exposure
Webhook retryEvery 10 minutesRetries failed webhook deliveries with exponential backoff
Connector health alertHourlyChecks connector health; alerts Admins if a connector is degraded or unreachable

Webhook retry & dead-letter queue: Failed webhook deliveries are automatically retried on the following backoff schedule:

AttemptDelay
First deliveryImmediate
Retry 15 minutes
Retry 230 minutes
Retry 3 (max)2 hours

After maximum attempts are exhausted the delivery is dead-lettered: it is retained with its payload and last error rather than discarded, and every retry state transition is recorded in the audit log with workspace ID, entity type and last error. There is no self-serve screen for reviewing dead-lettered deliveries yet, so ask us and we will pull them for you.

All scheduled jobs implement AuditLog-based idempotency. If a job has already run for a given workspace within its deduplication window, it will skip without sending a duplicate notification or taking a duplicate action.

Have a security or technical review question?

We're happy to complete security questionnaires, provide a Data Processing Agreement, supply additional architecture detail, or join a technical review call before you connect your systems.

Contact usGuided Tour
LeakIQDetect. Manage. Recover.

Find and recover revenue from failed payments, overdue invoices and duplicate charges across Stripe, Xero, Salesforce and more.

LeakIQ Ltd

Company No. 17311148

195 Wood Street, London E17 3NU

Platform

PlatformFeaturesRevenue leakage detectionSecurityvs Spreadsheetsvs Building in-housevs Chasing tools

Get started

Guided TourFree leakage reportLeakage calculatorBook a callUse CasesPricing

Resources

What is revenue leakage?GuidesDocumentationFAQs

Company

AboutPartner ProgrammeWhat's NewBrand & press kitTrust CentreA word on AILegal and contractsContact us

© 2026 LeakIQ. B2B revenue recovery for finance and operations teams.

System statusPrivacyCookiesTermsAccessibility