Generate Key Pair
Endpoint:
POST /api/v1/onboarding/generate-keysCaller: Card Issuer Application (when user enables DRP)Request: NoneResponse:Register User
Endpoint: Response:
POST /api/v1/onboarding/registerCaller: Card Issuer ApplicationRequest:hashedPan is SHA-256 hash of Primary Account Number. Card issuer application computes this—DRP never sees the actual PAN.Create Payment with Encrypted Receipt
Endpoint: Response:
POST /api/v1/payments/{gateway}/createCaller: Merchant POS (when user taps card)Request:Grant Decrypt Access
Endpoint: Response:
POST /api/v1/keys/grant-accessCaller: Card Issuer Application (when user taps “View Receipt”)Request:Summary
| Step | Endpoint | Caller | Input | Output |
|---|---|---|---|---|
| 1 | POST /onboarding/generate-keys | Card Issuer App | - | keyId, publicKey, privateKey |
| 2 | POST /onboarding/register | Card Issuer App | hashedPan, publicKey, keyId | userId |
| 3 | POST /payments/{gateway}/create | Merchant POS | receipt data, recipientHashedPan | paymentId |
| 4 | POST /keys/grant-access | Card Issuer App | userId, keyId | tokenId (2-3 min TTL) |
| 5 | POST /payments/decrypt | Card Issuer App | paymentId, tokenId, privateKey | Decrypted receipt |
Security
End-to-End Encryption
Receipt encrypted with user’s public key. Only user’s private key can decrypt.
Zero Knowledge
DRP stores only hashed PAN. No access to account data or plaintext receipts.
User Consent
Decryption requires biometric/PIN. Tokens expire in 2-3 minutes.
Private Key Security
Stored in device secure enclave. Never transmitted over network.