# Definir quantidade de produtos ou assinaturas Assine um cliente para vários produtos ou para várias quantidades de um único produto, todos faturados em uma única fatura. Talvez você precise criar assinaturas para [vários produtos](https://docs.stripe.com/billing/subscriptions/quantities.md#multiple-product-sub) ou para [várias quantidades do mesmo produto](https://docs.stripe.com/billing/subscriptions/quantities.md#multiple-quantities-sub). Você também pode criar [várias assinaturas para pessoas físicas](https://docs.stripe.com/billing/subscriptions/quantities.md#multiple-subscriptions). ## Assinaturas com vários produtos Se você oferece vários produtos ou deseja cobrar valores diferentes pelo mesmo produto, pode criar uma assinatura para vários produtos. Isso gera uma única *fatura* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) a cada período de cobrança, combinando todos os preços, e o cliente só precisa fazer um único pagamento. ### Criar uma assinatura de vários produtos Crie assinaturas de vários produtos para um cliente usando o parâmetro [items](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items). Informe `price` e `quantity` (quando o valor for diferente de 1) para cada produto: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]=price_CBXbz9i7AIOTzr" \ -d "items[1][price]=price_IFuCu48Snc02bc" \ -d "items[1][quantity]=2" ``` A resposta inclui uma lista de todos os itens, preços e quantidades de assinaturas: ```json { "id": "sub_CZEpS1Zt9QLxdo", "object": "subscription", ... "items": { "object": "list", "data": [ { "id": "si_H1yPnAVzP9vDRW", "object": "subscription_item", "billing_thresholds": null, "created": 1585939321, "metadata": { }, "price": { "id": "price_H1c8v1liEvrfcd", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1585856460, "currency": "usd", "livemode": false, "lookup_key": null, "metadata": { }, "nickname": null, "product": "prod_H1c7exjJHbC4sr", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers": null, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "quantity": 1, "subscription": "sub_H1yPRslJXa4TUt", "tax_rates": [ ] }, { "id": "si_H1yPu4fSjq3oqM", "object": "subscription_item", "billing_thresholds": null, "created": 1585939321, "metadata": { }, "price": { "id": "price_H1yCssogQ6gtx1", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1585938535, "currency": "usd", "livemode": false, "lookup_key": null, "metadata": { }, "nickname": null, "product": "prod_H1c7exjJHbC4sr", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers": null, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 2000, "unit_amount_decimal": "2000" }, "quantity": 2, "subscription": "sub_H1yPRslJXa4TUt", "tax_rates": [ ] } ] }, ... } ``` ### Períodos de cobrança com vários preços Assinaturas com tarifa fixa por intervalo são cobradas no início de cada [período de cobrança (ciclo)](https://docs.stripe.com/billing/subscriptions/billing-cycle.md). Com cada fatura, o cliente paga efetivamente pelo próximo intervalo de serviço. Com a [cobrança por uso](https://docs.stripe.com/products-prices/pricing-models.md#usage-based-pricing), o valor pago pelo cliente varia de acordo com o consumo durante o período de cobrança, de modo que o cliente paga pelo uso no final. Quando uma assinatura combina uma tarifa fixa com cobrança por uso, o uso medido do período de cobrança anterior é cobrado juntamente com a tarifa fixa do novo período de cobrança no início de cada renovação. A cobrança por uso e a tarifa fixa são combinadas em uma única fatura. Como o uso de vários produtos em uma assinatura gera uma única fatura e um único pagamento, todos os preços desses produtos precisam usar a mesma moeda. Além disso, você está limitado a 20 produtos em uma única assinatura. Para lidar com vários produtos em uma assinatura que podem ter períodos de cobrança diferentes, você pode criar uma [assinatura de intervalo misto](https://docs.stripe.com/billing/subscriptions/mixed-interval.md) . ### Descontos, impostos e períodos de avaliação Ao usar vários produtos, você também pode criar [descontos](https://docs.stripe.com/billing/subscriptions/coupons.md), cobrar [impostos](https://docs.stripe.com/billing/taxes/collect-taxes.md) e usar [períodos de teste](https://docs.stripe.com/billing/subscriptions/trials.md) da mesma forma que faria com uma assinatura de produto único. Forneça esses argumentos quando você [criar](https://docs.stripe.com/api/subscriptions/create.md) ou [atualizar](https://docs.stripe.com/api/subscriptions/update.md) uma assinatura para aplicá-los à assinatura inteira ou forneça-os no nível do item para descontar apenas um item específico. ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "discounts[0][coupon]=free-period" \ -d "default_tax_rates[0]=txr_1EO66sClCIKljWvs98IiVfHW" \ -d trial_end=1610403705 \ -d "items[0][price]=price_CBXbz9i7AIOTzr" \ -d "items[1][price]=price_IFuCu48Snc02bc" \ -d "items[1][quantity]=2" ``` ## Várias quantidades de uma assinatura Muitas vezes, assinaturas com quantidades são descritas como “licenciamento por usuário” e seu custo aumenta linearmente: 10 utilizações custam 10 vezes o preço básico. Por padrão, cada assinatura é para um produto, mas a Stripe permite que o cliente assine quantidades múltiplas de um item. Por exemplo, digamos que você administra uma empresa de hospedagem e seus clientes hospedam sites com um custo mensal de US$ 9,99 por site. A maioria dos clientes hospeda um único site e alguns hospedam vários. Você pode criar preços para um site (US$ 9,99), dois sites (US$ 19,98) e assim por diante, mas uma abordagem melhor é os clientes assinarem uma quantidade de sites pelo preço unitário de US$ 9,99. As assinaturas têm dois tipos de cobrança por uso: licenciamento por consumo e por usuário. Você pode ativar esses modelos de cobrança definindo o valor do atributo `recurring[usage_type]` quando cria um preço. Somente é possível especificar uma quantidade em assinaturas criadas com `recurring[usage_type]` definido como `licensed`. Para cobrar preços específicos que variam dentro de um intervalo de cobrança, considere usar [cobrança por uso](https://docs.stripe.com/products-prices/pricing-models.md#usage-based-pricing) em vez de quantidades. ### Definir várias quantidades Para definir a quantidade em uma assinatura, informe o valor de `quantity` ao [criar](https://docs.stripe.com/api.md#create_subscription) ou [atualizar](https://docs.stripe.com/api.md#update_subscription) a assinatura: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_4fdAW5ftNQow1a \ -d "items[0][price]=price_CBb6IXqvTLXp3f" \ -d "items[0][quantity]=5" ``` Você pode cobrar quantidades múltiplas em uma *fatura* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice), e elas são [cobradas proporcionalmente](https://docs.stripe.com/billing/subscriptions/prorations.md) quando a assinatura muda, inclusive quando as quantidades são alteradas. ### Cobrar valores diferentes com base na quantidade Em alguns casos, pode ser necessário ajustar o custo por usuário de acordo com o número de usuários em uma assinatura. Por exemplo, você pode oferecer descontos de licenciamento por volume para assinaturas que excedam certos limites de quantidade. Para ajustar o preço por usuário, use [níveis](https://docs.stripe.com/products-prices/pricing-models.md#tiered-pricing). ### Transformação de quantidades Pode ser necessário acompanhar o uso em uma unidade de consumo diferente da utilizada para o faturamento. Por exemplo, considere um pacote de software de produtividade que cobra US$ 10 por grupo de 5 usuários ou menos que usam o produto. Sem a transformação de quantidade, a `quantity` do item de assinatura deveria ser aumentada em 1 a cada 5 usuários. | Número de usuários | Quantidade de itens de assinatura informada à Stripe | Total | | ------------------ | ---------------------------------------------------- | ----------- | | 1 | 1 | US$ 10 | | 3 | 1 | US$ 10 | | 5 | 1 | US$ 10 | | 6 | 2 | US$ 20 | | 7 | 2 | US$ 20 | O parâmetro [transform_quantity](https://docs.stripe.com/api/prices/create.md#create_price-transform_quantity) permite que você especifique que a Stripe deve transformar a quantidade antes de aplicar o custo unitário. A assinatura a seguir permite informar naturalmente o número atual de usuários como o valor de `quantity` para o item de assinatura. O sistema de faturamento da Stripe divide a quantidade por 5 e arredonda o resultado para cima antes de calcular pelo custo unitário. ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Standard Cost Per 5 Users" \ -d "transform_quantity[divide_by]=5" \ -d "transform_quantity[round]=up" \ -d unit_amount=1000 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=licensed" \ -d product={{PRODUCTIVITY_SUITE_ID}} ``` Você só pode usar `transform_quantity` com [billing_scheme=per_unit](https://docs.stripe.com/api/prices/create.md#create_price-billing_scheme), pois é incompatível com preços escalonados. #### Arredondamento O exemplo anterior mostrou uma assinatura que cobra por 5 usuários com arredondamento para cima, ou seja, 6 dividido por 5 resulta em uma quantidade de 2. Se você não quiser cobrar por utilização parcial (por exemplo, cobrar por gigabyte completo consumido em um serviço de Internet de banda larga), pode definir `round` como `down`. #### Uso medido Você também pode aplicar `transform_quantity` em conjunto com a cobrança por uso. Essa transformação se aplica a preços com `recurring[usage_type]=metered` no final de um período de cobrança da mesma forma que se aplica a `quantity` para preços com `recurring[usage_type]=licensed`. Um serviço de e-mail de marketing que cria um preço por consumo para cobrar US$ 0,10 por 1000 e-mails enviados pode ficar assim: ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Metered Emails" \ -d "transform_quantity[divide_by]=1000" \ -d "transform_quantity[round]=down" \ -d unit_amount=10 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=metered" \ -d product={{MARKETING_EMAILS_ID}} ``` Com esta assinatura, o uso pode ser relatado por e-mail e você pode cobrar US$ 0,10 do cliente por 1.000 e-mails enviados. ## Várias assinaturas Você pode criar simultaneamente várias assinaturas para um único cliente. Essa funcionalidade é útil quando você deseja que os clientes assinem vários períodos de serviço distintos. Cada assinatura tem seu próprio período de cobrança, fatura e cobrança, mesmo que os preços associados tenham o mesmo período de cobrança. > Quando você cria várias assinaturas com o mesmo preço, cada assinatura é independente, incluindo seus pagamentos e períodos de cobrança. Se isso não é o que você deseja, crie uma única assinatura usando [várias quantidades](https://docs.stripe.com/billing/subscriptions/quantities.md#setting-quantities). ### Criar várias assinaturas para um só cliente Crie várias assinaturas para um cliente usando a API [create subscription](https://docs.stripe.com/api.md#create_subscription): ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_4fdAW5ftNQow1a \ -d "items[0][price]=price_CZB2krKbBDOkTS" ``` ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_4fdAW5ftNQow1a \ -d "items[0][price]=price_CZB1AX3KOacNJw" ``` Um cliente pode assinar vários produtos, ou até mesmo um único produto, várias vezes. Cada assinatura possui um ID exclusivo e seu status é gerenciado independentemente das outras assinaturas do cliente. Cada assinatura também tem seu próprio período de cobrança independente, com base no [ciclo de faturamento](https://docs.stripe.com/billing/subscriptions/billing-cycle.md) da assinatura. Quando um cliente tem várias assinaturas, a propriedade `subscriptions` do objeto `Customer` fornece uma lista de cada assinatura: ```json { "id": "cus_4fdAW5ftNQow1a", "object": "customer", "subscriptions": { "object": "list", "data": [ { "id": "sub_9RRl3XywPg2P5H", "object": "subscription", ... "price": { "id": "price_CZB2krKbBDOkTS", "object": "price", "amount": 2995, ... } }, { "id": "sub_9RRlIq2t9obFLI", "object": "subscription", ... "price": { "id": "price_CZB1AX3KOacNJw", "object": "price", "amount": 1295, ... } } ] ... } ... } ``` ## See also - [Alterar assinaturas](https://docs.stripe.com/billing/subscriptions/change.md) - [Usar períodos de teste](https://docs.stripe.com/billing/subscriptions/trials.md) - [API Subscriptions](https://docs.stripe.com/api.md#subscriptions)