Skip to main content
Assinaturas representam recorrências vinculadas a um cliente e a um produto. Use esse fluxo quando sua operação precisa cobrar o cliente de forma recorrente, com regras de produto, vencimento e pagamento associadas. Na Veepag, existem dois caminhos principais para criar assinaturas. A versão v1 cria a assinatura e já tenta o pagamento; a versão v2 cria a assinatura e a cobrança, mas deixa o pagamento para outro momento.

Criar assinatura v1

POST /v1/subscription cria a assinatura, gera a cobrança e tenta o pagamento imediato. Esse fluxo é útil quando você já tem os dados necessários para iniciar a recorrência e cobrar o cliente no mesmo momento. Campos obrigatórios confirmados:
Use metadata para guardar identificadores da sua aplicação, como pedido, contrato ou plano interno. Isso facilita conciliação e suporte depois.

Resposta da criação v1

A resposta do v1 confirma a criação da assinatura e também mostra o resultado da tentativa de pagamento dentro de charge. Isso é importante: o endpoint pode retornar 201 porque a assinatura foi criada, mas o pagamento pode ter sido aprovado ou recusado. Para saber o resultado financeiro da tentativa, leia os campos de charge.
Para confirmar se o pagamento foi aprovado, use charge.statusCode, charge.status e charge.message. O HTTP 201 indica que a criação da assinatura foi processada; ele não significa, sozinho, que o pagamento foi aprovado.

Criar assinatura v2

POST /v2/subscription cria a assinatura e a cobrança, mas não tenta o pagamento imediato. Esse caminho é melhor quando o cliente já existe na Veepag e você quer controlar o momento do pagamento separadamente. Principais diferenças:

Resposta da criação v2

Como o v2 não tenta pagamento imediato, a resposta não traz sucesso ou falha de transação. Ela retorna os objetos criados para você seguir o fluxo no seu próprio momento.
Use o v2 quando a sua integração já tem um clientId, quer definir uma data de vencimento em dueDate e prefere conduzir o pagamento depois.

Cancelar assinatura

PUT /v1/subscription/cancel cancela uma assinatura. Use esse endpoint quando o cliente encerrou a recorrência ou quando sua operação precisa interromper cobranças futuras.
Resposta confirmada:

Criação em lote

POST /v1/subscription/list recebe companyId e list. O processamento é assíncrono por fila, com blocos de 3.000 itens e delay de 15 minutos entre blocos.
O schema dos itens de list não está tipado na codebase (z.any()). Antes de usar esse endpoint em produção, confirme o layout esperado com o time Veepag.
Para lotes grandes, recomendamos validar primeiro com uma amostra pequena no sandbox. Assim você confirma o formato dos dados e evita retrabalho em massa.