> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chargefy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> O objeto Product

Um `product` (produto) representa o item de catálogo ou serviço que a sua organização comercializa. Ele atua como o container de alto nível de uma oferta — armazenando o nome, a descrição comercial e a imagem do produto —, enquanto os valores monetários e as regras de cobrança (sejam avulsas ou recorrentes) são delegados a objetos `price` associados quando eles existem.

Os produtos são a base para a criação de checkouts, links de pagamento e planos de assinatura. Um produto pode começar sem preço quando a cobrança ainda está indefinida, ou ter múltiplos preços ativos em paralelo (por exemplo, um preço mensal e um anual), permitindo que a mesma oferta física ou digital seja cobrada sob diferentes termos de pagamento de acordo com a escolha do comprador.

## Objeto product

Este é o formato completo retornado em `create`, `get`, `update`, itens de `list` e em `data.object` dos webhooks `product.*`.

```json theme={}
{
  "id": "prod_123",
  "object": "product",
  "created_at": "2026-05-19T18:00:00Z",
  "default_price": "price_123",
  "description": "Acesso premium à plataforma de desenvolvimento",
  "image_url": "https://images.chargefy.io/product/prod_123.png",
  "is_active": true,
  "is_tax_applicable": false,
  "livemode": true,
  "metadata": {},
  "name": "Plano Premium Dev",
  "prices": [
    {
      "id": "price_123",
      "object": "price",
      "created_at": "2026-05-19T18:00:00Z",
      "currency": "brl",
      "is_active": true,
      "livemode": true,
      "metadata": {},
      "name": "Mensalidade Pro",
      "product": "prod_123",
      "recurring": {
        "interval": "month",
        "interval_count": 1,
        "trial_period_days": 7,
        "usage_type": "licensed"
      },
      "tax_behavior": "unspecified",
      "type": "recurring",
      "unit_amount": 9990,
      "updated_at": "2026-05-19T18:00:00Z"
    }
  ],
  "updated_at": "2026-05-19T18:00:00Z"
}
```

<ResponseField name="id" type="string">
  Identificador único do produto. Usa o prefixo `prod_*`.
</ResponseField>

<ResponseField name="object" type="string">
  Sempre `"product"`.
</ResponseField>

<ResponseField name="created_at" type="string">
  Data de criação em formato ISO 8601.
</ResponseField>

<ResponseField name="default_price" type="string | null">
  ID do preço padrão (`price_*`) associado a este produto, ou `null` quando o
  produto ainda não tem preço padrão.
</ResponseField>

<ResponseField name="description" type="string | null">
  Descrição interna ou comercial do produto.
</ResponseField>

<ResponseField name="image_url" type="string | null">
  A URL pública para a imagem ilustrativa do produto utilizada no checkout.
</ResponseField>

<ResponseField name="is_active" type="boolean">
  Define se o produto está ativo e disponível para novas vendas ou assinaturas.
</ResponseField>

<ResponseField name="is_tax_applicable" type="boolean">
  Define se impostos são aplicáveis ao produto.
</ResponseField>

<ResponseField name="livemode" type="boolean">
  `true` se gerado em produção; `false` se em testes.
</ResponseField>

<ResponseField name="metadata" type="object">
  Metadados customizados vinculados ao produto. Retorna `{}` quando vazio.
</ResponseField>

<ResponseField name="name" type="string">
  Nome do produto exibido para o comprador final.
</ResponseField>

<ResponseField name="updated_at" type="string | null">
  Data da última atualização em formato ISO 8601.
</ResponseField>

<ResponseField name="prices" type="array">
  Lista de preços estruturados cadastrados sob este produto. Retorna `[]` quando
  o produto ainda não tem preços.

  <Expandable title="Campos de prices[]">
    <ResponseField name="id" type="string">Identificador único do preço (`price_*`).</ResponseField>
    <ResponseField name="object" type="string">Sempre `"price"`.</ResponseField>
    <ResponseField name="created_at" type="string">Data de criação em formato ISO 8601.</ResponseField>
    <ResponseField name="currency" type="string">Moeda (ex: `brl`).</ResponseField>
    <ResponseField name="is_active" type="boolean">Define se este preço está ativo.</ResponseField>
    <ResponseField name="livemode" type="boolean">`true` em produção; `false` em testes.</ResponseField>
    <ResponseField name="metadata" type="object">Metadados associados ao preço.</ResponseField>
    <ResponseField name="name" type="string | null">Rótulo/nome interno do preço.</ResponseField>
    <ResponseField name="product" type="string">ID do produto pai (`prod_*`).</ResponseField>
    <ResponseField name="tax_behavior" type="string | null">Comportamento de taxas associadas.</ResponseField>
    <ResponseField name="type" type="string">Tipo do preço (`one_time` para avulso ou `recurring` para assinaturas).</ResponseField>
    <ResponseField name="unit_amount" type="integer">Valor unitário em centavos.</ResponseField>
    <ResponseField name="updated_at" type="string | null">Data de atualização em formato ISO 8601.</ResponseField>

    <ResponseField name="recurring" type="object | null">
      Configurações de recorrência se o tipo for `recurring`. Contém: `interval` (string com o intervalo de recorrência), `interval_count` (integer multiplicador), `trial_period_days` (integer com dias grátis de teste) e `usage_type` (sempre `"licensed"`).
    </ResponseField>
  </Expandable>
</ResponseField>

## Operações

* [Criar produto](/api-reference/products/create)
* [Consultar produto](/api-reference/products/get)
* [Atualizar produto](/api-reference/products/update)
* [Listar produtos](/api-reference/products/list)
* [Excluir produto](/api-reference/products/delete)

## Webhooks

Mudanças nesse objeto disparam os seguintes eventos de webhook:

* [`product.created`](/api-reference/webhooks/product.created)
* [`product.updated`](/api-reference/webhooks/product.updated)

O payload carrega o objeto `product` completo em `data.object`.
