1
Generate Key Pair
Endpoint:
POST /api/v1/onboarding/generate-keysCaller: Card Issuer Application (when user enables Vero)Request: NoneResponse:2
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—Vero never sees the actual PAN.3
Create Payment with Encrypted Receipt
Endpoint: Response:
POST /api/v1/payments/{gateway}/createCaller: Merchant POS (when user taps card)Request:4
Grant Decrypt Access
Endpoint: Response:
POST /api/v1/keys/grant-accessCaller: Card Issuer Application (when user taps “View Receipt”)Request:5
Decrypt Receipt
Endpoint: Response:
POST /api/v1/payments/decryptCaller: Card Issuer ApplicationRequest: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
Vero 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.