Security & trust

Your history, kept
true by design.

Costline exists to record what work actually cost — and to prove that record never quietly changed. That promise is enforced in the database itself, not left to good intentions in the code.

The core guarantee

Past costs never change
when rates move on.

This is the single rule the whole product is built around. Three mechanisms make it hold — each one enforced where it can’t be bypassed.

Rates and prices are append-only

You never overwrite a rate. Changing one adds a new version with an effective date, and the old version stays on the record. Database triggers block edits and deletes to historical versions — the protection lives below the app, not just inside it.

Every log carries its own snapshot

When work is recorded, Costline resolves the rate that applied on that work date and stores the amount directly on the log. That figure is permanent. A rate change next month cannot reach back and move it.

Reports read stored numbers, never today's rates

Totals, cost-per-hectare and trends are aggregated from the amounts saved on each log. Reports are never re-priced from the current rate table, so last season reads the same today as it did the day it closed.

Corrections are handled the honest way: a mistaken entry is adjusted through a new, dated record — the original is kept, never silently overwritten. The audit trail stays intact.

How your data is held

The same discipline,
applied to everything.

The integrity that protects your history is one part of a wider posture. Here is how access, isolation and durability work.

Tenant isolation in the database

Every organisation's data is separated by row-level security enforced in PostgreSQL. A query can only ever return rows belonging to the signed-in user's organisation — the rule is in the database, so a bug in the application can't leak across tenants.

Role-based access

Four roles — owner, manager, foreman and viewer — decide who can log work, change rates, invite people or only read. The last owner of an organisation is protected from removal, so no account is ever left without an administrator.

Authentication

Sign-in is handled by Supabase Auth over encrypted connections. Sessions are scoped per user, and access to your organisation's data is checked on every request.

Encryption in transit and at rest

All traffic is served over HTTPS/TLS. Your data is encrypted at rest on managed infrastructure. Privileged, cross-organisation lookups run only through a controlled server path — never exposed to the browser.

Backups and durability

The database runs on managed Supabase infrastructure with automated backups and point-in-time recovery, so an operational mishap doesn't become lost history.

Error monitoring without your data

We use Sentry to catch problems early, configured to scrub personal and cost data before anything is sent. We watch for faults; we don't ship your numbers off to do it.

Where your data lives

Hosted in the EU. Yours to take.

Costline runs on Supabase in the eu-central-1 region (Frankfurt). That’s a straight answer we’re happy to put in writing for a POPIA review.

Your cost data belongs to you. You can export it, and if you leave we’ll return it and delete it on request. We don’t sell data, and we don’t use your numbers to train anything.

South-African data residency is on the roadmap — if it’s a requirement for your operation, raise it and we’ll talk through the options.

Sub-processors

The third parties that help run Costline, and what each one handles.

SupabaseEU (eu-central-1)
Database, authentication and hosting
VercelGlobal edge; app runs from the EU
Application hosting and content delivery
SentryEU data region
Error monitoring (PII-scrubbed)
ResendProcesses email metadata only
Transactional email (invitations)

Have a harder question?

If your IT or compliance team needs specifics — a DPA, retention terms, an access review — we’ll give real answers, not marketing ones.

Talk to us

Or read the privacy policy.