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 fetch and XMLHttpRequest to 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:

  1. Download the extension from GitHub Releases
  2. Open Chrome and go to chrome://extensions/
  3. Enable "Developer mode" (toggle in top right)
  4. Click "Load unpacked" and select the extension folder

Getting Started

After installation:

  1. Create a wallet — click the extension icon and choose "Create Wallet". Set a 4-6 digit PIN.
  2. Save your recovery phrase — write down the 12-word mnemonic. This is the only way to recover your wallet.
  3. Fund your wallet — send USDC (on Base) to your wallet address. Click "Receive" to see your address and QR code.
  4. Browse — the extension automatically handles 402 responses within your spend limits.

Dashboard

The main popup shows your balance, daily spend, and recent transactions:

[01] $ WALLET 0x7a3b...4f2e ↗
$12.45 USDC
Today: $0.35/$1.00 | Max/txn: $0.10
[02] > RECENT
api.openai.com 2 MIN AGO -$0.05
news.example.com 15 MIN AGO -$0.10
data.weather.io 1 HR AGO -$0.20
LOCK
RECEIVE
SETTINGS

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:

? CONFIRM PAYMENT
$0.25
api.premium-data.io
This payment exceeds your confirmation threshold. Proceed?
DENY
APPROVE

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)
Token-gated premium. Premium features are automatically enabled whilst your wallet holds the required PR balance. No subscription required, no token locks.

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.

Keep your recovery phrase safe. Anyone with your mnemonic can access your funds. Never share it.

Importing an Existing Wallet

If you already have a wallet, you can import it using either a recovery phrase or private key:

  1. Click the extension icon and choose Import Wallet
  2. Select either Recovery Phrase or Private Key tab
  3. Enter your 12 or 24 word mnemonic, or paste your private key
  4. Set a new PIN for this device
  5. Click Import
[01] IMPORT
RECOVERY PHRASE PRIVATE KEY

Enter 12 or 24 word recovery phrase

word1 word2 word3 ...
● ● ● ●
IMPORT
CANCEL

Import an existing wallet using a recovery phrase or private key.

Same wallet, different PINs. The PIN is device-specific. If you import the same wallet on multiple devices, each can have a different PIN.

Receiving Funds

To add USDC to your wallet:

  1. Click Receive from the dashboard
  2. Copy your wallet address or scan the QR code
  3. Send USDC on the Base network to this address
[01] RECEIVE

Send USDC (Base) to this address

0x7a3b8c9d2e1f...4a5b6c7d8e9f
COPY ADDRESS
BACK

The receive screen shows your address and a QR code for easy funding.

Base network only. Send USDC on the Base network. Funds sent on other networks will not appear in your Primer Pay balance.

Settings

Access settings by clicking Settings from the dashboard. The settings panel is organized into three sections:

[01] = SETTINGS
0.10
1.00
Confirm above threshold ▾
0.05
SAVE
CANCEL
[02] PREMIUM

Hold 100,000 PR tokens on Base to unlock premium features. Learn more

EXPORT CSV
MANAGE DOMAINS
Base
Base Sepolia
Ethereum 🔒 Premium
Arbitrum 🔒 Premium
Optimism 🔒 Premium
Polygon 🔒 Premium
MANAGE RPC NODES

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:

[01] # DOMAINS

One domain per line. Subdomains are included automatically.

api.openai.com
anthropic.com
news.example.com

3 domains

SAVE
BACK

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:

[01] CUSTOM RPC

Configure custom RPC endpoints for each network. Leave blank to use defaults.

https://mainnet.base.org
Reset
https://sepolia.base.org
Reset
https://eth.llamarpc.com
Reset
SAVE
BACK

Configure custom RPC endpoints for each network.

Security Settings

The security panel provides options for protecting your wallet and managing keys:

[03] ! SECURITY
5 minutes ▾
CHANGE PIN
EXPORT RECOVERY PHRASE
EXPORT PRIVATE KEY
WIPE ACCOUNT

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