pop402 Integration Guide

Open site

pop402 Documentation

pop402 is a facilitator for cryptographic receipts and license management. It allows merchants to verify wallet ownership and license access without running their own infrastructure.

Facilitator URL: https://facilitator.pop402.com


Quick Start

For New Users (Challenge-Response)

  1. Request Challenge
const challenge = await fetch('https://facilitator.pop402.com/challenge', {
  method: 'POST',
  body: JSON.stringify({ walletAddress: wallet.publicKey.toBase58(), ttl: 3600 })
}).then(r => r.json());
  1. Sign Challenge
const message = new TextEncoder().encode(challenge.challenge.message);
const signature = await wallet.signMessage(message);
  1. Verify Access
const result = await fetch('https://facilitator.pop402.com/verify', {
  method: 'POST',
  body: JSON.stringify({
    paymentPayload: {
      x402Meta: {
        challengeId: challenge.challenge.id,
        signature: bs58.encode(signature),
        walletAddress: wallet.publicKey.toBase58(),
        sku: 'your-sku'
      }
    },
    paymentRequirements: { network: 'solana' }
  })
});

For x402 Migration

If you're migrating from x402, point your /verify and /settle endpoints to https://facilitator.pop402.com and add X-PAYMENT-META header with your SKU information.


Documentation


Key Concepts

Challenge-Response: Server generates a unique message, user signs it to prove wallet ownership

License: Cryptographic receipt that grants access to content based on usage type and expiration

SKU: Stock Keeping Unit - identifier for your content/product

Session: Reusable authentication valid until TTL expires