Skip to content

Security & trust

Bank-grade protection for your most sensitive data.

Payroll data is some of the most sensitive information your business holds. We treat it that way.

Draft — for review by counsel.

SSNs and bank numbers encrypted

Social Security numbers, taxpayer IDs, bank account and routing numbers and tax account numbers are encrypted field by field (AES-256) at rest, with keys in Azure Key Vault. Screens show only the last four digits.

Two-factor where it matters

Owners confirm it's them with an authenticator app at sign-in. Changing a bank account, approving payroll, downloading bank or SSA files and showing a full SSN always need a second check.

Full audit log

Sensitive changes and every look by our support or setup team are recorded in your business's audit log, which can't be edited or deleted.

Encrypted backups

Automated, encrypted database backups with point-in-time restore protect against data loss.

Your data stays yours

Each business's records are kept apart on every request and by the database itself. Our staff get in only through a time-limited session you can see.

Built on Microsoft Azure

We run in Azure data centers in the United States, with encryption in transit (TLS 1.2+) and at rest.

Responsible disclosure

Found a vulnerability?

We welcome reports from security researchers. Email us with details and we'll respond within two business days. Please don't access data that isn't yours or disrupt the service.

  • Secrets and payment keys kept in hosting settings and Azure Key Vault, never in code
  • Card details handled by Stripe; we never see or store card numbers
  • Setup help works through 7-day access you grant and can turn off at any time
  • Session timeouts and secure, HTTP-only cookies
  • Employees see only their own pay information
  • Dependency and vulnerability scanning on every build

Payroll you can trust

Join small businesses across the U.S. saving hours every pay period. Your first two months are free.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.