The problem with traditional payment APIs
Stripe, LemonSqueezy, Paddle — every conventional payment provider requires:- An email address (PII, GDPR liability)
- An account and password (phishable, breachable)
- Centralized key storage (single point of failure)
- Trust that the provider doesn’t sell your data
What we store — and what we don’t
| Data | Stored | Why |
|---|---|---|
payment_hash | ✅ Yes | SHA-256 of preimage — already public in BOLT11 invoice |
| Lightning Address | ✅ Yes (owner only) | Needed to route the 99.7% split |
| Endpoint called | ✅ Yes | Required for your analytics |
preimage (payment secret) | ❌ Never | Would expose the payment key |
| ❌ Never | Not needed — wallet is identity | |
| Name / IP / device | ❌ Never | Not collected at any layer |
| Cookies / tracking | ❌ Never | No analytics SDKs, no fingerprinting |
Why payment_hash is safe to store
The preimage is the 32-byte secret that proves payment. Its SHA-256 hash (payment_hash) is already broadcast publicly in the BOLT11 invoice the moment you create it. Storing the hash reveals nothing — the preimage never touches our database.
Authentication: your wallet, not a password
Developer dashboard
The analytics dashboard authenticates via LNURL-auth — the same secp256k1 flow used by Lightning wallets:Data deletion
Only your wallet can authorize deletion of your data. The flow:- Client calls
/api/lnurl-auth?lightningAddress=you@yourdomain.com - Server returns a one-time k1 challenge + LNURL
- Your wallet signs k1 with its secp256k1 private key
- Server verifies the signature — issues a single-use 64-char token
- Client POSTs to
/api/delete-datawith{ lightningAddress, token } - Server revokes token immediately (prevents replay), deletes all rows
- Data is gone — no support ticket, no email confirmation
Key distribution
Traditional SaaS: one breach → everything exposed. l402-kit distributes trust across layers:LGPD / GDPR compliance by design
Because we store zero PII, most LGPD/GDPR obligations don’t apply:- No data subject requests — there’s no identity to look up
- No breach notification for personal data — payment_hash is not personal data
- No cookie consent — no tracking, no cookies
- Right to erasure — fulfilled cryptographically via LNURL-auth delete
Lightning payments are private by default
Lightning payments don’t identify the payer on-chain:- No name, no address, no bank account
- The payment route is onion-encrypted (like Tor)
- Only the invoice issuer knows the payment was settled
- The payer’s identity is never revealed to the payee
Comparison
| l402-kit | Stripe | LemonSqueezy | |
|---|---|---|---|
| Email required | ❌ | ✅ | ✅ |
| Account required | ❌ | ✅ | ✅ |
| KYC / identity | ❌ | ✅ | ✅ |
| PII stored | ❌ | ✅ | ✅ |
| Auth method | secp256k1 wallet | email + password | email + password |
| Delete mechanism | cryptographic proof | email request | email request |
| LGPD/GDPR overhead | minimal | high | high |
| Payer anonymous | ✅ | ❌ | ❌ |
What this means for your users
If you build on l402-kit:- Your users never hand you their email
- A breach of your database exposes nothing personal
- Any AI agent can pay your API without an account or identity
- Users who want to delete their data do it themselves, instantly, with their wallet