Criar oferta de plano
Cria uma oferta recorrente para um plano já existente do seu catálogo. cycle é
obrigatório — WEEKLY, MONTHLY ou YEARLY (DAILY não é aceito pela API pública).
Isso cria só a oferta (o preço recorrente) do plano — não cria uma assinatura de
verdade para um cliente. Para assinar um cliente de fato nesta oferta, use
POST /plans/offer/{id}/subscribe.
Sem campo de autorização: o portal autentica por você com a sua chave de Homologação e as requisições rodam só no ambiente de testes.
Token de acesso devolvido por POST /auth/token. Envie como "Authorization: Bearer ". Vale 24 horas.
In: header
Path Parameters
uuidPreço da oferta em centavos, número inteiro — a mesma unidade de offer.value. 4990 = R$ 49,90. Valor com casas decimais retorna 400.
0 <= value"WEEKLY" | "MONTHLY" | "YEARLY"A cada quantos ciclos a cobrança se repete (ex.: cycle=MONTHLY + cycle_interval=3 = trimestral).
1 <= valuetruePIX. Mínimo de R$ 5,00. Os três meios começam ligados, mas cada um só fica ligado se o preço atinge o mínimo dele: PIX R$ 5,00, cartão R$ 5,00 e boleto R$ 10,00. Abaixo do mínimo, o meio é desligado ao salvar, mesmo enviando true. Envie false para desligar um meio acima do mínimo. Na edição sem price, só os meios enviados são recalculados; com price, os três são recalculados.
trueCartão de crédito. Mínimo de R$ 5,00. Os três meios começam ligados, mas cada um só fica ligado se o preço atinge o mínimo dele: PIX R$ 5,00, cartão R$ 5,00 e boleto R$ 10,00. Abaixo do mínimo, o meio é desligado ao salvar, mesmo enviando true. Envie false para desligar um meio acima do mínimo. Na edição sem price, só os meios enviados são recalculados; com price, os três são recalculados.
trueBoleto. Mínimo de R$ 10,00. Os três meios começam ligados, mas cada um só fica ligado se o preço atinge o mínimo dele: PIX R$ 5,00, cartão R$ 5,00 e boleto R$ 10,00. Abaixo do mínimo, o meio é desligado ao salvar, mesmo enviando true. Envie false para desligar um meio acima do mínimo. Na edição sem price, só os meios enviados são recalculados; com price, os três são recalculados.
trueOfertas de plano não podem ser parceladas no cartão de crédito — envie 1 ou omita o campo (default). Valores acima de 1 retornam 400.
Response Body
curl -X POST "https://pagpolar-api.creativecode.dev.br/v1/plans/497f6eca-6276-4993-bfeb-53cbbbba6f08/offers" \ -H "Content-Type: application/json" \ -d '{ "price": 9790, "cycle": "MONTHLY", "title": "Plano Mensal", "is_enabled_pix": true, "is_enabled_credit_card": true, "is_enabled_billet": false }'{
"data": {
"id": "b9c0d1e2-f3a4-4b5c-6d7e-8f9a0b1c2d3e",
"identifier": "PPP1234567890",
"title": "Plano Mensal",
"price": 97.9,
"is_active": true,
"is_default": true,
"product_id": "a8b9c0d1-e2f3-4a4b-5c6d-7e8f9a0b1c2d",
"payment_methods": {
"pix": true,
"credit_card": true,
"billet": false
},
"max_credit_card_installments": 1,
"cycle": "MONTHLY",
"cycle_interval": 1,
"cycle_interval_limit": null,
"allow_purchase_quantity": false,
"purchase_quantity_limit": null,
"purchase_quantity_min": 1,
"expires_at": null,
"created_at": "2026-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "invalid_request",
"message": "string",
"request_id": "string"
}
}{
"error": {
"code": "invalid_request",
"message": "string",
"request_id": "string"
}
}{
"error": {
"code": "invalid_request",
"message": "string",
"request_id": "string"
}
}{
"error": {
"code": "invalid_request",
"message": "string",
"request_id": "string"
}
}{
"error": {
"code": "invalid_request",
"message": "string",
"request_id": "string"
}
}Planos
Crie planos de assinatura e as ofertas de cada plano.
Criar plano POST
Cria um plano de assinatura — internamente é um produto com `type=SUBSCRIPTION`, por isso a resposta usa o mesmo formato de `Product`. O plano é criado sem imagem e sem categoria — ambos podem ser preenchidos depois pelo painel. `warranty_time` também não é aceito no corpo: é resolvido automaticamente a partir da configuração mínima de garantia da sua conta. Este endpoint só cria o plano. Para vender, crie também uma oferta recorrente para ele — consulte `POST /plans/{id}/offers`.