> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Products

> Create one-time, subscription, or usage-based products in minutes. Manage pricing, media, fields, and automated entitlements - all in one place.

<Info>
  Products are the foundation of Dodo Payments. Whether you sell a one‑time download, a recurring subscription, or usage‑based access, you start by creating a product. Each product defines how it’s priced, presented at checkout, and fulfilled after purchase.
</Info>

<CardGroup cols={3}>
  <Card title="One‑Time" icon="credit-card" href="/features/one-time-payment-products">
    Charge once for lifetime access or a single deliverable.
  </Card>

  <Card title="Subscriptions" icon="repeat" href="/features/subscription">
    Bill on a schedule with trials, proration, and add‑ons.
  </Card>

  <Card title="Usage‑Based" icon="arrow-trend-up" href="/features/usage-based-billing/introduction">
    Mät förbrukning och fakturera efter faktisk användning.
  </Card>
</CardGroup>

## Create a product

You can create products from the dashboard or via API. Choose the pricing model up‑front, One‑Time, Subscription, or Usage‑Based and then configure details. The pricing model can’t be changed later; create a new product if you need a different model.

<Steps>
  <Step title="Name & description">
    Provide a clear title and a concise value‑oriented description. Markdown is supported in descriptions.

    <Tip>
      Keep the first sentence customer‑facing and outcome‑oriented; it appears prominently in checkout.
    </Tip>

    <Frame>
      <img src="https://mintcdn.com/dodopayments/r-ndtvzx3WhKqwER/images/products.png?fit=max&auto=format&n=r-ndtvzx3WhKqwER&q=85&s=fb41221c4f2af4de0155e71de1ac6904" alt="Produkter" style={{ maxHeight: '500px', width: 'auto' }} width="1911" height="927" data-path="images/products.png" />
    </Frame>
  </Step>

  <Step title="Pricing model & price">
    Select the pricing model:

    * **One‑Time**: Fixed price paid once.
    * **Subscription**: Recurring price with interval and optional trial.
    * **Usage‑Based**: Price derived from metered events.

    Then set pricing:

    * **Pris**: Grundbelopp och valuta.
    * **Rabatt (%)**: Valfri rabatt som visas vid utcheckning och på fakturor.
    * För prenumerationer, sätt **Upprepa varje** (t.ex., 1 månad eller 1 år) och **Prova dagar** om det behövs. Prenumerationspriset måste vara minst **\$1** (eller motsvarande i vald valuta); belopp under denna minimigräns stöds inte och prenumerationen kommer inte att fungera.

    <Tip>
      Vill du ha ett fast pris per valuta eller land istället för en live FX-konvertering? Ställ in en `pricing_mode` på produkten och bifoga [Lokaliserade Prissättnings](/features/localized-pricing) regler — till exempel €9,99 i EUR eller ₹999 i Indien.
    </Tip>

    <Warning>
      Prisändringar påverkar endast nya inköp. Befintliga abonnemang följer förändringsregler för planen.
    </Warning>
  </Step>

  <Step title="Product media">
    Ladda upp bilder för att visa produkten vid kassan och på fakturor. Stöd för PNG/JPG/WebP upp till 3 MB. Ändra ordning eller byt när som helst.
  </Step>

  <Step title="Automated entitlements (Under Advanced Settings)">
    Bifoga leverans som aktiveras automatiskt efter betalning:

    * **Licensnycklar**: Utfärda och validera unika nycklar
    * **Filnedladdningar**: Ge säker filåtkomst
    * **Anpassad**: Utlös din egen berättigande-logik via webhooks

    Lägg till eller ta bort förmåner när ditt erbjudande utvecklas. Befintliga prenumeranter får eller förlorar tillgång därefter.
  </Step>
</Steps>

## Produktvarianter och prissättningsalternativ

Skapa separata produkter för varje prissättningsalternativ istället för varianter under en produkt (till exempel, Månatlig och Årlig). Gruppera dem sedan i en **Produktkollektion** för att presentera alla alternativ i en enda kassaprocess och möjliggöra planskifte i Kundportalen.

