# PAYMENT_DECLINED

# PAYMENT_DECLINED

The payment processor returned a definitive decline (insufficient funds, card blocked, fraud signal, do-not-honor).

*Reserved error code — not currently emitted by any endpoint. Partners may begin handling it defensively; backend will start emitting once wired in.*

A definitive decline reaches you today as an `errors[].code` on the order rather than as this top-level
code: either the specific reason ([`INSUFFICIENT_FUNDS`](/errors/INSUFFICIENT_FUNDS),
[`CARD_EXPIRED`](/errors/CARD_EXPIRED), [`INCORRECT_CVC`](/errors/INCORRECT_CVC),
[`CARD_LOST_OR_STOLEN`](/errors/CARD_LOST_OR_STOLEN), [`PROCESSING_ERROR`](/errors/PROCESSING_ERROR))
or [`PAYMENT_FAILED`](/errors/PAYMENT_FAILED) when the processor did not attribute it. See
[Order lifecycle → Error codes](/distribution-partners/marketfront-api/guides/order-lifecycle#error-codes).

## Summary

| Field | Value |
|---|---|
| HTTP status | `400` |
| `errorCategory` | `payment` |
| `retryable` | `false` |

## When This Fires

- **`POST /v1/marketfront/orders/place`** — payment authorization was declined by the issuing bank or processor risk engine.

## Recommended Action

Surface the decline to the user and let them choose a different payment method:

1. Show a clear "your card was declined — please try another payment method" message.
2. Open the payment-method picker.
3. Resubmit `place` with the new method.

Do not retry the declined card automatically — repeated retries can trigger fraud lockouts.

## Example

```json
{
  "type": "https://developer.gett-tech.com/errors/PAYMENT_DECLINED",
  "title": "Bad Request",
  "status": 400,
  "detail": "The payment was declined by the issuer.",
  "instance": "/v1/marketfront/orders/place",
  "requestId": "req_abc123",
  "timestamp": "2026-04-27T14:30:00.000Z",
  "errorCode": "PAYMENT_DECLINED",
  "errorCategory": "payment",
  "retryable": false
}
```
