
PayGate
x402-Powered Infrastructure for API Payments
Demo
About
The problem it solves Today’s internet was designed for human-to-service payments, not machine-to-machine payments. APIs power most modern software, yet monetizing them remains inefficient. Developers usually rely on subscriptions, API keys, and centralized billing systems. These approaches introduce several problems: First, they create friction for developers who want to monetize small-value API requests. Charging a fraction of a cent per request is nearly impossible with traditional payment systems. Second, AI agents and automated systems cannot easily interact with existing payment infrastructures such as credit cards or manual billing dashboards. Third, API providers must build complex infrastructure to manage authentication, billing, rate limiting, and payment verification.
How it's made
Challenges we ran into # Challenges We Ran Into ## Sending ETH Instead of USDC Our agent was trying to pay but kept failing with insufficient funds despite having plenty of USDC. Turns out we were using sendTransaction which sends native ETH not writeContract which calls the ERC-20 transfer function. One function name. Thirty minutes to find it. --- ## Smart Contract Reverting With No Reason Our ENS subdomain contract deployed fine but reverted on every single function call. After an hour of debugging we realized our contract was calling the ENS registry directly without being the registered controller of paygate.eth. We rewrote the contract to store subdomain mappings on-chain ourselves instead. Simpler. And it actually worked. --- ## Publishing an npm Package for the First Time We had never published a library before. Wrong tsconfig. Missing type declarations. Broken exports. Failed builds. After fixing the compilation pipeline and testing locally with npm link we ran npm publish and paygate-x402 went live. Any developer can install it now. That felt unreal. --- ## Writing Smart Contracts Under Time Pressure Neither of us had written a production smart contract before this hackathon. Writing, deploying, and debugging on-chain reverts with no stack trace under hackathon time pressure was a uniquely painful experience. We shipped two contracts in the end. Both live. Both verified. --- ## x402 Payment Header Format The retry request after payment requires a very specific header format. A single wrong field meant another 402. Getting it consistent across the agent script and the middleware took more iterations than we expected.