Security

Your panel API keys are encrypted before they touch our database, masked after you save them, and never visible to us in plaintext through any user interface or log.

Last updated 2026-05-11

What we store / What we don't

βœ“ We store

Ciphertext of your API key. Panel URL and name. Current balance. Order history. Encrypted WooCommerce credentials. Optional Telegram bot token (encrypted).

βœ— We don't store

Plaintext API keys. Your panel password. Your WooCommerce admin password. Payment information (we don't take payment). Browsing data.

How encryption works

We use AES-256-GCM with a random 16-byte initialization vector per record. The master encryption key lives in our hosting provider's environment variables, kept separate from the database. When you paste a key, we encrypt it in the request handler and store only the ciphertext plus the last 4 characters for display.

Youpaste keyHTTPS/api/panelsencrypt() in memoryDatabaseπŸ”’ ciphertext+ last4Backgroundjob (cron)decrypt()in memory, discardedYour panelorder submitted

The honest caveat

Could a determined operator with full server access decrypt your keys? Technically yes β€” background jobs need to decrypt every few minutes to submit your orders. We chose this trade-off so PanelPilot works while you sleep. Here's how we mitigate it: keys are never returned to the UI, never logged, masked everywhere, and the encryption key is stored separately from the database credentials.

What you can do

Responsible disclosure

If you find a security issue, email security@panelpilot.app. We read every report and respond within 48 hours.