Description
x402 Pay gates selected WordPress posts behind an x402 payment. When a paywalled URL is requested without a valid Payment-Signature header, the plugin responds with HTTP 402 and a PAYMENT-REQUIRED payload describing how to pay. Bots, API clients, and browser-wallet users can sign a USDC transfer, retry the request, and get the response.
Use it to:
- Charge automated agents per article view.
- Offer pay-per-request access to a small set of premium posts.
- Test the x402 payment flow on Base Sepolia without setting up your own facilitator.
The plugin is inert until you pick a paywall mode in Settings x402 Pay. The default mode is “No posts,” so installing the plugin alone does not gate anything or contact any external service.
Audience and modes
- Audience decides who gets paywalled. “Only bots” (default) uses crawler detection so human readers still see your content. “Everyone” gates both humans and bots.
- Mode decides which posts qualify. Choose “No posts” (off), “All posts,” or restrict the paywall to a chosen category.
Built-in facilitators
- x402.org (Test network) — routes verify and settle calls through the public x402.org facilitator on Base Sepolia. Default for new installs. No real funds move.
- Coinbase CDP — routes through Coinbase Developer Platform on Base mainnet (real USDC). Requires a CDP API key.
External services
This plugin connects to external x402 facilitators to verify and settle payments. A facilitator is only contacted when a request hits a paywalled URL carrying a Payment-Signature header, or when an admin clicks Test connection on the settings page. Installing the plugin without selecting a paywall mode triggers no outbound calls.
x402.org (Test network)
Used by the default x402.org (Test network) connector.
- Endpoint:
https://x402.org/facilitator/ - What is sent: x402 PaymentRequirements (your receiving wallet address, amount, asset, network, resource URL) and the paying client’s PaymentPayload (a signed USDC
transferWithAuthorizationauthorization). - Why: to verify and settle the USDC payment on Base Sepolia.
- Site: https://www.x402.org/
- Terms of use: https://lfprojects.org/policies/terms-of-use/
- Privacy policy: https://lfprojects.org/policies/privacy-policy/
- This is a public testnet facilitator; do not use it for production paywalls.
Coinbase Developer Platform
Used only when an admin selects the Coinbase CDP connector and saves an API key.
- Endpoint:
https://api.cdp.coinbase.com/platform/v2/x402/ - What is sent: the same x402 PaymentRequirements and PaymentPayload, plus a CDP-signed JWT proving the API key.
- Why: to verify and settle the USDC payment on Base mainnet.
- Terms of service: https://coinbase.com/legal/developer-platform/terms-of-service/
- Privacy policy: https://coinbase.com/legal/privacy
Development
Source, build instructions, and issue tracker: https://github.com/Automattic/x402-pay
The admin UI is built from assets/src/index.jsx via npm run build; the bundled assets/build/index.js is the compiled output.
Screenshots



Installation
- Install and activate the plugin.
- Visit Settings x402 Pay.
- Enter the wallet address that should receive payments.
- Pick a paywall mode and audience.
- Pick a facilitator. For Coinbase, paste your CDP API Key ID and secret.
- Save.
FAQ
-
What does a paywalled request look like?
-
If the request does not carry a valid
Payment-Signatureheader, the plugin returns HTTP 402 with aPAYMENT-REQUIREDresponse header containing the encoded x402 PaymentRequirements. Clients sign the requirements and retry the request. -
Does this charge human readers?
-
Only if you set Audience to “Everyone.” The default is “Only bots/crawlers” so humans see posts as normal and only detected bot/agent traffic gets a 402.
-
Do I need ETH to receive payments?
-
No. x402 uses EIP-3009
transferWithAuthorization; the facilitator pays gas. You only need USDC inbound. -
Where are API keys stored?
-
Coinbase CDP secrets are stored in their own
wp_optionsrow, or can be supplied via awp-config.phpconstant or environment variable so they stay out of the database entirely.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“x402 Pay” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “x402 Pay” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.1.3
- Use canonical coinbase.com legal URLs so the terms and privacy links pass Plugin Directory link validation.
0.1.2
- Public 402 page assets now use WordPress enqueue APIs for Plugin Directory review compliance.
0.1.1
- Paywall page now swaps the wallet buttons for a single live status message while a payment is in progress, and surfaces wallet rejections or settlement failures in a dismissible modal so visitors can retry.
0.1.0
- Initial release: paywall posts by category or all posts; gate humans, bots, or both; verify and settle USDC payments via x402.org on Base Sepolia or Coinbase CDP on Base mainnet.