<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Elijah</title>
    <description>The latest articles on DEV Community by Elijah (@book0feli).</description>
    <link>https://dev.to/book0feli</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4229402%2F6d1ba614-22ba-4ab5-9f26-eb46a8ad034a.png</url>
      <title>DEV Community: Elijah</title>
      <link>https://dev.to/book0feli</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/book0feli"/>
    <language>en</language>
    <item>
      <title>We paid x402 endpoints 45,152 times. Here's what we found.</title>
      <dc:creator>Elijah</dc:creator>
      <pubDate>Sun, 08 Nov 2026 02:41:22 +0000</pubDate>
      <link>https://dev.to/book0feli/we-paid-x402-endpoints-45152-times-heres-what-we-found-mic</link>
      <guid>https://dev.to/book0feli/we-paid-x402-endpoints-45152-times-heres-what-we-found-mic</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lumierepaycheck.org/blog/we-paid-x402-endpoints-45152-times" rel="noopener noreferrer"&gt;lumierepaycheck.org&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;x402 lets an AI agent pay for an API call the way a browser loads a page: the endpoint answers &lt;code&gt;402 Payment Required&lt;/code&gt; with a price, the agent pays in USDC, and the endpoint returns the data. No account, no API key, no invoice.&lt;/p&gt;

&lt;p&gt;That's the promise. We wanted to know how it holds up when you actually pay. So for six weeks, from &lt;strong&gt;September 27 to November 7, 2026&lt;/strong&gt;, Lumière PayCheck called every x402 endpoint it could find, paid the listed price, and checked what came back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; once an x402 endpoint takes your money, it almost always delivers. Getting the payment to go through in the first place is the hard part.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Test attempts&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;126,291&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoints tested&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;37,812&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sellers (domains)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2,307&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payments that settled&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;45,152&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total paid to endpoints (including seller-funded tests)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$394.44&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average price per call&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.87¢&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoints that delivered on their latest graded test&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;95.1%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payment attempts that never went through&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;49.1%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How we tested
&lt;/h2&gt;

&lt;p&gt;For every endpoint in the &lt;a href="https://lumierepaycheck.org/sellers" rel="noopener noreferrer"&gt;x402 Bazaar&lt;/a&gt; and every one we found outside it, PayCheck:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Requested it without paying and read the &lt;code&gt;402&lt;/code&gt; quote: price, network, token, payout wallet.&lt;/li&gt;
&lt;li&gt;Paid that exact quote from a test wallet, on Base or Solana.&lt;/li&gt;
&lt;li&gt;Compared the response with what the endpoint's own listing promised: the fields, the shape and, where we could check them, the values.&lt;/li&gt;
&lt;li&gt;Re-tested any first failure before counting it, so one bad minute doesn't sink a grade.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every paid test since November 7 also gets a &lt;a href="https://lumierepaycheck.org/docs/receipts" rel="noopener noreferrer"&gt;signed receipt&lt;/a&gt; anyone can verify, so these numbers aren't just our word.&lt;/p&gt;

&lt;p&gt;Results we can't blame on the seller, like our own network errors or a quote that changed between the check and the payment, are recorded as neutral and never count against an endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 1: once paid, 95% of endpoints deliver
&lt;/h2&gt;

&lt;p&gt;This is the number that matters most to an agent: if you pay this endpoint, do you get what you paid for?&lt;/p&gt;

&lt;p&gt;Looking at each endpoint's latest graded paid test (31,546 endpoints):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;Endpoints&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Delivered what the listing promised&lt;/td&gt;
&lt;td&gt;29,990&lt;/td&gt;
&lt;td&gt;95.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bad response (confirmed on re-test)&lt;/td&gt;
&lt;td&gt;1,331&lt;/td&gt;
&lt;td&gt;4.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The listing's example didn't exist&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;td&gt;0.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needed a login after payment&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;0.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needed input we didn't have&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;0.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's a better record than most people expect from a protocol this young. But 4.2% of a catalog with tens of thousands of endpoints is still well over a thousand endpoints where paying gets you nothing usable. An agent that pays blindly will hit them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 2: half of all payment attempts never went through
&lt;/h2&gt;

