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

# Medidores

> Transforme eventos de uso brutos em quantidades faturáveis com agregação e filtragem.

<Info>
  Os medidores convertem eventos brutos em quantidades faturáveis. Eles filtram eventos e aplicam funções de agregação (Count, Sum, Max, Last) para calcular o uso por cliente.
</Info>

<Frame>
  <img src="https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?fit=max&auto=format&n=w9oVTi6CzZMAOQA3&q=85&s=f9d85a463fba231437151db3d4a2052a" alt="Interface de criação de medidor mostrando o nome do evento, tipo de agregação e opções de filtragem" style={{ maxHeight: '500px', width: 'auto' }} width="2324" height="1600" data-path="images/usage-based/UBB-2.png" />
</Frame>

## Recursos da API

<AccordionGroup>
  <Accordion title="View Meter API References">
    <CardGroup cols={2}>
      <Card title="Create Meter" icon="plus" href="/api-reference/meters/create-meter">
        Crie medidores programaticamente via API.
      </Card>

      <Card title="List Meters" icon="list" href="/api-reference/meters/get-meters">
        Recupere todos os medidores em sua conta.
      </Card>

      <Card title="Get Meter" icon="eye" href="/api-reference/meters/retrieve-meter">
        Obtenha detalhes de um medidor específico por ID.
      </Card>

      <Card title="Archive Meter" icon="arrow-rotate-right" href="/api-reference/meters/archive-meter">
        Arquive um medidor para parar de rastrear o uso.
      </Card>

      <Card title="Unarchive Meter" icon="arrow-rotate-left" href="/api-reference/meters/unarchive-meter">
        Restaure um medidor arquivado para retomar o rastreamento.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Criando um Medidor

<Steps>
  <Step title="Basic Information">
    <ParamField path="Meter Name" type="string" required>
      Nome descritivo (por exemplo, "API Requests", "Token Usage")
    </ParamField>

    <ParamField path="Event Name" type="string" required>
      Nome exato do evento para corresponder (diferencia maiúsculas/minúsculas). Exemplos: `api.call`, `image.generated`
    </ParamField>
  </Step>

  <Step title="Aggregation">
    <ParamField path="Aggregation Type" type="string" required>
      Escolha como os eventos são agregados:

      * **Count**: Número total de eventos (chamadas de API, uploads)
      * **Sum**: Some valores numéricos (tokens, bytes)
      * **Max**: Maior valor no período (usuários máximos)
      * **Last**: Valor mais recente
    </ParamField>

    <ParamField path="Over Property" type="string">
      Chave de metadados para agregar (obrigatória para todos os tipos, exceto Count). Exemplos: `tokens`, `bytes`, `duration_ms`
    </ParamField>

    <ParamField path="Measurement Unit" type="string" required>
      Rótulo da unidade para faturas. Exemplos: `calls`, `tokens`, `GB`, `hours`
    </ParamField>
  </Step>

  <Step title="Filtering (Optional)">
    <Frame>
      <img src="https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?fit=max&auto=format&n=w9oVTi6CzZMAOQA3&q=85&s=ce231b0559d31723bc12c22cd9ff9d64" alt="Filtragem de eventos" style={{ maxHeight: '500px', width: 'auto' }} width="1558" height="942" data-path="images/usage-based/UBB-3.png" />
    </Frame>

    Adicione condições para filtrar quais eventos são contados:

    * **Lógica AND**: Todas as condições devem corresponder
    * **Lógica OR**: Qualquer condição pode corresponder

    **Comparadores**: igual, diferente, maior que, menor que, contém

    Ative a filtragem, escolha a lógica, adicione condições com chave de propriedade, comparador e valor.
  </Step>

  <Step title="Create">
    Revise a configuração e clique em **Create Meter**.
  </Step>
</Steps>

## Visualizando Análises

<Frame>
  <img src="https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?fit=max&auto=format&n=w9oVTi6CzZMAOQA3&q=85&s=7fb86a266b5aa84f281b680601bd998e" alt="Análise de medidor" style={{ maxHeight: '500px', width: 'auto' }} width="1536" height="1252" data-path="images/usage-based/UBB-1.png" />
</Frame>

Seu painel de medidores mostra:

* **Visão Geral**: Uso total e gráfico de uso
* **Eventos**: Eventos individuais recebidos
* **Clientes**: Uso e cobranças por cliente

## Cobrança em Créditos em vez de Moeda

Por padrão, os medidores cobram os clientes por unidade em dólares (ou na sua moeda configurada). Você pode configurar um medidor para **deduzir de um saldo de créditos** - assim o uso consome créditos em vez de gerar uma cobrança monetária.

<Info>
  A dedução baseada em créditos exige um [Credit Entitlement](/features/credit-based-billing) vinculado ao mesmo produto. Crie seu crédito primeiro e, em seguida, vincule-o ao medidor.
</Info>

### Quando usar dedução baseada em créditos

| Cenário                                                                 | Padrão (moeda)                      | Baseado em Créditos                                        |
| ----------------------------------------------------------------------- | ----------------------------------- | ---------------------------------------------------------- |
| Precificação simples por unidade (\$0,01/chamada)                       | ✅ Melhor opção                      | Sobrecarga desnecessária                                   |
| Pacotes de crédito pré-pagos (compre 10K tokens, use ao longo do tempo) | ❌ Não é possível expressar          | ✅ Melhor opção                                             |
| Uso incluído em assinatura (plano Pro inclui 100K chamadas)             | Possível com limite gratuito        | ✅ Melhor – créditos acumulam, expiram e aparecem no portal |
| Produtos com múltiplos medidores compartilhando um pool de créditos     | ❌ Cada medidor fatura separadamente | ✅ Todos os medidores deduzem de um único saldo             |

### Configurando um medidor para deduzir créditos

<Steps>
  <Step title="Create a Credit Entitlement">
    Primeiro, crie um crédito em **Products → Credits**. Defina a unidade (por exemplo, "API Calls", "Tokens"), a precisão e as configurações de ciclo de vida (expiração, rollover, excedente).

    Consulte o [guia de Faturamento Baseado em Créditos](/features/credit-based-billing) para obter instruções detalhadas.
  </Step>

  <Step title="Create or Edit a Usage-Based Product">
    Acesse seu produto baseado em uso e abra a seção de configuração do **Meter**.
  </Step>

  <Step title="Add a Meter">
    Clique no botão **+** para anexar um medidor. Configure o nome do evento, o tipo de agregação e a unidade de medição como de costume.
  </Step>

  <Step title="Enable 'Bill Usage in Credits'">
    Ative **Cobrar uso em Créditos** na configuração do medidor. Isso revela as configurações de crédito:

    <Frame caption="Toggle 'Bill usage in Credits' to switch from currency-based to credit-based deduction.">
      <img src="https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?fit=max&auto=format&n=ibNfoFRyCIGyt3pO&q=85&s=b4ef2fe5079cbf3bb39eb3814f101cbd" alt="Configuração de medidor com cobrança de uso em créditos ativada" style={{ maxHeight: '500px', width: 'auto' }} width="2880" height="2282" data-path="images/CBB/Desktop - Attach Credit - UBB-5.jpg" />
    </Frame>

    <ParamField path="Credit Entitlement" type="string" required>
      Selecione de qual Credit Entitlement este medidor deve deduzir.
    </ParamField>

    <ParamField path="Meter units per credit" type="number" required>
      O número de unidades de uso necessárias para deduzir 1 crédito. Por exemplo:

      * `1` = cada evento do medidor deduz 1 crédito
      * `100` = 100 eventos do medidor deduzem 1 crédito
      * `1000` = 1.000 chamadas de API consomem 1 crédito
    </ParamField>
  </Step>

  <Step title="Set the Free Threshold">
    O **Limite Gratuito** ainda se aplica - eventos abaixo desse limite não deduzem créditos.

    **Exemplo**: Com um limite gratuito de 1.000 e unidades de medidor por crédito igual a 1:

    * O cliente usa 2.500 chamadas de API
    * As primeiras 1.000 são gratuitas
    * As 1.500 restantes deduzem 1.500 créditos do saldo dele
  </Step>
</Steps>

### Como a dedução de créditos funciona

Uma vez configurado, o pipeline de dedução é executado automaticamente:

