Error codes
Vpay returns standard HTTP status codes. Business errors use ProblemDetails with atype field set to a VPAY_* code.
HTTP status summary
| HTTP | When |
|---|---|
200 | Success |
400 | Request validation failed (missing/invalid fields) |
401 | Authentication failed or missing Bearer token |
404 | Payment session not found (GET /pay/api/payment/...) |
422 | Business rule violation (duplicate session, inactive terminal, etc.) |
500 | Unexpected server error |
Vpay error types (type)
| Code | HTTP | Title | Message (EN) | Recommended action |
|---|---|---|---|---|
VPAY_001 | 422 | Payment session already exists | The payment session already exists. | Use a new transactionReferenceNumber or query existing session |
VPAY_002 | 422 | Payment session does not exist | The payment session does not exist. | Verify checkoutSessionId; link may be invalid or expired |
VPAY_003 | 422 | BeePay API communication error | Communication error with card processor API. | Retry; contact support if persistent |
VPAY_004 | 422 | Card processor controlled error | Controlled error from card processor. | Review processor message; adjust request |
VPAY_005 | 422 | Terminal not registered | Payment terminal not registered in the system. | Verify terminal provisioning with Vpay |
VPAY_006 | 422 | Transaction declined | Transaction declined by processor. | Ask payer to use another card or contact issuer |
VPAY_007 | 404 | Payment not found | Specified payment not found. | Confirm checkoutSessionId and environment |
VPAY_008 | 422 | Payment cannot be reversed | Payment not in reversible state. | Not applicable to public checkout API v1 |
VPAY_009 | 422 | Reversal processor error | Error during reversal. | Not applicable to public checkout API v1 |
VPAY_010 | 200 | Reversal successful | Reversal completed. | Not applicable to public checkout API v1 |
VPAY_011 | 422 | Settled or amount mismatch | Cannot reverse settled transaction. | Not applicable to public checkout API v1 |
VPAY_008–VPAY_011 are listed for completeness; they apply to reversal flows outside this public integration guide.
Validation errors (400)
Example:Authentication errors (401)
- Invalid
client_id/client_secretat auth endpoint - Expired or malformed JWT on protected routes
- Token without
VpayTerminalrole
Declined payments (VPAY_006)
Card declines during checkout may surface as VPAY_006 in API responses. The payer sees a friendly message on the hosted form; your backend should treat state: 2 (Failed) on payment status as the source of truth after redirect.
Support
When contacting support, includecheckoutSessionId, transactionReferenceNumber, internalTransactionReferenceNumber, and X-idoperacion if used. See Support.
