EN

x402 payment requirements · Updated

When an x402 payTo address changes: what to compare.

A different recipient deserves attention, but the change alone does not explain why it happened. Compare the complete requirement, its observation time, and the resource before your payment policy decides what to do.

Read the illustrated evidence example

A five-part comparison

Start with the whole requirement.

A payTo value only makes sense beside its network, asset, amount, scheme, and resource. Keep the challenge your client actually received, including its timestamp, so you can compare it with a saved observation instead of comparing an address in isolation.

Synthetic comparisonIllustrative values · not live evidence
FieldEarlier observationNew challengeWhat the difference tells you
Resource/v1/resource/v1/resourceThe comparison still concerns the same endpoint path.
Networkeip155:8453eip155:8453No payment-network change appears in this example.
Assetsynthetic token 0x…C3synthetic token 0x…C3The same illustrative contract identifier appears on the listed network.
Amount1000 atomic units1000 atomic unitsNo amount change appears in this example.
payTo0x…A10x…B2The advertised recipient differs. The evidence does not supply the reason.

All abbreviated addresses are display-only synthetic identifiers. They are not usable payment instructions.

payTo
The recipient advertised by that payment option. A difference shows that the client was asked to pay a different recipient value.
Network + asset
The settlement context. The same address text on another network, or the same ticker for another asset identifier, is not the same payment option.
Amount
The amount is part of IFF's full option fingerprint. A changed amount with the same scheme, network, asset, and recipient can be classified as amount_only by preflight comparison.
Resource
The endpoint URL selects the IFF record and comparison scope. A different host or path should be inspected as a different resource. It is not part of IFF's payment-option fingerprint.

Context before conclusions

A change can be routine.

Providers can rotate a treasury address, migrate custody, change an asset or network, update a price, or deploy a new resource path. A cached or delayed challenge can also make a valid transition look inconsistent for a short time. Those are possibilities to investigate, not explanations established by IFF.

A conflict is a prompt to pause and check.

diverged means at least one option your client supplied did not match the recent observed option union. amount_only means every supplied option matched an observed scheme, network, asset, and recipient, while at least one differed in amount. The broader payee classification means at least one supplied option had no match for its non-amount fields; it does not claim that the recipient alone changed.

A stale observation adds another limit. IFF still compares the new requirement with the latest observation window and reports matches_last_observed, but the verdict remains stale. That can tell you whether the terms match the last saved evidence; it cannot make old evidence current.

What the record contains

Use history to establish sequence, not motive.

The latest public evidence card shows the current saved payment options and observation time. Its requirements.current and requirements.history blocks summarize consecutive fingerprint runs with first-seen, last-seen, and observation counts. The public history identifies that a normalized option set changed; it does not expose a plain-text before-and-after explanation or attribute the change to an operator.

  1. Match the exact resource.Compare the same normalized public HTTPS endpoint, including its path.
  2. Check the timestamps and freshness.An older challenge and a newer observation may describe different legitimate states.
  3. Compare all advertised options.Option order and duplicate entries do not create a different normalized set, while scheme, network, asset, recipient, and amount do.
  4. Separate ownership from requirements.A verified ownership dimension records origin control. It does not prove control of a payment address, and an observed-tier card can have unverified ownership.
  5. Apply your own hold or escalation rule.Ask the provider through a separately trusted channel when a change exceeds your policy.

Your payment policy decides

What these observations do not prove.

A matching requirement is evidence of consistency with recent observations. A changed requirement is evidence of a difference. Neither result proves payment safety, recipient ownership, authorization, confirmed fraud, service delivery, settlement, or the correctness of a paid response.

Inspect an endpoint in Live lookup Add an explicit preflight decision Read the preflight API contract