> ## 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 janvier 2026)

> Collections de produits, méthodes de paiement RevolutPay & Billie pour les paiements uniques en GBP, aperçu de la session de paiement, métadonnées dans les demandes de changement de plan, champ invoice_url, point de validation des remises et filtres améliorés pour le tableau de bord

## Nouvelles Fonctionnalités

### 1. **Collections de Produits**

Regroupez des produits similaires pour des expériences de paiement unifiées, la sélection de plans et des voies d'upgrade/downgrade sans heurts au sein du Portail Client.

<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="Page de paiement de la collection de produits montrant plusieurs options de plan" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

**Avantages Clés**

* **Paiement basé sur la collection** : Affichez tous les produits d'une collection dans une vue de paiement, permettant aux clients de comparer et de choisir leur plan préféré
* **Gestion de produit organisée** : Regroupez des produits similaires (par exemple, Starter, Pro, Entreprise) sous une seule collection
* **Intégration du Portail Client** : Permettre aux clients de mettre à niveau ou de rétrograder entre les produits d'une même collection
* **Contrôle du commerçant** : Activer, désactiver et réorganiser les produits dans chaque collection

**Comment Ça Marche**

Créez une session de paiement pour une 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>
  Résultat : Une expérience de paiement unifiée où les clients peuvent voir et sélectionner tous les produits disponibles de votre collection.
</Check>

<Info>
  Le paiement par collection est idéal pour les entreprises d’abonnement qui souhaitent que les clients comparent les forfaits côte à côte avant d’acheter.
</Info>

En savoir plus : [Guide des Collections de Produits](/features/product-collections)

### 2. **Méthodes de Paiement RevolutPay & Billie pour la Monnaie GBP**

Options de paiement élargies avec RevolutPay et Billie désormais disponibles dans le monde entier pour les transactions de paiement uniques en GBP, offrant à vos clients plus de flexibilité dans leurs paiements.

**Nouvelles Méthodes de Paiement**

| Méthode de Paiement | Pays Pris en Charge | Monnaie | Support d'Abonnement         |
| ------------------- | ------------------- | ------- | ---------------------------- |
| **RevolutPay**      | Global              | GBP     | Non (uniquement en une fois) |
| **Billie**          | Global              | GBP     | Non (uniquement en une fois) |

* **RevolutPay** – Paiements rapides et transparents pour les utilisateurs de Revolut dans le monde entier
* **Billie** – Solution B2B Acheter Maintenant Payer Plus Tard permettant aux entreprises d'offrir des modalités de paiement flexibles à leurs clients

<Info>
  Ces méthodes de paiement sont automatiquement disponibles pour les transactions en GBP. Aucune configuration supplémentaire n’est requise.
</Info>

En savoir plus : [Méthodes de Paiement](/features/payment-methods)

### 3. **Aperçu de la Session de Paiement**

Prévisualisez les sessions de paiement avant de les créer pour calculer avec précision les prix, taxes, remises et totaux. Affichez les vrais prix aux clients avant qu'ils ne passent à la caisse.

**Comment Ça Marche**

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

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

**Cas d'Utilisation**

* **Affichages de prix personnalisés** : Montrez des totaux précis incluant la taxe avant la finalisation de l'achat
* **Validation des remises** : Vérifiez les codes de remise et montrez les économies aux clients
* **Support multi-monnaie** : Prévisualisez les prix dans différentes monnaies
* **Sommaires de panier** : Créez des UI de panier personnalisées avec des prix en temps réel

<Card title="Preview API Reference" icon="code" href="/api-reference/checkout-sessions/preview">
  Consultez la documentation complète de l’endpoint de prévisualisation.
</Card>

### 4. **Support des Métadonnées dans les Requêtes de Changement de Plan**

Passez des métadonnées personnalisées lors du changement de plans d'abonnement, permettant un meilleur suivi et une intégration avec vos systèmes internes pendant les transitions de plan.

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

**Cas d'Utilisation**

* **Suivre les raisons d'upgrade/downgrade** : Stockez pourquoi les clients ont changé de plan
* **Lier aux enregistrements CRM** : Associez les changements de plan aux activités de vente
* **Catégorisation interne** : Taguer les changements de plan pour les rapports et l'analyse
* **Pistes d'audit** : Maintenir des enregistrements de qui a initié les changements de plan

<Info>
  Les métadonnées sont incluses dans les événements webhook, ce qui facilite le traitement des modifications de plans avec vos données personnalisées.
</Info>

