settlement:prepareMutates state: Yes
Idempotency: Stable
request_idConfirmation:
confirmed_by_user=true under the active authorization policy
on_ramp, off_ramp, and
on_chain_swap; sources are quote_accept and auto_selected. Two hops
require top-level intermediate_asset. Hops contain route data only; MCP binds
the top-level destination recipient and the internal two-hop reference.
For a plan-bound payment, also provide plan_id and a unique plan_position.
Its confirmation occurs when the complete plan is submitted, so it does not
use standalone confirmed_by_user.
Core independently validates quote references, amount continuity, readiness,
and the route. If the fiat rail is not ready, it returns need_review with
payment_created=false and reason=rail_not_ready; no payment or authorization
was created.
A successful result is the durable payment view. Use the exact hops from an
unexpired estimate while its inputs are unchanged. On QUOTE_EXPIRED or
PRICE_MISMATCH, estimate again and reconfirm the refreshed terms.
When status is approval_required, hosted OAuth calls
show_payment_approval; local clients show the expiring first-party approval
URL. When status is approval_ready, continue the same payment.
