Security at Fuel Relay
Last updated September 15, 2026 · v1.1
Fueling records are billing records. Here is how we protect them, in the same plain language we use everywhere else.
Encryption in transit and at rest
All traffic between the mobile app, the dashboard, and our servers uses TLS. The mobile app additionally pins our server certificates, so it refuses to talk to an impostor even on a hostile network. Data is encrypted at rest by our database provider.
Tenant isolation
Every table is protected by PostgreSQL row-level security, scoped to your organization. Isolation is enforced in the database itself, not just in application code, so one company's fuelers and logs are invisible to every other company at the lowest layer we control.
Least-privilege writes
Mutating actions go through server-side Edge Functions that validate input, enforce rate limits, deduplicate retries, and write the audit log. Privileged keys live in server-side vaults only; the browser and the mobile app never hold them.
Account security
- Passwords are hashed and never stored in plaintext, and every session is verified against the authentication server on each request, not just trusted from a cookie.
- Sensitive actions (deactivating a fueler code, exporting the audit log, changing billing or email, deleting the account) require a fresh password re-entry, valid for five minutes.
- Fueler access codes are bound to a device, and the Android app uses Google Play Integrity attestation to keep tampered clients out.
Audit logging
Every write to the database is recorded in an append-only audit log: who, what, and when. Admins can review and export their organization's log from the dashboard, which makes disputes about a fueling entry a lookup instead of an argument.
Payments
Billing is handled by Stripe. Card numbers are entered on Stripe's systems and stay there; they never touch our servers.
Application security
- The dashboard ships a strict Content-Security-Policy with per-request nonces, HSTS, and frame denial. No third-party scripts run in it except Stripe and our error monitoring.
- CSRF protection covers every state-changing request.
- Crash and error reports are scrubbed of personal data before they leave the device or browser.
Compliance posture
We have not yet completed a formal SOC 2 audit, and we will not claim one until we have. Our controls are built around the same principles: least privilege, tenant isolation, change auditing, and encryption by default. For GDPR, we offer a Data Processing Agreement and publish our sub-processor list.
Reporting a vulnerability
Found something? See our responsible disclosure policy or email security@fuelrelay.net. Good-faith research is protected by our safe harbor.