← BACKSECURITY
Last reviewed: August 26, 2026 · Ember Media LLC
Bidness handles real money flows, broker API credentials, and personal data. Security isn't a marketing line for us — it's table stakes. This page explains how we protect your account, your data, and your trading credentials.
AUTHENTICATION
Two-Factor Authentication (TOTP)
All accounts can enable TOTP-based 2FA via standard authenticator apps (Authy, Google Authenticator, 1Password, etc.). Enrollment generates a set of single-use backup codes stored as bcrypt hashes — we never see the plaintext. We strongly recommend every user enable 2FA, especially Captain+ users with connected Kalshi credentials.
Session Management
Sessions are managed via Supabase Auth using HTTP-only secure cookies, not localStorage. Cookies are flagged Secure, SameSite=Lax, and rotate on re-authentication. We do not store passwords — Supabase handles password hashing using industry-standard bcrypt.
DATA STORAGE
Database — Supabase (PostgreSQL)
User data is stored in a managed Postgres database with encryption at rest. Row-Level Security (RLS) policies are enforced on every table containing user data — users can only read or write their own rows. Admin actions go through service-role keys held server-side and are scoped to specific operations.
Cache — Upstash Redis
Market data, scan results, and ephemeral session state are cached in Upstash Redis (TLS in transit, encryption at rest). No PII is written to Redis. Cache keys are namespaced by data type, never by user identity.
BROKER & EXCHANGE CREDENTIALS
Kalshi API Keys
Captain+ users connecting their personal Kalshi accounts provide an API Key ID (UUID) and an RSA private key (PEM). These credentials are encrypted before being written to the database — we never store them in plaintext. Decryption keys are held in Vercel environment variables, never committed to source control. Credentials are used only to execute orders you have explicitly authorized through our Auto-Trade feature.
What We Never Ask For
We do not ask for your bank login, broker password, Social Security number, or tax documents. We process payments only through Stripe — your card data goes directly to Stripe and never touches our servers. We do not have access to your full card number.
PAYMENTS
All payment processing is handled by Stripe, a PCI-DSS Level 1 compliant payment processor. We receive a Stripe customer ID and metadata about your subscription — we do not store credit card numbers, CVCs, or full bank details on our servers. Subscription cancellation is self-serve through the Stripe Customer Portal, accessible from your account settings.
INFRASTRUCTURE
- Hosting: Vercel (SOC 2 Type II, ISO 27001 certified)
- Database: Supabase (SOC 2 Type II, GDPR-ready)
- Cache: Upstash (SOC 2, GDPR-compliant)
- Payments: Stripe (PCI-DSS Level 1)
- Email: Transactional email via authenticated providers with SPF/DKIM/DMARC
- TLS: All traffic served over HTTPS with HSTS
API SECURITY
- Tier-gated routes return hard 402 responses with upgrade payloads — no information leakage about gated functionality
- Cron endpoints require a shared secret and are not callable without it
- Rate limits are applied to public endpoints to prevent abuse
- Webhook endpoints (Stripe) verify signatures before processing
- Service-role database keys are scoped server-side only and never reach the client
RESPONSIBLE DISCLOSURE
If you find a security vulnerability, please report it to
security@askbidness.com. We take every report seriously and will respond within 72 hours. Please do not publicly disclose the issue until we've had a chance to investigate and remediate. We don't currently run a paid bug bounty, but we're happy to credit researchers publicly with permission.
YOUR RIGHTS
You can export all your account data or request permanent deletion at any time from your account settings. Deletion requests are processed within 30 days. See our
Data Retention Policy for full details.