# Prévisualiser une facture Découvrez comment créer un aperçu d'une facture. Vous pouvez créer un aperçu d’une facture pour votre client lorsqu’il envisage d’effectuer un achat. La [création d’un aperçu](https://docs.stripe.com/api/invoices/create_preview.md) permet de calculer le montant total de la facture, d’en récupérer chaque poste et d’inclure toutes les taxes ou remises pertinentes. Créer un aperçu vous permet d’indiquer le montant total du paiement à votre client sans qu’il soit nécessaire de créer une facture. Par exemple, si vous gérez une société qui fournit des services de réparation aux entreprises, vous pouvez présenter à vos clients plusieurs articles qui ont chacun des tarifs et des calendriers de facturation différents : - Article 1 : frais de service ponctuels (299 USD) - Article 2 : matériel de réparation A (29 USD) - Article 3 : matériel de réparation B (99 USD) - Article 4 : offre de support (49 USD par mois) Les clients pourraient vouloir savoir combien coûtent les différentes combinaisons de vos biens et services. S’ils ont l’intention d’acheter les articles 1 et 3 tout en appliquant le code promo `WINTERSALE` pour une réduction de 15 %, lancez l’appel à l’API suivant : ```curl curl https://api.stripe.com/v1/invoices/create_preview \ -u "<>:" \ -d "invoice_items[0][price]=price_item_1" \ -d "invoice_items[0][quantity]=1" \ -d "invoice_items[1][price]=price_item_3" \ -d "invoice_items[1][quantity]=1" \ -d "discounts[0][promotion_code]=promo_WINTERSALE" ``` Stripe renvoie un aperçu de la [facture](https://docs.stripe.com/api/invoices/object.md) avec chacun des postes, avec la remise appliquée et le montant total : ```json { "id": "upcoming_in_1OujwkClCIKljWvsq5v2ICAN", "object": "invoice", "account_country": "US", "account_name": "Stripe Docs", "account_tax_ids": null, "amount_due": 39800, "amount_paid": 0, "amount_remaining": 39800, "amount_shipping": 0, "application": null, "application_fee_amount": null, "attachments": [], "attempt_count": 0, "attempted": false, "auto_advance": false, "automatic_tax": { "enabled": false, "liability": null, "status": null }, "billing_reason": "upcoming", "charge": null, "collection_method": "charge_automatically", "created": 1710544434, "currency": "usd", "custom_fields": null, "customer": "cus_PkEPRnhp0Yk1ph", "customer_address": null, "customer_email": null, "customer_name": null, "customer_phone": null, "customer_shipping": null, "customer_tax_exempt": "none", "customer_tax_ids": [], "default_margins": [], "default_payment_method": null, "default_source": null, "default_tax_rates": [], "description": null, "discount": null, "discounts": [], "due_date": null, "effective_at": null, "ending_balance": 0, "footer": null, "from_invoice": null, "hosted_invoice_url": null, "invoice_pdf": null, "issuer": { "type": "self" }, "last_finalization_error": null, "latest_revision": null, "lines": { "object": "list", "data": [ { "id": "il_tmp_133608ClCIKljWvs8da61423", "object": "line_item", "amount": 9900, "amount_excluding_tax": 9900, "currency": "usd", "description": "Price2", "discount_amounts": [], "discountable": true, "discounts": [], "invoice": "in_1OujwkClCIKljWvsfntkIWhT", "invoice_item": "ii_1OujwkClCIKljWvsnajC2mHG", "livemode": false, "margin_amounts": [], "margins": [], "metadata": {}, "period": { "end": 1710544434, "start": 1710544434 }, "plan": null, "price": { "id": "price_1OujwjClCIKljWvsKriuEI60", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1710544433, "currency": "usd", "custom_unit_amount": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_PkEPiQtlsZzbaa", "recurring": null, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", "unit_amount": 9900, "unit_amount_decimal": "9900" }, "proration": false, "proration_details": { "credited_items": null }, "quantity": 1, "rendering": null, "subscription": null, "tax_amounts": [], "tax_rates": [], "type": "invoiceitem", "unit_amount_excluding_tax": "9900" }, { "id": "il_tmp_1f6911ClCIKljWvs7a00e38c", "object": "line_item", "amount": 29900, "amount_excluding_tax": 29900, "currency": "usd", "description": "Price1", "discount_amounts": [], "discountable": true, "discounts": [], "invoice": "in_1OujwkClCIKljWvsfntkIWhT", "invoice_item": "ii_1OujwkClCIKljWvsJVGuvJYk", "livemode": false, "margin_amounts": [], "margins": [], "metadata": {}, "period": { "end": 1710544434, "start": 1710544434 }, "plan": null, "price": { "id": "price_1OujwiClCIKljWvss6aaPCEe", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1710544432, "currency": "usd", "custom_unit_amount": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_PkEPv778t9PLvu", "recurring": null, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", "unit_amount": 29900, "unit_amount_decimal": "29900" }, "proration": false, "proration_details": { "credited_items": null }, "quantity": 1, "rendering": null, "subscription": null, "tax_amounts": [], "tax_rates": [], "type": "invoiceitem", "unit_amount_excluding_tax": "29900" } ], "has_more": false, "total_count": 2, "url": "/v1/invoices/upcoming_in_1OujwkClCIKljWvsq5v2ICAN/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, "number": null, "on_behalf_of": null, "paid": false, "paid_out_of_band": false, "paper_checks": [], "payment_intent": null, "payment_settings": { "default_mandate": null, "payment_method_options": null, "payment_method_types": null }, "period_end": 1710544434, "period_start": 1710544434, "post_payment_credit_notes_amount": 0, "pre_payment_credit_notes_amount": 0, "quote": null, "receipt_number": null, "recurring": true, "redaction": null, "rendering": { "amount_tax_display": "exclude_tax", "pdf": null, "template": null, "template_version": null }, "rendering_options": { "amount_tax_display": "exclude_tax" }, "shipping_cost": null, "shipping_details": null, "starting_balance": 0, "statement_descriptor": null, "status": "draft", "status_transitions": { "finalized_at": null, "marked_uncollectible_at": null, "paid_at": null, "voided_at": null }, "subscription": null, "subscription_details": { "metadata": null, "pause_collection": null }, "subtotal": 39800, "subtotal_excluding_tax": 39800, "tax": null, "tax_filing_currency": null, "test_clock": null, "total": 39800, "total_discount_amounts": [], "total_excluding_tax": 39800, "total_margin_amounts": [], "total_tax_amounts": [], "transfer_data": null, "webhooks_delivered_at": null } ``` En outre, l’aperçu de la facture qui en résulte peut être récupéré par l’endpoint [/v1/invoices/:id](https://docs.stripe.com/api/invoices/retrieve.md) durant les 72 heures suivantes : ```curl curl https://api.stripe.com/v1/invoices/upcoming_in_1OujwkClCIKljWvsq5v2ICAN \ -u "<>:" ``` ## Inclure Stripe Tax Pour prévisualiser les montants des taxes dans Stripe Tax, définissez `automatic_tax[enabled] = true` et transmettez l’adresse du client dans `customer_details[address]`. Vous pouvez également transmettre une adresse IP dans `customer_details[tax][ip_address]` si vous n’avez pas l’adresse du client. Dans la plupart des cas, Stripe peut résoudre une adresse IP en une zone physique, mais sa précision varie et peut ne pas refléter l’emplacement réel de votre client. Nous ne recommandons pas de vous fier à l’adresse IP d’un client pour déterminer son adresse au-delà d’une estimation initiale. ```curl curl https://api.stripe.com/v1/invoices/create_preview \ -u "<>:" \ -d "customer_details[address][line1]=920 5th Ave" \ -d "customer_details[address][city]=Seattle" \ -d "customer_details[address][state]=WA" \ -d "customer_details[address][postal_code]=98104" \ -d "customer_details[address][country]=US" \ -d "automatic_tax[enabled]=true" \ -d "invoice_items[0][price]=price_item_1" \ -d "invoice_items[0][quantity]=1" \ -d "invoice_items[1][price]=price_item_3" \ -d "invoice_items[1][quantity]=1" \ -d "discounts[0][promotion_code]=promo_WINTERSALE" ``` ## Aperçu des factures avec les abonnements Pour prévisualiser la première facture avec un tarif récurrent, utilisez le paramètre [subscription_details.items](https://docs.stripe.com/api/invoices/create_preview.md#create_create_preview-subscription_details-items) : ```curl curl https://api.stripe.com/v1/invoices/create_preview \ -u "<>:" \ -d "subscription_details[items][0][price]=price_recurring_4" \ -d "subscription_details[items][0][quantity]=1" \ -d "invoice_items[0][price]=price_item_1" \ -d "invoice_items[0][quantity]=1" \ -d "invoice_items[1][price]=price_item_3" \ -d "invoice_items[1][quantity]=1" \ -d "discounts[0][promotion_code]=promo_WINTERSALE" ``` Pour prévisualiser les modifications apportées à un abonnement existant, indiquez l’[identifiant de l’abonnement ou de la planification d’abonnement](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#preview-an-invoice). ## Aperçu des frais récurrents uniquement Votre client peut avoir besoin d’un abonnement récurrent accompagné d’articles ponctuels, de crédits temporaires ou de remises à utiliser lors de son achat. S’il souhaite connaître le montant des frais récurrents après les éventuels réajustements, utilisez le paramètre [preview_mode](https://docs.stripe.com/api/invoices/create_preview.md#create_create_preview-preview_mode) pour qu’il obtienne un aperçu du total. Par exemple, si `WINTERSALE` est une remise ponctuelle de 15 % et que le client souhaite acheter les articles 1, 3 et 4, vous pouvez récupérer le montant des frais récurrents avec l’appel à l’API suivant : ```curl curl https://api.stripe.com/v1/invoices/create_preview \ -u "<>:" \ -d preview_mode=recurring \ -d "subscription_details[items][0][price]=price_recurring_4" \ -d "subscription_details[items][0][quantity]=1" \ -d "invoice_items[0][price]=price_item_1" \ -d "invoice_items[0][quantity]=1" \ -d "invoice_items[1][price]=price_item_3" \ -d "invoice_items[1][quantity]=1" \ -d "discounts[0][promotion_code]=promo_WINTERSALE" ``` La facture qui en résulte ne contient que l’offre de support à 49 USD par mois, sans aucune remise. De même, vous pouvez combiner `preview_mode` avec `subscription` ou `subscription_schedule` pour afficher les frais récurrents prévus, à l’exclusion des articles ponctuels et des remises. ## Pagination des postes de facture Pour les factures comportant plus de 10 postes, vous pouvez [obtenir une vue paginée des postes](https://docs.stripe.com/api/invoice-line-item/retrieve.md) : ```curl curl https://api.stripe.com/v1/invoices/upcoming_in_1OujwkClCIKljWvsq5v2ICAN/lines \ -u "<>:" ```