> ## 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.

# Product Collections

> Group related products together for unified checkout experiences, plan selection, and seamless upgrade/downgrade paths within the Customer Portal.

<Info>
  Product Collections let you group related products (e.g., Starter, Pro, Enterprise plans) under one umbrella. Display all options in a single checkout, define upgrade/downgrade paths, and give customers the flexibility to switch plans directly from the Customer Portal.
</Info>

<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="Screenshot der Produktkollektion-Kassenseite, die mehrere angezeigte Produkte zeigt" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

## Key Highlights

* **Collection-based structure**: Group related products (plans, tiers, pricing options) under a single collection for organized management.
* **One collection, many products**: Include multiple products like Starter, Pro, Lifetime, etc., each with its own pricing model.
* **Dynamic checkout experience**: Display all products from a collection in one checkout view, letting customers choose their preferred plan.
* **Merchant-level control**: Enable, disable, and reorder products within each collection. The first product is automatically pre-selected at checkout.
* **Lifecycle awareness**: Enable customers to upgrade or downgrade between products in the same collection via the Customer Portal.

## Creating a Product Collection

Product Collections are created and managed from the dashboard or via API. Each collection acts as a container for related products.

<Steps>
  <Step title="Create the collection">
    Define the collection with a name and optional description. Upload an image to visually represent the collection in checkout.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/collection-form.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=4740b9da84da8c24177a9592549222af" alt="Screenshot des Formulars zur Erstellung der Produktkollektion im Dashboard, das Felder für Name, Beschreibung und Bildupload zeigt" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/collection-form.png" />
    </Frame>

    **Collection fields:**

    * **Name** (required): Display name for the collection (e.g., "SaaS Plans", "License Tiers")
    * **Description** (optional): Brief explanation shown in checkout
    * **Image** (optional): Visual branding for the collection
  </Step>

  <Step title="Add products to the collection">
    Add existing products to your collection. Products can be organized into groups for better structure.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/collection-form-products.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=41b2da4d40e8dd9a12d059f4fa3f285f" alt="Screenshot der Produktseite der Produktkollektion, die eine Liste von Produkten zeigt und die Möglichkeit, diese zur Kollektion hinzuzufügen" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/collection-form-products.png" />
    </Frame>

    **Product organization:**

    * **Groups**: Optionally organize products into named groups (e.g., "Monthly Plans", "Annual Plans")
    * **Ungrouped products**: Products without a group appear at the collection level
    * **Ordering**: Drag and drop to set the display order

    <Warning>
      Each product can only belong to one collection. If a product is already in another collection, you'll need to remove it first.
    </Warning>
  </Step>

  <Step title="Configure ordering and visibility">
    Control the display order and visibility of products within the collection.

    **Configuration options:**

    * **Product status**: Enable or disable individual products within the collection
    * **Display order**: Drag and drop to set the sequence products appear in checkout

    <Info>
      The first product in the collection is automatically pre-selected as the default at checkout. Reorder products to change which one is selected by default.
    </Info>
  </Step>
</Steps>

## Collection Checkout

Collections enable a unified checkout experience where customers can view and select from all available products in one place.

### Checkout Types

| Type                        | Description                                      | Use Case                                    |
| --------------------------- | ------------------------------------------------ | ------------------------------------------- |
| **Collection Checkout**     | Displays all active products within a collection | Subscription plan selection, tiered pricing |
| **Single Product Checkout** | Displays only one specific product               | Direct purchase, promotional links          |

### Collection Checkout Experience

When using a collection checkout:

1. **All active products displayed**: Customers see every enabled product in the collection
2. **First product pre-selected**: The first product in the collection order is automatically selected
3. **Product details shown**: Each product displays its name, description, and pricing
4. **Single selection**: Customer selects one product to purchase
5. **Standard flow continues**: After selection, the checkout proceeds with the chosen product's pricing and billing settings

<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="Screenshot der Produktkollektion-Kassenseite, die mehrere angezeigte Produkte zeigt" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

<Tip>
  Collection checkout is ideal for subscription businesses where you want customers to compare plans side-by-side before purchasing.
</Tip>

### API Integration

Create a checkout session for a collection:

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_collection_id: 'pdc_abc123',
  product_cart: [], // Required: pass an empty array for collection checkout
  return_url: 'https://yoursite.com/return'
});

