---
title: "Challenge cannot be read by a client — x402 defect class unparseable-challenge"
description: "Challenge cannot be read by a client (unparseable-challenge), an x402 defect class: The PAYMENT-REQUIRED header is present and is base64-encoded JSON a v2 client can parse. Detectable by an unpaid probe. Surfaces to the buyer as 'invalid payment header format' or a silent parse failure. The seller sees nothing."
canonical: "https://scvd.store/defects/unparseable-challenge"
url: "https://scvd.store/defects/unparseable-challenge"
term_code: "unparseable-challenge"
defined_in: "https://scvd.store/defects"
data: "https://scvd.store/defects.json"
vocabulary_version: "22"
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Challenge cannot be read by a client

`unparseable-challenge` — an x402 defect class.

**Asserts:** The PAYMENT-REQUIRED header is present and is base64-encoded JSON a v2 client can parse.

**Costs:** Surfaces to the buyer as 'invalid payment header format' or a silent parse failure. The seller sees nothing.

**Detectable:** unpaid — a free probe can see it

**Falsified by:** The header decoding to valid JSON by any conforming base64 + JSON reader at the stated moment.

**How an operator clears it:** Emit PAYMENT-REQUIRED as base64 over UTF-8 JSON, unwrapped and untruncated — check for a proxy that rewrites or size-caps headers, and for double encoding. Decode your own header with an independent client before relisting; the free preflight does exactly that.

**What a buyer does:** Do not guess the terms. A challenge you could not decode is a door you cannot sign for; report the parse failure by name and move on, or hand the operator the free preflight's reading so they can see what your client saw.

**Our signal:** `payment-required-header`

---

Vocabulary v22, CC BY 4.0. Every class: https://scvd.store/defects. Machine-readable, with falsifiers and cross-instrument mappings: https://scvd.store/defects.json.

A class describes a property of one endpoint at one moment and never accumulates into a judgment on an operator.
