Skip to main content

Visão geral

Uma assinatura cobra o cliente automaticamente a cada ciclo. Cada ciclo gera uma fatura, com os próprios pagamentos e status. Todos os valores são em centavos (R$ 100,00 = 10000). O id da assinatura tem o formato sub_....

Intervalo de cobrança

O ciclo é definido por interval × interval_count: O intervalo total pode ter no máximo 365 dias. Acima disso, a resposta é 422 com param: "interval_count".
Não existe mês de calendário. Uma assinatura “mensal” é interval: "day" com interval_count: 30, e a data de cobrança desliza em relação ao calendário (30 dias nem sempre caem no mesmo dia do mês).

Campos da assinatura

Cliente (customer)

Itens (items)

Pagamento (payment)

¹ Obrigatório quando payment.type é card e payment.card.token não é enviado.

Descontos e acréscimos

Use discounts e increments para alterar o valor de faturas específicas:
Desconto de R$ 10,00 na primeira fatura e acréscimo de 10% na segunda
Descontos e acréscimos não podem ser combinados com split. Enviar os dois retorna 422 com param: "split".

Split

Divida o valor de cada fatura entre recebedores da sua conta com a lista split (de 1 a 10 recebedores): As regras são validadas na criação, e não só na primeira cobrança:
  • A soma dos amount do split deve ser igual ao total dos itens.
  • Exatamente um recebedor deve ter charge_processing_fee: true.
  • Pelo menos um recebedor deve ter charge_remainder_fee: true.
  • Pelo menos um recebedor deve ter liable: true.
  • O receiver_code não pode se repetir, deve pertencer à sua conta e estar apto a receber.
Split entre dois recebedores

Análise de fraude

A primeira cobrança passa pela análise de fraude:
  • Aprovada: a cobrança segue normalmente.
  • Verificação necessária: a assinatura fica incomplete e a fatura fica requires_action com next_action.type = "otp_confirmation". Nada é cobrado até o comprador informar o código em Confirmar código de verificação da fatura.
  • Negada: a resposta é 402, a assinatura fica incomplete_expired e latest_invoice.failure_reason.code é fraud_suspected.
Para pular a análise, envie fraud_analysis:
O reason é obrigatório quando skip é true e aceita upsell, one_click, trusted_customer ou external_analysis. Pular a análise exige permissão da conta; sem ela, a resposta é 422 (fraud_bypass_not_allowed).

Status da assinatura


Ciclo de vida


Exemplo: assinatura quinzenal com cartão

Request
Resposta (HTTP 201)
201 não significa pago. A primeira fatura acima está em processing. Quando a cobrança é confirmada, a assinatura passa a active, invoices_paid passa a 1 e latest_invoice.status passa a paid. Acompanhe pelos webhooks.
O payment_method.card.token é o id do cartão salvo. Use-o para alterar o meio de pagamento ou pagar uma fatura sem reenviar os dados do cartão.

Campos da resposta


Webhooks

Assinaturas criadas pela v2 enviam os eventos no formato v2. Assinaturas criadas pela v1 continuam no formato v1.
  • Eventos de assinatura: subscription.canceled, subscription.delayed, subscription.regularized, subscription.suspended e subscription.completed.
  • Eventos de fatura: invoice.created, invoice.paid e invoice.failed.
Não existe subscription.created: a primeira fatura já vem na resposta do POST. O invoice.created é enviado apenas nas renovações. Uma fatura paga gera invoice.paid, e não charge.paid.

Erros específicos

Veja o catálogo completo em Erros.