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

# v1.75.0 (23. Januar 2026)

> Produktkollektionen, RevolutPay- & Billie-Zahlungsmethoden für einmalige GBP-Zahlungen, Checkout-Session-Vorschau, Metadaten bei Änderungen von Plänen, invoice_url-Feld, Validierungsendpunkt für Rabatte und verbesserte Dashboard-Filterung

## Neue Funktionen

### 1. **Product Collections**

Gruppieren Sie verwandte Produkte für einheitliche Checkout-Erlebnisse, Plan-Auswahl und nahtlose Upgrade/Downgrade-Pfade innerhalb des Customer Portals.

<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="Seite zur Kasse für die Produktauswahl zeigt mehrere Planoptionen" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

**Wesentliche Vorteile**

* **Collection-basierter Checkout**: Zeigen Sie alle Produkte einer Collection in einer Checkout-Ansicht, damit Kund:innen Vergleiche anstellen und den bevorzugten Plan auswählen können
* **Organisiertes Produktmanagement**: Gruppieren Sie verwandte Produkte (z. B. Starter, Pro, Enterprise) unter einer einzigen Collection
* **Customer Portal-Integration**: Ermöglichen Sie Kund:innen, innerhalb derselben Collection zwischen Produkten up- oder downgraden
* **Händlersteuerung**: Aktivieren, deaktivieren und ordnen Sie Produkte innerhalb jeder Collection neu

**Funktionsweise**

Erstellen Sie eine Checkout-Session für eine 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;
```

<Check>
  Ergebnis: Ein einheitliches Checkout-Erlebnis, bei dem Kund:innen alle verfügbaren Produkte Ihrer Collection ansehen und auswählen können.
</Check>

<Info>
  Collection-Checkout eignet sich ideal für abonnementbasierte Unternehmen, bei denen Kund:innen Pläne nebeneinander vergleichen sollen, bevor sie kaufen.
</Info>

Erfahren Sie mehr: [Product Collections Guide](/features/product-collections)

### 2. **RevolutPay & Billie-Zahlungsmethoden für GBP-Währung**

Erweiterte Zahlungsmöglichkeiten: RevolutPay und Billie sind jetzt weltweit für einmalige GBP-Zahlungen verfügbar, sodass Ihre Kund:innen flexibler bezahlen können.

**Neue Zahlungsmethoden**

| Zahlungsmethode | Unterstützte Länder | Währung | Abo-Unterstützung   |
| --------------- | ------------------- | ------- | ------------------- |
| **RevolutPay**  | Global              | GBP     | Nein (nur einmalig) |
| **Billie**      | Global              | GBP     | Nein (nur einmalig) |

* **RevolutPay** – schnelle und nahtlose Zahlungen für Revolut-Nutzer:innen weltweit
* **Billie** – B2B Buy Now Pay Later-Lösung, damit Unternehmen ihren Kund:innen flexible Zahlungsbedingungen anbieten können

<Info>
  Diese Zahlungsmethoden stehen automatisch für GBP-Transaktionen zur Verfügung. Es sind keine zusätzlichen Konfigurationen erforderlich.
</Info>

Erfahren Sie mehr: [Payment Methods](/features/payment-methods)

### 3. **Checkout-Session-Vorschau**

Vorschau von Checkout-Sessions vor deren Erstellung, um genaue Preise, Steuern, Rabatte und Gesamtsummen zu berechnen. Zeigen Sie Ihren Kund:innen echte Preise, bevor sie zum Checkout weitergehen.

**Funktionsweise**

```typescript theme={null}
const preview = await client.checkoutSessions.preview({
  product_cart: [
    { product_id: 'prod_123', quantity: 1 }
  ],
  billing_address: {
    country: 'US',
    state: 'CA',
    zipcode: '94102'
  },
  discount_code: 'SAVE20'
});

