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

# Provisionner un contrat client

Définissez un contrat dans Metronome qui encode les produits auxquels les clients peuvent accéder, les tarifs de chaque produit et la durée d’accès. Tout comme les grilles tarifaires sont construites sur des produits, les contrats sont construits sur des grilles tarifaires. Un contrat référence une grille tarifaire spécifique et la combine à d’autres modèles Metronome comme les [engagements,](/fr/guides/pricing-packaging/apply-credits-and-commits/create-a-pre-paid-commit) remises, produits fixes qui ne figurent pas sur la grille tarifaire, et plus encore.

Créez des contrats avec l’application Metronome ou avec le point de terminaison [/contracts/create](/fr/api-reference/contracts/create-a-contract).

## Prérequis

Avant de provisionner un contrat, vous devez disposer :

* de vos [événements d’usage](/fr/guides/events/design-usage-events) connectés à Metronome
* d’une [métrique facturable](/fr/guides/implement-metronome/core-concepts/create-billable-metrics/)
* d’un [produit](/fr/guides/implement-metronome/core-concepts/create-products-contracts)
* d’une [grille tarifaire](/fr/guides/implement-metronome/core-concepts/create-manage-rate-cards)
* d’un [client](/fr/guides/implement-metronome/core-concepts/provision-customer)
* d’une [`customer_billing_provider_configuration`](/fr/guides/implement-metronome/core-concepts/provision-customer)

### Créer un contrat

Considérez un exemple où votre client, WidgetsExpress, a acheté un engagement prépayé de 10 000 $qui s’applique à vos produits cloud via AWS Marketplace. Cet engagement dure un an. Dans le cadre du contrat, ils paient également des frais de plateforme de 1 000$ chaque trimestre pour utiliser votre service. Ils paient l’engagement prépayé une fois au début et l’usage sur une base mensuelle.

