Skip to main content
POST
Criar assinatura
Assina um cliente em um plano. Crie o plano primeiro. Se não houver trial, a primeira cobrança acontece neste request. Com trial, a assinatura entra em TRIAL e ninguém é cobrado ainda. O limite é 20 requisições por minuto. Se passar disso, a API responde 429. Cada transaction_idempotency_id precisa ser único por operação. Use o mesmo valor só em retries idempotentes dessa operação. Os campos da resposta vêm em snake_case (subscription_id, subscription_status, …). Em trial, trial_unit só aceita DAY.

Método de pagamento

Use credit_card ou pix em payment_methods. Para PIX, envie pix_type em minúsculo: immediate (padrão) ou automatic. scheduled não é aceito. A resposta devolve pix_type no mesmo formato. Se for PIX sem trial, a resposta traz pix.qrcode. A assinatura fica PENDING até o cliente pagar. ATENÇÃO: envie dados de cartão só do seu backend.

Cliente

Envie o cliente de um jeito só: customer_id ou o bloco customer. Se mandar os dois, ou nenhum, a API responde 400. Você encontra o customer_id em:

Cliente já cadastrado

Se o customer_id não existir na sua conta, a API responde 404 / UVV154225. NOTA: com customer_id, a API não olha nome, e-mail, telefone nem documento. Por isso UVV154640 e UVV154718 não aparecem. O cadastro também fica como está.

Idempotência

Se você repetir a chamada, envie o mesmo payload. Isso inclui o jeito de identificar o cliente.

Endereço em Pix Automático

O endereço no bloco customer é opcional. Se enviar address, preencha todos os campos: zip_code, street, street_number, neighborhood, city, state e country. Se faltar algum, a API responde 400. Pix Automático (pix_type: automatic) precisa de endereço completo. Sem isso, a API responde 422 / UVV154361 e a assinatura não é criada. ATENÇÃO: sem endereço, Pix Automático não roda. Cadastre o endereço antes, ou envie customer com address. PIX imediato e cartão não pedem endereço.

Dados do cliente no bloco customer

external_customer_id e documento (número e tipo) são únicos na sua conta.
  • mesmo external_customer_id com nome, e-mail, telefone ou documento diferente → 422 / UVV154640;
  • mesmo documento com outro external_customer_id422 / UVV154718.

Sucesso (201)

No 201, você vê como ficou a assinatura, a fatura e a cobrança. Vale para cartão pago, trial e PIX esperando pagamento. Exemplo de PIX sem trial:

Recusa na primeira cobrança (422 / UVV154147)

Mesmo com recusa, a assinatura existe (PAST_DUE, fatura open). A API responde 422, não 201.
transaction_id só vem se a tentativa recusada gerou um id. customer_id vem se a assinatura foi criada. Guarde esse valor. Em um retry idempotente, repita a mesma forma de identificação do cliente usada no request original. Se o request original usou customer, envie customer de novo. Se usou customer_id, envie o mesmo customer_id. Isso mantém o payload idêntico. Para uma nova operação, use outro transaction_idempotency_id. Nesse caso, a API trata o request como uma nova criação. Se o mesmo cliente já tiver uma assinatura nesse plano, a API pode responder 409 / UVV154158. Estes códigos não trazem ids: UVV154817, UVV154293, UVV154225, UVV154640, UVV154718. Para repetir a cobrança da mesma assinatura, reenvie o mesmo POST, com o mesmo transaction_idempotency_id e o mesmo payload. A API não abre outra assinatura. Se a fatura ainda estiver open, ela tenta cobrar de novo.

Erros

O code tem o formato UVV154 mais 3 dígitos. Use esse valor para tratar o erro no seu sistema. Corpo padrão:

Authorizations

client-id
string
header
required
client-secret
string
header
required

Headers

client-id
string
required

ID público da credencial do merchant

client-secret
string
required

Secret da credencial do merchant

Body

application/json
subscription_plan_id
string<uuid>
required

UUID de um plano ACTIVE criado antes via POST /v1/subscriptions/plan. Define valor, moeda e cadência da assinatura.

grace_period_days
integer
required

Dias de tolerância após falha de cobrança antes do cancelamento terminal.

Required range: x >= 0
Example:

3

customer_id
string<uuid>
required

UUID de um cliente já existente na organização. Use no lugar de customer para reaproveitar o cliente sem reenviar os dados. Envie customer_id ou customer, nunca os dois.

payment_methods
object
required

Método de pagamento (credit_card com PAN ou pix).

transaction_idempotency_id
string
required

Chave de idempotência da criação (scope subscription_create)

Example:

"sub-create-0001"

trial_duration
integer | null

Duração do trial desta assinatura. Sobrescreve o trial padrão do plano quando informado.

Required range: x >= 0
trial_unit
enum<string> | null

Unidade do trial desta assinatura. Apenas DAY é aceito.

Available options:
DAY
customer
object

Dados do cliente. Reaproveitado por external_customer_id quando já existir. Envie customer_id ou customer, nunca os dois. Endereço completo é exigido apenas em pix_type: automatic, que responde 422 (UVV154069) sem ele.

Response

Assinatura criada. Sem trial, a primeira cobranca e sincrona: cartao pago → ACTIVE; PIX aguardando pagamento → PENDING com pix.qrcode; trial → TRIAL sem cobranca. Decline de negocio na cobranca sync responde 422 (UVV154147), nao 201.

subscription_id
string<uuid>

Identificador da assinatura criada.

customer_id
string<uuid>

Identificador do cliente vinculado.

invoice_id
string<uuid>

Identificador da primeira invoice.

subscription_status
enum<string>

Status da assinatura após o create (ACTIVE se paid; PENDING se PIX waiting_payment; PAST_DUE se decline; TRIAL se trial).

Available options:
ACTIVE,
PENDING,
TRIAL,
PAST_DUE,
CANCELLED
Example:

"ACTIVE"

invoice_status
string | null

Status da invoice após a cobrança sync (ou open no trial/PIX pendente).

charge_status
enum<string> | null

Status da tentativa de cobrança. Null no trial (sem cobrança no create). pending para PIX aguardando pagamento.

Available options:
pending,
succeeded,
failed
transaction_id
string<uuid> | null

ID da transação quando a cobrança gerou pagamento.

failure_code
string | null

Categoria pública de recusa em decline (ex.: issuer_declined). Null quando paid/trial/PIX pendente.

failure_message
string | null

Rótulo público da recusa. Null quando paid/trial/PIX pendente.

pix
object | null

Presente quando a primeira cobrança PIX foi gerada e aguarda pagamento.