Pular para o conteúdo principal
POST
/
credit-card
/
v1
/
subscription
Criar Assinatura
curl --request POST \
  --url https://api-gateway.firebanking.dev/credit-card/v1/subscription \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "basicValue": {
    "type": "MONTHLY",
    "valuePerMonth": 30
  },
  "payment": {
    "method": "CREDIT_CARD",
    "card": {
      "name": "JOSE DAS NEVES TEST",
      "number": "5383638854408981",
      "expiration": "12/24",
      "securityCode": "220"
    },
    "cardToken": {
      "cardToken": "550e8400-e29b-41d4-a716-446655440000",
      "cvv": "220"
    }
  },
  "buyer": {
    "name": "João da Silva Teste",
    "document": "11144477735",
    "email": "[email protected]",
    "phone": "11999999999",
    "countryCode": "+55",
    "address": {
      "country": "BR",
      "state": "SP",
      "city": "São Paulo",
      "district": "Centro",
      "street": "Rua das Flores",
      "zipCode": "01000000",
      "number": "220",
      "complement": "Apto 45"
    }
  },
  "buyerUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "startDate": "2024-02-01",
  "externalId": "subscription-ext-456",
  "description": "Assinatura mensal premium",
  "metadata": {},
  "callbackUrl": "<string>"
}
'
{
  "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "status": "<string>",
  "planUuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "basicValue": {
    "type": "MONTHLY",
    "valuePerMonth": 30
  },
  "startDate": "2023-12-25",
  "nextBillingDate": "2023-12-25",
  "createdAt": "2023-11-07T05:31:56Z"
}
Criar uma nova assinatura recorrente para um cliente. Assinaturas suportam múltiplas frequências de cobrança e podem incluir taxas adicionais como encargos de configuração.

Frequências de Cobrança

Mensal

Cobrar todo mês na mesma data

Trimestral

Cobrar a cada 3 meses na mesma data

Anual

Cobrar uma vez por ano na mesma data

Métodos de Pagamento

Você pode criar assinaturas usando:
  • Dados do cartão - Para novos clientes
  • Token de cartão - Para clientes existentes com cartões salvos
  • Comprador existente - Referenciar comprador por UUID

Exemplo de Requisição (Novo Cliente com Cartão)

Exemplo de Requisição
{
  "basicValue": {
    "type": "MONTHLY",
    "valuePerMonth": 30
  },
  "payment": {
    "method": "CREDIT_CARD",
    "card": {
      "name": "Ana Costa",
      "number": "5186882549895601",
      "expiration": "12/2025",
      "securityCode": "220"
    }
  },
  "buyer": {
    "name": "Ana Costa",
    "document": "25201246010",
    "email": "[email protected]",
    "phone": "11999998888",
    "countryCode": "+55",
    "address": {
      "country": "BR",
      "state": "SP",
      "city": "São Paulo",
      "district": "Vila Madalena",
      "street": "Rua Harmonia",
      "zipCode": "05435000",
      "number": "789",
      "complement": "Casa 2"
    }
  },
  "startDate": "2024-02-01",
  "externalId": "subscription-ext-456",
  "description": "Assinatura mensal premium",
  "metadata": {
    "customerIp": "192.168.1.200",
    "source": "website",
    "campaign": "premium-2024"
  },
  "callbackUrl": "https://example.com/webhook/subscription"
}

Exemplo de Requisição (Cliente Existente com Token)

Requisição com Token
{
  "basicValue": {
    "type": "QUARTERLY",
    "valuePerMonth": 50
  },
  "payment": {
    "method": "CREDIT_CARD",
    "cardToken": {
      "cardToken": "card-token-uuid-789",
      "cvv": "789"
    }
  },
  "buyerUuid": "buyer-uuid-existing-123",
  "startDate": "2024-03-01",
  "externalId": "subscription-token-789",
  "description": "Assinatura trimestral empresarial"
}

Exemplo de Resposta

