Your commercial data, properly fenced off
Kelekto holds your contracts, your rates and your clients’ payment behaviour. That deserves more care than a typical invoicing tool takes.
Tenant isolation in the database
Every business record carries an organisation ID and every table has row level security enabled. Access is granted by a single membership check evaluated inside Postgres — not by application code that could forget a WHERE clause.
Private file storage
Contracts, receipts, invoice PDFs and capture attachments live in private buckets, partitioned by organisation. Files are only ever reachable through short-lived signed URLs generated server-side.
Privileged keys stay on the server
The service-role key that can bypass row level security is never shipped to the browser. It is used only by server routes and background jobs, and only after organisation membership has been validated.
Sensitive workflows are server-side
Invoice numbering, finalisation, PDF generation, sending, reminders, public invoice tokens and webhook ingestion all run on the server. The browser cannot allocate an invoice number or trigger an email directly.
Auditable by default
Invoice created, edited, sent; reminder sent; payment recorded; contract updated; capture processed. Each becomes an activity event with an actor and a timestamp, so you can always answer “what happened here?”.
The AI boundary
A clear line, written into the architecture
AI is useful for reading messy human input. It is not trusted with arithmetic, and it is not trusted with a decision about your money.
Never done by AI
- Invoice totals, tax and balances
- Due dates and payment terms
- Invoice numbering
- Contract values and consumption
- Whether an invoice is overdue
Where AI assists
- Classifying a captured message
- Extracting a receipt's merchant, date and total
- Suggesting the likely client for a capture
- Drafting reminder wording from deterministic facts
Everything a model suggests is a proposal that a person confirms. Financial figures are calculated in decimal arithmetic in the domain layer and the database, and are covered by unit tests.
Sharing invoices
Customer links that cannot be guessed
- Customer invoice links use a random token, never the invoice's internal ID
- Tokens are stored hashed, can be given an expiry, and can be revoked
- Supporting evidence is only exposed on a link when you choose to share it
- Public endpoints are rate limited and webhook signatures are verified
Where Kelekto is today
Kelekto is in active development and early access. The controls described on this page are architectural commitments built into the product from the first migration onward. We do not yet hold a formal certification such as SOC 2 or ISO 27001, and we would rather say so plainly than imply otherwise.