<Frame>
  <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/checkout-page.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=1890932384bc32c8126c7993f3581855" alt="Produktkollektioner" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

### Varför denna metod?

* **Tydliga prissättningsmodeller**: Varje produkt har en enda, väl definierad prissättningsmodell (engångs, prenumeration eller användningsbaserad)
* **Förutsägbara API:er**: Enklare integrationer utan inbäddad variantlogik
* **Enklare rapportering**: Spåra intäkter och mätvärden per produkt utan variantaggregering
* **Flexibel kassa**: Visa flera produkter sida vid sida, låt kunder jämföra och välja

### Hur Produktkollektioner fungerar

1. **Skapa produkter**: Ställ in individuella produkter för varje plan (t.ex., Start Månatlig, Start Årlig, Pro Månatlig, Pro Årlig)
2. **Gruppera i en kollektion**: Lägg till relaterade produkter i en Produktkollektion
3. **Enhetlig kassa**: Kunder ser alla alternativ i en kassa och väljer sin föredragna plan
4. **Planskifte**: Kunder kan uppgradera eller nedgradera mellan produkter i samma kollektion via Kundportalen

<Card title="Product Collections" icon="layer-group" href="/features/product-collections">
  Gruppera relaterade produkter tillsammans för enhetliga kassaupplevelser och sömlösa upp-/nedgraderingsvägar.
</Card>

## Hantering av produkter

Du kan hantera produkter genom instrumentpanelen eller programmatiskt via API. API:et ger full kontroll över produktionsskapande, uppdateringar, hämtning, bilduppladdningar och arkivering.

### Instrumentpanelshantering

* **Uppdatera**: Redigera namn, beskrivning, bilder, pris, fält och förmåner när som helst (prismodellen är oföränderlig).
* **Arkivera**: Dölj en produkt från nya köp utan att störa befintliga kunder. Du kan avarkivera senare.

### API-hantering

Följande instruktioner tillåter dig att skapa, uppdatera, hantera och hämta produkter, inklusive att ladda upp bilder.