Resposta
{
  "uuid": "subscription-uuid-12345",
  "status": "active",
  "basicValue": {
    "type": "MONTHLY",
    "valuePerMonth": 30
  },
  "buyerUuid": "buyer-uuid-67890",
  "startDate": "2024-02-01",
  "nextBillingDate": "2024-02-01",
  "totalMonthlyValue": 30,
  "externalId": "subscription-ext-456",
  "description": "Assinatura mensal premium",
  "createdAt": "2024-01-15T14:30:00Z"
}

Valores da Assinatura

Valor Básico

O valor central da assinatura cobrado na frequência especificada.
basicValue.type
string
required
Frequência de cobrança: MONTHLY, QUARTERLY, ou ANNUALLY
basicValue.valuePerMonth
integer
required
Valor mensal em reais (sempre especificar mensal mesmo para trimestral/anual)

Lógica de Cobrança

Assinaturas Mensais

  • Básico: R$ 29,99/mês = valuePerMonth: 30
  • Total: R$ 29,99/mês

Assinaturas Trimestrais

  • Básico: R149,99acada3meses=valuePerMonth:50(cobradocomoR 149,99 a cada 3 meses = `valuePerMonth: 50` (cobrado como R 150,00)
  • Cobrança: Cobrado a cada 3 meses na data de início

Assinaturas Anuais

  • Básico: R999,99porano=valuePerMonth:84(cobradocomoR 999,99 por ano = `valuePerMonth: 84` (cobrado como R 1008,00)
  • Cobrança: Cobrado uma vez por ano na data de início
Para assinaturas trimestrais e anuais, o valor cobrado real é calculado como valuePerMonth * meses_do_período_de_cobrança.

Data de Início

startDate
string
Data quando a assinatura se torna ativa (formato YYYY-MM-DD)
  • Data futura: Assinatura inicia na data especificada
  • Hoje ou passado: Assinatura inicia imediatamente
  • Padrão: Se não fornecido, inicia imediatamente

Ciclo de Vida da Assinatura

  1. Criada - Assinatura é criada mas ainda não está ativa
  2. Ativa - Assinatura está rodando e cobrando normalmente
  3. Em Atraso - Pagamento falhou, tentando novamente conforme política de retry
  4. Cancelada - Assinatura foi cancelada pelo comerciante ou cliente
  5. Expirada - Assinatura atingiu sua data final ou máximo de tentativas de retry
A primeira tentativa de cobrança ocorre na startDate. Certifique-se de que o método de pagamento do cliente é válido e tem fundos suficientes.

Integração de Webhook

callbackUrl
string
URL para receber notificações de eventos da assinatura
Eventos de webhook incluem:
  • subscription.created
  • subscription.activated
  • subscription.payment.succeeded
  • subscription.payment.failed
  • subscription.cancelled

Melhores Práticas

  1. Testar cartões primeiro - Use tokenização de cartão para validar métodos de pagamento
  2. Preços claros - Seja transparente sobre todas as cobranças aos clientes
  3. Lidar com falhas - Implemente lógica de retry para pagamentos falhados
  4. Monitorar webhooks - Rastrear eventos de assinatura para inteligência de negócio
  5. Atualizar cobrança - Manter métodos de pagamento dos clientes atuais

Authorizations

x-api-key
string
header
required

Chave de API para autenticação

Body

application/json
basicValue
object
required
payment
object
required
buyer
object
buyerUuid
string<uuid>

UUID de comprador existente

startDate
string<date>

Data de início da assinatura

Example:

"2024-02-01"

externalId
string

ID de referência externa

Example:

"subscription-ext-456"

description
string

Descrição da assinatura

Example:

"Assinatura mensal premium"

metadata
object

Metadados adicionais

callbackUrl
string<uri>

URL de callback do webhook

Response

200 - application/json

Assinatura criada com sucesso

uuid
string<uuid>

UUID da assinatura

status
string

Status da assinatura

planUuid
string<uuid>

UUID do plano

basicValue
object
startDate
string<date>

Data de início

nextBillingDate
string<date>

Próxima data de cobrança

createdAt
string<date-time>

Timestamp de criação