> ## 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 /functions/v1/create-price

> Cria um product_price vinculado a um produto existente, no formato Stripe-like.

Cria uma **Price** (preço) vinculada a um produto. Modela-se pela `Price` object da Stripe — imutável após criação (para alterar `currency`, `unit_amount`, `interval`, crie uma price nova e arquive a antiga).

Use este endpoint quando precisar adicionar uma tabela de preços alternativa a um produto existente (ex.: uma versão mensal e outra anual do mesmo plano).

## Autenticação

Requer **Bearer JWT** do Supabase (sessão de usuário admin). O produto deve pertencer a uma organização acessível pelo usuário.

## Corpo da requisição

**product\_id** `string` *required*

UUID do produto dono desta price.

**name** `string`

Nome descritivo opcional (ex: "Mensal", "Anual Early Bird", "Equipe 10+"). Livre, não tem impacto em cobrança.

**currency** `string` *required*

Código ISO de 3 letras em minúsculas (ex: `brl`).

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

Valor unitário em minor units (centavos). `0` é válido apenas para `type='one_time'`.

**type** `string`

`one_time` (padrão) ou `recurring`.

**interval** `string`

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

**interval\_count** `integer`

Quantidade de intervalos entre cobranças. Padrão: `1` quando `type=recurring`.

**tax\_behavior** `string`

`unspecified` (padrão), `inclusive` ou `exclusive`.

**metadata** `object`

Metadados livres (chave/valor).

**active** `boolean`

Padrão: `true`. Prices arquivadas (`false`) continuam existindo mas não são usadas em novos checkouts.

**set\_as\_default** `boolean`

Quando `true`, atualiza `products.default_price_id` para apontar pra esta nova price. Padrão: `false`.

## Resposta

Retorna a price criada (Row completa) com status `201 Created`.

Para prices recurring, o backend tenta criar um plano de recorrência Zoop de forma best-effort — se conseguir, o campo `zoop_recurrence_plan_id` vem preenchido.

## Erros comuns

| HTTP | Situação |
| - | - |
| `400` | Validação: `currency` inválida, `unit_amount < 0`, recurring sem `interval`, etc. |
| `403` | Usuário sem acesso à organização dona do produto. |
| `404` | `product_id` não encontrado ou soft-deleted. |

## Exemplo

```bash theme={null}
curl -X POST "https://<project>.functions.supabase.co/create-price" \
  -H "Authorization: Bearer $SUPABASE_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "prod_01j9xyz999",
    "currency": "brl",
    "unit_amount": 99000,
    "type": "recurring",
    "interval": "year",
    "interval_count": 1,
    "set_as_default": false
  }'
```

## Resposta de exemplo

```json theme={null}
{
  "id": "price_01j9xyz998",
  "product_id": "prod_01j9xyz999",
  "type": "recurring",
  "currency": "brl",
  "unit_amount": 99000,
  "interval": "year",
  "interval_count": 1,
  "tax_behavior": "unspecified",
  "metadata": {},
  "active": true,
  "zoop_recurrence_plan_id": "zpp_year_abc",
  "created_at": "2026-04-22T15:00:00Z",
  "modified_at": null,
  "deleted_at": null
}
```

## Relação

* [Obter Produto](https://scaleup-c34c4386.mintlify.site/api-reference/products/get.md) — `prices[]` já vem inline
* [Criar Produto](https://scaleup-c34c4386.mintlify.site/api-reference/products/create.md) — permite passar vários preços de uma vez
* [Atualizar Preço](https://scaleup-c34c4386.mintlify.site/api-reference/prices/update.md) — para `active`, `metadata`, `tax_behavior` (imutáveis: `currency`, `unit_amount`, `interval`)


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