Skip to content

x402 Cloud: exact BNKR + Permit2 402 then Payment verification failed (USDC canary not involved) #4

Description

@omgawdmadeit1

Summary

Exact-scheme BNKR x402 Cloud endpoint advertises a valid Permit2 402 (~$0.05 equivalent). POST /wallet/x402-pay (via bankr x402 call) does attempt a BNKR payment (paymentMade.amountUsd ≈ 0.0505) then the facilitator returns Payment verification failed. Funds are not taken. A sibling USDC canary on the same wallet is not involved.

This looks like custom-token exact + Permit2 verify on Bankr Cloud, not a USDC-refusal in the CLI.

Endpoint

  • URL: https://x402.bankr.bot/0x2265f8c2c50ee315fe12fb021fb7f9474bb5174b/lvl-canary-bnkr
  • Service: lvl-canary-bnkr (active, v1)
  • paymentScheme: exact
  • currency: BNKR
  • tokenAddress: 0x22aF33FE49fD1Fa80c7149773dDe5890D3c76F3b (Base, 18 decimals)
  • Price: 200 BNKR (~$0.05 at ~$0.00025–0.00027)
  • CLI: @bankr/cli 0.3.23
  • Payer (Bankr embedded EVM): 0x2265f8c2c50ee315fe12fb021fb7f9474bb5174b
  • Seller payTo in bankr.x402.json: LVL treasury (not used in the live 402)

Sibling USDC canary (control, not used in this smoke):

  • https://x402.bankr.bot/0x2265f8c2c50ee315fe12fb021fb7f9474bb5174b/lvl-canary
  • 402 asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, maxAmountRequired 50000

Live 402 (unpaid GET)

{
  "x402Version": 2,
  "error": "Payment Required",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "maxAmountRequired": "200000000000000000000",
      "amount": "200000000000000000000",
      "payTo": "0x8AEE621035D93Deb3C0C1177fac252dC2dd501a0",
      "asset": "0x22af33fe49fd1fa80c7149773dde5890d3c76f3b",
      "extra": {
        "name": "BNKR",
        "version": "1",
        "assetTransferMethod": "permit2",
        "facilitatorAddress": "0x4a15fc613c713FC52E907a77071Ec2d0a392a584",
        "permit2Spender": "0x8AEE621035D93Deb3C0C1177fac252dC2dd501a0"
      }
    }
  ],
  "facilitator": "https://api.bankr.bot/facilitator"
}

Fee router / Permit2 spender 0x8AEE62… bytecode witness string:

Witness(address to, address facilitator, uint256 validAfter)

(Witness witness)TokenPermissions(address token,uint256 amount)Witness(address to,address facilitator,uint256 validAfter))

facilitatorAddress 0x4a15fc… has no contract code (EOA). Canonical Coinbase exact proxy 0x402085c248EeA27D92E8b30b2C58ed07f9E20001 is not the advertised permit2Spender.

Payer state (before/after; BNKR not spent)

Repro

bankr --ni x402 call -y --max-payment 1 \
  'https://x402.bankr.bot/0x2265f8c2c50ee315fe12fb021fb7f9474bb5174b/lvl-canary-bnkr'

CLI help still says “automatic USDC payment”, but the API does price in BNKR.

Equivalent:

POST https://api.bankr.bot/wallet/x402-pay
X-API-Key: <key>
{"url":"https://x402.bankr.bot/0x2265f8c2c50ee315fe12fb021fb7f9474bb5174b/lvl-canary-bnkr","method":"GET","maxPaymentUsd":1}

Actual

HTTP 400 from CLI/API:

{
  "success": false,
  "status": 402,
  "response": { "error": "Payment verification failed" },
  "error": "x402 payment failed (status 402).",
  "paymentMade": {
    "amountUsd": 0.05052444852,
    "network": "eip155:8453",
    "payTo": "0x8AEE621035D93Deb3C0C1177fac252dC2dd501a0"
  },
  "endpointSchema": {
    "name": "lvl-canary-bnkr",
    "price": "200",
    "currency": "BNKR"
  }
}

paymentMade.amountUsd ≈ $0.05 matches 200 BNKR. Facilitator then fails verify. No on-chain settle; 200 BNKR remains.

Direct unpaid GET still 402 BNKR+Permit2. USDC lvl-canary still 402 USDC 50000.

POST https://api.bankr.bot/facilitator/verify with the user API key returns 401 missing bearer token / malformed token (user bk_usr_ key is not a facilitator bearer).

Expected

bankr x402 call / /wallet/x402-pay against an exact BNKR + Permit2 Cloud endpoint should verify + settle 200 BNKR (or return a specific Permit2 error: allowance, nonce, witness mismatch) and not a generic Payment verification failed after advertising currency: BNKR.

Notes

  • Not a USDC canary / LVL /api/pay issue.
  • Holding remaining BNKR off this wallet; 200 BNKR stays on 0x2265… for retry after a fix.
  • Happy to re-run the same x402 call when you have a patch.

Contact: GitHub omgawdmadeit1 / X OmgawdMadeit (Bankr whoami social).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions