# Criar Produto
`POST /v1/products`
**Área:** Produtos

**Scopes necessários:** `products/write`

Cria um novo produto ou serviço com nome, descrição, preço e configurações de recorrência.

Os produtos criados ficam disponíveis no painel administrativo e podem ser utilizados tanto no checkout transparente (via API) quanto no checkout pro (link de pagamento).

Tipos de recorrência em prices[].recurrenceType:

- ONE_TIME → Avulsa
- WEEKLY → Semanal
- MONTHLY → Mensal
- QUARTERLY → Trimestral
- SEMIANNUAL → Semestral
- YEARLY → Anual

Case de uso:

_Como SaaS, quero cadastrar meus planos como produtos com preços recorrentes, para que meus clientes possam assinar diretamente pelo checkout pro ou pela minha própria interface._

### Request body

```json
{
  "name": "Plano Premium",
  "description": "Acesso completo à plataforma",
  "type": "RECURRING",
  "statementDescriptor": "VALIDAPAY PREMIUM",
  "isActive": true,
  "metadata": {},
  "prices": [
    {
      "title": "Mensal",
      "amount": 99.9,
      "currency": "BRL",
      "recurrenceType": "MONTHLY",
      "recurrenceInterval": 1,
      "trialDays": 7,
      "compareAtPrice": 129.9
    },
    {
      "title": "Anual",
      "amount": 899.0,
      "currency": "BRL",
      "recurrenceType": "YEARLY",
      "recurrenceInterval": 1
    }
  ]
}
```

### Campos do body

**Obrigatórios:** `name`, `prices`, `prices.title`, `prices.amount`, `prices.recurrenceType`

| Campo | Descrição |
|---|---|
| `name` | Nome do produto |
| `prices` |  |
| `prices.title` |  |
| `prices.amount` | Valor em reais (> 0) |
| `prices.recurrenceType` | WEEKLY, MONTHLY, QUARTERLY, SEMIANNUAL, YEARLY ou ONE_TIME |

**Opcionais**

| Campo | Descrição |
|---|---|
| `description` |  |
| `type` | RECURRING ou ONE_TIME (default RECURRING) |
| `statementDescriptor` | max 22 caracteres |
| `isActive` |  |
| `prices.currency` |  |
| `prices.recurrenceInterval` | min 1 (ex: 2 = bimestral) |
| `prices.trialDays` |  |
| `prices.compareAtPrice` | Preço "de" |

### Resposta 200 — 200

```json
{
  "productId": "prod_xxx",
  "name": "Plano Premium",
  "prices": [
    {
      "priceId": "price_xxx",
      "amount": 99.9,
      "checkoutUrl": "https://app.validapay.com.br/pagamento/pl_xxx"
    }
  ]
}
```

### Resposta 400 — 400

```json
{
    "error": {
        "message": "O campo name é obrigatório",
        "code": "INVALID_PRODUCT_DATA",
        "details": null,
        "timestamp": "2026-07-14T21:39:36.322Z"
    }
}
```

---
Página: https://docs.validapay.com.br/documentacao-validapay2/post-criar-produto
Contrato OpenAPI: https://docs.validapay.com.br/openapi.json