> ## 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 de janeiro de 2026)

> Coleções de produtos, métodos de pagamento RevolutPay e Billie para pagamentos únicos em GBP, pré-visualização de sessão de checkout, metadados em solicitações de mudança de plano, campo invoice_url, endpoint de validação de desconto e melhorias no filtro do dashboard

## Novos Recursos

### 1. **Coleções de Produtos**

Agrupe produtos relacionados para experiências de checkout unificadas, seleção de planos e caminhos de upgrade/downgrade contínuos dentro do Portal do Cliente.

<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="Página de finalização de compra da coleção de produtos mostrando múltiplas opções de plano" style={{ maxHeight: '500px', width: 'auto' }} width="1440" height="960" data-path="images/product-collection/checkout-page.png" />
</Frame>

**Principais Benefícios**

* **Checkout baseado em coleções**: Exiba todos os produtos de uma coleção em uma única visualização de checkout, permitindo que os clientes comparem e escolham seu plano preferido
* **Gestão de produtos organizada**: Agrupe produtos relacionados (por exemplo, Starter, Pro, Enterprise) sob uma única coleção
* **Integração com o Portal do Cliente**: Permita que os clientes atualizem ou diminuam entre produtos dentro da mesma coleção
* **Controle do comerciante**: Habilite, desabilite e reorganize produtos dentro de cada coleção

**Como Funciona**

Crie uma sessão de checkout para uma coleção:

