Skip to main content
Products are pre-configured items you can sell through moneydevkit. Instead of specifying amount and description for each checkout, you can reference a product by ID and the checkout will use the product’s price and details.

What are Products?

Products let you define reusable items with fixed or variable pricing. When you create a checkout using a product, the checkout automatically uses the product’s name, description, and price configuration.

Products Dashboard

The products page in your moneydevkit dashboard displays all your products:
Products list in the moneydevkit dashboard
Each product shows:
  • Product name and description
  • Price - Fixed amount or “Pay what you want” range
  • Billing - One-time
  • Created date
  • Actions - View details, edit, or delete

Creating a Product

Create product form in moneydevkit dashboard
  1. Navigate to Products in the dashboard
  2. Click the + button in the top right
  3. Fill in the product details:
    • Name - Product name shown to customers
    • Description - Brief description of what’s included
    • Price Type - Fixed price or Pay what you want
    • Currency - USD (dollars) or SAT (satoshis)
    • Price - Amount (for fixed price products)
  4. Click Create Product

Pricing Options

TypeDescriptionUse Case
Fixed priceSet specific amountStandard products, subscriptions
Pay what you wantCustomer chooses amountDonations, tips, pay-what-you-can

Product Details

Click any product to view its details in a sidebar:
Product detail sidebar in moneydevkit dashboard
  • Product ID - Unique identifier (click to copy)
  • Description - Product description
  • Billing - One-time or subscription interval
  • Created/Modified - Timestamps
  • Pricing - Price amount, type, and currency

Using Products in Code

Fetch Available Products

import { useProducts } from '@moneydevkit/nextjs'

function ProductList() {
  const { products, isLoading, error } = useProducts()

  if (isLoading) return <p>Loading products...</p>
  if (error) return <p>Error: {error.message}</p>

  return (
    <ul>
      {products.map(product => (
        <li key={product.id}>{product.name}</li>
      ))}
    </ul>
  )
}

Create a Product Checkout

import { useCheckout, useProducts } from '@moneydevkit/nextjs'

function BuyProduct() {
  const { createCheckout, isLoading } = useCheckout()
  const { products } = useProducts()

  const handleBuy = async (productId: string) => {
    const result = await createCheckout({
      type: 'PRODUCTS',
      product: productId,
      successUrl: '/checkout/success',
    })

    if (result.error) {
      console.error(result.error.message)
      return
    }

    window.location.href = result.data.checkoutUrl
  }

  return (
    <div>
      {products.map(product => (
        <button
          key={product.id}
          onClick={() => handleBuy(product.id)}
          disabled={isLoading}
        >
          Buy {product.name}
        </button>
      ))}
    </div>
  )
}
When using product checkouts, you don’t need to specify amount or currency - these are automatically pulled from the product’s price configuration.

Checkout Types

TypeDescriptionRequired Fields
type: 'PRODUCTS'Sell products from your dashboardproduct (product ID)
type: 'AMOUNT'Dynamic amounts for donations, tips, invoicesamount, currency
Use products when you have fixed catalog items. Use amount checkouts for dynamic pricing scenarios like invoices or custom quotes.

Pay What You Want (CUSTOM prices)

Products can have CUSTOM prices that let customers choose their own amount. When a checkout includes a product with a CUSTOM price, the checkout UI automatically shows an amount input field:
const result = await createCheckout({
  type: 'PRODUCTS',
  product: customPriceProductId,  // Product configured with CUSTOM price in dashboard
  successUrl: '/checkout/success',
})
The customer enters their desired amount during checkout. For USD, amounts are in dollars (converted to cents internally). For SAT, amounts are in satoshis. See the Replit integration guide or Next.js integration guide for complete setup instructions.