OpportunitiesEntities
Docs
    Ring Platform

    Decentralized Self-building Future

    Sign In
    Entities
    Opportunities
    Store
    Docs
    Platform Concepts
    RING EconomySonoratek LLCGlobal ImpactAI Meets Web3
    Get Started
    Quick StartCalculatorRoadmap
    Privacy|Contact
    v1.106.26|Sonoratek LLC

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    Membership & Credits
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Credit Rewards
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    Page Curtain
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    News Kingdom architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server
    OSS vs enterprise

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    Membership & Credits
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Credit Rewards
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    Page Curtain
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    News Kingdom architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server
    OSS vs enterprise

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    Membership & Credits
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Credit Rewards
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    Page Curtain
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    News Kingdom architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server
    OSS vs enterprise

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Membership & Credits

    Use Founder / Developer tabs in the docs sidebar to filter this page. Member-facing flows render at /membership; this article documents the tiers, pricing, and payment rails.

    Membership is how a Ring clone distinguishes community tiers and monetizes access. The role ladder is the SSOT (features/auth/user-role.ts), upgrade pricing is config-driven (lib/membership/pricing.ts), and every payment — card, credit balance, PayPal, or native token — flows through PaymentConductor.

    Role ladder (SSOT)

    RoleMeaning
    visitorNon-authenticated, viewing-only
    subscriberPaying basic subscriber — baseline community access
    memberElevated status with more access
    confidentialAccess to confidential resources
    adminPlatform admin
    superadminTop-level platform admin

    Upgrades move a user from subscriber → member. confidential tier config explicitly requires the confidential role.

    Why this matters for your clone

    • Monetize access with a paid member tier while visitors and subscribers keep baseline access.
    • One checkout, many rails. PaymentConductor unifies card, credit balance, PayPal, and native token — the same checkout engine as the store.
    • Predictable RING pricing. Monthly upgrade defaults to 1 RING (membership.ring.memberUpgradeAmount), yearly gets 20% off monthly × 12, and live quotes use the desk oracle so the billed amount matches the quote.
    • Credit balance is the core denomination. Above 10 credit units (MEMBERSHIP_DESK_CREDIT_HINT_MIN), the UI hints the Token Desk swap instead of buying credit.

    Operator checklist

    1. Confirm your payment processors in PaymentConductor (WayForPay / Stripe / PayPal per clone).
    2. Review membership.ring amounts and the member and memberAnnual tier config in ring-config.json. To charge a fixed fiat price instead of a RING-derived one, set "pricedInNativeToken": false on that tier.
    3. Run one real upgrade per rail (card, credit, token) in a staging clone before go-live.

    Pricing modules (verified)

    ModuleRole
    lib/membership/pricing.tsSync helpers — RING amounts per period, annual 20% discount, credit desk hint
    lib/membership/pricing-live.tsServer-only live desk quotes via getNativeTokenToMainCurrencyRate
    lib/payments/conductor/handlers/membership-upgrade.tsUpgrade purpose handling
    lib/payments/conductor/handlers/membership-upgrade-stripe.ts / -paypal.tsProvider-specific upgrade rails
    lib/payments/payment.config.tsmembership_upgrade purpose → PAYMENT_MEMBERSHIP_PROCESSOR

    Fiat-priced tiers (since 2026-10-17)

    MemberTierConfig in lib/ring-config-types.ts gained pricedInNativeToken. When it is false, lib/membership/pricing.ts uses the tier's amount and currency as the fiat price. When it is omitted or (the template default), the amount is still derived from the native-token fee.

    Related documentation

    Related documentation

    WalletConductor

    Deep-dive: the credit ledger and two-rate SSOT membership payments settle into.

    PaymentConductor

    Depends-on: card, PayPal, and token rails all run through PaymentConductor.

    SubscriptionConductor

    Same-workflow: renewal lifecycle and cancellation handling.

    Data Model

    See-also: how credit_balance and the subscription ledger live in the JSONB schema.

    1. Docs
    2. /Features
    3. /Membership & Credits

    Updated Oct 26, 20264 min listen

    Membership & Credits

    Use Founder / Developer tabs in the docs sidebar to filter this page. Member-facing flows render at /membership; this article documents the tiers, pricing, and payment rails.

    Membership is how a Ring clone distinguishes community tiers and monetizes access. The role ladder is the SSOT (features/auth/user-role.ts), upgrade pricing is config-driven (lib/membership/pricing.ts), and every payment — card, credit balance, PayPal, or native token — flows through PaymentConductor.

    Role ladder (SSOT)

    RoleMeaning
    visitorNon-authenticated, viewing-only
    subscriberPaying basic subscriber — baseline community access
    memberElevated status with more access
    confidentialAccess to confidential resources
    adminPlatform admin
    superadminTop-level platform admin

    Upgrades move a user from subscriber → member. confidential tier config explicitly requires the confidential role.

    Why this matters for your clone

    • Monetize access with a paid member tier while visitors and subscribers keep baseline access.
    • One checkout, many rails. PaymentConductor unifies card, credit balance, PayPal, and native token — the same checkout engine as the store.
    • Predictable RING pricing. Monthly upgrade defaults to 1 RING (membership.ring.memberUpgradeAmount), yearly gets 20% off monthly × 12, and live quotes use the desk oracle so the billed amount matches the quote.
    • Credit balance is the core denomination. Above 10 credit units (MEMBERSHIP_DESK_CREDIT_HINT_MIN), the UI hints the Token Desk swap instead of buying credit.

    Operator checklist

    1. Confirm your payment processors in PaymentConductor (WayForPay / Stripe / PayPal per clone).
    2. Review membership.ring amounts and the member and memberAnnual tier config in ring-config.json. To charge a fixed fiat price instead of a RING-derived one, set "pricedInNativeToken": false on that tier.
    3. Run one real upgrade per rail (card, credit, token) in a staging clone before go-live.

    Pricing modules (verified)

    ModuleRole
    lib/membership/pricing.tsSync helpers — RING amounts per period, annual 20% discount, credit desk hint
    lib/membership/pricing-live.tsServer-only live desk quotes via getNativeTokenToMainCurrencyRate
    lib/payments/conductor/handlers/membership-upgrade.tsUpgrade purpose handling
    lib/payments/conductor/handlers/membership-upgrade-stripe.ts / -paypal.tsProvider-specific upgrade rails
    lib/payments/payment.config.tsmembership_upgrade purpose → PAYMENT_MEMBERSHIP_PROCESSOR

    Fiat-priced tiers (since 2026-10-17)

    MemberTierConfig in lib/ring-config-types.ts gained pricedInNativeToken. When it is false, lib/membership/pricing.ts uses the tier's amount and currency as the fiat price. When it is omitted or (the template default), the amount is still derived from the native-token fee.

    Related documentation

    Related documentation

    WalletConductor

    Deep-dive: the credit ledger and two-rate SSOT membership payments settle into.

    PaymentConductor

    Depends-on: card, PayPal, and token rails all run through PaymentConductor.

    SubscriptionConductor

    Same-workflow: renewal lifecycle and cancellation handling.

    Data Model

    See-also: how credit_balance and the subscription ledger live in the JSONB schema.

    1. Docs
    2. /Features
    3. /Membership & Credits

    Updated Oct 26, 20264 min listen

    Membership & Credits

    Use Founder / Developer tabs in the docs sidebar to filter this page. Member-facing flows render at /membership; this article documents the tiers, pricing, and payment rails.

    Membership is how a Ring clone distinguishes community tiers and monetizes access. The role ladder is the SSOT (features/auth/user-role.ts), upgrade pricing is config-driven (lib/membership/pricing.ts), and every payment — card, credit balance, PayPal, or native token — flows through PaymentConductor.

    Role ladder (SSOT)

    RoleMeaning
    visitorNon-authenticated, viewing-only
    subscriberPaying basic subscriber — baseline community access
    memberElevated status with more access
    confidentialAccess to confidential resources
    adminPlatform admin
    superadminTop-level platform admin

    Upgrades move a user from subscriber → member. confidential tier config explicitly requires the confidential role.

    Why this matters for your clone

    • Monetize access with a paid member tier while visitors and subscribers keep baseline access.
    • One checkout, many rails. PaymentConductor unifies card, credit balance, PayPal, and native token — the same checkout engine as the store.
    • Predictable RING pricing. Monthly upgrade defaults to 1 RING (membership.ring.memberUpgradeAmount), yearly gets 20% off monthly × 12, and live quotes use the desk oracle so the billed amount matches the quote.
    • Credit balance is the core denomination. Above 10 credit units (MEMBERSHIP_DESK_CREDIT_HINT_MIN), the UI hints the Token Desk swap instead of buying credit.

    Operator checklist

    1. Confirm your payment processors in PaymentConductor (WayForPay / Stripe / PayPal per clone).
    2. Review membership.ring amounts and the member and memberAnnual tier config in ring-config.json. To charge a fixed fiat price instead of a RING-derived one, set "pricedInNativeToken": false on that tier.
    3. Run one real upgrade per rail (card, credit, token) in a staging clone before go-live.

    Pricing modules (verified)

    ModuleRole
    lib/membership/pricing.tsSync helpers — RING amounts per period, annual 20% discount, credit desk hint
    lib/membership/pricing-live.tsServer-only live desk quotes via getNativeTokenToMainCurrencyRate
    lib/payments/conductor/handlers/membership-upgrade.tsUpgrade purpose handling
    lib/payments/conductor/handlers/membership-upgrade-stripe.ts / -paypal.tsProvider-specific upgrade rails
    lib/payments/payment.config.tsmembership_upgrade purpose → PAYMENT_MEMBERSHIP_PROCESSOR

    Fiat-priced tiers (since 2026-10-17)

    MemberTierConfig in lib/ring-config-types.ts gained pricedInNativeToken. When it is false, lib/membership/pricing.ts uses the tier's amount and currency as the fiat price. When it is omitted or (the template default), the amount is still derived from the native-token fee.

    Related documentation

    Related documentation

    WalletConductor

    Deep-dive: the credit ledger and two-rate SSOT membership payments settle into.

    PaymentConductor

    Depends-on: card, PayPal, and token rails all run through PaymentConductor.

    SubscriptionConductor

    Same-workflow: renewal lifecycle and cancellation handling.

    Data Model

    See-also: how credit_balance and the subscription ledger live in the JSONB schema.

    1. Docs
    2. /Features
    3. /Membership & Credits

    Updated Oct 26, 20264 min listen

    true

    POST /api/membership/subscription/create accepts billingPeriod (monthly default, or yearly) and prices it with getMemberMainCurrencyTierForPeriod. The Stripe provider creates a yearly or monthly price accordingly, sends the amount in cents, and returns client_secret when the subscription still needs payment confirmation (ledger status pending until then).

    API surface

    RouteMethodsPurpose
    /api/membership/payment/cardPOST, GETCard checkout for membership
    /api/membership/payment/creditPOST, GETCredit-balance payment path
    /api/membership/payment/paypalPOST, GETPayPal checkout
    /api/membership/payment/tokenPOST, GETNative token payment
    /api/membership/subscription/createPOSTCreate a subscription. Body includes provider, auto_renew, billingPeriod
    /api/membership/subscription/statusGETRead subscription status
    /api/membership/subscription/cancelPOST, GETCancel a subscription

    Ledger truth

    1. 1

      Where money lands

      Paid upgrades write to the subscription ledger (subscription_ledger) — the credit_balance provider marks credit-paid renewals (next_payment_due indexed in data/schema.sql). Credit itself lives on the user record (users.data.credit_balance), with wallet transactions as the audit trail (features/wallet/services/credit-balance-service.ts).

    2. 2

      Billing periods

      MembershipBillingPeriod = 'monthly' | 'yearly'. Yearly cost = annualUpgradeAmount when set, otherwise monthly × 12 × 0.8 (20% off). Tier shape: MemberTierConfig { amount, currency, description, duration }.

    true

    POST /api/membership/subscription/create accepts billingPeriod (monthly default, or yearly) and prices it with getMemberMainCurrencyTierForPeriod. The Stripe provider creates a yearly or monthly price accordingly, sends the amount in cents, and returns client_secret when the subscription still needs payment confirmation (ledger status pending until then).

    API surface

    RouteMethodsPurpose
    /api/membership/payment/cardPOST, GETCard checkout for membership
    /api/membership/payment/creditPOST, GETCredit-balance payment path
    /api/membership/payment/paypalPOST, GETPayPal checkout
    /api/membership/payment/tokenPOST, GETNative token payment
    /api/membership/subscription/createPOSTCreate a subscription. Body includes provider, auto_renew, billingPeriod
    /api/membership/subscription/statusGETRead subscription status
    /api/membership/subscription/cancelPOST, GETCancel a subscription

    Ledger truth

    1. 1

      Where money lands

      Paid upgrades write to the subscription ledger (subscription_ledger) — the credit_balance provider marks credit-paid renewals (next_payment_due indexed in data/schema.sql). Credit itself lives on the user record (users.data.credit_balance), with wallet transactions as the audit trail (features/wallet/services/credit-balance-service.ts).

    2. 2

      Billing periods

      MembershipBillingPeriod = 'monthly' | 'yearly'. Yearly cost = annualUpgradeAmount when set, otherwise monthly × 12 × 0.8 (20% off). Tier shape: MemberTierConfig { amount, currency, description, duration }.

    true

    POST /api/membership/subscription/create accepts billingPeriod (monthly default, or yearly) and prices it with getMemberMainCurrencyTierForPeriod. The Stripe provider creates a yearly or monthly price accordingly, sends the amount in cents, and returns client_secret when the subscription still needs payment confirmation (ledger status pending until then).

    API surface

    RouteMethodsPurpose
    /api/membership/payment/cardPOST, GETCard checkout for membership
    /api/membership/payment/creditPOST, GETCredit-balance payment path
    /api/membership/payment/paypalPOST, GETPayPal checkout
    /api/membership/payment/tokenPOST, GETNative token payment
    /api/membership/subscription/createPOSTCreate a subscription. Body includes provider, auto_renew, billingPeriod
    /api/membership/subscription/statusGETRead subscription status
    /api/membership/subscription/cancelPOST, GETCancel a subscription

    Ledger truth

    1. 1

      Where money lands

      Paid upgrades write to the subscription ledger (subscription_ledger) — the credit_balance provider marks credit-paid renewals (next_payment_due indexed in data/schema.sql). Credit itself lives on the user record (users.data.credit_balance), with wallet transactions as the audit trail (features/wallet/services/credit-balance-service.ts).

    2. 2

      Billing periods

      MembershipBillingPeriod = 'monthly' | 'yearly'. Yearly cost = annualUpgradeAmount when set, otherwise monthly × 12 × 0.8 (20% off). Tier shape: MemberTierConfig { amount, currency, description, duration }.