Hosted response guide

How to read the Wallet Action Preflight API after payment.

The live buyer path starts at the hosted Bankr route https://x402.bankr.bot/0xc04d0d464752a58b046105b45089d579eaf54036/bankr-preflight. After the Bankr-managed x402 payment step, buyers mainly need four blocks to read one result quickly: decision, policy.reasons, operator.step, and billing. The direct POST /v1/action/authorize contract still exists underneath as the broader fallback lane, but this page now leads with the hosted wrapper buyers see first.

Field Map

The four blocks buyers actually inspect after the hosted retry

decision

The top-line outcome for the hosted preflight check.

  • allow: the action can move toward submit.
  • review: a human operator must approve before execution.
  • deny: the action should be rewritten before retry.

policy.reasons

The concise explanation for why TXRISK and the wrapper lane returned that result.

  • Shows the current counterparty risk band and score.
  • Lists the watch flags or approval-shape reasons that moved the result.
  • Safe to surface in buyer-facing proofs and operator tooling.

operator.step

The exact next handoff once the hosted response lands.

  • proceed_to_submit for allow.
  • require_operator_review for review.
  • deny_and_rewrite_action for deny.

billing

The payment proof that tells the buyer this was an admitted hosted call, not just an unpaid quote.

  • charged_usdc shows the amount charged for this decision.
  • remaining_balance_usdc shows post-call balance state.
  • settlement_mode and related references keep the response anchored to the shipped x402 flow.

Hosted Reading Order

How to interpret one paid hosted response

  1. Start at the hosted Bankr route and expect a 402 payment_required on the first unpaid call.
  2. After payment, read decision first to know whether the action passed, needs review, or must stop.
  3. Read policy.reasons next to understand what drove that result and which risk signals fired.
  4. Use operator.step as the handoff instruction for your caller or operator queue, then confirm billing to prove the response came through the paid lane.

Fallback Contract Examples

Underlying TXRISK examples for the same decision language

Allow example: low-risk vendor payout

The hosted Bankr offer is the recommended buyer path, but the broader direct TXRISK route still uses the same decision vocabulary. This shipped allow path shows the underlying contract for the built-in vendor payout template. The operator can submit the action immediately because operator.step resolves to proceed_to_submit.

{
  "mode": "action_authorize",
  "authorizationId": "auth_882c6beff8fd",
  "decision": "allow",
  "action": {
    "version": "bankr-preflight-v1",
    "kind": "transfer",
    "chain": "base",
    "actor": "0x1111111111111111111111111111111111111111",
    "targetAddress": "0x1111111111111111111111111111111111111112",
    "amountUsd": 2800,
    "metadata": {"tokenSymbol": "USDC"}
  },
  "policy": {
    "profile": "operator_guard_v1",
    "decisionSource": "txrisk_action_policy",
    "reasons": [
      "counterparty risk band=low score=7",
      "watch flags: mixer_interaction, velocity_spike"
    ],
    "chargedOnDecision": true
  },
  "operator": {
    "step": "proceed_to_submit"
  },
  "billing": {
    "charged_usdc": "0.0020",
    "remaining_balance_usdc": "0.9980",
    "settlement_mode": "direct_transfer",
    "settlement_reference": null
  }
}

Review example: approval-backed subscription purchase

This shipped review path shows the same underlying policy language when a paid action requires explicit operator approval before submit. Buyers who start on the hosted route can use this fallback example to read the direct contract in more detail.

{
  "mode": "action_authorize",
  "authorizationId": "auth_844e3de6d819",
  "decision": "review",
  "action": {
    "version": "bankr-preflight-v1",
    "kind": "approval",
    "chain": "base",
    "actor": "0x1111111111111111111111111111111111111111",
    "targetAddress": "0x2222222222222222222222222222222222222222",
    "amountUsd": 299,
    "metadata": {
      "tokenAddress": "0x3333333333333333333333333333333333333333",
      "allowanceUsd": 299,
      "approvalScope": "exact"
    }
  },
  "policy": {
    "profile": "operator_guard_v1",
    "decisionSource": "txrisk_action_policy",
    "reasons": [
      "counterparty risk band=medium score=36",
      "watch flags: sanctions_proximity, contract_exploit_cluster"
    ],
    "chargedOnDecision": true
  },
  "operator": {
    "step": "require_operator_review"
  },
  "billing": {
    "charged_usdc": "0.0020",
    "remaining_balance_usdc": "0.9960",
    "settlement_mode": "direct_transfer",
    "settlement_reference": null
  }
}

Proof Path

How to open the same live lane

Hosted buyer path

  • Open /docs/ for the hosted quickstart and exact Bankr URL.
  • POST one transfer or approval action to the hosted route and expect the first unpaid 402.
  • Complete the Base payment step for 0.002 USDC.
  • Retry and inspect the final paid response using the same field guide explained here.

Direct TXRISK fallback path

  • Open /playground.html when you need the broader direct TXRISK route catalog.
  • Select POST /v1/action/authorize for the non-hosted fallback contract.
  • Keep x-chain aligned to the request body.
  • Expect the final paid response to include the same decision, reasons, operator step, and billing block.