console.log('Subtotal:', preview.subtotal);
console.log('Tax:', preview.tax);
console.log('Discount:', preview.discount);
console.log('Total:', preview.total);
```

**Anwendungsfälle**

* **Individuelle Preisangaben**: Zeigen Sie genaue Gesamtsummen inklusive Steuern vor dem Checkout
* **Rabattvalidierung**: Überprüfen Sie Rabattcodes und zeigen Sie Einsparungen an
* **Mehrwährungsunterstützung**: Vorschau von Preisen in verschiedenen Währungen
* **Warenkorbübersichten**: Erstellen Sie individuelle Warenkorb-Oberflächen mit Echtzeitpreisen

<Card title="Preview API Reference" icon="code" href="/api-reference/checkout-sessions/preview">
  Sehen Sie sich die vollständige Dokumentation zum Vorschau-Endpunkt an.
</Card>

### 4. **Metadaten-Unterstützung bei Planänderungsanfragen**

Übergeben Sie benutzerdefinierte Metadaten beim Wechsel von Abonnementplänen, um eine bessere Nachverfolgung und Integration in Ihre internen Systeme während Planübergängen zu ermöglichen.

```javascript theme={null}
// Adding metadata when changing a subscription plan
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_premium',
  proration_billing_mode: 'prorated_immediately',
  quantity: 1,
  metadata: {
    upgrade_reason: 'feature_request',
    previous_plan: 'basic',
    sales_rep: 'john@company.com'
  }
});
```

**Anwendungsfälle**

* **Upgrade-/Downgrade-Gründe verfolgen**: Speichern Sie, warum Kund:innen den Plan gewechselt haben
* **Verknüpfung zu CRM-Datensätzen**: Ordnen Sie Planänderungen Vertriebsaktivitäten zu
* **Interne Kategorisierung**: Kennzeichnen Sie Planänderungen für Reporting und Analysen
* **Audit-Trails**: Führen Sie Buch darüber, wer Planänderungen initiiert hat

<Info>
  Metadaten werden in Webhook-Ereignissen übermittelt, wodurch sich Planänderungen einfach mit Ihren eigenen Daten verarbeiten lassen.
</Info>

Erfahren Sie mehr: [Metadata Guide](/api-reference/metadata) | [Change Plan API](/api-reference/subscriptions/change-plan)

### 5. **`invoice_url`-Feld in Payment Response und Payment Link Response**

Die Payment Response und Payment Link Response enthalten nun ein `invoice_url`-Feld, das direkten Zugriff auf die mit jeder Zahlung verknüpfte Rechnung bietet.

```json theme={null}
{
  "payment_id": "pay_2IjeQm4hqU6RA4Z4kwDee",
  "status": "succeeded",
  "invoice_url": "https://dodopayments.com/invoices/inv_2IsUnWGtRKFLxk7xAQeyt",
  "amount": 9900,
  "currency": "USD",
  // ... other fields
}
```

**Anwendungsfälle**

* **Kundenkommunikation**: Senden Sie Rechnungslinks direkt an Kund:innen
* **Buchhaltungsintegration**: Verknüpfen Sie Zahlungen mit Rechnungen in Ihrer Buchhaltungssoftware
* **Self-Service-Portale**: Ermöglichen Sie Kund:innen einfachen Zugriff auf ihre Rechnungen
* **Dokumentation**: Bewahren Sie direkte Referenzen zu Rechnungsdokumenten auf

<Card title="Get Payment API" icon="code" href="/api-reference/payments/get-payments-1">
  Sehen Sie sich das Payment Response-Schema an.
</Card>

### 6. **Endpunkt zur Validierung von Rabatten nach Code-Name**

Neuer API-Endpunkt zum Validieren und Abrufen von Rabattcodes nach deren Code-Namen (z. B. "SAVE20") statt der internen Rabatt-ID. Überprüfen Sie die Berechtigung von Rabatten, bevor Sie sie im Checkout anwenden.

```javascript theme={null}
// Validate a discount code before checkout
const discount = await client.discounts.retrieveByCode('SAVE20');

