Autenticação: Público (sem autenticação)
- Valida a identidade do assinante e os dados de pagamento.
- Se
save_cardfortruee o método forcredit_card, tokeniza o cartão para que ele possa ser reutilizado nas cobranças recorrentes. - Cria um assinante vinculado ao plano com
status='pending'enext_billing_date=now. - Cria o primeiro pagamento da assinatura no valor do plano e tenta cobrá-lo imediatamente através da conta do vendedor. Em caso de sucesso, o assinante e o pagamento passam para
paidenext_billing_dateavança conforme afrequencydo plano.
201 com o assinante, o pagamento e — para PIX/boleto — as instruções de pagamento.
Pré-requisitos
- O plano precisa existir (
GET /subscriptions/plan/{plan_id}/o retorna). - O plano precisa pertencer a uma conta de vendedor ativa na plataforma — caso contrário a chamada falhará.
- O
typeenviado deve ser um dos métodos listados empayment_methodsdo plano. Enviarpixpara um plano que aceita apenas cartão retorna400.
Parâmetros de rota
string
required
UUID do plano de assinatura ao qual se está aderindo.
Corpo da requisição
Campos de identidade do assinante são sempre obrigatórios. Campos de pagamento dependem dotype.
Campos do assinante
string
required
Nome completo do assinante. Deve ter pelo menos duas palavras (nome + sobrenome).
string
required
E-mail do assinante. Validado como endereço de e-mail real.
string
required
Número de telefone, máx. 15 caracteres. Caracteres não numéricos são removidos no servidor. Validado contra
country_code.string
default:"+55"
Prefixo de país E.164, formato
+\d{1,4}. Padrão +55 (Brasil).string
CPF (11 dígitos) ou CNPJ (14 dígitos). Opcional para
credit_card e pix, obrigatório para boleto. Caracteres de formatação são removidos.Campos de pagamento
string
required
Um dos valores
credit_card, boleto, pix. Precisa estar presente em payment_methods do plano.object
Obrigatório quando
type=credit_card. Campos:number(string, máx. 16) — número do cartão.cvv(string, máx. 4).name(string, máx. 255) — nome do portador.expirationMonth(string, tamanho 2) — ex.:"08".expirationYear(string, tamanho 4) — ex.:"2028".id(string, opcional) — se você já tem um UUID de cartão tokenizado, envieidno lugar dos campos brutos.
integer
Obrigatório para
credit_card. Inteiro entre 1 e 21. Observação: assinaturas são cobradas com max_installments=1 independentemente desse valor — veja o fluxo de assinaturas para o racional.object
Obrigatório quando
type=boleto. Campos do endereço:line1,line2,neighborhood,city— strings, máx. 255.state— UF de 2 caracteres (ex.:"SP").postalCode— CEP de 8 dígitos, apenas números.
boolean
default:"false"
Quando
true e type=credit_card, tokeniza o cartão antes de cobrar e armazena o token no assinante. O token é reutilizado em todas as cobranças recorrentes seguintes.Resposta
201 Created em caso de sucesso.
object
Resumo público do assinante — veja Obter contexto público do assinante para o formato completo. Inclui
id, name, email, phone_number, country_code, taxpayer_id, status, next_billing_date, subscribed_at e saved_card quando aplicável.object
Resumo do primeiro pagamento da assinatura:
id— UUID do pagamento.status—paid,pendingoufailed.payment_method— espelha otypeenviado na requisição.pix— presente apenas quandotype=pix; contém os dados do QR Code.boleto— presente apenas quandotype=boleto; contém a URL e o código de barras do boleto.
Inconsistência conhecida do campo
amount: o valor é exposto como string em centavos (ex.: "4990" = R$ 49,90), diferente da convenção em centavos inteiros adotada em outros endpoints. Trate-o como string e converta para inteiro antes de operar aritmeticamente.