Title: NanoTrans Agent Paywall
Author: nanotrans01
Published: <strong>April 24, 2026</strong>
Last modified: July 8, 2026

---

Search plugins

![](https://ps.w.org/nanotrans-agent-paywall/assets/banner-772x250.png?rev=3514456)

![](https://ps.w.org/nanotrans-agent-paywall/assets/icon-256x256.png?rev=3514456)

# NanoTrans Agent Paywall

 By [nanotrans01](https://profiles.wordpress.org/nanotrans01/)

[Download](https://downloads.wordpress.org/plugin/nanotrans-agent-paywall.0.2.0.zip)

 * [Details](https://vec.wordpress.org/plugins/nanotrans-agent-paywall/#description)
 * [Reviews](https://vec.wordpress.org/plugins/nanotrans-agent-paywall/#reviews)
 *  [Installation](https://vec.wordpress.org/plugins/nanotrans-agent-paywall/#installation)
 * [Development](https://vec.wordpress.org/plugins/nanotrans-agent-paywall/#developers)

 [Support](https://wordpress.org/support/plugin/nanotrans-agent-paywall/)

## Description

NanoTrans Agent Paywall is an agent-native paywall plugin that enables AI agents
to automatically discover and purchase WordPress content using the x402 payment 
protocol with USDC stablecoin on the Base Network (Ethereum L2).

**Key Features:**

 * **Dual Access** – Humans pay via browser wallet (MetaMask); AI agents pay automatically
   via x402 protocol
 * **Gasless Payments** – Buyers unlock content with a signature only and sellers
   receive payouts automatically — neither side needs ETH for gas
 * **x402 Protocol** – Industry-standard HTTP 402 payment flow with EIP-712 signatures
 * **USDC Payments** – Stablecoin payments on Base Network (low gas fees, fast settlement)
 * **Agent Discovery** – `/.well-known/x402` endpoint for automatic content discovery
 * **Gutenberg Block** – Visual paywall block editor with price configuration
 * **Batch Payments** – Purchase up to 20 articles in a single transaction
 * **Admin Dashboard** – Revenue tracking, anomaly detection, emergency controls
 * **Real-time Notifications** – SSE-based payment alerts
 * **Permanent Access** – One-time payment grants permanent access via signed wallet
   cookie

**How It Works:**

 1. Publisher sets content prices using the Gutenberg paywall block
 2. AI agent requests content and receives HTTP 402 with payment requirements
 3. Agent signs USDC payment via EIP-712
 4. x402 Facilitator verifies payment on-chain
 5. Content is delivered as structured JSON

**For Content Publishers:**

 * Set per-article prices in USDC
 * Dynamic pricing (agent vs human, time-based)
 * Revenue dashboard with real-time analytics
 * Automatic fund distribution via Splitter contracts

**For AI Agent Developers:**

 * Standard x402 (HTTP 402) payment flow — works with any x402-capable agent or 
   SDK
 * Machine-readable site discovery at /.well-known/x402
 * Structured JSON API responses (articles, categories, search)

### External services

This plugin relies on the following third-party services to process x402 micropayments.
Payments cannot be verified or settled without them. All connections are opt-in:
no outbound network call is made until the site administrator explicitly enables
the Facilitator Proxy connection in Settings > NanoTrans and saves the settings.

**1. NanoTrans Facilitator Proxy (Cloudflare Worker)**

 * What it is: A Cloudflare Worker operated by NanoTrans that brokers authenticated
   requests to the Coinbase CDP x402 Facilitator. It signs requests with CDP credentials
   on your behalf so site owners do not need to manage CDP API keys.
 * What data is sent, and when: Only after the site administrator opts in (checks“
   Enable Facilitator Proxy connection” in Settings > NanoTrans and saves the settings).
   On the first save after opt-in, the plugin sends the site URL to register the
   site and receive an API key. During each payment attempt (agent or human gasless),
   it forwards x402 payment data (EIP-712 signed USDC transfer authorization, payer
   wallet address, transaction hash, amount, recipient address) to verify and settle
   the payment. When Automatic Payout Distribution is enabled, the plugin also sends
   the seller wallet address after payments so the Worker can trigger the on-chain
   payout split.
 * Default endpoint: https://nanotrans-facilitator-proxy.celee.workers.dev/ (configurable
   via the NANOTRANS_FACILITATOR_URL constant in wp-config.php).
 * Terms of service: https://www.cloudflare.com/website-terms/
 * Privacy policy: https://www.cloudflare.com/privacypolicy/

**2. Coinbase Developer Platform (CDP) x402 Facilitator**

 * What it is: Coinbase’s official x402 Facilitator service that verifies EIP-712
   USDC transfer authorizations and submits settled transfers on the Base Network.
 * What data is sent, and when: Only during a payment attempt after Facilitator 
   Proxy opt-in. The Cloudflare Worker forwards the signed USDC transfer authorization
   and payment requirements (payer address, receiver address, USDC amount, network
   ID, nonce, signature) so CDP can validate and broadcast the on-chain settlement.
 * Endpoint: https://api.cdp.coinbase.com/platform/v2/x402
 * Terms of service: https://www.coinbase.com/legal/cloud/terms-of-service
 * Privacy policy: https://www.coinbase.com/legal/privacy

**3. Base Network JSON-RPC (public endpoint)**

 * What it is: A public JSON-RPC endpoint for Base Mainnet and Base Sepolia used
   to read on-chain transaction receipts and verify that a USDC transfer has been
   confirmed.
 * What data is sent, and when: Only after a payment attempt. The plugin issues 
   read-only RPC calls (eth_getTransactionReceipt, eth_call) with the submitted 
   transaction hash and USDC contract address.
 * Endpoint: https://mainnet.base.org (Base Mainnet) and https://sepolia.base.org(
   Base Sepolia).
 * Terms of service: https://www.base.org/terms-of-service
 * Privacy policy: https://www.coinbase.com/legal/privacy

**4. Bundled ethers.js provider URLs (not called by this plugin)**

The ethers.js library bundled at assets/js/ethers.umd.min.js is the official upstream
UMD build from https://github.com/ethers-io/ethers.js (version 6.16.0, MIT licensed).
That bundle contains hard-coded provider URLs for common block explorers (listed
below) as part of its default provider list.

 * This plugin does NOT call any of these URLs. It only uses ethers.js for EIP-712
   signing and USDC contract read/write through the user’s browser wallet (MetaMask
   or compatible) and the configured Base Network RPC endpoint listed above.
 * No Etherscan/Arbiscan/Basescan API keys are configured, requested, or stored 
   by this plugin.
 * Domains present in the ethers.js bundle for reference (NOT contacted by this 
   plugin):
    - https://api.etherscan.io
    - https://api-goerli.etherscan.io
    - https://api-sepolia.etherscan.io
    - https://api-holesky.etherscan.io
    - https://api.arbiscan.io
    - https://api-goerli.arbiscan.io
    - https://api.basescan.org
 * If a user integrates a custom ethers.js provider pointing to one of these endpoints,
   the operator of that endpoint is responsible for its own terms and privacy policy.
   For the default ethers.js usage in this plugin, no connection is made to any 
   of them.
 * ethers.js upstream license: https://github.com/ethers-io/ethers.js/blob/main/
   LICENSE.md

No personal data (email, real name, IP logs) is sent to any of these services. Wallet
addresses are pseudonymous blockchain identifiers required for USDC transfer settlement.

### Privacy Policy

NanoTrans Agent Paywall processes the following data:

 * **Wallet addresses**: Stored in the transactions table for payment verification
   and receipt lookup. Wallet addresses are pseudonymous blockchain identifiers,
   not directly linked to personal identity.
 * **User-Agent strings**: Stored for request routing (human vs agent detection).
   Retained with transaction records.
 * **IP addresses**: Used for rate limiting only (via WordPress transients). Not
   permanently stored.
 * **Wallet cookies**: After a successful payment, an HMAC-signed cookie is set 
   to grant permanent access to purchased content. The cookie contains a wallet 
   address hash and a timestamp; no personal data is stored.

This plugin does not use third-party tracking services and does not collect email
addresses or personal information.

For GDPR compliance, transaction records containing wallet addresses can be exported
or deleted via the WordPress admin dashboard.

## Screenshots

[⌊Admin Dashboard - Revenue overview and payment analytics⌉⌊Admin Dashboard - Revenue
overview and payment analytics⌉[

Admin Dashboard – Revenue overview and payment analytics

[⌊Gutenberg Paywall Block - Visual price configuration⌉⌊Gutenberg Paywall Block -
Visual price configuration⌉[

Gutenberg Paywall Block – Visual price configuration

[⌊Payment Widget - Browser wallet connection for human users⌉⌊Payment Widget - Browser
wallet connection for human users⌉[

Payment Widget – Browser wallet connection for human users

[⌊Agent Discovery - /.well-known/x402 endpoint response⌉⌊Agent Discovery - /.well-
known/x402 endpoint response⌉[

Agent Discovery – /.well-known/x402 endpoint response

## Blocks

This plugin provides 1 block.

 *   NanoTrans Paywall Mark the boundary between free preview and paid content. 
   Content below this block requires x402 payment.

## Installation

**Requirements:**

 * PHP 8.1 or higher with GMP extension
 * WordPress 6.9 or higher
 * Base Network wallet (MetaMask or compatible)
 * USDC tokens on Base Network

**Step 1: Install and Activate**

Upload the `nanotrans-x402` folder to `/wp-content/plugins/`, or install directly
from the WordPress plugin directory. Activate the plugin through the ‘Plugins’ menu.

On activation, the plugin automatically connects to the Facilitator Proxy service.
You will see a success notice: “Successfully connected to Facilitator Proxy.”

**Step 2: Configure Your Wallet**

Go to Settings > NanoTrans and enter your Base Network wallet address (the address
that will receive USDC payments). Configure default content prices and other options
as needed.

**Step 3: Create Paywalled Content**

Add the NanoTrans Paywall block to any post or page using the Gutenberg editor. 
Set the price in USDC and publish.

That’s it! No wp-config.php editing required. The plugin handles Facilitator authentication
automatically.

**Testing:**

To test with the Base Sepolia testnet, change the network to “base-sepolia” in Settings
> NanoTrans and use testnet USDC from a faucet.

**Advanced Configuration (optional):**

For custom Facilitator Proxy deployments, you can override the default by adding
constants to `wp-config.php`:

    ```
    define( 'NANOTRANS_FACILITATOR_URL', 'https://your-worker.workers.dev' );
    define( 'NANOTRANS_PROXY_AUTH_SECRET', 'your-manual-bearer-token' );
    ```

## FAQ

### What is x402?

x402 is an open protocol that enables machine-to-machine payments over HTTP. When
content requires payment, the server responds with HTTP 402 (Payment Required) along
with payment details. The client automatically signs and submits payment, then receives
the content.

### Which blockchain network does this use?

NanoTrans uses the Base Network (Ethereum L2) for USDC stablecoin payments. Base
offers low gas fees (~$0.01) and fast confirmation times (~2 seconds).

### Is this compatible with WooCommerce?

NanoTrans operates independently of WooCommerce. It uses its own payment flow (x402
protocol) and does not conflict with WooCommerce product pricing.

### How are payments secured?

 * EIP-712 typed data signatures for payment authorization
 * x402 Facilitator verifies signatures on-chain before settlement
 * Replay attack prevention via unique transaction hashes
 * Rate limiting and anomaly detection
 * All payment attempts logged for audit

### What AI agents are supported?

Any AI agent that supports the x402 payment protocol. The plugin exposes a standard
HTTP 402 flow plus a machine-readable discovery endpoint (/.well-known/x402), so
any x402-capable agent or SDK can discover and purchase content.

### How do I test without real money?

Use the Base Sepolia testnet. Set the network to “base-sepolia” in plugin settings
and use testnet USDC from a faucet.

### Do I need CDP API keys or manual configuration?

No. The plugin automatically registers with the Facilitator Proxy on activation 
and receives an API key. No wp-config.php editing or CDP keys required. The Cloudflare
Worker proxy handles all CDP JWT signing on your behalf.

### Does this plugin store private keys?

No. The plugin does not require or store any private keys. Payment verification 
is handled by the Facilitator proxy (Cloudflare Worker). Only your public wallet
address is needed.

### Does this work with WordPress Multisite?

No. NanoTrans Agent Paywall currently supports single-site WordPress installations
only. On multisite, settings and transaction records would be shared across all 
sites, which is not suitable for separate content publishers. Multisite support 
is planned for a future release.

### Is this compatible with caching plugins?

Yes. NanoTrans sends `Cache-Control: no-store` and `X-NanoTrans: payment-gateway`
headers on all payment-required (HTTP 402) responses, so caching plugins like WP
Super Cache and W3 Total Cache should automatically exclude them. If you experience
issues, add a cache exclusion rule for URLs containing `/nanotrans/v1/`.

### What happens if the payment Facilitator goes down?

NanoTrans includes a circuit breaker that detects Facilitator outages. After 3 consecutive
failures, payments are temporarily paused for 5 minutes to prevent cascading timeouts.
An admin notice will appear on the NanoTrans dashboard. The system automatically
retries when the cooldown expires.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“NanoTrans Agent Paywall” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ nanotrans01 ](https://profiles.wordpress.org/nanotrans01/)

[Translate “NanoTrans Agent Paywall” into your language.](https://translate.wordpress.org/projects/wp-plugins/nanotrans-agent-paywall)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/nanotrans-agent-paywall/),
check out the [SVN repository](https://plugins.svn.wordpress.org/nanotrans-agent-paywall/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/nanotrans-agent-paywall/)
by [RSS](https://plugins.trac.wordpress.org/log/nanotrans-agent-paywall/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.2.0

Gasless payments, hardened security, and site-agnostic categories.

**Gasless payments (new):**

 * Buyers no longer need ETH: a post can be unlocked by signing a USDC payment authorization
   in the wallet — the Facilitator submits it on-chain and pays the gas. The classic
   wallet-transfer flow remains as an automatic fallback when gasless payment is
   unavailable.
 * Sellers no longer need ETH: earned funds are distributed automatically (seller/
   platform split) by the Facilitator service. Sites that explicitly set NANOTRANS_RELEASE_KEY
   keep signing releases themselves.
 * New settings: an “Automatic Payout Distribution” toggle and a “Payout Threshold(
   USDC)” field (default 1 USDC; 0 = distribute after every payment; smaller balances
   are swept hourly).
 * Behavior change: with a NANOTRANS_RELEASE_KEY configured, distribution now waits
   for the payout threshold (set it to 0 to restore release-on-every-payment).

**Security:**

 * Paywalled content is no longer exposed through the core WordPress REST API (wp-
   json/wp/v2/posts), RSS/Atom feeds, or auto-excerpts on archive/home/search pages.
 * Human payment verification now requires a wallet signature bound to the specific
   post and transaction, so an observed on-chain payment cannot be replayed by a
   third party.
 * Transaction hashes are single-use via an atomic ledger — one on-chain payment
   unlocks exactly one post, including under concurrent requests.
 * Bundle payment verification now checks the sender and the USDC contract and requires
   a wallet-ownership signature, closing a free unlock via crafted tokens; bundle
   buyers now get a persistent access token.
 * The emergency kill switch now halts human, gasless, and bundle payments too, 
   and its admin toggle is processed before the page renders and is idempotent.
 * Facilitator proxy hardening: constant-time auth-secret comparison, fail-closed
   rate limits on gas-spending endpoints, wallet-to-site Splitter binding, and registration
   URL validation.

**Improvements and fixes:**

 * Categories are now site-agnostic: the plugin uses your site’s own WordPress categories
   instead of a fixed taxonomy, and the set can be pinned with the `nanotrans_allowed_categories`
   filter. Agents discover the live category set via /categories and /.well-known/
   x402.
 * New: configure the paywall from a document-sidebar panel — add a paywall and 
   set price, preview length, and category without hunting for the block.
 * A failed payment verification now offers a no-charge retry instead of risking
   a second charge, and buyers can restore access on a new device with “Already 
   paid? Restore access”.
 * The batch price lock now actually applies (a locked quote is honored after a 
   price change), and gross overpayments are rejected before on-chain settlement.
 * Re-registering with the Facilitator Proxy no longer deletes the working API key
   on failure.
 * Correct private-key prefix handling in auto-release (previously corrupted ~1 
   in 16 keys), malformed prices are rejected, and oversized payment headers are
   rejected instead of truncated.
 * The admin real-time dashboard no longer replays days of stored events as new 
   notifications on every page load.
 * The settings page now shows validation errors and save confirmations.

**Compatibility:**

 * Tested up to WordPress 7.0 (block API v3, PHP 8.1+).

#### 0.1.0

 * Initial release
 * x402 payment protocol support (v1 and v2) with USDC on Base Network
 * Dual access: human (browser wallet) and agent (x402 auto-payment)
 * Permanent human access via HMAC-signed wallet cookie after one-time payment
 * Gutenberg paywall block with visual editor
 * Agent discovery via /.well-known/x402 endpoint
 * JSON API for structured content delivery to AI agents
 * Batch payments (2-20 articles per transaction)
 * Admin dashboard with revenue tracking and anomaly detection
 * SSE real-time payment notifications
 * Splitter contract integration for automatic fund distribution
 * Circuit breaker for Facilitator outage resilience
 * Cloudflare Worker proxy for CDP Facilitator authentication
 * Automatic Facilitator Proxy registration on activation (no manual config needed)

## Meta

 *  Version **0.2.0**
 *  Last updated **11 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.9 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 8.1 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/nanotrans-agent-paywall/)
 * Tags
 * [AI agent](https://vec.wordpress.org/plugins/tags/ai-agent/)[micropayment](https://vec.wordpress.org/plugins/tags/micropayment/)
   [paywall](https://vec.wordpress.org/plugins/tags/paywall/)[usdc](https://vec.wordpress.org/plugins/tags/usdc/)
   [x402](https://vec.wordpress.org/plugins/tags/x402/)
 *  [Advanced View](https://vec.wordpress.org/plugins/nanotrans-agent-paywall/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/nanotrans-agent-paywall/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/nanotrans-agent-paywall/reviews/)

## Contributors

 *   [ nanotrans01 ](https://profiles.wordpress.org/nanotrans01/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/nanotrans-agent-paywall/)