1. **Os eventos chegam** - Sua aplicação envia eventos de uso por meio da [Event Ingestion API](/features/usage-based-billing/event-ingestion)
2. **O medidor agrega** - os eventos são agregados de acordo com a configuração do medidor (Count, Sum, Max, Last)
3. **Processamento por worker em background** - a cada minuto, um worker busca novos eventos desde o último checkpoint
4. **Créditos são deduzidos** - o uso agregado é convertido em créditos usando a taxa `meter_units_per_credit` e deduzido seguindo a **ordem FIFO** (as concessões mais antigas são consumidas primeiro)
5. **Excesso é monitorado** - se o saldo atingir zero e o excedente estiver ativado, o uso continua e o excedente é tratado conforme o comportamento configurado (perdoado no reset, cobrado na próxima fatura ou levado como déficit)

```mermaid theme={null}
flowchart LR
    A[Usage Event] --> B[Meter Aggregation]
    B --> C{Credits Available?}
    C -->|Yes| D[Deduct from Balance]
    C -->|No| E{Overage Enabled?}
    E -->|Yes| F[Track Overage]
    E -->|No| G[Block Usage]
    D --> H[Update Ledger]
    F --> H
```

<Warning>
  A dedução de créditos é executada de forma assíncrona (a cada \~1 minuto). Pode haver um pequeno atraso entre a ingestão do evento e a dedução no saldo. Projete sua aplicação para lidar com esse atraso - não dependa de verificações de saldo em tempo real para controle de acesso em requisições individuais.
</Warning>

### Vários medidores, um pool de créditos

Você pode vincular múltiplos medidores no mesmo produto ao **mesmo Credit Entitlement**. Todos os medidores deduzem de um único saldo compartilhado.

**Exemplo**: Uma plataforma de IA com dois medidores:

* `text.generation` - 1 crédito por 1.000 tokens
* `image.generation` - 10 créditos por imagem

Ambos deduzem do mesmo pool "AI Credits". O cliente vê um único saldo unificado em seu portal.

<Tip>
  Use diferentes taxas `meter_units_per_credit` entre os medidores para expressar custos relativos. Operações caras (geração de imagens) exigem menos unidades de medidor por crédito do que operações baratas (completação de texto).
</Tip>

<CardGroup cols={2}>
  <Card title="List Customer Ledger" icon="scroll" href="/api-reference/credit-entitlements/list-customer-ledger">
    Veja o histórico completo de dedução de créditos de um cliente.
  </Card>

  <Card title="Get Customer Balance" icon="wallet" href="/api-reference/credit-entitlements/get-customer-balance">
    Verifique o saldo atual de créditos de um cliente via API.
  </Card>
</CardGroup>

## Solução de problemas

<AccordionGroup>
  <Accordion title="Events not appearing">
    * O nome do evento deve coincidir exatamente (considerando maiúsculas e minúsculas)
    * Verifique se os filtros do medidor não estão excluindo os eventos
    * Verifique se os IDs dos clientes existem
    * Desative temporariamente os filtros para testar
  </Accordion>

  <Accordion title="Aggregation not working">
    * Verifique se a Over Property corresponde exatamente à chave de metadata
    * Use números, não strings: `tokens: 150` não `"150"`
    * Inclua as propriedades obrigatórias em todos os eventos
  </Accordion>

  <Accordion title="Filters not working">
    * Combine exatamente as maiúsculas e minúsculas
    * Use os operadores corretos para o tipo de dado
    * Garanta que os eventos incluam as propriedades filtradas
  </Accordion>

  <Accordion title="Wrong usage totals">
    * Verifique a aba Eventos para contar os eventos reais recebidos
    * Verifique o tipo de agregação (Count vs Sum)
    * Garanta que os valores sejam numéricos para Sum/Max
  </Accordion>
</AccordionGroup>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Send Events" icon="bolt" href="/features/usage-based-billing/event-ingestion">
    Comece a enviar eventos de uso da sua aplicação para os seus medidores.
  </Card>

  <Card title="View Blueprints" icon="copy" href="/features/usage-based-billing/ingestion-blueprints">
    Use configurações prontas de medidores para casos de uso comuns.
  </Card>
</CardGroup>
