CVC Sessions
CVC sessions temporarily store CVV/CVC data separately from the card token.Overview
CVV/CVC codes are:- Never stored with the card token
- Stored temporarily in a separate session
- Deleted after use (for security)
- Required by most PSPs for card-not-present transactions
Session Lifecycle
Creating a CVC Session
CVC sessions are created automatically when you tokenize with a CVV:Session Properties
| Property | Regular Token | Test Token |
|---|---|---|
| TTL | 90 seconds | 1 year (test tokens) |
| Deleted after use | Yes | No |
| Can be reused | No | Yes |
Using a CVC Session
Includecvc_session_id in proxy requests:
Session Expiration
Regular Sessions (90 seconds)
Test Sessions (1 year)
Test token CVC sessions last much longer for development convenience.Without CVC Session
If you don’t have a CVC session:Option 1: Skip CVV
Some PSPs allow transactions without CVV:Option 2: Re-tokenize
Collect CVV again and create a new session:Error Responses
Session Not Found
- Session expired (>90 seconds)
- Session already used
- Invalid session ID
- Session from different project
Missing Session ID
Using${cvv} placeholder without a CVC session:
Best Practices
1. Use CVC Sessions Promptly
The 90-second window is intentional for security. Design your flow to:- Tokenize with CVV
- Immediately process payment
- Don’t store session IDs long-term
2. Handle Expiration Gracefully
3. Use Test Tokens for Development
Test tokens have 1-year CVC sessions, making development easier:4. Delete a session when needed
You can delete a CVC session by ID (e.g. after a successful transaction) with DELETE /proxy/delete-cvc-session/ (API key auth). See API Reference → Proxy.5. Don’t Store CVC Session IDs
CVC session IDs are temporary. Store only:- ✅ Token (
tok_xxx) - ✅ Masked card number
- ❌ CVC session ID (temporary)
- ❌ CVV (never store)
Flow Diagrams
Standard Payment Flow
Recurring Payment Flow
Next Steps
- Tokenization - Creating tokens with CVV
- Test Tokens - Long-lived CVC sessions
- JSON Proxy - Using proxy requests