# INCORRECT_CVC

# INCORRECT_CVC

The issuer declined the payment because the card security code did not match the value on file. The card itself is fine — the data submitted with it was wrong.

## Summary

| Field | Value |
|---|---|
| Appears as | `errors[].code` |
| Response | HTTP `200` — `Order` with `isValid: false` and a populated `errors[]` |
| Retry the same card | Yes — but only with a corrected security code |

:::note[This is a reason code, not a top-level error code]
`INCORRECT_CVC` is an `errors[].code` value on the order. It is **not** a top-level
`ProblemDetail.errorCode`, so it carries no HTTP status, `errorCategory`, or `retryable` field of its
own. See [Unified OrderError shape](/distribution-partners/marketfront-api/guides/order-lifecycle#unified-ordererror-shape).
:::

## When This Fires

- **`POST /v1/marketfront/orders/place`** — the issuer rejected the security code supplied when the card was vaulted.

## Recommended Action

Re-prompt the customer for the security code on the **same** card, then vault it again and resubmit.

This is the one payment decline in this group where keeping the same card is the right move — but only after the data changes. Resubmitting the identical security code will fail identically and consumes an authorization attempt for nothing, so do not retry automatically. Ask, then retry once.

If the second attempt also returns `INCORRECT_CVC`, stop asking and offer a different payment method: at that point the customer most likely does not have the correct code for that card.

## Example

```json
{
  "isValid": false,
  "errors": [
    {
      "code": "INCORRECT_CVC",
      "message": "The security code for your card wasn't correct. Please check it and try again.",
      "pointer": null
    }
  ]
}
```