En savoir plus : [Guide des Métadonnées](/api-reference/metadata) | [API de Changement de Plan](/api-reference/subscriptions/change-plan)

### 5. **`invoice_url` Field in Payment Response and Payment Link Response**

La réponse de paiement et la réponse du lien de paiement incluent désormais un champ `invoice_url`, offrant un accès direct à la facture associée à chaque paiement.

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

**Cas d'Utilisation**

* **Communication avec le client** : Envoyez des liens de factures directement aux clients
* **Intégration comptable** : Liez les paiements aux factures dans votre logiciel de comptabilité
* **Portails en libre-service** : Permettez aux clients d'accéder facilement à leurs factures
* **Conservation des enregistrements** : Maintenez des références directes aux documents de facturation

<Card title="Get Payment API" icon="code" href="/api-reference/payments/get-payments-1">
  Consultez le schéma de la réponse de paiement.
</Card>

### 6. **Point de Validation des Remises par Nom de Code**

Nouveau point d'API pour valider et récupérer les codes de remise par leur nom de code (par exemple, "SAVE20") au lieu d'utiliser l'ID de remise interne. Vérifiez l'éligibilité des remises avant de les appliquer lors du paiement.

```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);
```

**Avantages**

* **Validation pré-paiement** : Vérifiez les codes de remise avant de créer des sessions de paiement
* **Retour d'information en temps réel** : Montrez aux clients si leur code est valide
* **Gestion des erreurs** : Détectez les codes invalides ou expirés tôt
* **UI de remise personnalisées** : Créez des champs d'entrée de code de remise avec validation instantanée

<Card title="Get Discount by Code API" icon="code" href="/api-reference/discounts/get-discount-by-code">
  Consultez la documentation complète de l’endpoint.
</Card>

### 7. **Capacités de Filtrage Améliorées pour les Clients, Remises et Clés de Licence**

Nouveaux filtres API pour lister les Clients, Remises et Clés de Licence, facilitant la recherche et la gestion de vos données par programmation.

**Filtres API Clients**

| Filtre           | Description                                                                 |
| ---------------- | --------------------------------------------------------------------------- |
| `email`          | Filtrer par e-mail client                                                   |
| `name`           | Filtrer par nom du client (correspondance partielle, insensible à la casse) |
| `created_at_gte` | Filtrer les clients créés à partir de cette date ou après                   |
| `created_at_lte` | Filtrer les clients créés à partir de cette date ou avant                   |

```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'
});
```

**Filtres API Remises**

| Filtre          | Description                                                                              |
| --------------- | ---------------------------------------------------------------------------------------- |
| `code`          | Filtrer par code de réduction (correspondance partielle, insensible à la casse)          |
| `discount_type` | Filtrer par type de réduction (pourcentage)                                              |
| `active`        | Filtrer par statut actif (true = non expiré, false = expiré)                             |
| `product_id`    | Filtrer par restriction de produit (seules les réductions qui s’appliquent à ce produit) |

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

**Filtres API Clés de Licence**

| Filtre           | Description                                                            |
| ---------------- | ---------------------------------------------------------------------- |
| `customer_id`    | Filtrer par identifiant client                                         |
| `status`         | Filtrer par statut de clé de licence (`active`, `expired`, `disabled`) |
| `product_id`     | Filtrer par identifiant de produit                                     |
| `created_at_gte` | Filtrer les clés de licence créées à partir de cette date ou après     |
| `created_at_lte` | Filtrer les clés de licence créées à partir de cette date ou avant     |

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

<CardGroup cols={3}>
  <Card title="List Customers API" icon="users" href="/api-reference/customers/get-customers">
    Consultez la documentation complète de l’API Clients.
  </Card>

  <Card title="List Discounts API" icon="percent" href="/api-reference/discounts/list-discounts">
    Consultez la documentation complète de l’API Réductions.
  </Card>

  <Card title="List License Keys API" icon="key" href="/api-reference/licenses/list-license-keys">
    Consultez la documentation complète de l’API Clés de licence.
  </Card>
</CardGroup>

### 8. **Améliorations UI/UX dans le Tableau de Bord**

Cette version comprend de nombreuses améliorations UI/UX dans tout le tableau de bord pour une expérience plus intuitive et raffinée.

**Points Forts**

* Navigation améliorée et cohérence de la mise en page
* Interactions avec les tableaux de données améliorées
* Meilleurs états de chargement et retours d'information
* Éléments de design visuel affinés
* Meilleure réactivité mobile
