Skip to main content
POST
Criar plano
POST /plans Faz parte do recurso Planos e Preços — o item, o preço versionado e os status estão lá. Cria a oferta inteira numa chamada: o plano, cada entrada de items com o seu preço, e a publicação. A resposta tem a mesma forma de GET /plans/{id} — o plano com os itens e o preço em vigor de cada um.
Não existe rascunho por aqui. O plano nasce active, aceitando assinaturas. O status draft existe para o painel, onde uma tela precisa salvar um plano pela metade — uma chamada HTTP monta o objeto inteiro antes de enviar, e exigir uma publicação depois deixaria um plano que existe sem funcionar.
Ao menos um item precisa ser kind: "recurring". Um plano só de activation não sustenta assinatura: a adesão cobra uma vez e não recorre, então não haveria o que faturar no segundo ciclo. A requisição responde 400 apontando items.
A key não se repete dentro do plano. É por ela que a assinatura identifica o item, e duas iguais tornariam a referência ambígua. A resposta 400 aponta o índice do segundo item que a usou.
Adesão e período de teste se excluem. Enviar trialSpec num plano cujos itens são todos activation responde 400: diferir a única cobrança que a adesão tem não significa nada.
A cadência e o teste são do plano, não de cada item. Por isso recurrence e trialSpec vão na raiz, e o preço de cada item os herda — a assinatura tem um ciclo só, e dois itens com cadências diferentes não teriam quando cobrar juntos. A exceção é o item activation, que nunca recebe o teste mesmo com trialSpec preenchido na raiz.
O code é seu identificador do plano, e é único na conta. Repetir um code já usado responde 409 — inclusive se o plano anterior estiver arquivado, porque arquivar não libera o código.
A validação roda sobre o corpo inteiro antes da primeira gravação. Um erro no terceiro item não deixa os dois primeiros criados: ou o plano nasce completo, ou nada é gravado.

Exemplo

Resposta 201
O exemplo acima está abreviado. A resposta completa traz todos os campos do item e do preço — o playground ao lado mostra o corpo inteiro.

Authorizations

x-api-key
string
header
required

API Key da Credential (gerada no Backoffice)

Headers

Idempotency-Key
string

Chave única para garantir idempotência da requisição

Body

application/json
code
string
required

Identificador único do plano na sua conta. Apenas letras minúsculas, números, hífen e underscore.

Required string length: 1 - 100
Pattern: ^[a-z0-9-_]+$
name
string
required

Nome do plano.

Required string length: 1 - 255
recurrence
object
required

Cadência da cobrança: a cada quantas unidades (interval), qual unidade (unit), a âncora do ciclo e se cobra no início ou no fim. Vale para todos os itens recorrentes.

items
object[]
required

Itens do plano, cada um com seu preço. Ao menos um deve ser kind: "recurring".

Minimum array length: 1
description
string

Descrição livre. Opcional.

Maximum string length: 1000
metadata
object

Objeto livre de chave/valor para dados seus. Devolvido nas respostas e nos webhooks.

trialSpec
object

Período de teste padrão da oferta. A assinatura pode sobrescrevê-lo.

Response

Plano criado, com os itens e o preço de cada um

id
string

Identificador único do registro.

code
string

Código de identificação do recurso (ex.: código do plano ou do contrato).

name
string

Nome de exibição do plano ou do componente.

description
string | null

Descrição do item (item do plano ou linha da fatura).

status
string

Status atual do registro (assinatura, fatura, plano ou slip de pagamento).

recurrence
object | null

Cadência da cobrança: a cada quantas unidades (interval), qual unidade (unit), a âncora do ciclo e se cobra no início ou no fim. Vale para todos os itens recorrentes.

trialSpec
object | null

Período de teste padrão da oferta. A assinatura pode sobrescrevê-lo.

metadata
object

Metadados livres (pares chave-valor) para uso do integrador; não afeta o processamento.

createdAt
string<date-time>

Data e hora de criação do registro (ISO 8601).

updatedAt
string<date-time>

Data e hora da última atualização do registro (ISO 8601).

items
object[]

Itens do plano, cada um com o preço em vigor.