Going Live
Checklist for moving from sandbox to production.
Before You Switch
- Test the full flow in sandbox (Test in Sandbox)
- Verify signature checking is implemented in your return URL handler
- HMAC verification uses timing-safe comparison (prevents timing attacks)
Switch to Production
1. API Keys
Replace your test key with your live key:
- Authorization: Bearer vp_sk_test_xxx
+ Authorization: Bearer vp_sk_live_xxx
2. HTTPS Required
Production requires HTTPS for all URLs:
successUrlmust behttps://...cancelUrlmust behttps://...- API calls must go to
https://checkout.vonpay.com
3. Environment Variables
Ensure these are set in your production environment:
VON_PAY_SECRET_KEY=vp_sk_live_xxx # Your live API key
VON_PAY_SESSION_SECRET=ss_live_xxx # Provisioned by Von Payments — copy from dashboard
Do not generate the session secret yourself. It is issued by Von Payments when you create an API key and must match the value we store on the signing side. Copy it from /dashboard/developers/api-keys.
4. Return URL Handler
Your return URL handler must:
- Verify the HMAC signature before trusting
status - Handle both
succeededandfailedstatuses - Show appropriate confirmation/error to the buyer
- Update your order in your database
5. Test with a Real Payment
Make a small real payment ($1.00) to verify:
- Session creation works with live keys
- Payment form renders correctly
- Payment processes successfully
- Redirect includes valid signature
- Your order system is updated
Production Checklist
- Live API key configured
- Success URL uses HTTPS
- HMAC signature verification implemented
- Error handling for failed payments
- Order confirmation page works
- Small test payment succeeded
- Webhook endpoint configured + signature verification tested
- Webhook handler is idempotent (same event delivered twice = no duplicate fulfillment)
Monitoring
Set up uptime monitoring on:
GET https://checkout.vonpay.com/api/health
Returns 200 when healthy, 503 when degraded.
Support
If you encounter issues in production, include the X-Request-Id header value from the API response when contacting support. This allows us to trace your exact request in our logs.