{
  "id": 17831955,
  "title": "Selling digital files for USDC with one Cloudflare Worker (no Stripe, no database)",
  "url": "https://urgent.news/2026/11/02/selling-digital-files-for-usdc-with-one-cloudflare-worker-no-stripe",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-02T17:57:43.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/setrov/selling-digital-files-for-usdc-with-one-cloudflare-worker-no-stripe-no-database-4fpk"
  },
  "original_language": "en",
  "account": "A Cloudflare Worker can be used to sell small PDF files for USDC without the need for a payment processor, database, or wallet connection on the server. The system receives USDC on Base to a public address and uses a unique tag in the order amount to differentiate between transactions. The Worker signs orders with HMAC-SHA256 using a secret key, which is rotated to invalidate open orders. The buyer provides the transaction hash, and the Worker verifies the transaction on the Base network before generating a signed download link that expires in 2 hours. This system is suitable for small digital goods, a crypto-native audience, and situations where running a database is undesirable. However, it may not be ideal for larger transactions, refunds, or files exceeding a few MB, where a real payment stack is recommended.",
  "summary": "I wanted to sell two small PDFs for crypto without a payment processor, a database, or a wallet connection on the server. The result is one Cloudflare Worker (free plan) that only receives USDC on Base to a public address. Here is how it works, including the parts that are weak. Live example: Setrov Store . The core problem: which payment belongs to which order? A plain transfer to an address…",
  "key_points": [
    "Cloudflare Worker enables USDC sales without Stripe or database",
    "Unique tag in order amount identifies each transaction",
    "HMAC-SHA256 signing with rotating secret keys secures orders"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}