// Redirect customer to the checkout
window.location.href = session.checkout_url;
```

<Warning>
  When using `product_collection_id`, discount codes cannot be applied at session creation. Customers can still enter discount codes during checkout if enabled.
</Warning>

## Customer Portal Integration

Customers can upgrade or downgrade between products within the same collection directly from the Customer Portal.

<Tip>
  **Already have subscription products?** Simply add them to a Product Collection to enable upgrade/downgrade flows in the Customer Portal. No need to recreate your products.
</Tip>

### Plan Management Actions

| Action                | Description                                           | Merchant Control                |
| --------------------- | ----------------------------------------------------- | ------------------------------- |
| **View Current Plan** | Display current product name, price, and renewal date | Always available                |
| **Upgrade Plan**      | Move to a higher-tier product in the same collection  | Configurable (default: allowed) |
| **Downgrade Plan**    | Move to a lower-tier product in the same collection   | Configurable (default: allowed) |
| **Cancel**            | Cancel the subscription entirely                      | Always available                |

<Frame>
  <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/portal.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=9b9d302907688238f6b84c10b85504aa" alt="Screenshot der Planänderungsschnittstelle im Kundenportal der Produktkollektion, die die Planverwaltungsaktionen zeigt" style={{ maxHeight: '500px', width: 'auto' }} width="2870" height="1654" data-path="images/product-collection/portal.png" />
</Frame>

### Upgrade/Downgrade Rules

* Upgrades and downgrades are only available between products **within the same collection**
* Proration is applied based on your subscription settings
* Email notifications are sent to the business on every upgrade, downgrade, or cancellation

<Frame>
  <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/portal-change-plan.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=e4fe60146a7d8436753a36a79f902a6d" alt="Screenshot der Planänderungsschnittstelle im Kundenportal der Produktkollektion, die die Planverwaltungsaktionen zeigt" style={{ maxHeight: '500px', width: 'auto' }} width="832" height="928" data-path="images/product-collection/portal-change-plan.png" />
</Frame>

<Info>
  Customers cannot change to products outside their current collection. Create separate collections for distinct product lines.
</Info>

## Subscription Settings

Konfigurieren Sie, wie Abonnements und Planänderungen in Ihrem Unternehmen funktionieren, von **Einstellungen → Abonnements** in Ihrem Dashboard aus.

<Frame>
  <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/business-settings.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=9ed2f332336aab522b5238ce7218d8ae" alt="Screenshot der Seite mit den Abonnementeinstellungen, die Umschalter für Mehrere Abonnements zulassen und Abonnement-Aktualisierungen zulassen anzeigt" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/business-settings.png" />
</Frame>

### Available Settings

| Setting                          | Description                                                                                 | Default  |
| -------------------------------- | ------------------------------------------------------------------------------------------- | -------- |
| **Allow Multiple Subscriptions** | Customers can hold more than one active subscription at the same time                       | Enabled  |
| **Allow Subscription Updates**   | Customers can upgrade or downgrade their existing subscriptions anytime via Customer Portal | Disabled |

<Info>
  Planänderungen über das Kundenportal sind standardmäßig deaktiviert. Aktivieren Sie "Abonnement-Aktualisierungen zulassen" in **Einstellungen → Abonnements**, um Kunden das Upgrade oder Downgrade zwischen Produkten in derselben Kollektion zu ermöglichen.
</Info>

<Card title="Subscription Plan Changes" icon="repeat" href="/features/subscription#subscription-plan-changes">
  Learn more about proration modes and plan change behavior.
</Card>

## Managing Collections

Produktkollektionen können entweder über das Dodo Payments-Dashboard oder programmatisch über die API verwaltet werden. Die API bietet volle Kontrolle über die Erstellung, Aktualisierung, den Bild-Upload, das Archivieren sowie die Verwaltung verschachtelter Gruppen und Produkte.

### Dashboard-Operationen

* **Erstellen**: Neue Kollektionen mit Produkten und Gruppen einrichten
* **Aktualisieren**: Name, Beschreibung, Bild und Produktorganisation ändern
* **Neu anordnen**: Per Drag-and-Drop die Anzeigereihenfolge der Produkte ändern
* **Produkte aktivieren/deaktivieren**: Steuern, welche Produkte im Checkout erscheinen
* **Archivieren**: Eine Kollektion verbergen, ohne sie dauerhaft zu löschen (kann später wiederhergestellt werden)

<Frame>
  <img src="https://mintcdn.com/dodopayments/2YrxTqbaYgAm54C_/images/product-collection/collection-dashboard.png?fit=max&auto=format&n=2YrxTqbaYgAm54C_&q=85&s=0fee5cdfe68c770b7cdb1d0f8e817b5b" alt="Screenshot des Dashboards für die Verwaltung von Produktkollektionen" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/collection-dashboard.png" />
</Frame>

### API-Verwaltung

Die folgenden Endpunkte ermöglichen es, Produktkollektionen programmatisch zu erstellen, zu aktualisieren, abzurufen, zu archivieren und zu organisieren — einschließlich der Verwaltung verschachtelter Gruppen und der darin enthaltenen Produkte.

<AccordionGroup>
  <Accordion title="Listing Product Collections">
    Rufen Sie alle mit Ihrem Konto verknüpften Produktkollektionen ab, indem Sie eine `GET`-Anfrage an den `/product-collections`-Endpunkt senden. Unterstützt Paginierung, Filterung nach Marke und das Einbeziehen archivierter Kollektionen.

    <Card title="List Product Collections API" icon="code" href="/api-reference/product-collections/list-product-collections">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der List Product Collections API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Creating a Product Collection">
    Erstellen Sie eine neue Produktkollektion, indem Sie eine `POST`-Anfrage an den `/product-collections`-Endpunkt mit Details wie Name, Beschreibung und Marke senden.

    <Card title="Create Product Collection API" icon="code" href="/api-reference/product-collections/create-product-collection">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der Create Product Collection API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Retrieving a Product Collection">
    Erhalten Sie detaillierte Informationen über eine bestimmte Produktkollektion — einschließlich ihrer Gruppen und Produktelemente — indem Sie eine `GET`-Anfrage an den `/product-collections/{id}`-Endpunkt senden.

    <Card title="Get Product Collection API" icon="code" href="/api-reference/product-collections/get-product-collection">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der Get Product Collection API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Updating a Product Collection">
    Ändern Sie die Details einer Produktkollektion (Name, Beschreibung, Marke, etc.), indem Sie eine `PATCH`-Anfrage an den `/product-collections/{id}`-Endpunkt senden.

    <Card title="Update Product Collection API" icon="code" href="/api-reference/product-collections/update-product-collection">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der Update Product Collection API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Uploading Collection Images">
    Verknüpfen Sie ein Bild mit einer Kollektion, indem Sie es über eine vorab signierte URL hochladen. Fordern Sie eine Upload-URL vom `/product-collections/{id}/images`-Endpunkt an und senden Sie das Bild innerhalb von 60 Sekunden an die zurückgegebene URL.

    <Warning>
      Die vorab signierte URL läuft nach 60 Sekunden ab, daher muss das Bild innerhalb dieses Zeitrahmens hochgeladen werden.
    </Warning>

    <Card title="Update Collection Images API" icon="code" href="/api-reference/product-collections/update-product-collection-images">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der Update Collection Images API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Archiving a Product Collection">
    Archivieren Sie eine Kollektion, indem Sie eine `DELETE`-Anfrage an den `/product-collections/{id}`-Endpunkt senden. Dies verbirgt die Kollektion für neue Verwendungen, entfernt sie jedoch nicht dauerhaft.

    <Card title="Archive Product Collection API" icon="code" href="/api-reference/product-collections/archive-product-collection">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der Archive Product Collection API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Unarchiving a Product Collection">
    Stellen Sie eine archivierte Kollektion wieder her, indem Sie eine `POST`-Anfrage an den `/product-collections/{id}/unarchive`-Endpunkt senden.

    <Card title="Unarchive Product Collection API" icon="code" href="/api-reference/product-collections/unarchive-product-collection">
      Sehen Sie sich die detaillierte Anfragstruktur und Antwortstruktur in der Unarchive Product Collection API-Dokumentation an.
    </Card>
  </Accordion>

  <Accordion title="Managing Groups within a Collection">
    Gruppen ermöglichen es Ihnen, Produkte innerhalb einer Kollektion zu organisieren (z. B. "Monatspläne" vs. "Jahrespläne"). Verwenden Sie die Gruppenendpunkte, um Gruppen innerhalb einer Kollektion hinzuzufügen, zu aktualisieren oder zu entfernen.

    * **Eine Gruppe erstellen**: `POST /product-collections/{id}/groups`
    * **Eine Gruppe aktualisieren**: `PATCH /product-collections/{id}/groups/{group_id}`
    * **Eine Gruppe löschen**: `DELETE /product-collections/{id}/groups/{group_id}`

    <CardGroup cols={3}>
      <Card title="Create Group" icon="code" href="/api-reference/product-collections/create-group">
        Fügen Sie einer Produktkollektion eine neue Gruppe hinzu.
      </Card>

      <Card title="Update Group" icon="code" href="/api-reference/product-collections/update-group">
        Ändern Sie den Namen oder die Attribute einer Gruppe.
      </Card>

      <Card title="Delete Group" icon="code" href="/api-reference/product-collections/delete-group">
        Entfernen Sie eine Gruppe aus einer Kollektion.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Managing Products within a Group">
    Verwalten Sie die einzelnen Produktelemente innerhalb einer Gruppe — fügen Sie neue Produkte hinzu, aktualisieren Sie vorhandene Elemente (wie die Anzeigereihenfolge) oder entfernen Sie sie vollständig.

    * **Produkte zu einer Gruppe hinzufügen**: `POST /product-collections/{id}/groups/{group_id}/items`
    * **Ein Gruppenelement aktualisieren**: `PATCH /product-collections/{id}/groups/{group_id}/items/{item_id}`
    * **Ein Gruppenelement löschen**: `DELETE /product-collections/{id}/groups/{group_id}/items/{item_id}`

    <CardGroup cols={3}>
      <Card title="Add Products to Group" icon="code" href="/api-reference/product-collections/add-group-items">
        Fügen Sie einer Gruppe innerhalb einer Kollektion ein oder mehrere Produkte hinzu.
      </Card>

      <Card title="Update Group Item" icon="code" href="/api-reference/product-collections/update-group-item">
        Aktualisieren Sie ein Produkt innerhalb einer Gruppe.
      </Card>

      <Card title="Delete Group Item" icon="code" href="/api-reference/product-collections/delete-group-item">
        Entfernen Sie ein Produkt aus einer Gruppe.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Beste Praktiken

* **Logisch gruppieren**: Produkte nach Abrechnungsintervall (monatlich/jährlich) oder Funktionsstufe (Starter/Pro/Enterprise) organisieren
* **Strategisch anordnen**: Platzieren Sie Ihren beliebtesten oder empfohlenen Plan zuerst, da dieser im Checkout vorselektiert wird
* **Klare Benennung verwenden**: Produktnamen sollten die Unterschiede im Wert klar kommunizieren
* **Beide Richtungen ermöglichen**: Erlauben Sie sowohl Upgrades als auch Downgrades, um den Kunden Flexibilität zu geben
* **Proration berücksichtigen**: Wählen Sie einen Prorationsmodus, der zu Ihrem Geschäftsmodell passt
* **Gründlich testen**: Überprüfen Sie die Checkout- und Planänderungsflüsse im Testmodus, bevor Sie live gehen

<Check>
  Sie sind bereit, Produktkollektionen zu erstellen und Ihren Kunden ein einheitliches Plan-Auswahlerlebnis zu bieten.
</Check>

<CardGroup cols={2}>
  <Card title="Products" icon="box" href="/features/products">
    Erstellen Sie Einmal-, Abonnement- oder nutzungsbasierte Produkte, die Sie zu Kollektionen hinzufügen können.
  </Card>

  <Card title="Checkout" icon="cart-shopping" href="/features/checkout">
    Zeigen Sie Kollektionsprodukte in einem einheitlichen Checkouterlebnis an.
  </Card>

  <Card title="Customer Portal" icon="id-card" href="/features/customer-portal">
    Lassen Sie Kunden innerhalb derselben Kollektion upgraden oder downgraden.
  </Card>

  <Card title="Subscriptions" icon="repeat" href="/features/subscription">
    Verwalten Sie wiederkehrende Pläne mit Proration und Planänderungen.
  </Card>
</CardGroup>
