Powered by Circle App Kits · Built on Arc

The universal payment button, for humans and agents.

Accepts payments from any chain, any token, in a single tap. You settle in USDC on Arc, Circle's stablecoin L1.

⚠ Testnet funds only
pixelthreads.xyz
product shot
Aurora Hoodie
Limited drop · unisex
$1
🔒 Pay with any token · settles instantly
↑ This button is live. Click it.
How it works

Chain abstraction, made invisible

The customer never picks a chain, never bridges, never switches networks. uPay routes everything behind one tap.

1
Merchant adds the button

Drop in one component or a single script tag. Five lines and you accept crypto.

<UPayButton apiKey="pk_..." />
2
Customer connects wallet

Any wallet, any chain. App Kit's Unified Balance pools their USDC across chains into one spendable balance.

USDCUSDC · BaseUSDCUSDC · EthereumUSDCUSDC · Arc
3
Payment settles on Arc

You receive USDC, instantly. The dashboard reflects it as soon as it lands.

USDC40.00 USDC · Arc ✓
Customer holds
USDC82 USDC · BaseUSDC45 USDC · EthereumUSDC12 USDC · Arc
uPay
uPay routing
Deposit + spend, no bridging UI
Merchant receives
USDC40.00USDC
settled instantly
payments row → dashboard ✓
Built for developers

Five lines to accept any coin on any chain

A React component or a server-side session. uPay handles wallet connection, routing, and settlement. You handle the order.

Get your API key →
checkout.jsx
import { UPayButton } from 'upay-arc-sdk'

<UPayButton
  apiKey="pk_test_..."
  amount={40}
/>

Safe by architecture

uPay never touches custody. Funds move directly from the customer's account to yours.

🔒
Non-custodial

uPay never holds funds. Settlement is account-to-account, verifiable on-chain.

UB
Unified Balance

App Kit pools a customer's USDC across chains into one instantly spendable balance, no bridging screen.

Arc
Built on Arc

Built on Circle's stablecoin network, made simple through Circle App Kit.

Start accepting crypto
that actually feels like Stripe