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

# Facturer avec AWS

export const List = ({marker, children}) => {
  return <>
            <style>
                {`
          .custom-list-from-snippet li {
            list-style-type: var(--marker-style);
            
            padding-left: 0 !important;

          }
          .custom-list-from-snippet li::marker {
            color: rgb(var(--gray-600));

          }
          .custom-list-from-snippet li::before {
            display: none;
          }
        `}
            </style>

            <ul className="custom-list-from-snippet" style={{
    '--marker-style': marker,
    'padding-inline-start': '1.5rem'
  }}>
                {children}
            </ul>
        </>;
};

Ce guide décrit comment permettre à Metronome de facturer en votre nom via AWS Marketplace.

## Créer une listing AWS Marketplace

1. Pour accéder au [portail de gestion AWS Marketplace](https://aws.amazon.com/marketplace/management/products/saas), vous devez être [un vendeur approuvé par AWS](https://aws.amazon.com/blogs/awsmarketplace/checklist-successfully-registering-seller-aws-marketplace/).

2. Complétez l'**Étape 1 : Provide product information** et l'**Étape 2 : Configure fulfillment options** dans l'assistant de création de produit. Metronome n'exige pas d'entrées spécifiques pour ces étapes, mais vous devez être au courant des exigences du marketplace pour publier et livrer votre offre.

3. Choisissez le **Pricing model** pour votre offre et sélectionnez **Units** comme **Dimension unit type**. Metronome prend en charge les options **Contract with Consumption** ou **Usage-based pricing**. Ce choix sera lié à la motion commerciale de votre produit : **Contract with Consumption** aura des durées fixes tandis que les produits **Usage-based pricing** peuvent être démarrés ou arrêtés à tout moment par votre client. Vous devrez connaître le type de produit lors de la configuration du client dans Metronome.

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-product-pricing-options-800cc2b7159425ba9757416020e31e6c.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=c05e6087256662764fda91e9b32efc3e" alt="AWS product pricing options" width="907" height="453" data-path="images/Integrations/aws/aws-product-pricing-options-800cc2b7159425ba9757416020e31e6c.png" />
</Frame>

4. Pour les produits qui utilisent le modèle **Contract with Consumption**, créez une ou plusieurs **Contract dimensions** liées aux motions commerciales de votre produit. Ces dimensions doivent correspondre aux différents modèles tarifaires que vous avez configurés dans Metronome. Elles seront également utilisées pour gérer les événements du cycle de vie client comme la fin et le renouvellement de l'abonnement. Cette étape n'est pas requise pour les produits **Usage-based pricing**.

   * **Activate pay-as-you-go pricing for additional usage** doit être décoché pour toutes les dimensions.
   * Vous pouvez sélectionner les valeurs que vous préférez pour **API identifier** et **Display name**.

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-contract-dimensions-f692b9c2f799e8ab42b1f4fb071a2642.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=531b73a614211a64a9ccc10f2d4821db" alt="AWS contract dimensions" width="888" height="1182" data-path="images/Integrations/aws/aws-contract-dimensions-f692b9c2f799e8ab42b1f4fb071a2642.png" />
</Frame>

5. Créez une seule **Usage dimension**.

<Warning>
  **ATTENTION**

  L'API identifier doit s'appeler `usage_fee` pour que l'intégration fonctionne correctement.
</Warning>

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-usage-dimensions-8b98dbe02a3baced0080222245f6201f.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=059515412340be3fad194c6630cd0c1e" alt="AWS usage dimension" width="904" height="572" data-path="images/Integrations/aws/aws-usage-dimensions-8b98dbe02a3baced0080222245f6201f.png" />
</Frame>

6. Pour les produits qui utilisent le modèle **Contract with Consumption**, sélectionnez **Single dimension per contract**. Cette étape n'est pas requise pour les produits **Usage-based pricing**.

   * Pour **Contract duration options**, sélectionnez la durée qui correspond le mieux à votre produit.

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-purchasing-options-5d582790c573b9b9474c46abd52335bc.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=5cb72111a0dec5c3dce4afd06f6664d0" alt="AWS purchasing options" width="915" height="599" data-path="images/Integrations/aws/aws-purchasing-options-5d582790c573b9b9474c46abd52335bc.png" />
</Frame>

7. Lors de la configuration de la tarification pour votre listing, définissez le prix pour **toutes les contract dimensions** à \$0.

   * Pour la seule dimension `usage_fee`, définissez le prix à \$0,01 par unité.

<Warning>
  **ATTENTION**

  S'écarter de ces valeurs entraînera l'échec de l'intégration.
</Warning>

## Configurer des identifiants IAM pour que Metronome déclare en votre nom

Pour passer des appels d'API vers AWS en votre nom, Metronome a besoin d'un rôle avec les bonnes permissions. Pour configurer les identifiants IAM pour Metronome :

1. Dans AWS, allez sur le [créateur de policy](https://console.aws.amazon.com/iam/home?#/policies\$new?step=edit).

2. Créez une policy et donnez-lui un nom explicite, comme `MetronomeMarketplacePermissions`.

3. Spécifiez ces permissions :

```json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "aws-marketplace:BatchMeterUsage",
        "aws-marketplace:GetEntitlements",
        "aws-marketplace:ListEntities",
        "aws-marketplace:DescribeEntity"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-create-policy-8ed3b3fd1694aba513fb90ab1cecf8fc.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=c54e92adc76d9183d97254353e1b9217" alt="AWS policy" width="1332" height="713" data-path="images/Integrations/aws/aws-create-policy-8ed3b3fd1694aba513fb90ab1cecf8fc.png" />
</Frame>

4. Dans Metronome, allez dans **Connections** > **Integrations** > **Available Integrations** > **AWS Marketplace** > cliquez sur **Get started.**

5. Copiez l'AWS account ID de Metronome et l'external ID unique généré à l'étape 1 du menu.

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-external-id-bd81e1d60276843a029a395e1a046fd8.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=11258aa19906b9d9435eca8bec4afbd2" alt="AWS external ID" width="1080" height="1133" data-path="images/Integrations/aws/aws-external-id-bd81e1d60276843a029a395e1a046fd8.png" />
</Frame>

6. De retour dans AWS, configurez le nouveau rôle AWS.
   <List marker="lower-roman">
     * Allez sur le [créateur de rôle](https://console.aws.amazon.com/iam/home?#/roles\$new?step=type\&roleType=crossAccount) > **Another AWS account**.
     * Entrez l'AWS account ID de Metronome et l'external ID unique copié à l'étape précédente dans le champ `External ID`.
     * Laissez **Require MFA** décoché.
   </List>

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-create-role-67016e481011737dea91c599faf1aaee.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=f83da4be7c9a6ff0369252a363da3f20" alt="AWS role" width="1060" height="790" data-path="images/Integrations/aws/aws-create-role-67016e481011737dea91c599faf1aaee.png" />
</Frame>

7. Cliquez sur **Next: Permissions** et, sous **Attach permissions policies**, attachez la policy que vous avez créée à l'étape 2.

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-create-permissions-9dbc7c3e9f3d3bf38907454363eecbdf.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=42316a328b827d148f7b49ccb45a3fbc" alt="AWS permissions" width="1005" height="716" data-path="images/Integrations/aws/aws-create-permissions-9dbc7c3e9f3d3bf38907454363eecbdf.png" />
</Frame>

8. Cliquez sur **Next: Tags** et ajoutez les tags souhaités. Les tags sont optionnels ; votre intégration AWS Marketplace avec Metronome fonctionne sans eux.

9. Cliquez sur **Next: Review** et nommez le rôle `metronome-marketplace`.

<Warning>
  **ATTENTION**

  Le nom du rôle **doit** commencer par `metronome-marketplace`. Pour attribuer différents rôles à différents environnements, envisagez de les nommer par exemple `metronome-marketplace-production`, `metronome-marketplace-staging`.
</Warning>

<Frame>
  <img src="https://mintcdn.com/metronome-b35a6a36/TrrblT2KR7zYyGbN/images/Integrations/aws/aws-review-995fe39a230a67eaf3b26ebb3f7a823b.png?fit=max&auto=format&n=TrrblT2KR7zYyGbN&q=85&s=bfdaa137bd82c72d769b9f9efa022156" alt="AWS review" width="1022" height="654" data-path="images/Integrations/aws/aws-review-995fe39a230a67eaf3b26ebb3f7a823b.png" />
</Frame>

10. Ajoutez la valeur ARN du rôle dans Metronome.
    <List marker="lower-roman">
      * Trouvez la valeur ARN du rôle dans AWS depuis le rôle nouvellement créé sur [la page des rôles](https://console.aws.amazon.com/iam/home?#/roles/). L'ARN utilise le format `arn:aws:iam::<AWS_ACCOUNT_ID>:role/metronome-marketplace`.
      * De retour dans Metronome, entrez la valeur ARN du rôle dans le champ `AWS ARN` à l'étape 2 du menu.
    </List>

11. Cliquez sur **Save.**

## Provisionner les clients AWS Marketplace dans Metronome

Lorsqu'un client accepte votre listing Marketplace, vous devrez provisionner son compte dans Metronome avec un contrat Metronome qui reflète tous les détails du contrat/abonnement qu'il a signé avec vous dans le Marketplace, et avec AWS identifié comme fournisseur de facturation sur ce contrat.

Pour connecter un client à AWS et faire en sorte que Metronome commence à déclarer ses factures à AWS en votre nom :

1. Allez sur la page de détail d'un client existant dans Metronome ou créez un nouveau client à **Customers** > **Add New Customer**.

2. Allez dans **Settings** > **Available Integrations** > **AWS** > **Get Started.**

3. Entrez l'**AWS customer ID**, le **product code** et la **region**.

   * Sauf si vous avez spécifiquement choisi une autre région AWS, utilisez `us-east-1`. Si vous spécifiez la mauvaise région, vous recevrez une erreur indiquant que le client AWS est introuvable.
   * Vous pouvez trouver le **product code** dans le [portail AWS Marketplace](https://aws.amazon.com/marketplace/management/products/saas) pour le produit que vous avez configuré.
   * L'**AWS customer ID** est inclus dans le token passé à l'URL de fulfillment associée à votre produit Marketplace. Pour plus de détails sur le décodage du token, reportez-vous à la [documentation AWS](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-code-examples.html) et à la section sur le [customer setup](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-product-customer-setup.html).
   * La case **Hourly usage-based pricing (per-unit)** doit être sélectionnée si le produit est configuré comme un produit « **Usage-based pricing** » dans le Marketplace. S'il s'agit d'un produit **contract with consumption**, laissez cette case décochée.

4. Créez un nouveau contrat pour le client qui correspond aux détails du contrat qu'il a signé avec vous dans AWS Marketplace. Incluez tous les crédits et engagements dont le client dispose dans le cadre du contrat. Apprenez à [provisionner des contrats](/fr/guides/customers-billing/manage-customers/provision-a-customer) dans Metronome.

5. Sous la section **Billing Configuration** du flow de configuration du contrat, sélectionnez AWS comme fournisseur de facturation.

<Warning>
  **ATTENTION**

  Vous ne pouvez pas ajouter ou changer le fournisseur de facturation après la création du contrat.
</Warning>

6. Vous pouvez également utiliser les endpoints suivants pour configurer AWS comme fournisseur de facturation d'un client et l'attribuer à un contrat :

   * Pour configurer un nouveau client avec AWS Marketplace :

     * Appelez l'endpoint [create customer](/fr/api-reference/customers/create-a-customer)
     * Dans le payload de la requête, incluez `customer_billing_provider_configurations` :
       * Dans la propriété `configuration`, spécifiez `aws_product_code`, `aws_customer_id` et `aws_region`. Si le produit est configuré comme un produit « **Usage-based pricing** » dans le Marketplace, spécifiez également `aws_is_subscription_product`

     ```json theme={null}
     {
       // ...
       "customer_billing_provider_configurations": [
         {
           "billing_provider": "aws_marketplace",
           "configuration": {
             "aws_customer_id": "<your AWS customer ID>",
             "aws_product_code": "<your AWS product code>",
             "aws_region": "<your AWS region>",
             "aws_is_subscription_product": true // only if the product is configured as a usage-based pricing product
           },
           "delivery_method": "direct_to_billing_provider"
         }
       ]
     }
     ```

   * Pour configurer un client existant avec AWS Marketplace :

     * Appelez l'endpoint [set customer billing provider configurations](/fr/api-reference/customers/set-billing-provider-configurations-for-a-customer)
     * Dans le payload de la requête, incluez votre configuration
       * Dans la propriété `configuration`, spécifiez `aws_product_code`, `aws_customer_id` et `aws_region`. Si le produit est configuré comme un produit « **Usage-based pricing** » dans le Marketplace, spécifiez également `aws_is_subscription_product`

     ```json theme={null}
     {
       // ...
       {
         "billing_provider": "aws_marketplace",
         "customer_id": "<your customer id>",
         "configuration": {
           "aws_customer_id": "<your AWS customer ID>",
           "aws_product_code": "<your AWS product code>",
           "aws_region": "<your AWS region>",
           "aws_is_subscription_product": true // only if the product is configured as a usage-based pricing product
         },
         "delivery_method": "direct_to_billing_provider"
       }
     }
     ```

   * Pour configurer un nouveau contrat avec des factures déclarées à AWS Marketplace :

     * Appelez l'endpoint [create contract](/fr/api-reference/contracts/create-a-contract)
     * Dans le payload de la requête, incluez `billing_provider_configuration` :

     ```json theme={null}
     {
       // ...
       "billing_provider_configuration": {
         "billing_provider": "aws_marketplace",
         "delivery_method": "direct_to_billing_provider"
       }
     }
     ```

Après avoir défini AWS comme fournisseur de facturation de ce client et commencé à envoyer des événements d'usage, Metronome commence à déclarer les totaux de facture calculés de ce client à AWS en votre nom.

## Ce que Metronome déclare à AWS

Lors de la déclaration à AWS, Metronome additionne le montant total accumulé d'un client à travers toutes les factures de contrat ayant AWS défini comme fournisseur de facturation depuis la dernière requête de déclaration. Metronome définit la quantité de chaque enregistrement de déclaration comme le montant total en dollars exprimé en centimes USD.

Si un client a acheté un engagement ou s'est vu offrir un crédit dans le cadre de son contrat, Metronome déclare comme suit :

* **Engagements prépayés** Un contrat dans Metronome spécifie une planification selon laquelle le client paie son engagement prépayé. Ces entrées créent une ou plusieurs factures planifiées. Metronome déclare le montant que le client doit sur l'engagement prépayé à la date associée à la période de service de la facture planifiée, et non à la date de création.
* **Crédits** Comme les crédits sur un contrat Metronome ne sont pas payés, Metronome ne déclare que les dépassements reflétés sur les totaux de facture après que le crédit a été entièrement consommé.
* **Engagements postpayés** Metronome déclare l'usage reflété sur les totaux de facture tout au long de la durée du contrat. Cependant, si l'intégralité de l'engagement postpayé n'est pas consommée à la fin du contrat, Metronome ignore la facture de régularisation et ne l'envoie pas au marketplace. C'est parce que la facture de régularisation n'est pas finalisée tant que la période de grâce Metronome n'est pas terminée, moment auquel l'endpoint de déclaration du marketplace est fermé. Cela signifie que vous devez gérer la régularisation directement dans le marketplace.

## Gérer les événements du cycle de vie client du marketplace dans Metronome et votre application

Metronome arrête la déclaration s'il détecte des changements d'abonnement dus à des événements du cycle de vie du marketplace, et met à jour le statut du client dans Metronome en conséquence. Cependant, vous êtes responsable de vous assurer que le statut du client est correctement représenté dans votre application et de mettre fin au contrat du client dans Metronome, le cas échéant.

Pour mettre fin au contrat du client dans l'[application Metronome](https://app.metronome.com/), allez sur le client > cliquez sur le contrat > sélectionnez le menu déroulant > cliquez sur **Edit Contract End Date.**

Pour mettre fin au contrat du client avec l'API Metronome, utilisez l'endpoint `/contracts/updateEndDate`.

## Limitations des listings AWS Marketplace

La facturation via AWS Marketplace comporte certaines limitations.

**AWS Marketplace ne prend en charge que les quantités positives via leur [Metering Service](https://docs.aws.amazon.com/marketplace/latest/userguide/metering-service.html).**

Il n'y a aucun moyen de *diminuer* la facture totale d'un client. Par exemple, considérez un client qui devait recevoir \$1 000 de crédits lorsqu'il a commencé à utiliser votre produit. En raison d'une faute de frappe, il n'a reçu que \$100 par erreur. L'erreur est remarquée une semaine après le début de sa première période de facturation, lorsque le client constate un prélèvement de \$500 sur sa facture AWS. Dans Metronome, cette erreur est facilement corrigée en ajoutant un crédit supplémentaire de \$900, mais dans AWS, il n'y a aucun moyen de réduire cette facture.

Si cette situation se présente, Metronome arrête la facturation pour ce client jusqu'à ce que son usage rattrape le montant qu'il a déjà été facturé. Si cela ne suffit pas à corriger le problème, vous devez [émettre un remboursement manuel](https://docs.aws.amazon.com/marketplace/latest/userguide/refunds.html) via AWS Marketplace. Contactez votre représentant AWS ou Metronome pour obtenir de l'aide.

**AWS Marketplace impose strictement la fin du contrat ou de l'abonnement Marketplace d'un client.** L'AWS Marketplace Metering Service n'accepte les requêtes que pendant une heure après la fin du contrat du client. Metronome applique généralement des événements d'usage tardifs à une facture jusqu'à 24 heures après la fin de la période de facturation, mais il n'y a aucun moyen de livrer cet usage à AWS. Metronome envoie une dernière requête à AWS 15 minutes après la fin planifiée du contrat d'un client. L'usage reçu après cela ne peut pas être facturé via AWS.

En cas de panne, Metronome rattrape son retard une fois que tout est revenu en ligne. Si Metronome n'a pas pu envoyer d'usage à AWS pendant un certain temps, l'usage accumulé est inclus dans la requête suivante à AWS. Cependant, si le contrat du client a déjà pris fin et que la période de grâce d'une heure d'AWS s'est écoulée, Metronome ne peut pas facturer l'usage accumulé pendant le temps d'arrêt.

**L'intégration de Metronome avec AWS Marketplace ne prend en charge que les factures en devise fiduciaire USD.** Metronome lève une erreur si vous tentez de créer un contrat avec AWS Marketplace défini comme fournisseur de facturation et que la grille tarifaire du contrat utilise une devise fiduciaire non-USD. Dans le cas où le contrat est associé à d'autres factures qui ne sont pas en USD (par exemple, des factures planifiées associées à des charges planifiées), seules les factures en USD seront envoyées à AWS Marketplace.
