> ## Documentation Index
> Fetch the complete documentation index at: https://scaleup-c34c4386.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /api/v1/products/

> Cria um produto com um ou mais preços inline (shape Stripe-like)

Cria um produto com pelo menos 1 preço inline. O primeiro preço do array vira o `default_price_id` do produto (ou use `default_price_index` pra escolher outro).

Modela-se pelo `default_price_data` da Stripe: tudo em 1 round-trip.

## Autenticação

> [!NOTE]
>
> Requer um token de acesso válido (`CHARGEFY_ACCESS_TOKEN`) no header `Authorization`.

## Body

**organization\_id** `string` *required*

ID da organização dona do produto.

**name** `string` *required*

Nome do produto.

**description** `string`

Descrição. Markdown suportado.

**metadata** `object`

Metadata livre chave/valor.

**is\_tax\_applicable** `boolean` (default: true)

Indica se o produto é tributável.

**prices** `array` *required*

Lista com pelo menos 1 preço inline.

**Price**

**currency** `string` *required*

ISO 4217 em minúsculas. Ex: `brl`, `usd`.

**unit\_amount** `integer` *required*

Valor unitário em minor units (centavos). `0` permitido em `one_time`.

**type** `string` (default: one\_time)

`one_time` ou `recurring`.

**interval** `string`

Obrigatório se `type='recurring'`. Valores: `day`, `week`, `month`, `year`.

**interval\_count** `integer` (default: 1)

Quantidade de intervalos entre cobranças. Aplicável apenas a `recurring`.

**tax\_behavior** `string` (default: unspecified)

`unspecified`, `inclusive` ou `exclusive`.

**metadata** `object`

Metadata livre por preço.

**active** `boolean` (default: true)

Preço ativo pra novas vendas.

**default\_price\_index** `integer` (default: 0)

Índice (base 0) do preço dentro de `prices[]` que vira o `default_price_id` do produto.

## Resposta

Retorna o produto completo com `default_price_id` setado e o array `prices[]` com os preços criados.

**id** `string`

ID do produto.

**default\_price\_id** `string`

ID do preço default. Resolve automaticamente no checkout se `product_price_id` não for especificado.

**prices** `array`

Array dos preços criados. Cada item inclui o `id` gerado, os campos enviados, e `zoop_recurrence_plan_id` (se criado automaticamente pra preços `recurring`).

**organization\_id** `string`

Identificador da organização.

**name** `string`

Nome do produto.

**description** `string`

Descrição.

**metadata** `object`

Metadata do produto.

**is\_archived** `boolean`

Sempre `false` na criação.

**is\_tax\_applicable** `boolean`

Valor recebido ou `true` default.

**created\_at** `string`

ISO 8601 timestamp.

## Erros comuns

| HTTP | Situação |
| - | - |
| `400` | `prices[]` vazio; `currency` inválida; `unit_amount < 0`; recurring sem `interval`; recurring com `unit_amount = 0` |
| `403` | Usuário sem acesso à `organization_id` |

## Exemplos

```bash cURL theme={null}
curl -X POST "https://api.chargefy.io/api/v1/products/" \
  -H "Authorization: Bearer $CHARGEFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "organization_id": "org_abc",
    "name": "Plano Pro",
    "description": "Acesso completo à plataforma",
    "prices": [
      {
        "currency": "brl",
        "unit_amount": 9990,
        "type": "recurring",
        "interval": "month",
        "interval_count": 1
      },
      {
        "currency": "brl",
        "unit_amount": 99900,
        "type": "recurring",
        "interval": "year",
        "interval_count": 1
      }
    ],
    "default_price_index": 0
  }'
```

```typescript SDK theme={null}
import { Chargefy } from '@chargefy/sdk';

const chargefy = new Chargefy({
  accessToken: process.env.CHARGEFY_ACCESS_TOKEN,
});

const product = await chargefy.products.create({
  organizationId: 'org_abc',
  name: 'Plano Pro',
  description: 'Acesso completo à plataforma',
  prices: [
    { currency: 'brl', amount: 9990, type: 'recurring', interval: 'month' },
    { currency: 'brl', amount: 99900, type: 'recurring', interval: 'year' },
  ],
});
```

## Exemplo de Resposta

```json theme={null}
{
  "id": "prod_new789",
  "organization_id": "org_abc",
  "name": "Plano Pro",
  "description": "Acesso completo à plataforma",
  "metadata": {},
  "is_archived": false,
  "is_tax_applicable": true,
  "default_price_id": "price_m001",
  "prices": [
    {
      "id": "price_m001",
      "product_id": "prod_new789",
      "type": "recurring",
      "currency": "brl",
      "unit_amount": 9990,
      "interval": "month",
      "interval_count": 1,
      "tax_behavior": "unspecified",
      "metadata": {},
      "active": true,
      "zoop_recurrence_plan_id": "zpp_abc"
    },
    {
      "id": "price_y002",
      "product_id": "prod_new789",
      "type": "recurring",
      "currency": "brl",
      "unit_amount": 99900,
      "interval": "year",
      "interval_count": 1,
      "tax_behavior": "unspecified",
      "metadata": {},
      "active": true,
      "zoop_recurrence_plan_id": "zpp_xyz"
    }
  ],
  "created_at": "2026-03-12T10:00:00Z"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.