console.log('Discount type:', discount.type);
console.log('Discount value:', discount.amount);
console.log('Valid until:', discount.expires_at);
```

**Vorteile**

* **Validierung vor dem Checkout**: Überprüfen Sie Rabattcodes, bevor Sie Checkout-Sessions erstellen
* **Echtzeit-Feedback**: Teilen Sie Kund:innen mit, ob ihr Code gültig ist
* **Fehlerbehandlung**: Erfassen Sie ungültige oder abgelaufene Codes frühzeitig
* **Individuelle Rabatt-UI**: Erstellen Sie Eingabefelder für Rabattcodes mit sofortiger Validierung

<Card title="Get Discount by Code API" icon="code" href="/api-reference/discounts/get-discount-by-code">
  Sehen Sie sich die vollständige Dokumentation des Endpunkts an.
</Card>

### 7. **Verbesserte Filtermöglichkeiten für Kunden, Rabatte und Lizenzschlüssel**

Neue API-Filter zum Auflisten von Kunden, Rabatten und Lizenzschlüsseln, damit Sie Ihre Daten programmgesteuert einfacher finden und verwalten können.

**Kunden-API-Filter**

| Filter           | Beschreibung                                                                  |
| ---------------- | ----------------------------------------------------------------------------- |
| `email`          | Filter nach Kunden-E-Mail                                                     |
| `name`           | Filter nach Kund:innennamen (Teilübereinstimmung, Groß-/Kleinschreibung egal) |
| `created_at_gte` | Filter nach Kund:innen, die am oder nach diesem Zeitstempel erstellt wurden   |
| `created_at_lte` | Filter nach Kund:innen, die am oder vor diesem Zeitstempel erstellt wurden    |

```javascript theme={null}
// Find customers by name created in the last 30 days
const customers = await client.customers.list({
  name: 'John',
  created_at_gte: '2026-01-01T00:00:00Z'
});
```

**Rabatt-API-Filter**

| Filter          | Beschreibung                                                                 |
| --------------- | ---------------------------------------------------------------------------- |
| `code`          | Filter nach Rabattcode (Teilübereinstimmung, Groß-/Kleinschreibung egal)     |
| `discount_type` | Filter nach Rabatttyp (Prozentsatz)                                          |
| `active`        | Filter nach aktivem Status (true = nicht abgelaufen, false = abgelaufen)     |
| `product_id`    | Filter nach Produktbeschränkung (nur Rabatte, die für dieses Produkt gelten) |

```javascript theme={null}
// Find active percentage discounts for a specific product
const discounts = await client.discounts.list({
  active: true,
  discount_type: 'percentage',
  product_id: 'prod_123'
});
```

**Lizenzschlüssel-API-Filter**

| Filter           | Beschreibung                                                                      |
| ---------------- | --------------------------------------------------------------------------------- |
| `customer_id`    | Filter nach Kunden-ID                                                             |
| `status`         | Filter nach Lizenzschlüsselstatus (`active`, `expired`, `disabled`)               |
| `product_id`     | Filter nach Produkt-ID                                                            |
| `created_at_gte` | Filter nach Lizenzschlüsseln, die am oder nach diesem Zeitstempel erstellt wurden |
| `created_at_lte` | Filter nach Lizenzschlüsseln, die am oder vor diesem Zeitstempel erstellt wurden  |

```javascript theme={null}
// Find active license keys for a specific product
const licenseKeys = await client.licenseKeys.list({
  status: 'active',
  product_id: 'prod_123'
});
```

<CardGroup cols={3}>
  <Card title="List Customers API" icon="users" href="/api-reference/customers/get-customers">
    Sehen Sie sich die vollständige Kunden-API-Dokumentation an.
  </Card>

  <Card title="List Discounts API" icon="percent" href="/api-reference/discounts/list-discounts">
    Sehen Sie sich die vollständige Rabatt-API-Dokumentation an.
  </Card>

  <Card title="List License Keys API" icon="key" href="/api-reference/licenses/list-license-keys">
    Sehen Sie sich die vollständige Lizenzschlüssel-API-Dokumentation an.
  </Card>
</CardGroup>

### 8. **UI/UX-Verbesserungen im Dashboard**

Dieses Release enthält zahlreiche UI/UX-Verbesserungen im gesamten Dashboard für ein intuitiveres und polierteres Erlebnis.

**Highlights**

* Verbesserte Navigation und konsistente Layouts
* Verbesserte Interaktionen mit Datentabellen
* Bessere Ladezustände und Rückmeldungen
* Verfeinerte visuelle Designelemente
* Verbesserte mobile Reaktionsfähigkeit
