The payment gateway for the agentic economy. Accept payments from AI agents. Add a few lines of code. Settle instantly in USDC.
npx @pincerpay/cli signup
# email + password + 6-digit code from your inbox
npx @pincerpay/cli bootstrap-merchant --name "Acme Co" --chains "solana,polygon"
# → generates non-custodial wallets, creates merchant, mints API key
# → prints env vars ready to paste into `vercel env add`That's the full onboarding flow. Terminal-only. Phantom + MetaMask compatible wallets generated locally. PincerPay never sees your keys. See docs/onboarding and docs/cli for full reference.
Agent → 402 Challenge → Sign USDC Transfer → PincerPay Facilitator → Blockchain → Merchant
PincerPay is a non-custodial x402 facilitator. When an AI agent hits a merchant API and gets HTTP 402, the agent signs a USDC transfer. PincerPay verifies the signature, broadcasts to the blockchain, and confirms settlement.
| Package | Description | Docs |
|---|---|---|
apps/facilitator |
x402 facilitator service (Hono + Node.js) | |
apps/dashboard |
Merchant dashboard (Next.js 15) | |
packages/merchant |
Merchant SDK with Hono-based middleware (Next.js App Router + any Hono app) | README |
packages/agent |
Agent SDK with automatic x402 payment handling | README |
packages/core |
Shared types, chain configs, constants | README |
packages/db |
Drizzle ORM schema + migrations | README |
packages/program |
Anchor program client for Solana | README |
packages/solana |
Kora gasless txns + Squads smart accounts | README |
packages/onboarding |
Non-custodial wallet generation + merchant bootstrap | README |
packages/cli |
Terminal-only merchant onboarding (npx @pincerpay/cli) |
README |
packages/mcp |
MCP server for AI assistants (26 tools) | README |
examples/ |
Example merchant and agent apps |
- Node.js 22+
- pnpm 10+
- PostgreSQL (Supabase recommended)
pnpm installpnpm build# Start all services
pnpm dev
# Start individual services
pnpm --filter @pincerpay/facilitator dev
pnpm --filter @pincerpay/dashboard dev# Generate migrations from schema
pnpm db:generate
# Push schema to database
pnpm db:pushProvision a merchant from the command line, with no dashboard click-through.
# Generate non-custodial wallets only (no DB)
pnpm create-wallets
# End-to-end: generate wallets, create merchant, mint API key
DATABASE_URL=postgresql://... pnpm bootstrap-merchant \
--name "My Merchant" --auth-user-id <supabase-uuid>
# Mint a key for an existing merchant
DATABASE_URL=postgresql://... pnpm create-api-key list
DATABASE_URL=postgresql://... pnpm create-api-key create --merchant <id|name> --label "Production"The same flows are exposed as MCP tools (bootstrap-wallets, bootstrap-merchant, create-api-key, list-merchants) in @pincerpay/mcp. See Merchant Onboarding.
The middleware is Hono-based, so it runs in Next.js App Router (via hono/vercel) and in any Hono app. An Express adapter is on the roadmap (#108).
// app/api/[...route]/route.ts
import { Hono } from "hono";
import { handle } from "hono/vercel";
import { createPincerPayMiddleware } from "@pincerpay/merchant/nextjs";
const app = new Hono().basePath("/api");
app.use(
"*",
createPincerPayMiddleware({
apiKey: process.env.PINCERPAY_API_KEY!,
merchantAddress: "YOUR_SOLANA_WALLET",
routes: {
"GET /api/weather": {
price: "0.01",
chain: "solana",
description: "Weather data",
},
},
})
);
app.get("/weather", (c) => c.json({ temp: 72 }));
export const GET = handle(app);Paywall route keys use the full request path (including /api); handlers are relative to basePath. See @pincerpay/merchant README for multi-chain config and the full API reference.
import { PincerPayAgent } from "@pincerpay/agent";
const agent = await PincerPayAgent.create({
chains: ["solana"],
solanaPrivateKey: process.env.AGENT_SOLANA_KEY!,
});
// Automatic 402 handling
const response = await agent.fetch("https://api.example.com/weather");See @pincerpay/agent README for spending policies, multi-chain setup, and Squads smart accounts.
| Chain | Network ID | Status |
|---|---|---|
| Base | eip155:8453 | Mainnet |
| Base Sepolia | eip155:84532 | Testnet |
| Polygon | eip155:137 | Mainnet |
| Polygon Amoy | eip155:80002 | Testnet |
| Solana | solana:mainnet | Supported |
| Solana Devnet | solana:devnet | Testnet |
| Service | URL |
|---|---|
| Facilitator | https://pincerpayfacilitator-production.up.railway.app |
| Dashboard | https://pincerpay.com |
The facilitator is deployed to Railway via Docker. The dashboard is deployed to Vercel. Solana is the primary chain (devnet). Base and Polygon are supported as optional secondary chains.
- Runtime: Node.js 22 (pnpm monorepo + Turborepo)
- Facilitator: Hono + @x402/core + @x402/evm + @x402/svm + viem
- Dashboard: Next.js 15 + Tailwind CSS + Supabase Auth
- Database: PostgreSQL (Supabase) + Drizzle ORM
- CI: GitHub Actions (typecheck → test → build)
- Protocols: x402 (Coinbase)
pnpm test47 tests across 5 suites (core, agent, merchant, facilitator).
| Example | Description |
|---|---|
examples/nextjs-merchant |
Next.js App Router merchant with PincerPay middleware |
examples/express-merchant |
Standalone Node.js merchant server (Hono + @hono/node-server; the folder name is historical) |
examples/agent-weather |
AI agent paying for weather API data |
pincerpay-agent-demo |
Standalone agent demo repository |
MIT
