Security

Last updated: May 2026

PayOwed handles sensitive credentials (email OAuth tokens, bank details, payment links) on behalf of merchants. This page describes how that data is protected. Every claim below maps directly to code in production.

1. Encryption

At rest

All OAuth tokens (Gmail, Xero, PayPal) and sensitive credentials are encrypted before storage using AES-256-GCM with a 32-byte key, 12-byte random IV per encryption, and a 16-byte authentication tag for tamper detection. The encryption key is stored as an environment variable, never in source code.

Bank account details (account number, routing number) are stored encrypted using the same cipher. Email bodies rendered for display in the portal use the client portal token for access control, not stored in plaintext.

In transit

All connections use TLS. The application is deployed on Vercel with automatic HTTPS and HSTS headers. Database connections use TLS via the Supabase connection pooler.

2. Authentication and access

3. Token security

4. Bank account details

When merchants configure bank transfer as a payment option:

5. Webhook security

Inbound

Outbound

6. Email handling

7. Monitoring and incident response

8. Data location and retention

9. Compliance posture

10. Reporting a security issue

If you discover a security vulnerability, please report it to security@payowed.com.

Please do not publicly disclose vulnerabilities until we have had a chance to address them.


See also: Privacy Policy