&lt;p&gt;Of 126,291 test attempts, &lt;strong&gt;61,982 (49.1%) ended before any data came back&lt;/strong&gt;, because the payment itself didn't complete.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Why the payment didn't complete&lt;/th&gt;
&lt;th&gt;Attempts&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The endpoint asked for payment again after we paid&lt;/td&gt;
&lt;td&gt;53,340&lt;/td&gt;
&lt;td&gt;86.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Our tester picked a quote option that breaks the x402 spec&lt;/td&gt;
&lt;td&gt;7,527&lt;/td&gt;
&lt;td&gt;12.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other errors building the payment&lt;/td&gt;
&lt;td&gt;92&lt;/td&gt;
&lt;td&gt;0.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;1,023&lt;/td&gt;
&lt;td&gt;1.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One caveat: these are attempts, not endpoints. An endpoint that kept refusing payment was retried and counted each time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A correction.&lt;/strong&gt; When we first published this, we called the second row "quote formats our payer didn't support yet". Looking closer, 7,527 of those attempts hit a payment option that breaks the x402 spec, so the official x402 client fails on it exactly as ours did. But it's a small corner of the catalog: &lt;strong&gt;194 endpoints from 13 sellers&lt;/strong&gt;, out of more than 127,000 we monitor. Retries made it look big; one seller's Solana option alone accounted for 4,678 attempts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What was wrong with the option (as of November 8; an endpoint can have more than one)&lt;/th&gt;
&lt;th&gt;Endpoints&lt;/th&gt;
&lt;th&gt;Sellers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Solana option missing &lt;code&gt;extra.feePayer&lt;/code&gt;, which x402 on Solana requires&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network named &lt;code&gt;solana:mainnet&lt;/code&gt; instead of &lt;code&gt;solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;142&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x402 version 2 quote using version 1 network names like &lt;code&gt;base&lt;/code&gt; (this count can also include networks we simply don't pay on)&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVM option missing the token's EIP-712 name and version&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Almost all of those endpoints also quote another network, so buyers aren't stuck with the broken option; our tests now pay the other one. When no option in a quote can be paid, PayCheck grades the endpoint D (caution) and shows the seller the exact fix, because an agent can't tell an "almost right" quote from a broken one: its payment just fails.&lt;/p&gt;

&lt;p&gt;The big one, though, is the first row. The endpoint quotes a price, we pay exactly that, and it answers &lt;code&gt;402&lt;/code&gt; again. For an agent, that's a dead end: no data, and often no clear reason. In our data it's the single most common way an x402 call fails, by a wide margin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 3: when a paid call fails, it's usually the wrong data, not no data
&lt;/h2&gt;

&lt;p&gt;When an endpoint did accept payment and still failed, the most common problem by far was a response &lt;strong&gt;missing the fields its own listing promised&lt;/strong&gt; (7,879 cases). It answered, it looked like success, and the data wasn't there.&lt;/p&gt;

&lt;p&gt;Smaller groups: server errors after payment (1,564), timeouts after payment (1,239), responses that weren't valid JSON (661), a list where the listing promised a single item or the other way round (391), &lt;code&gt;404&lt;/code&gt; after payment (227) and empty responses (93).&lt;/p&gt;

&lt;p&gt;This is why a status code alone tells an agent very little. A &lt;code&gt;200&lt;/code&gt; with the wrong body is still money spent on nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 4: failed calls usually still cost money, and refunds are rare
&lt;/h2&gt;

&lt;p&gt;Of the 5,123 paid tests we confirmed as bad responses, &lt;strong&gt;3,151 (61.5%) still charged us&lt;/strong&gt;. Sellers refunded &lt;strong&gt;87&lt;/strong&gt; of those: 2.8%.&lt;/p&gt;

&lt;p&gt;That isn't necessarily bad faith. Most x402 sellers settle the payment before they run the request, and few have any refund flow at all. But it means the cost of a bad call lands on the buyer, which is the agent's wallet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 5: re-tests almost always confirm the first failure
&lt;/h2&gt;

&lt;p&gt;Every first failure gets a second paid test before it counts. Over a 30-day window of 4,937 decided re-tests, &lt;strong&gt;94% confirmed the failure&lt;/strong&gt; and 6% passed the second time.&lt;/p&gt;

&lt;p&gt;So most failures aren't flukes. When an x402 endpoint breaks, it tends to stay broken until someone fixes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 6: x402 is a market of sub-cent calls on Base
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Price per call&lt;/th&gt;
&lt;th&gt;Payments&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Up to $0.001&lt;/td&gt;
&lt;td&gt;3,866&lt;/td&gt;
&lt;td&gt;8.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$0.001 to $0.01&lt;/td&gt;
&lt;td&gt;38,366&lt;/td&gt;
&lt;td&gt;85.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$0.01 to $0.05&lt;/td&gt;
&lt;td&gt;2,896&lt;/td&gt;
&lt;td&gt;6.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Over $0.05&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;0.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;85% of payments were between a tenth of a cent and a cent.&lt;/strong&gt; By network, 84.6% settled on Base and 5.7% on Solana. The remaining 9.8% settled without the endpoint sending a transaction reference back, which leaves the buyer without an easy receipt for what it paid.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means if you're building an agent that pays
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check before you pay.&lt;/strong&gt; One request to the endpoint's grade costs nothing and skips the 4% that won't deliver. That's what &lt;a href="https://lumierepaycheck.org/" rel="noopener noreferrer"&gt;Lumière PayCheck&lt;/a&gt; is for: a free grade for every x402 endpoint, and an allow-or-deny check your agent can call with the exact quote before it signs anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat "402 after payment" as a hard failure.&lt;/strong&gt; Don't retry it in a loop; stop and record it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate the body, not just the status.&lt;/strong&gt; Check for the fields you need before you trust the result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report outcomes.&lt;/strong&gt; Every result an agent reports makes the grades better for the next one.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What this means if you sell an x402 endpoint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Make sure a standard client can pay your quote.&lt;/strong&gt; On Solana, include &lt;code&gt;extra.feePayer&lt;/code&gt; and the full network id &lt;code&gt;solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp&lt;/code&gt;. On EVM, include the token's &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;version&lt;/code&gt; in &lt;code&gt;extra&lt;/code&gt;. Don't mix versions: x402 version 2 uses CAIP-2 networks (&lt;code&gt;eip155:8453&lt;/code&gt;); version 1 uses short names (&lt;code&gt;base&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make your listing match your response.&lt;/strong&gt; Most paid failures were missing or mismatched fields. If your output schema says it returns an object with &lt;code&gt;price&lt;/code&gt;, return that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirm your endpoint accepts its own quote.&lt;/strong&gt; Pay it once yourself, from a wallet that isn't yours, on each network you list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Return the settlement header.&lt;/strong&gt; Buyers want proof of what they paid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;See your grade, and prove it.&lt;/strong&gt; Every seller's endpoints are graded in the open on the &lt;a href="https://lumierepaycheck.org/sellers" rel="noopener noreferrer"&gt;Sellers page&lt;/a&gt;. If you've fixed something, you can &lt;a href="https://lumierepaycheck.org/sellers" rel="noopener noreferrer"&gt;fund a test&lt;/a&gt; and the result updates right away.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is x402?&lt;/strong&gt;&lt;br&gt;
An open payment protocol that uses the HTTP &lt;code&gt;402 Payment Required&lt;/code&gt; status. An endpoint quotes a price, the client pays in a stablecoin like USDC (most often on Base), and the endpoint returns the response. It's built for AI agents paying for APIs per call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How reliable are x402 endpoints?&lt;/strong&gt;&lt;br&gt;
In our tests, 95.1% of endpoints that accepted payment delivered what their listing promised on their latest graded test. But 49% of all payment attempts didn't complete, mostly because the endpoint asked for payment again after being paid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does an x402 API call cost?&lt;/strong&gt;&lt;br&gt;
Usually less than a cent. 85% of the payments we made were between $0.001 and $0.01, and the average was 0.87¢.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do x402 sellers refund failed calls?&lt;/strong&gt;&lt;br&gt;
Rarely. Of 3,151 bad responses that charged us, 87 were refunded (2.8%).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can I check an x402 endpoint before paying it?&lt;/strong&gt;&lt;br&gt;
Look it up on &lt;a href="https://lumierepaycheck.org/" rel="noopener noreferrer"&gt;lumierepaycheck.org&lt;/a&gt;, or have your agent call the free &lt;code&gt;check_payment&lt;/code&gt; tool (API or MCP) with the quote. It returns allow or deny, with the reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  The data
&lt;/h2&gt;

&lt;p&gt;Every endpoint's grade and test history is public on &lt;a href="https://lumierepaycheck.org/" rel="noopener noreferrer"&gt;lumierepaycheck.org&lt;/a&gt;, the catalog is browsable by seller on the &lt;a href="https://lumierepaycheck.org/sellers" rel="noopener noreferrer"&gt;Sellers page&lt;/a&gt;, and new paid tests come with &lt;a href="https://lumierepaycheck.org/docs/receipts" rel="noopener noreferrer"&gt;signed receipts&lt;/a&gt;. Live totals are on the &lt;a href="https://lumierepaycheck.org/stats" rel="noopener noreferrer"&gt;stats page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're a seller and think a result is wrong, tell us at the address on the site. We'd rather fix a grade than defend a mistake.&lt;/p&gt;

</description>
      <category>x402aiapiweb3</category>
    </item>
  </channel>
</rss>