```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>
  Resultado: uma experiência de checkout unificada onde os clientes podem visualizar e selecionar todos os produtos disponíveis na sua coleção.
</Check>

<Info>
  O checkout da coleção é ideal para empresas de assinatura onde você deseja que os clientes comparem planos lado a lado antes de comprar.
</Info>

Saiba mais: [Guia de Coleções de Produtos](/features/product-collections)

### 2. **Métodos de Pagamento RevolutPay & Billie para a Moeda GBP**

Opções de pagamento expandidas com RevolutPay e Billie agora disponíveis globalmente para transações de pagamento único em GBP, oferecendo mais flexibilidade aos seus clientes na forma como pagam.

**Novos Métodos de Pagamento**

| Método de Pagamento | Países Suportados | Moeda | Suporte a Assinaturas |
| ------------------- | ----------------- | ----- | --------------------- |
| **RevolutPay**      | Global            | GBP   | Não (apenas único)    |
| **Billie**          | Global            | GBP   | Não (apenas único)    |

* **RevolutPay** – Pagamentos rápidos e sem costura para usuários do Revolut em todo o mundo
* **Billie** – Solução B2B Compre Agora, Pague Depois que permite que empresas ofereçam condições de pagamento flexíveis para seus clientes

<Info>
  Esses métodos de pagamento estão automaticamente disponíveis para transações em GBP. Nenhuma configuração adicional é necessária.
</Info>

Saiba mais: [Métodos de Pagamento](/features/payment-methods)

### 3. **Pré-visualização da Sessão de Checkout**

Visualize sessões de checkout antes de criá-las para calcular preços, impostos, descontos e totais precisos. Exiba preços reais para os clientes antes de prosseguirem para o checkout.

**Como Funciona**

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

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

**Casos de Uso**

* **Exibições de preços personalizadas**: Mostre totais precisos, incluindo impostos, antes do checkout
* **Validação de desconto**: Verifique códigos de desconto e mostre economia para os clientes
* **Suporte a múltiplas moedas**: Visualize preços em diferentes moedas
* **Resumos de carrinho**: Construa interfaces de carrinho personalizadas com preços em tempo real

<Card title="Preview API Reference" icon="code" href="/api-reference/checkout-sessions/preview">
  Veja a documentação completa do endpoint de visualização.
</Card>

### 4. **Suporte a Metadados em Solicitações de Mudança de Plano**

Envie metadados personalizados ao mudar de planos de assinatura, permitindo melhor rastreamento e integração com seus sistemas internos durante transições de plano.

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

**Casos de Uso**

* **Rastrear razões de upgrade/downgrade**: Armazene por que os clientes mudaram de planos
* **Vincular a registros de CRM**: Associe mudanças de plano a atividades de vendas
* **Categoria interna**: Marque mudanças de plano para relatórios e análises
* **Trilhas de auditoria**: Mantenha registros de quem iniciou mudanças de plano

<Info>
  Metadados são incluídos nos eventos de webhook, facilitando o processamento de alterações de plano com seus dados personalizados.
</Info>

Saiba mais: [Guia de Metadados](/api-reference/metadata) | [API de Mudança de Plano](/api-reference/subscriptions/change-plan)

### 5. **`invoice_url` na Resposta de Pagamento e na Resposta de Link de Pagamento**

A Resposta de Pagamento e a Resposta de Link de Pagamento agora incluem um campo `invoice_url`, oferecendo acesso direto à fatura associada a cada pagamento.

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

**Casos de Uso**

* **Comunicação com clientes**: Envie links de fatura diretamente aos clientes
* **Integração contábil**: Vincule pagamentos a faturas em seu software contábil
* **Portais de autoatendimento**: Permita que os clientes acessem suas faturas facilmente
* **Registro**: Mantenha referências diretas a documentos de fatura

<Card title="Get Payment API" icon="code" href="/api-reference/payments/get-payments-1">
  Veja o esquema da Resposta de Pagamento.
</Card>

### 6. **Endpoint de Validação de Desconto pelo Nome do Código**

Novo endpoint da API para validar e recuperar códigos de desconto pelo seu nome de código (por exemplo, "SAVE20") em vez de usar o ID interno do desconto. Verifique a elegibilidade do desconto antes de aplicá-los no checkout.

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

**Benefícios**

* **Validação pré-checkout**: Verifique códigos de desconto antes de criar sessões de checkout
* **Feedback em tempo real**: Mostre aos clientes se seu código é válido
* **Tratamento de erros**: Detecte códigos inválidos ou expirados antecipadamente
* **Interfaces de desconto personalizadas**: Crie campos de entrada de código de desconto com validação instantânea

<Card title="Get Discount by Code API" icon="code" href="/api-reference/discounts/get-discount-by-code">
  Veja a documentação completa do endpoint.
</Card>

### 7. **Capacidades de Filtragem Aprimoradas para Clientes, Descontos e Chaves de Licença**

Novos filtros de API para listar Clientes, Descontos e Chaves de Licença, facilitando a busca e gerenciamento de seus dados programaticamente.

**Filtros da API de Clientes**

| Filtro           | Descrição                                                                                           |
| ---------------- | --------------------------------------------------------------------------------------------------- |
| `email`          | Filtrar pelo e-mail do cliente                                                                      |
| `name`           | Filtrar pelo nome do cliente (correspondência parcial, sem distinção entre maiúsculas e minúsculas) |
| `created_at_gte` | Filtrar clientes criados a partir deste carimbo de data/hora                                        |
| `created_at_lte` | Filtrar clientes criados até este carimbo de data/hora                                              |

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

**Filtros da API de Descontos**

| Filtro          | Descrição                                                                                              |
| --------------- | ------------------------------------------------------------------------------------------------------ |
| `code`          | Filtrar pelo código de desconto (correspondência parcial, sem distinção entre maiúsculas e minúsculas) |
| `discount_type` | Filtrar pelo tipo de desconto (percentual)                                                             |
| `active`        | Filtrar pelo status ativo (true = não expirado, false = expirado)                                      |
| `product_id`    | Filtrar pela restrição de produto (apenas descontos que se aplicam a este produto)                     |

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

**Filtros da API de Chaves de Licença**

| Filtro           | Descrição                                                                 |
| ---------------- | ------------------------------------------------------------------------- |
| `customer_id`    | Filtrar pelo ID do cliente                                                |
| `status`         | Filtrar pelo status da chave de licença (`active`, `expired`, `disabled`) |
| `product_id`     | Filtrar pelo ID do produto                                                |
| `created_at_gte` | Filtrar chaves de licença criadas a partir deste carimbo de data/hora     |
| `created_at_lte` | Filtrar chaves de licença criadas até este carimbo de data/hora           |

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

<CardGroup cols={3}>
  <Card title="List Customers API" icon="users" href="/api-reference/customers/get-customers">
    Veja a documentação completa da API de Clientes.
  </Card>

  <Card title="List Discounts API" icon="percent" href="/api-reference/discounts/list-discounts">
    Veja a documentação completa da API de Descontos.
  </Card>

  <Card title="List License Keys API" icon="key" href="/api-reference/licenses/list-license-keys">
    Veja a documentação completa da API de Chaves de Licença.
  </Card>
</CardGroup>

### 8. **Melhorias de UI/UX no Dashboard**

Esta versão inclui várias melhorias de UI/UX em todo o dashboard para uma experiência mais intuitiva e refinada.

**Destaques**

* Navegação e layout melhorados
* Interações de tabela de dados aprimoradas
* Melhores estados de carregamento e feedback
* Elementos de design visual refinados
* Melhor responsividade em dispositivos móveis
