Payments

Stripe integration for paid submissions and sponsorships.

Overview

DirectoryKit integrates with Stripe for payment processing. There are two payment systems:

  1. Submission plans — One-time payment for premium project listings
  2. Promotions & Sponsors — Paid placements and sponsorships

Submission plans

Configured in config/plans.config.ts. Default setup includes:

  • Free — Basic listing with 1 screenshot
  • Premium ($19, one-time) — Featured listing with priority review

Webhook handler

Stripe events are processed at app/api/webhooks/stripe/route.ts. The webhook handles:

  • checkout.session.completed — Activates paid plans
  • payment_intent.succeeded — Confirms payments

Configuration

Set these environment variables:

NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_...
STRIPE_SECRET_KEY=sk_...
STRIPE_WEBHOOK_SECRET=whsec_...

Alternative providers

config/payments.config.ts also supports:

  • Lemon Squeezy
  • Paddle
  • None (free-only mode)