Overview
Sigma Auth uses NFT-based subscriptions where purchasing a tier gives you an NFT that proves ownership. The NFT is a transferable subscription receipt that can be resold on the open market, transferring the subscription with it.
Flow: Stripe payment -> mint subscription NFT -> deliver to wallet -> Gorilla Pool verifies ownership -> tier granted.
Create Checkout Session
POST /api/subscription/checkout
Creates a Stripe Checkout Session for purchasing a subscription tier NFT. Requires authentication.
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
tierId | string | Yes | Subscription tier: plus or pro |
interval | string | Yes | monthly or annual |
Response:
{
"url": "https://checkout.stripe.com/c/pay/cs_..."
}Redirect the user to the returned URL to complete payment. On success, they are redirected to /account?subscription=success. On cancel, to /account?subscription=cancelled.
Error Responses:
400- Missing fields, unknown tier, invalid interval, or no Stripe price configured401- Not authenticated
Check Subscription Status
GET /api/subscription/status
Returns the user's current subscription tier based on NFT ownership. Requires authentication.
Response:
{
"tier": "pro",
"isActive": true,
"nftOrigin": "txid_vout",
"walletAddress": "1Address...",
"lastVerified": "2026-03-23T20:00:00.000Z"
}If no subscription NFT is found, returns the free tier:
{
"tier": "free",
"isActive": true
}Webhook (Internal)
POST /api/subscription/webhook
Stripe webhook endpoint for payment events. Not called by clients directly. Configured in the Stripe Dashboard to point to https://auth.sigmaidentity.com/api/subscription/webhook.
Handled events:
| Event | Action |
|---|---|
checkout.session.completed | Records payment, queues NFT minting to buyer's wallet |
charge.refunded | Logged for manual handling |
charge.dispute.created | Logged for manual handling |
Subscription Tiers
| Tier | Monthly | Annual | Key Features |
|---|---|---|---|
| Free | $0 | $0 | Basic authentication, 1 OAuth client |
| Plus | $10 | $100 | 10 OAuth clients, custom branding, email support |
| Pro | $50 | $500 | Unlimited clients, analytics, priority support, white-label |
How NFT Subscriptions Work
- Purchase - User selects a tier and pays via Stripe Checkout
- Mint - On payment confirmation, a subscription NFT is minted to the user's connected BSV wallet
- Verify - Sigma Auth checks NFT ownership via Gorilla Pool to determine the user's tier
- Transfer - The NFT can be listed and sold to another user, transferring the subscription with it
- Revoke - If a Stripe refund or chargeback occurs, the subscription record is flagged