Skip to main content
POST
Criar assinatura
201 não significa pago. Sem start_at, a primeira fatura é cobrada na criação e volta em latest_invoice. Com cartão, ela costuma ficar em processing até a confirmação; com PIX, fica em requires_action com o QR Code em latest_invoice.next_action. Se a primeira fatura for recusada, a resposta é 402 com a assinatura em incomplete_expired e o motivo em latest_invoice.failure_reason.
Todos os valores são em centavos (10000 = R$ 100,00). O intervalo é interval (day ou week) × interval_count, com no máximo 365 dias. Não existe mês de calendário: uma assinatura “mensal” é day × 30 e a data de cobrança desliza em relação ao calendário. Veja Intervalo de cobrança.
Com start_at (a partir de amanhã), a assinatura nasce scheduled e nada é cobrado na criação.
Para usar um cartão salvo, envie payment.card.token com o id retornado por POST /v2/cards. Sem token, envie number, holder_name, exp_month, exp_year e cvc.
O campo minimum_price é aceito e devolvido, mas não é aplicado na cobrança das faturas.
Esta rota passa pelo bloqueio de clientes (403 customer_blocked) e pelo limite por comprador (429 rate_limit_exceeded). Envie o header Idempotency-Key para reenviar com segurança. Veja Idempotência e limites.

Authorizations

Authorization
string
header
required

Chave de API (secret key) da conta, no formato sk_live_... (produção) ou sk_test_... (Dev mode). Envie no header Authorization: Bearer <chave>. Autentica todas as rotas da API v2 e as rotas de Análise de Fraude. A chave identifica a conta, então a API v2 não usa o header account. Uma chave só é aceita no ambiente em que foi criada. Gere a sua no dashboard em Configurações → Chaves de API.

Headers

Idempotency-Key
string

Chave de idempotência opcional e recomendada. Tem até 128 caracteres e vale por 24 horas, por conta. A mesma chave com o mesmo corpo devolve a resposta original (mesmo status e mesmo corpo), sem processar de novo. Só respostas 2xx ficam guardadas: depois de um erro, a mesma chave pode ser reutilizada. A mesma chave com um corpo diferente retorna 422 (idempotency_key_conflict), uma requisição original ainda em andamento retorna 409 (idempotency_key_in_use) e uma chave com mais de 128 caracteres retorna 400 (idempotency_key_invalid).

Maximum string length: 128
Example:

"pedido-1024-tentativa-1"

Body

application/json
interval
enum<string>
required

Unidade do intervalo entre cobranças. Não existe mês de calendário: para uma cobrança mensal, use day com interval_count: 30 — a data desliza em relação ao dia do mês.

Available options:
day,
week
Example:

"week"

interval_count
integer
required

Quantidade de unidades entre cobranças. O intervalo total não pode passar de 365 dias

Required range: x >= 1
Example:

2

customer
object
required

Dados do comprador da assinatura

items
object[]
required
Minimum array length: 1
payment
object
required
code
string | null

Código da assinatura na sua integração

Maximum string length: 255
Example:

"plano-anual-123"

description
string | null
Maximum string length: 255
Example:

"Plano de teste"

currency
enum<string>
default:BRL
Available options:
BRL,
USD
international
boolean
billing_type
enum<string>
default:prepaid
Available options:
prepaid
start_at
string<date> | null

Data da primeira cobrança, a partir de amanhã. Sem start_at, a primeira fatura é cobrada na criação.

Example:

"2026-09-20"

max_invoices
integer | null

Número máximo de faturas. Ao pagar a última, a assinatura fica completed

Required range: x >= 1
Example:

12

minimum_price
integer | null

Aceito e devolvido pela API, mas ainda não é aplicado na cobrança

Required range: x >= 0
statement_descriptor
string | null

Texto na fatura do cartão

Maximum string length: 50
metadata
object | null
discounts
object[] | null
increments
object[] | null
split
object[]

Divisão de cada fatura entre recebedores. A soma de split[].amount precisa ser igual ao total dos itens. Exatamente um recebedor com options.charge_processing_fee: true, ao menos um com options.charge_remainder_fee: true e ao menos um com options.liable: true. Cada receiver_code (até 32 caracteres) precisa pertencer à conta e estar ativo ou com ativação pendente. Não pode ser combinado com discounts ou increments.

Required array length: 1 - 10 elements
fraud_analysis
object

Pula a análise de fraude. Exige permissão da conta — sem ela, a requisição retorna 422 (fraud_bypass_not_allowed). Todo pulo precisa de um motivo, que fica registrado.

Response

Assinatura criada. Com cobrança imediata, o status fica incomplete até a primeira fatura ser paga (a confirmação chega por webhook invoice.paid). Com start_at futuro, fica scheduled.

Assinatura. incomplete: a primeira fatura ainda não foi paga. incomplete_expired: a primeira fatura foi recusada. scheduled: a primeira cobrança está agendada (start_at). active: em dia. past_due: fatura em atraso. suspended: suspensa. canceled: cancelada. completed: todas as faturas previstas foram pagas.

id
string
Example:

"sub_4Hn8Qw2Rt6Yp1Zx3"

object
enum<string>
Available options:
subscription
code
string | null
Example:

"plano-anual-123"

status
enum<string>
Available options:
incomplete,
incomplete_expired,
scheduled,
active,
past_due,
suspended,
canceled,
completed
currency
string
Example:

"brl"

description
string | null
interval
enum<string>
Available options:
day,
week
interval_count
integer
billing_type
enum<string>
Available options:
prepaid
amount
integer

Total dos itens, em centavos, sem descontos ou acréscimos

items
object[]
discounts
object[]
increments
object[]
max_invoices
integer | null
invoices_paid
integer

Quantidade de faturas pagas

minimum_price
integer | null

Aceito e devolvido pela API, mas ainda não é aplicado na cobrança

payment_method
object
statement_descriptor
string | null
start_at
string | null
next_billing_at
string | null
created_at
string
customer
object
latest_invoice
object | null

Fatura de um ciclo da assinatura. processing: em processamento. requires_action: PIX aguardando pagamento ou verificação por código (veja next_action). paid: paga. failed: recusada (veja failure_reason). canceled: cancelada. refunded e partially_refunded: estornada. chargeback: contestada.

metadata
object