Primer Pay
A browser extension that automatically handles x402 payments as you browse.
What is Primer Pay?
Primer Pay is a Chrome extension that detects HTTP 402 responses and handles payment automatically. When you visit a paid resource, the extension intercepts the request, signs a payment authorization, and retries — all without leaving the page.
Key features:
- Automatic interception — patches
fetchandXMLHttpRequestto detect 402 responses - Gasless payments — signs EIP-712 authorizations off-chain, no gas required
- Spend controls — per-payment limits, daily caps, confirmation thresholds
- Transaction history — track all payments by domain
Installation
Primer Pay is currently in beta. To install:
- Download the extension from GitHub Releases
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" (toggle in top right)
- Click "Load unpacked" and select the extension folder
Getting Started
After installation:
- Create a wallet — click the extension icon and choose "Create Wallet". Set a 4-6 digit PIN.
- Save your recovery phrase — write down the 12-word mnemonic. This is the only way to recover your wallet.
- Fund your wallet — send USDC (on Base) to your wallet address. Click "Receive" to see your address and QR code.
- Browse — the extension automatically handles 402 responses within your spend limits.
Dashboard
The main popup shows your balance, daily spend, and recent transactions:
The dashboard shows your USDC balance, daily spend progress, and recent transactions.
Spend Controls
Configure limits to control automatic payments:
| Setting | Default | Description |
|---|---|---|
| Per-Payment Limit | $0.10 | Maximum amount for a single payment |
| Daily Limit | $1.00 | Maximum total spend per day |
| Confirmation Mode | Threshold | When to show confirmation prompts |
| Confirm Threshold | $0.05 | Payments above this amount require confirmation |
Confirmation Modes
- Auto-pay all — never prompt, pay automatically within limits
- Confirm above threshold — prompt for payments above a set amount
- Always confirm — prompt for every payment
When confirmation is required, a modal appears:
The confirmation modal shows the amount and destination before you approve.
Supported Networks
| Network | Tier |
|---|---|
| Base | Free |
| Base Sepolia | Free |
| Ethereum, Arbitrum, Optimism, Polygon | Premium |
Premium Features
Hold 100,000 PR tokens on Base to unlock:
- Additional networks — Ethereum, Arbitrum, Optimism, Polygon
- Domain allowlist — restrict payments to specific domains
- Custom RPC endpoints — use your own RPC nodes
- CSV export — export full transaction history
- Extended history — 1,000 transactions (vs 100 for free tier)
Security
- PIN protection — wallet is encrypted with your PIN
- Auto-lock — wallet locks after inactivity (configurable: 1-60 minutes)
- Rate limiting — max 10 payments per minute per domain
- Local storage — private keys never leave your device
Backup & Recovery
Your wallet can be recovered using the 12-word mnemonic phrase shown during creation. You can also export your private key from Settings > Security > Export Private Key.
Importing an Existing Wallet
If you already have a wallet, you can import it using either a recovery phrase or private key:
- Click the extension icon and choose Import Wallet
- Select either Recovery Phrase or Private Key tab
- Enter your 12 or 24 word mnemonic, or paste your private key
- Set a new PIN for this device
- Click Import
Enter 12 or 24 word recovery phrase
Import an existing wallet using a recovery phrase or private key.
Receiving Funds
To add USDC to your wallet:
- Click Receive from the dashboard
- Copy your wallet address or scan the QR code
- Send USDC on the Base network to this address
Send USDC (Base) to this address
The receive screen shows your address and a QR code for easy funding.
Settings
Access settings by clicking Settings from the dashboard. The settings panel is organized into three sections:
Hold 100,000 PR tokens on Base to unlock premium features. Learn more
The settings panel shows spend controls, premium features, and network configuration.
Domain Allowlist (Premium)
Restrict automatic payments to specific domains. When enabled, payments will only be made to domains on your list:
One domain per line. Subdomains are included automatically.
anthropic.com
news.example.com
3 domains
The domain allowlist restricts payments to only the specified domains.
Custom RPC Endpoints (Premium)
Use your own RPC nodes for better reliability or privacy. Leave blank to use the default public endpoints:
Configure custom RPC endpoints for each network. Leave blank to use defaults.
Configure custom RPC endpoints for each network.
Security Settings
The security panel provides options for protecting your wallet and managing keys:
Security settings for auto-lock, PIN management, and wallet backup.
| Option | Description |
|---|---|
| Auto-Lock Timer | Automatically lock wallet after inactivity (1, 5, 15, 30, 60 minutes, or never) |
| Change PIN | Update your wallet PIN |
| Export Recovery Phrase | View your 12-word mnemonic (requires PIN) |
| Export Private Key | View your private key (requires PIN) |
| Wipe Account | Permanently delete wallet and all data |
Troubleshooting
Payment was blocked
Payments can be blocked for several reasons:
- Exceeds per-payment limit — the requested amount is higher than your max per-payment setting
- Daily limit reached — you've hit your daily spending cap
- Insufficient balance — not enough USDC in your wallet
- Domain not allowed — domain allowlist is enabled and the site isn't on your list
- Network disabled — the requested network is turned off in settings
- Rate limited — more than 10 payment requests from the same domain in one minute
Wallet won't unlock
- Make sure you're entering the correct PIN
- PINs are 4-6 digits only
- If you've forgotten your PIN, you'll need to wipe the wallet and restore from your recovery phrase
Balance shows $0.00
- Ensure you sent USDC on the Base network (not Ethereum mainnet or other chains)
- Check that the transaction has confirmed on-chain
- Try locking and unlocking your wallet to refresh the balance
- If using a custom RPC, verify the endpoint is working
Extension not detecting 402 responses
- Make sure your wallet is unlocked (green dot in header)
- Check that the toggle is enabled (not disabled)
- Refresh the page — the content script needs to inject on page load
- Some sites may use non-standard 402 implementations that aren't compatible
Premium features not unlocking
- Ensure you hold at least 100,000 PR tokens in the same wallet
- PR tokens must be on Base mainnet
- Click the refresh button (↻) in the Premium section to re-check your balance
- Premium status is cached for 5 minutes