Payment-infrastructuur leeft en sterft bij zijn security posture. Hier is precies wat we doen, wat we niet doen, en wat we niet zullen pretenderen al te hebben.
1. Non-custodial by design
De sterkste security-garantie die we bieden is architecturaal: we houden geen merchant-funds vast. Ooit. Wanneer een klant met een kaart betaalt, converteert de on-ramp fiat naar crypto en onze on-chain splitter routet het atomisch naar je walletadres in dezelfde transactie, meestal op Ethereum (ETH of USDC), soms op Polygon. Onze servers zien een event, geen balans. Er is geen hot wallet, geen pooled treasury, geen omnibus-account, dus er is geen honeypot voor een aanvaller om in te breken. Als PeptidePay morgen verdween, zouden je eerdere betalingen nog on-chain in je wallet staan.
2. Infrastructuur
Hosting: Vercel, met global edge network en DDoS-bescherming.
State store: Upstash Redis met TLS in transit en AES-256 at rest.
Uitbetaling: on-chain, meestal Ethereum-mainnet, soms Polygon. Dezelfde beveiligingsaannames als de chain zelf.
DNS & CDN: gehard met HSTS preload, CAA-records die de CA pinnen, DNSSEC ingeschakeld.
Secrets: opgeslagen in Vercel's encrypted env store; geroteerd bij employee-offboarding.
3. Authenticatie
Alleen magic links — geen wachtwoorden, niets om te phishen, niets om te hergebruiken uit een breach.
Magic links zijn single-use en vervallen in 15 minuten.
Dashboard-sessies zijn kortlevend (7 dagen) en gekoppeld aan de browser waarmee is ingelogd.
Session-cookies zijn HTTP-only, Secure, SameSite=Lax.
Verdachte logins (nieuw land, nieuwe ASN) triggeren een e-mail-alert en kunnen worden ingetrokken vanuit elke actieve sessie.
4. Webhooks
Elke webhook is getekend met HMAC-SHA256 met je account-secret; verifieer voordat je de payload vertrouwt.
Signature-header bevat een timestamp; weiger alles ouder dan 5 minuten om replay te voorkomen.
Retry-queue met exponentieel backoff (30s, 2m, 10m, 30m, 1u, 3u, 12u, 24u) en dan droppen.
Gedropte webhooks blijven 30 dagen afspeelbaar vanuit het dashboard.
We publiceren de huidige IP-egress-range zodat je ons op de firewall kunt allowlisten.
5. API-keys
Keys worden één keer getoond, server-side hashed (bcrypt) opgeslagen; we kunnen ze niet voor je ophalen.
Rouleerbaar op elk moment vanuit /app/settings — oude en nieuwe keys werken 24 uur parallel zodat je kunt deployen zonder downtime.
Scoped keys zijn gepland voor Q3 2026; voorlopig zijn keys full-access.
Rate-limited per key: 100 requests/seconde soft, 1000/seconde hard.
6. Encryptie
In transit: TLS 1.3 op elk endpoint; TLS 1.2 alleen toegestaan voor legacy webhook-consumers en gemarkeerd voor deprecation.
At rest: AES-256 op Upstash Redis en Vercel blob-storage.
Klant-e-mails worden gehasht (SHA-256 met per-merchant salt) voordat ze in server logs gaan; alleen het merchant-dashboard toont ze in klare tekst.