<AccordionGroup>
  <Accordion title="Creating a Product">
    En produkt kan vara en engångsartikel eller en prenumerationsbaserad tjänst. För att skapa en ny produkt, skicka en `POST` förfrågan till `/products` slutpunkt med detaljer som namn, beskrivning, pris, valuta, och om det är en återkommande produkt.

    För återkommande produkter, ställ in `price` objektet till ett återkommande pris (`type: recurring_price`) och specificera `payment_frequency_interval` och `subscription_period_interval` (`Day`, `Week`, `Month`, eller `Year`) tillsammans med deras motsvarande antal.

    <Card title="Create Product API" icon="code" href="/api-reference/products/post-products">
      Visa detaljerad begäran och svarstruktur i Skapa produkt API-dokumentation.
    </Card>
  </Accordion>

  <Accordion title="Updating a Product">
    För att ändra en befintlig produkt, skicka en `PATCH` förfrågan till `/products/{product_id}` slutpunkt. Du kan uppdatera egenskaper som namn, pris och beskrivning medan du behåller andra detaljer oförändrade.

    Se till att `product_id` i slutpunkten matchar en befintlig produkt.

    <Card title="Update Product API" icon="code" href="/api-reference/products/patch-products">
      Visa detaljerad begäran och svarstruktur i Uppdatera produkt API-dokumentation.
    </Card>
  </Accordion>

  <Accordion title="Retrieving Products">
    Du kan hämta en lista över produkter lagrade i ditt konto genom att skicka en `GET` förfrågan till `/products` slutpunkt. Detta tillåter dig att hämta produktinformation, inklusive aktiva och arkiverade produkter.

    <Card title="Retrieve Products API" icon="code" href="/api-reference/products/get-products">
      Visa detaljerad begäran och svarstruktur i Hämta produkter API-dokumentation.
    </Card>
  </Accordion>

  <Accordion title="Uploading Product Images">
    Du kan associera en bild med en produkt genom att ladda upp den till AWS S3 med en försignerad URL tillhandahållen av API:et. Begär först en bilduppladdnings-URL från `/products/{product_id}/images` slutpunkt, använd sedan den försignerade URL:en för att ladda upp bilden inom 60 sekunder.

    <Warning>
      Den försignerade URL:en löper ut inom 60 sekunder, så bilden måste laddas upp inom den tidsramen.
    </Warning>

    När den försignerade URL:en har mottagits från API:et, ladda upp bilden med `PUT` metoden. Detta säkerställer säker och tillfällig åtkomst till AWS S3 för uppladdning av bilden.

    **Stöd bibliotek för uppladdning till S3:**

    * **Node.js**: `axios`, `node-fetch`
    * **Python**: `requests`, `boto3`
    * **Go**: `net/http`
    * **PHP**: `GuzzleHttp`
    * **Ruby**: `rest-client`

    Om uppladdningen lyckas kommer AWS S3 att returnera en `200 OK` status, vilket indikerar att bilden lagrats framgångsrikt.

    <Card title="Upload Product Image API" icon="code" href="/api-reference/products/put-products-images">
      Visa detaljerad begäran och svarstruktur i Ladda upp produktbild API-dokumentation.
    </Card>
  </Accordion>

  <Accordion title="Archiving a Product">
    Om du inte längre vill visa eller använda en produkt kan du arkivera den genom att skicka en `DELETE` förfrågan till `/products/{id}` slutpunkt. Denna åtgärd döljer produkten men tar inte bort den permanent.

    <Card title="Archive Product API" icon="code" href="/api-reference/products/archive-product">
      Visa detaljerad begäran och svarstruktur i Arkivera produkt API-dokumentation.
    </Card>
  </Accordion>

  <Accordion title="Unarchiving a Product">
    Om du behöver återställ en arkiverad produkt, skicka en `POST` förfrågan till `/products/{product_id}/unarchive` slutpunkt. Detta kommer att återaktivera produkten och göra den tillgänglig för användning igen.

    <Card title="Unarchive Product API" icon="code" href="/api-reference/products/unarchive-product">
      Visa detaljerad begäran och svarstruktur i Avarkivera produkt API-dokumentation.
    </Card>
  </Accordion>

  <Accordion title="Checkout & fulfillment">
    Skapa betalnings- eller prenumerationsflöden från produkter, och fullfölj automatiskt via förmåner och webhooks.

    <CardGroup cols={3}>
      <Card title="Checkout Sessions" icon="code" href="/developer-resources/checkout-session">
        Skapa kassasessioner för engångs- eller prenumerationsköp.
      </Card>

      <Card title="Payment Webhooks" icon="code" href="/developer-resources/webhooks/intents/payment">
        Reagera på livscykelhändelser för betalningar.
      </Card>

      <Card title="Subscription Webhooks" icon="code" href="/developer-resources/webhooks/intents/subscription">
        Hantera prenumeration skapade, förnyade och avbrutna händelser.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Bästa praxis

* **Börja med klarhet**: Separata produkter för varje prissättningsalternativ (Månatlig vs Årlig)
* **Använd försök klokt**: Använd försök med onboarding för att driva aktivering
* **Automatisera utförande**: Använd förmåner och webhooks för att leverera direkt
* **Märk med metadata**: Lagra dina system-ID:n för avstämning

<Check>
  Du är redo att skapa produkter och börja sälja - engångs, återkommande eller efter användning.
</Check>

## Relaterade

<CardGroup cols={2}>
  <Card title="Product Analytics" icon="chart-mixed" href="/features/analytics-and-reporting#product-level-analytics">
    Spåra intäkter, kunder, behållning, prenumeranter och MRR för varje enskild produkt.
  </Card>

  <Card title="Localized Pricing" icon="earth-americas" href="/features/localized-pricing">
    Ställ in fasta priser per valuta eller per land på en produkt istället för att förlita dig på live valutakurser.
  </Card>
</CardGroup>
