---
agentTools:
  projectIndex: https://docs.ninepay.com.br/llms.txt
  projectSearch: https://docs.ninepay.com.br/agentSearch?query=term1%20term2
---

# Criar plano e assinatura recorrente

Crie um plano mensal, assine um cliente nele e mande o cliente para o checkout ativar a assinatura.

## Crie o plano

> Linhas destacadas: 3-15

O plano define valor (em centavos), periodicidade e métodos aceitos. Para cobrar todo mês, use `interval: 1` e `interval_type: "months"` (também aceita `days` e `years`). No sandbox, use `dunning_id: 1`, a régua de cobrança padrão.

Você também pode criar o plano pelo dashboard e usar só o `id` dele.

## Assine o cliente

> Linhas destacadas: 17-25

Toda assinatura liga um cliente a um plano. Se o cliente ainda não existe, crie antes com `POST /customers` (veja [Criar um cliente e cobrar no PIX](/recipes/criar-cliente-e-cobrar-no-pix)). Para aplicar desconto, envie os códigos de cupom em `coupon_codes`.

## Ative no checkout

> Linhas destacadas: 27-28

Com o `uuid` da assinatura, redirecione o cliente para a página de ativação. Ele só preenche os dados de pagamento. Em produção, o endereço é `https://checkout.ninepay.com.br/subscription/<uuid>/activate`.

Para cobrar dentro da sua própria página, veja o [checkout embutido](/docs/checkout-embutido). As mudanças da assinatura chegam pelo webhook `subscription.updated`.

## Código

```bash cURL
BASE_URL=https://api.sandbox.cefispay.com.br/api/v1

# 1. Crie o plano: R$ 49,90 por mês
PLAN_ID=$(curl -s -X POST "$BASE_URL/plan" \
  -H "Authorization: Bearer $NINEPAY_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Plano Mensal",
    "methods": ["credit", "pix", "billet"],
    "value": 4990,
    "interval": 1,
    "interval_type": "months",
    "dunning_id": 1
  }' | jq -r '.id')

# 2. Assine o plano para um cliente já cadastrado
SUBSCRIPTION_UUID=$(curl -s -X POST "$BASE_URL/subscriptions" \
  -H "Authorization: Bearer $NINEPAY_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d "{
    \"customer\": { \"id\": $CUSTOMER_ID },
    \"plan\": { \"id\": $PLAN_ID }
  }" | jq -r '.subscription.uuid')

# 3. Mande o cliente para o checkout ativar a assinatura
echo "https://app.sandbox.cefispay.com.br/subscription/$SUBSCRIPTION_UUID/activate"
```

## Resposta

```json
{
  "customer": {
    "id": 315968,
    "name": "Maria Souza",
    "email": "maria@exemplo.com.br"
  },
  "subscription": {
    "id": 205465,
    "uuid": "8b2cad02-06f0-42be-84ac-101b23a1bb0d",
    "amount": 4990,
    "plan_id": 413
  }
}
```
