iMessage Apple Pay extension for Web3 Peer-to-Peer Messaging Payments Turn Conversations Into Transactions
Live demo: https://pearpay.app/
- Executive Summary
- Live Demo
- The Problem
- The Solution
- Supported Platforms
- Key Features
- Claimable Payments
- Universal Recipient Resolution
- Claimable Payment Flow
- Smart Escrow System
- Why This Matters
- Updated User Journey
- Technical Architecture
- Arc Bounty Architecture
- Twilio Notification and Delivery Layer
- Updated Architecture
- Hackathon Story
- Tech Stack
- Why Now
- Future Vision
- ETHGlobal Prize Strategy
- Tagline
Pear Pay is a conversational payment protocol that enables users to send money anywhere they communicate.
Whether users are chatting in Telegram, WhatsApp, Discord, iMessage, Slack, X, Instagram, or interacting with AI agents, Pear Pay transforms natural language into secure, private, and chain-abstracted blockchain transactions.
Instead of requiring users to understand wallets, chains, bridges, swaps, gas fees, and cryptographic addresses, Pear Pay allows them to simply express intent:
"Send Molly $20"
"Pay Alex back for dinner"
"Split the Airbnb with everyone"
"Send Sarah 50 USDC privately"
Pear Pay automatically handles everything else.
Behind the scenes, the platform resolves identities, creates wallets, routes transactions across chains, settles in USDC, and optionally protects transaction privacy.
Our vision is to become the payment infrastructure layer for both human communication and the emerging Agentic Economy.
Pear Pay is deployed at https://pearpay.app/.
| Page | URL |
|---|---|
| Home | https://pearpay.app/ |
| Try it (real Base Sepolia USDC) | https://pearpay.app/pay |
| Simulator (six messaging apps) | https://pearpay.app/messages |
| Prizes / bounty evidence | https://pearpay.app/prizes |
PearPay's flagship flow is a private nanopayment: an autonomous agent pays a sub-cent, gas-free USDC fee for a paywalled resource β and the public ledger can never link the payment back to the user. All three sponsors are core, non-removable components of that single flow.
flowchart LR
U[User / Agent] -->|Dynamic wallet<br/>signs authorization| POOL[Unlink shielded pool]
POOL -->|withdraw to<br/>ephemeral burner| BURNER[Single-use burner EOA]
BURNER -->|Circle Gateway x402<br/>EIP-3009, gas-free batched| SELLER[Arc Testnet settlement]
SELLER -->|settlementTx| ARCSCAN[(testnet.arcscan.app)]
BURNER -.->|dispose + wipe key| X[(unlinkable)]
| Sponsor | How PearPay uses it | Code |
|---|---|---|
| Dynamic | Embedded/server wallet onboards the user/agent and signs the off-chain payment authorization (no seed phrase, no per-payment popup). Delegated Access lets the backend agent sign autonomously after one FaceID. | src/integrations/dynamic/, app/api/webhooks/dynamic/route.ts |
| Arc + Circle Gateway | Sub-cent USDC settled gas-free on Arc Testnet (eip155:5042002) via the real @circle-fin/x402-batching SDK β BatchFacilitatorClient.verify()/settle() on an EIP-3009 authorization. Real batched micro-settlement, not one large transfer. |
src/integrations/arc/x402-gateway.ts, app/api/x402/premium/data/route.ts |
| Unlink | The payment is funded from the Unlink shielded pool into a single-use ephemeral burner (deposit() to shield, withdraw() to fund the burner). The burner pays, then is disposed. |
src/integrations/unlink/burner.ts, app/api/privacy/nanopay/route.ts |
- Counterparty link: the chain only ever sees
pool β burnerandburner β seller, neveruser β seller. The user's wallet is not the payer of record. - Amount & balance: the deposit amount and the user's running balance live inside the Unlink shielded pool (ZK), not on the public ledger.
- Per-payment identity: each nanopayment uses a fresh burner EOA that is funded, used once, and cryptographically retired β no reusable, traceable spending identity.
curl -s -X POST http://localhost:3000/api/privacy/nanopay \
-H 'content-type: application/json' -d '{"amount_usd":"0.001"}' | jq .
# β { ok:true, burner:"0xβ¦", fundTxId:"0xβ¦", settlementTx:"0xβ¦", payer:"0x<burner>" }Open settlementTx on https://testnet.arcscan.app β the payer is the burner, gas is zero, and the user is nowhere in the trace.
Three Arc/Circle bounties, each backed by real code + a runnable proof.
PearPayEscrow.sol is a conditional escrow with advanced programmable logic:
hashlock conditional release, time-based auto-refund, sender cancellation, and
an on-chain dispute path (escrowWithArbiter β dispute β resolveDispute).
- Code:
contracts/PearPayEscrow.sol, TS bindingssrc/integrations/arc/escrow.ts - Tests:
npm run test:contractsβ 15 passing forge tests - Make the nanopayment land on the contract (not an EOA): the x402 endpoint
app/api/x402/premium/escrow-gated/data/route.tssettles the nanopayment, then releases the resource through an on-chain conditional escrow β claim cycle (src/integrations/arc/escrow-gated.ts). The response returnsescrow_txandclaim_txyou can open on Arcscan β proof the settlement destination is an advanced-logic smart contract, not a bare EOA. β οΈ Redeploy required: the previously deployed escrow predates the dispute logic. Runnpm run deploy:escrow(needs a fundedFUNDER_PRIVATE_KEY) and the script writes the newARC_ESCROW_CONTRACT_ADDRESSinto.env.
USDC is sourced from any Circle-Gateway-supported chain into one unified balance and minted onto Arc on demand β many chains, one liquidity surface.
- Code:
src/integrations/arc/gateway-bridge.ts(getUnifiedBalances,bridgeUsdcToArcvia the realGatewayClient.withdraw({ chain: 'arcTestnet' }), Arc Gateway domain26), wired intosettleUsdc(src/integrations/arc/index.ts) for anysource-to-arcroute. - Backend surface:
GET/POST /api/arc/bridge(app/api/arc/bridge/route.ts). - Proof:
npm run verify:bridge(read the unified balance) βEXECUTE_BRIDGE=1 npm run verify:bridge(mint onto Arc; prints the Arc mint tx).
Shielded pool β ephemeral burner β gas-free batched x402 settlement on Arc.
- Code:
src/integrations/unlink/burner.ts,app/api/privacy/nanopay/route.ts,src/integrations/arc/x402-gateway.ts(real@circle-fin/x402-batching). - Proof:
npm run verify:nanopay(needs Unlink + funder env) β returns the burner, the Unlink fund tx, and the Arc settlement tx.
β οΈ The technical blueprint that circulated for this project referenced@circle-fin/x402-batching/server'screateGatewayMiddleware/gateway.requireand an RPC attestnet-rpc.arc.io. Those do not exist β the real SDK exportsBatchFacilitatorClient(server) +GatewayClient(client) and Arc's RPC ishttps://rpc.testnet.arc.network. This repo uses the correct APIs; do not paste that blueprint oversrc/integrations/arc/.
Despite significant advances in blockchain technology, sending crypto remains difficult for mainstream users.
Today's typical payment flow requires users to:
- Create a wallet
- Secure a seed phrase
- Understand networks
- Choose a chain
- Acquire gas tokens
- Copy wallet addresses
- Bridge assets
- Swap tokens
- Confirm transactions
The process is confusing, error-prone, and fundamentally different from the simple payment experiences consumers expect from Apple Pay, Venmo, Cash App, or Zelle.
At the same time, AI agents are beginning to transact autonomously, but there is no universal payment infrastructure designed for conversational commerce between humans and machines.
Pear Pay introduces a new payment paradigm:
Instead of navigating financial infrastructure, users simply communicate their intent.
Examples:
"Send Molly $20"
"/pay @molly 20"
"Pay Alex back for dinner"
"Split lunch with the engineering team"
"Send 50 USDC to @molly"
"Pay OpenAI $0.05 for this API request"
Pear Pay transforms these messages into executable payment workflows.
Pear Pay is designed to operate wherever people communicate.
- Telegram
- Discord
- iMessage
- Slack
- Signal
- Microsoft Teams
- X
- Farcaster
- Lens
- TikTok
- ChatGPT Agents
- Claude Agents
- IDE and coding agents
- AutoGPT
- Custom Autonomous Agents
The goal is simple:
If you can send a message, you can send money.
Users communicate what they want to do using everyday language.
No addresses.
No chain selection.
No blockchain expertise required.
Pear Pay eliminates blockchain fragmentation.
Users never need to know:
- Which chain they are using
- Which token they hold
- Whether bridging is required
- How liquidity is sourced
The platform automatically routes and executes the optimal transaction path.
Every transaction ultimately settles in USDC.
Benefits include:
- Stable purchasing power
- Fast settlement
- Reduced volatility
- Global accessibility
Users may choose private transfer modes that protect:
- Wallet balances
- Transfer amounts
- Counterparty relationships
- Transaction history
Privacy becomes a built-in feature rather than a premium service.
You never copy a wallet address. Pay people by the identifier you already know β a phone number, email, @handle, or saved contact β or paste a raw 0x address. Pear Pay resolves it and settles in USDC.
Pear Pay extends beyond human payments.
AI agents can:
- Purchase APIs
- Buy compute resources
- Pay for data access
- Coordinate with other agents
- Execute autonomous transactions
The same infrastructure that powers consumer payments can power machine-to-machine commerce.
One of the biggest barriers to crypto adoption is requiring both the sender and recipient to already have wallets, accounts, and blockchain knowledge before money can move.
Pear Pay removes this requirement.
Users can send money to anyone, regardless of whether they already use Pear Pay, have a wallet, or even know what cryptocurrency is.
The sender's payment is never blocked by recipient onboarding.
Instead, Pear Pay creates a secure claimable payment.
Examples:
- Telegram username
- Discord username
- Phone number
- Email address
- Wallet address
- Social handle
- AI agent identity
The recipient receives a payment notification and can claim the funds whenever they are ready.
This creates a dramatically simpler user experience and mirrors the behavior users already expect from services like Venmo, PayPal, Cash App, and Apple Cash.
Pear Pay supports multiple recipient types.
If the recipient already has a Pear Pay wallet:
- Funds settle immediately
- No action required
- Recipient receives an instant notification
If the recipient has a discoverable wallet:
- The recipient address is resolved automatically
- Funds are delivered directly
If the recipient has never used Pear Pay:
- A claimable payment is created
- Funds are escrowed securely
- Recipient receives an invitation link
- Recipient creates a wallet when ready
- Funds are released automatically
No blockchain knowledge is required.
- Molly sends $50 to Alex via Telegram
- Alex does not have Pear Pay installed
- Pear Pay creates a claimable payment
- Funds are escrowed in USDC
- Alex receives a secure claim link
- Alex creates an embedded wallet through Dynamic
- Identity verification occurs
- Funds are released instantly
The original payment succeeds immediately from Molly's perspective.
No additional action is required.
Claimable payments are protected by programmable escrow contracts.
Features include:
- Time-based expiration
- Automatic refunds
- Recipient verification (claim-secret hashlock)
- Transfer cancellation before claim
- On-chain dispute resolution β a per-payment arbiter can freeze a contested
payment (
dispute()) and adjudicate it (resolveDispute()), releasing to the recipient or refunding the sender as a final on-chain settlement step - Cross-chain settlement
- Private claims via Unlink
This ensures funds remain secure while preserving a frictionless user experience.
See contracts/PearPayEscrow.sol (15 passing forge tests in
contracts/test/PearPayEscrow.t.sol).
The best payment products allow users to pay people, not wallets.
Users think about:
- Friends
- Family
- Coworkers
- Creators
- Businesses
They do not think about:
- Blockchain addresses
- Networks
- Gas fees
- Wallet providers
Pear Pay focuses on human relationships and communication channels rather than blockchain infrastructure.
This dramatically lowers the barrier to adoption and enables payments to flow naturally through existing conversations.
Sarah is chatting with friends in Telegram while planning a weekend trip.
One friend pays for the Airbnb.
Sarah types:
"Pay Alex $125 for the Airbnb"
Pear Pay automatically:
- Identifies Alex
- Checks for an existing wallet
- Creates a claimable payment if needed
- Routes USDC through Arc as the liquidity hub
- Settles funds in USDC
- Protects transaction privacy through Unlink
- Sends Alex a claim notification
If Alex already has Pear Pay, funds arrive instantly.
If Alex is new, the funds wait securely until he claims them.
The payment never fails because the recipient has not yet onboarded.
Dynamic provides:
- Embedded wallets
- Social authentication
- Agent wallets
- Server wallets
Users can begin using Pear Pay without managing seed phrases.
Arc serves as Pear Pay's default USDC settlement and liquidity hub.
Responsibilities:
- USDC settlement on Arc mainnet/testnet using
0x3600000000000000000000000000000000000000 - Arc Testnet EURC support via
0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a - Chain abstraction: Pear Pay detects the source chain and routes to Arc
- Claimable payments: escrow on send, release on claim, refund after expiry
- Circle Gateway / Forwarder path for source-to-Arc conditional transfers
Unlink provides privacy infrastructure.
Capabilities:
- Private balances
- Private transfers
- Confidential transaction routing
Twilio powers the recipient discovery and claim delivery layer.
Capabilities:
- SMS claim links
- WhatsApp Business messaging
- Phone verification via Twilio Verify
- Voice AI payments via Twilio Voice
Twilio is what lets Pear Pay reach recipients who do not yet have a wallet, solving the cold-start problem that blocks most crypto payment apps.
Pear Pay targets both Arc bounties as one integrated payment app:
- Smart Contracts on Arc with Advanced Stablecoin Logic β
PearPayEscrow.solimplements conditional release, time-based refunds, sender cancellation, and multi-step settlement for USDC/EURC. - Chain Abstracted USDC App Using Arc as a Liquidity Hub β users never select a chain; Pear Pay routes non-private payments through Arc and returns Arc route metadata from the payment API.
flowchart TD
Message[Conversation or agent intent]
Parser[NLP parser]
Resolver[Recipient resolver]
Orchestrator[Payment orchestrator]
ArcHub[Arc USDC liquidity hub]
Escrow[PearPayEscrow.sol]
Circle[Circle Gateway / Forwarder]
Claim[Claim link + Dynamic wallet]
Message --> Parser --> Resolver --> Orchestrator
Orchestrator -->|Existing wallet| ArcHub --> Circle
Orchestrator -->|New recipient| Escrow --> Claim
Claim --> Escrow --> ArcHub
Escrow -->|Expired| Message
See docs/ARC_BOUNTY.md for the full architecture diagram, Circle developer tools,
video demo script, and live-judging setup checklist.
Twilio is a major addition, not because of payments, but because it solves recipient discovery and the claim flow.
The biggest challenge in conversational payments is simple:
How do I send money to someone who does not have Pear Pay?
Twilio answers this directly.
Example:
- Molly sends $50 to Alex
- Molly only knows Alex's phone number
- Pear Pay escrows $50 USDC
- Twilio sends an SMS:
Molly sent you $50 through Pear Pay.
Claim your funds: pearpay.app/claim/abc123
- Alex clicks the link
- Dynamic creates an embedded wallet
- Alex claims the funds
No wallet needed beforehand.
Twilio supports WhatsApp Business.
Example:
Send Sarah $20
Pear Pay bot responds:
Payment sent.
Sarah will receive a claim link.
This immediately expands Pear Pay beyond iMessage.
Twilio Verify adds:
- Phone verification
- Fraud prevention
- Recipient confirmation
- Account recovery
Example:
Confirm transfer to: +1 (206) 947-6991
Enter code: 482913
A memorable demo: pay by phone call.
- Call Pear Pay
- Say "Send Alex twenty dollars"
- Twilio Voice + OpenAI interpret the request
- Pear Pay creates the payment
Conversational payments without ever opening an app.
User
β
βΌ
Pear Pay NLP
β
βΌ
Recipient Resolution
β
βββ Wallet Address
βββ Phone Number
βββ Email
βββ Telegram Handle
βββ Discord Username
βββ Social Handle
β
βΌ
Twilio Notification Layer
β
βΌ
Claim Link
β
βΌ
Dynamic Wallet Creation
β
βΌ
Settlement Rail (Arc)
β
βΌ
Unlink Privacy
Pear Pay allows users to send money to anyone from any conversation.
If the recipient already has a wallet, funds settle instantly.
If they don't, Pear Pay creates a secure claimable payment and uses Twilio to deliver a claim link through SMS or WhatsApp.
The sender never has to ask, "What's your wallet address?"
This solves the classic cold-start problem that kills most crypto payment apps, making it a strong consumer story.
Pear Pay is built around a TypeScript core that orchestrates every integration, with a thin native Swift layer only where Apple requires it.
TypeScript and Node power the brain of Pear Pay: natural language parsing, recipient resolution, escrow logic, and payment orchestration.
- Language: TypeScript
- Runtime: Node.js
- Framework: Next.js (API routes, webhooks, and the claim page at pearpay.app/claim/:id)
- Blockchain access: viem / wagmi
Every sponsor SDK has first-class TypeScript support, so the same backend serves all channels.
A true iMessage app must be native, so this layer is built in Swift.
- Language: Swift
- iMessage: Messages framework (MSMessagesAppViewController)
- Payments: Apple Pay via PassKit
The Swift extension stays intentionally thin. It captures intent, authenticates, and calls the TypeScript backend. All blockchain logic remains server-side.
- Dynamic β embedded, server, and agent wallets; social authentication
- Arc β Circle-native USDC settlement and chain-abstracted liquidity
- Unlink β private balances, transfers, and claims
- Twilio β SMS claim links, WhatsApp, Verify, and Voice (twilio Node SDK)
All channels reuse the same TypeScript backend.
- Native: iMessage (Swift)
- Bots: Telegram, Discord, Slack (Node)
- Messaging: WhatsApp and SMS via Twilio
- Voice: Twilio Voice + OpenAI
- Package manager: npm
- Linting / formatting: ESLint + Prettier
- Deployment: Vercel (web + API), with Xcode for the iOS extension
Three major trends are converging:
Stablecoins are rapidly becoming global payment infrastructure.
Messaging applications have become the primary interface for communication.
AI systems are increasingly capable of autonomously purchasing services and exchanging value.
Pear Pay sits at the intersection of all three.
Today:
Human β Human Payments
Tomorrow:
Human β Agent Payments
Next:
Agent β Agent Commerce
Future use cases include:
- Autonomous subscriptions
- AI purchasing compute resources
- Pay-per-request APIs
- Micropayments for AI inference
- Autonomous payroll systems
- Machine-to-machine marketplaces
Pear Pay becomes the universal transaction layer for digital conversations.
Pear Pay is designed to qualify across multiple sponsor tracks at ETHGlobal NYC 2026. Each section below maps a target bounty to how Pear Pay satisfies it.
The purpose-built L1 from Circle, EVM-compatible, serving as the Economic OS for the internet. Arc powers onchain lending, capital markets, FX, and payments across currencies and asset classes.
1st: $2,250 Β· 2nd: $1,250
The bounty asks for smart contracts with advanced programmable logic in USDC or EURC β conditional flows, onchain automation, or multi-step settlement.
How Pear Pay qualifies:
- Our Smart Escrow System is a conditional escrow with automatic release and time-based refunds
- Claimable payments are multi-step settlement: escrow on send, release on claim
- Cross-chain "conditional transfer" β escrow on the source chain, release on the destination via Circle Forwarder
1st: $2,250 Β· 2nd: $1,250
The bounty asks for apps that treat multiple chains as one liquidity surface, using Arc to move USDC wherever it's needed.
How Pear Pay qualifies:
- Users never pick a chain; Pear Pay sources, routes, and settles USDC across chains as one surface
- Conversational payments hide all cross-chain complexity behind a single message
- Arc serves as the settlement and liquidity hub for every transfer
Qualification checklist (Arc):
- Functional MVP with working frontend and backend plus an architecture diagram
- Video demonstration and presentation outlining use of Circle's developer tools
- Public GitHub repo
Resources: USDC contracts Β· EURC contracts Β· Gateway Β· Circle Wallets
Build apps for trading, earning, paying, and moving money on global crypto rails, from low-level APIs to full SDKs, with sub-second signing and enterprise-grade security.
Fireblocks Flow lets you accept stablecoins or crypto from any wallet, exchange, or chain and settle in the token of your choice, abstracting away the swap-and-bridge step.
How Pear Pay qualifies:
- Recipients can be paid from any token on any chain and settle in USDC
- Agentic deposits: agents create transactions, attach funding sources, and submit via API
- Withdrawals and currency conversion happen in one flow, no manual bridging or swapping
Build agents that transact, settle, and operate autonomously using Dynamic's server wallets, delegated access, and Flow.
How Pear Pay qualifies:
- AI agents get Dynamic server wallets to sign and execute onchain transactions
- Agents pay for APIs, tools, or compute through HTTP 402 / x402 payment flows
- Autonomous, agent-to-agent commerce settled in USDC
An open track with no theme β the best product wins.
How Pear Pay qualifies:
- Dynamic powers login, embedded wallet onboarding, signing, and onchain UX
- Instant wallet creation on claim removes the cold-start barrier
Combine Dynamic (wallet creation), Unlink (private accounts and routing), and Arc (high-throughput settlement) for private nanopayments.
How Pear Pay qualifies:
- Dynamic creates wallets, Unlink keeps balances and transfers private, Arc settles
- Private micropayments for AI inference and pay-per-request APIs
Qualification checklist (Dynamic):
- Uses a Dynamic SDK in any framework
- App is deployed and usable by judges
- For the joint prize: also uses the Unlink SDK and Circle's tools, with an MVP, diagram, video, and repo
Resources: Flow docs Β· Agents overview Β· Agent payments Β· Node SDK
The embedded privacy SDK for fintechs, payment processors, and foundations β private balances, transfers, and DeFi access on the EVM chains users already use. Audit-ready and compliant by default. Core primitives:
deposit(),transfer(),withdraw(),execute().
1st: $2,000 Β· 2nd: $1,000
Combine Dynamic (wallet creation), Unlink (private accounts and routing), and Arc (high-throughput settlement) for private nanopayments.
How Pear Pay qualifies:
- Dynamic creates the wallet, Unlink keeps balances and transfers private, Arc settles
- Private micropayments for AI inference and pay-per-request APIs
- Creative use case: private claimable payments where amounts and counterparties stay hidden
Route a real, widely-used open-source app's flows through private balances using the Unlink SDK.
How Pear Pay could qualify:
- Wire a popular wallet or messaging-payments flow through Unlink
deposit()/transfer()/execute() - Add a "private mode" to an existing payments surface without rebuilding the underlying protocol
Users send funds privately without exposing balances, transfer amounts, or counterparties.
Qualification checklist (Unlink):
- Integrate the Unlink SDK (
@unlink-xyz/sdk) during the event - Use at least one private primitive:
deposit(),transfer(),withdraw(), orexecute() - Working demo showing the flow running privately, plus a short video
- Public repo and README explaining exactly what is now private
- For the joint prize: also use the Dynamic SDK and Circle's tools, with an MVP, diagram, and presentation
Resources: Unlink docs Β· Dynamic x Unlink x Arc integration guide Β· Circle Nanopayments Β· unlink.xyz
nvm use # picks Node 20 from .nvmrc (recommended)
npm test # TypeScript/integration suite (vitest) β 85 pass, 5 live-gated skips
npm run test:contracts # Solidity escrow suite (forge) β 15 pass
β οΈ Node version: vitest uses a worker pool that segfaults on macOS arm64 Node v22.20.0 (a bad V8 build in that specific release) β even for a trivial1 + 1test. This is a Node bug, not a test failure. The repo pins Node 20 via.nvmrcand forces vitest'sforkspool (vitest.config.ts) to avoid it. Ifnpm testever exits with code 139, you are on the broken Node β runnvm use(or switch to Node 20 / 24+) and re-run.
The 5 skipped tests are live on-chain flows gated behind env flags
(LIVE_ARC=1, FUND_UNLINK=1, LIVE_NANOPAY=1) so CI stays hermetic; run them
with real testnet credentials via the verify:* npm scripts below.
Before switching the app to NODE_ENV=production, attach pearpay.app to the
Vercel deployment and set APP_URL, NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_SITE_URL,
WEBAUTHN_ORIGIN, and TWILIO_WEBHOOK_URL to https://pearpay.app.
Configure all live integration secrets in the deployment environment:
- Dynamic:
DYNAMIC_ENV_ID,DYNAMIC_API_TOKEN,NEXT_PUBLIC_DYNAMIC_ENVIRONMENT_ID, Flow checkout/webhook values, and any agent wallet password or funding keys. - Twilio: account SID, auth token, messaging service, Verify service, sender number, and inbound webhook URL.
- WebAuthn: production RP id
pearpay.app, RP name, origin, and a durable credential store path or database-backed implementation. - Arc/Circle: Circle API key, Arc RPC URL, USDC token address, explorer URL, and deployed escrow address.
- Persistence:
ESCROW_DATABASE_URLfor durable claimable-payment storage. - Unlink and x402: API key, funder private key, and gateway address.
After secrets are set, run a smoke test for each live path: Dynamic user lookup
and wallet creation, Twilio SMS/WhatsApp delivery plus Verify, signed Twilio and
Dynamic webhooks, WebAuthn registration/authentication on the live domain,
Arc/Circle transfer with explorer link,
Unlink private transfer, and social-share preview rendering for /pay/[data].
Send money anywhere you communicate. From messaging apps to AI agents. One conversation. One payment.