Pay with any token on any chain, merchants receive in their preferred token and chain.
We’re building a universal crypto checkout that lets customers pay with any token on any chain while merchants receive funds on their preferred token and chain—via a single EIP-712 signed intent. Today, users can pay on Ethereum (native ETH or ERC-20s like USDC), Flow, Hedera, or any EVM chain, even mixing assets in one transaction as long as the total meets the product price. Funds first settle into per-chain escrow contracts; our settlement layer then routes them so the merchant receives exactly their chosen asset and network. To minimize cost and latency, we use smart routing that clears internally via an order-book/RFQ layer and an internal Uniswap V4 AMM, and only falls back to external DEX swaps or bridges when needed (e.g., LayerZero OFT for USDC Sepolia → USDC Hedera). Pyth provides real-time pricing to quote totals and enforce slippage on both buyer and merchant sides.
We built a universal crypto checkout with a Next.js frontend (UI via shadcn/ui, Aceternity components, lucide-react icons, MCP), and RainbowKit + ethers.js for wallet connectivity across Ethereum Sepolia, Arbitrum Sepolia, Flow EVM Testnet, and Hedera Testnet. Buyers sign once via a single EIP-712 payment intent; our relayer then fans out the transaction across all required chains. Minimal Next.js API routes assemble and verify the typed data, consult Pyth for real-time prices/quotes, and submit to the appropriate networks. Funds land in a Solidity escrow contract per chain (compiled/deployed with Hardhat); settlement routes to the merchant’s target token/chain. For cross-chain settlement we integrated LayerZero (OFT) to demonstrate USDC (ETH Sepolia → Hedera), and we added PYUSD rails on Sepolia and Arbitrum so users can pay—and merchants can receive—in PYUSD on either network. Notable hacks: (1) a single EIP-712 multi-asset intent enabling mixed assets/chains so long as the total meets price; (2) a simple router that prefers same-chain settlement and only falls back to external swap/bridge when needed (with Pyth-based price checks).