Pour provisionner ce contrat avec l’[application Metronome](https://app.metronome.com/) :

1. Accédez à *Customers* et sélectionnez votre client nouvellement créé.
2. Dans l’onglet *Overview*, cliquez sur le bouton **+ Add** sur le côté droit du volet *Contracts*.
3. Remplissez les *Basic info* du contrat comme le nom du contrat, la date de début et la grille tarifaire à utiliser. Assurez-vous de définir le fournisseur de facturation sur AWS.
4. Sous *Terms*, cliquez sur **Add - > Commit** et remplissez les détails de l’engagement prépayé.
5. Sous *Terms*, cliquez sur **Add - > Scheduled charges** et ajoutez les frais de plateforme en tant que charge planifiée.

Le contrat final ressemble à ceci :

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/docs/get-started/core-concepts/provision-contract/provision-contract-fe412f3eebd53427e5c051a091504620.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=e1cb4fad3f87c0ae87d99bc5d241d0b9" alt="Contrat final" width="2178" height="1220" data-path="images/docs/get-started/core-concepts/provision-contract/provision-contract-fe412f3eebd53427e5c051a091504620.png" />
</Frame>

Pour créer l’exemple de contrat avec l’API `/contracts/create`, exécutez cet appel :

```bash theme={null}
curl https://api.metronome.com/v1/contracts/create \  
  -H "Authorization: Bearer <TOKEN>" \  
  -H "Content-Type: application/json" \  
  -d '{  
    "customer_id": "aa58107d-162f-407e-9f09-940f16adbb1c",  
    "rate_card_alias": "base_usage_products",  
    "starting_at": "2024-11-01T00:00:00.000Z",
    "billing_provider_configuration": {
      "billing_provider": "aws_marketplace",
      "delivery_method": "direct_to_billing_provider"
      },
    "commits": [  
      {  
        "type": "prepaid",  
        "name": "Contract Prepaid Commit",  
        "product_id": "a1f4e40b-f8c4-496b-b687-0a103396b479",  
        "access_schedule": {  
          "schedule_items": [  
            {  
              "amount": 1000000,  
              "starting_at": "2024-11-01T00:00:00.000Z",  
              "ending_before": "2025-11-01T00:00:00.000Z"  
            }  
          ]  
        },  
        "invoice_schedule": {  
          "schedule_items": [  
            {  
              "unit_price": 1000000,  
              "quantity": 1,  
              "timestamp": "2024-11-01T00:00:00.000Z"  
            }  
          ]  
        },  
        "applicable_product_tags": ["cloud"],  
        "description": "Usage Commit"  
      }  
    ],  
    "scheduled_charges": [  
      {  
        "product_id": "06cf3703-3f5e-467c-8ba1-0ee934c740b9",  
        "name": "Platform Charge",  
        "schedule": {  
          "recurring_schedule": {  
            "starting_at": "2024-11-01T00:00:00.000Z",  
            "ending_before": "2025-11-01T00:00:00.000Z",  
            "frequency": "quarterly",  
            "unit_price": 100000,  
            "quantity": 1,  
            "amount_distribution": "each"  
          }  
        }  
      }  
    ],  
    "usage_statement_schedule": {  
      "frequency": "monthly",  
      "day": "contract_start"  
    }  
  }'
```

<Note>
  **BÊTA**

  Vous pouvez ajouter une `billing_provider_configuration` à un contrat qui a été créé sans — potentiellement dans le cadre d’une conversion d’essai gratuit — via l’édition de contrat. La configuration de facturation prendra effet au début de la période de facturation en cours. Pour Stripe, cela signifie que la facture actuelle sera envoyée à Stripe à la fin du mois. Pour les marketplaces, cela signifie que toute la période de facturation sera comptabilisée auprès du marketplace. Pour les cas d’usage d’essai gratuit, assurez-vous que le client est crédité de l’essai gratuit afin que l’usage gratuit ne soit pas facturé.
</Note>

## Consolider les factures d’usage et planifiées

Vous avez la possibilité de spécifier si les factures planifiées doivent être consolidées sur les factures d’usage d’un client.

Ce paramètre s’applique à toutes les charges (y compris les engagements) du contrat. Il suit cette logique pour déterminer s’il faut consolider les factures :

* Le dernier jour de la période de service d’usage (exclusif) tombe le même jour que la date prévue pour la facture planifiée.
* La facture d’usage correspondante n’a pas été finalisée.

La consolidation se produit au moment de la création du contrat et lors de toute modification ultérieure du contrat.

Considérez un exemple où un nouveau client achète le package Best sur votre site web, qui coûte 75 $par mois. Dans le cadre de ce package, ils reçoivent un engagement mensuel de 100$. Le contrat et l’engagement récurrent commencent le 1er janvier sans date de fin. Si `scheduled_charges_on_usage_invoices` est défini sur `ALL`, le contrat crée ces factures :

* **Facture 1 :** émise et finalisée le 1er janvier avec un poste pour les frais mensuels de 75 \$.
* **Facture 2 :** créée en brouillon avec un poste pour les frais mensuels de 75 \$ en février en plus de toutes les charges d’usage de janvier.
* **Facture X :** en supposant qu’aucune modification ne soit apportée au contrat, toutes les factures futures suivront le modèle de la facture 2.

## Ajouter des remises et remplacements de contrat

Fournissez des remises lors de la création du contrat ou en modifiant un contrat existant.

Appliquez des remises avec des crédits, des [remplacements pour les tarifs des produits](/fr/guides/pricing-packaging/make-pricing-changes/edit-or-override-a-contract), des paliers de prix et plus encore. Si vous utilisez la tarification dimensionnelle, définissez des remplacements de prix pour chaque combinaison de clé de groupe et de produit. Pour ajouter des conditions supplémentaires comme des crédits, engagements, remplacements pour les tarifs des produits, etc., modifiez le contrat.

Considérez l’exemple avec votre client fictif WidgetsExpress pour voir cela en pratique. Le client a négocié une remise sur les produits cloud. Pour ce faire, modifiez le contrat en remplaçant les produits avec l’étiquette `cloud` pour qu’ils bénéficient d’une remise de 5 % par rapport à la grille tarifaire de base.

Pour modifier un contrat avec l’application Metronome, allez au client WidgetsExpress → Contracts → et sélectionnez le contrat que vous souhaitez modifier.

Pour modifier un contrat via l’API, exécutez cet appel :

```bash theme={null}
curl https://api.metronome.com/v2/contracts/edit \  
  -H "Authorization: Bearer <TOKEN>" \  
  -H "Content-Type: application/json" \  
  -d '{  
    "customer_id": "aa58107d-162f-407e-9f09-940f16adbb1c",  
    "contract_id": "0a6180da-336a-40e6-98f4-20b6be08211d",  
    "add_overrides": [  
      {  
        "starting_at": "2024-11-01T00:00:00.000Z",  
        "entitled": true,  
        "type": "multiplier",  
        "multiplier": 0.95,  
        "applicable_product_tags": ["cloud"]  
      }  
    ]  
  }'
```

## Créer un filtre d’usage

Vous pouvez provisionner un client avec plusieurs contrats simultanément. Ces contrats peuvent utiliser des grilles tarifaires distinctes, avoir des dates de début et de fin différentes, des remises, et plus encore. Ils peuvent tous puiser dans des engagements et crédits partagés au niveau du client. Pour spécifier que l’usage doit être comptabilisé sur un contrat plutôt qu’un autre, créez un filtre d’usage pour ce contrat.

Par exemple, votre client fictif WidgetsExpress a trois sous-divisions : US, EU et APAC. Chaque division a négocié des remises différentes. Pour modéliser cela dans Metronome, créez un contrat pour chaque sous-division et utilisez des filtres d’usage pour vous assurer que seul l’usage approprié est routé vers chaque contrat.

Lors de la création du contrat US, assurez-vous que seuls les événements avec la propriété `region` et la valeur `US` sont inclus dans ce contrat à l’aide de cet appel API :

```bash theme={null}
curl https://api.metronome.com/v1/contracts/create \  
  -H "Authorization: Bearer <TOKEN>" \  
  -H "Content-Type: application/json" \  
  -d '{  
    "customer_id": "13117714-3f05-48e5-a6e9-a66093f13b4d",  
    "rate_card_id": "d7abd0cd-4ae9-4db7-8676-e986a4ebd8dc",  
    "starting_at": "2024-10-01T00:00:00.000Z",  
    "usage_filter": {  
      "group_key": "region",  
      "group_values": [  
        "US"  
      ]  
    }  
  }'
```

Vous pouvez mettre à jour le filtre d’usage sur un contrat à tout moment, selon un calendrier. Par exemple, imaginez qu’à partir de 2025, WidgetsExpress ne souhaite plus que l’usage de sa division EU soit facturé séparément. Au lieu de cela, il devrait être facturé via le contrat US, en utilisant les prix US.

Cet appel API montre comment mettre à jour le filtre d’usage, la modification prenant effet le 1er janvier 2025 :

```bash theme={null}
curl https://api.metronome.com/v1/contracts/setUsageFilter \  
  -H "Authorization: Bearer <TOKEN>" \  
  -H "Content-Type: application/json" \  
  -d '{  
    "customer_id": "13117714-3f05-48e5-a6e9-a66093f13b4d",  
    "contract_id": "d7abd0cd-4ae9-4db7-8676-e986a4ebd8dc",  
    "group_key": "region",  
    "group_values": ["US", "EU"],  
    "starting_at": "2025-01-01T00:00:00.000Z"  
  }'
```

Les filtres d’usage ont ces limitations :

* Pour les [métriques facturables en streaming](/fr/guides/implement-metronome/core-concepts/billable-metrics-basic-filters/), vous devez définir le filtre d’usage en tant que clé de groupe sur la métrique facturable sous-jacente. Si vous utilisez également la tarification dimensionnelle et les clés de groupe de présentation, la clé de groupe du filtre d’usage doit être définie dans une clé de groupe composée sur la métrique facturable sous-jacente avec les clés de tarification dimensionnelle et de présentation.
* Pour les [métriques facturables SQL](/fr/guides/implement-metronome/core-concepts/billable-metrics-sql-editor/), la clé de groupe du filtre d’usage doit être présente comme valeur de propriété dans les événements sous-jacents (par exemple, `properties.region`).

## Ajouter des champs personnalisés

Utilisez les [champs personnalisés](/fr/api-reference/custom-fields) pour ajouter des métadonnées supplémentaires au contrat ou à l’engagement. Ces métadonnées peuvent alimenter des processus en aval comme les flux de reconnaissance de revenus.

Par exemple, si vous vous intégrez à SFDC, vous pouvez créer un champ personnalisé pour `salesforce_opportunity_id` pour mapper les contrats Metronome, et les revenus qui en découlent, à l’opportunité SFDC associée.
