Skip to main content
POST
/
api
/
v1
/
charges
/
subscriptions
Criar Assinatura
curl --request POST \
  --url https://zeus-sandbox.autorizou.dev/api/v1/charges/subscriptions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "description": "<string>",
  "code": "<string>",
  "mcc": "<string>",
  "notification_url": "<string>",
  "plan_id": "<string>",
  "interval": "<string>",
  "start_at": "<string>",
  "best_charge_day": 123,
  "trial_days": 123,
  "next_charge_amount": 123,
  "customer": {
    "customer.id": "<string>",
    "customer.name": "<string>",
    "customer.email": "<string>",
    "customer.documents": [
      {
        "customer.documents[].type": "<string>",
        "customer.documents[].value": "<string>"
      }
    ],
    "customer.phone": {
      "customer.phone.type": "<string>",
      "customer.phone.ddi": "<string>",
      "customer.phone.ddd": "<string>",
      "customer.phone.number": "<string>"
    },
    "customer.addresses": [
      {
        "customer.addresses[].type": "<string>",
        "customer.addresses[].postal_code": "<string>",
        "customer.addresses[].line_1": "<string>",
        "customer.addresses[].line_2": "<string>",
        "customer.addresses[].number": "<string>",
        "customer.addresses[].neighborhood": "<string>",
        "customer.addresses[].city": "<string>",
        "customer.addresses[].state": "<string>",
        "customer.addresses[].country": "<string>"
      }
    ]
  },
  "payment": {
    "payment.amount": 123,
    "payment.currency": "<string>",
    "payment.payment_method": "<string>",
    "payment.installments": 123,
    "payment.credit_card": {
      "payment.credit_card.id": "<string>",
      "payment.credit_card.statement_descriptor": "<string>",
      "payment.credit_card.capture": true,
      "payment.credit_card.processing_model": "<string>"
    },
    "payment.bank_slip": {
      "payment.bank_slip.due_at": "<string>"
    },
    "payment.pix": {
      "payment.pix.expires_at": "<string>"
    },
    "payment.pix_recurring": {
      "payment.pix_recurring.recurring_statement": "<string>",
      "payment.pix_recurring.recurring_amount": 123,
      "payment.pix_recurring.min_amount": 123,
      "payment.pix_recurring.retry_policy": true
    },
    "payment.google_pay": {
      "payment.google_pay.google_pay_token": "<string>",
      "payment.google_pay.statement_descriptor": "<string>",
      "payment.google_pay.capture": true,
      "payment.google_pay.capture_delay_hours": 123
    },
    "payment.split": [
      {
        "payment.split[].recipient_id": 123,
        "payment.split[].amount": 123,
        "payment.split[].type": "<string>",
        "payment.split[].allow_charge_processing_fee": true,
        "payment.split[].allow_charge_remainder_fee": true,
        "payment.split[].is_liable": true
      }
    ]
  },
  "items": [
    {
      "items[].name": "<string>",
      "items[].description": "<string>",
      "items[].quantity": 123,
      "items[].amount": 123
    }
  ]
}
'
{
  "message": "Os dados fornecidos são inválidos",
  "errors": {
    "payment.amount": ["O campo amount é obrigatório quando plan_id não é fornecido"],
    "customer.id": ["Cliente não encontrado"],
    "payment.credit_card.id": ["Cartão não encontrado ou não pertence ao cliente"]
  }
}
Permite criar assinaturas recorrentes (semanal, mensal ou anual) com cobrança automática. Ideal para serviços SaaS, academias, escolas e outros modelos de negócio baseados em recorrência.

Parâmetros da Requisição

Dados Básicos

description
string
required
Descrição da assinatura (aparece na fatura)Máximo: 255 caracteres
code
string
required
Identificador único da assinatura no seu sistemaMáximo: 255 caracteres
mcc
string
required
Código MCC (Merchant Category Code) do seu negócioExemplo: "5734" (Software as a Service)
notification_url
string
URL para receber webhooks sobre eventos da assinaturaFormato: URL válida

Plano e Recorrência

plan_id
string
UUID do plano cadastrado (se usar plano pré-configurado)
interval
string
Intervalo de cobrança (obrigatório se plan_id não fornecido)Valores: weekly, monthly, yearly
start_at
date
Data de início da assinaturaFormato: YYYY-MM-DDPadrão: data atual
best_charge_day
integer
Melhor dia do mês para cobrança (1-31)Padrão: dia da criação
trial_days
integer
Dias de período de teste gratuitoMínimo: 0 | Máximo: 365
next_charge_amount
integer
required
Valor da próxima cobrança em centavosImportante: Para PIX Recorrente, se não especificado, será usado o valor de payment.pix_recurring.recurring_amount ou payment.amountExemplo: 4990 = R$ 49,90

Cliente

customer
object
required

Pagamento

payment
object
required

Itens (Opcional)

items
array
Lista de itens da assinatura (opcional, para controle interno)

Exemplos de Requisição

curl -X POST https://zeus-sandbox.autorizou.dev/api/v1/charges/subscriptions \
  -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Assinatura Mensal Premium",
    "code": "SUB_PREMIUM_001",
    "mcc": "5734",
    "interval": "monthly",
    "best_charge_day": 10,
    "trial_days": 7,
    "customer": {
      "id": "550e8400-e29b-41d4-a716-446655440000"
    },
    "payment": {
      "amount": 9990,
      "currency": "BRL",
      "payment_method": "credit_card",
      "installments": 1,
      "credit_card": {
        "id": "card_abc123def456",
        "statement_descriptor": "MINHAEMPRESA PREMIUM",
        "capture": true,
        "processing_model": "merchant_initiated_subscription"
      }
    }
  }'

Resposta

id
string
UUID único da assinatura
hash
string
Hash único da assinatura
status
string
Status atual da assinaturaValores: trial_started, payment_pending, payment_approved, canceled, etc.
plan_id
string
UUID do plano (se usado)
interval
string
Intervalo de cobrança: weekly, monthly, yearly
next_charge_amount
integer
Valor da próxima cobrança em centavos
installments
integer
Número de parcelas
next_charge_at
string
Data/hora da próxima cobrança (formato: DD/MM/YYYY HH:mm:ss)
start_at
string
Data de início da assinatura
end_at
string
Data de término (se aplicável)
trial_days
integer
Dias de período de teste
current_cycle
integer
Ciclo atual da assinatura
payment
object
fee
object
customer
object

Exemplo de Resposta

201 Created
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "hash": "SUB_abc123xyz789",
  "status": "payment_approved",
  "plan_id": null,
  "interval": "monthly",
  "next_charge_amount": 9990,
  "installments": 1,
  "next_charge_at": "10/02/2024 10:00:00",
  "start_at": "10/01/2024",
  "end_at": null,
  "trial_days": 7,
  "current_cycle": 1,
  "payment": {
    "id": "pay_def456ghi789",
    "hash": "PAY_xyz123abc456",
    "merchant_reference": "SUB_PREMIUM_001",
    "status": "authorized",
    "payment_method": "credit_card",
    "amount": 9990,
    "installments": 1,
    "currency": "BRL",
    "description": "Assinatura Mensal Premium",
    "metadata": null,
    "credit_card": {
      "id": "card_abc123def456",
      "brand": "visa",
      "last_four_digits": "4242",
      "holder_name": "MARIA SILVA"
    },
    "created_at": "10/01/2024 10:00:00",
    "updated_at": "10/01/2024 10:00:05"
  },
  "fee": {
    "fixed_fee_amount": 39,
    "platform_fee_percentage": 3.99,
    "platform_fee_amount": 399
  },
  "customer": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Maria Silva",
    "email": "maria@exemplo.com.br"
  }
}

Códigos de Status

{
  "message": "Os dados fornecidos são inválidos",
  "errors": {
    "payment.amount": ["O campo amount é obrigatório quando plan_id não é fornecido"],
    "customer.id": ["Cliente não encontrado"],
    "payment.credit_card.id": ["Cartão não encontrado ou não pertence ao cliente"]
  }
}

PIX Recorrente - Como Funciona

O PIX Recorrente permite cobranças automáticas recorrentes usando o PIX como método de pagamento, sem a necessidade de cartão de crédito.

Fluxo de Pagamento

  1. Primeiro Pagamento (Autorização)
    • Cliente escaneia QR Code e realiza o primeiro pagamento via PIX
    • Esse pagamento autoriza cobranças futuras automáticas
    • Um charge_code único é gerado para identificar a autorização recorrente
  2. Cobranças Recorrentes Automáticas
    • O sistema agenda automaticamente os pagamentos futuros
    • Pagamentos são processados 2-10 dias antes da data de vencimento.
    • Cliente é notificado antes de cada cobrança
  3. Política de Retry (Tentativas)
    • Em caso de falha, o sistema tenta novamente automaticamente
    • Até 3 tentativas com intervalo de 1 dia entre cada
    • Tentativas ocorrem em até 7 dias da data original

Status do Ciclo de Vida do Pagamento PIX Recorrente

Os status de pagamento do PIX Recorrente seguem um fluxo específico diferente dos outros métodos.
StatusDescriçãoQuando Ocorre
waiting_paymentAguardando o primeiro pagamento PIXApós criação da assinatura, QR Code gerado
scheduledPagamento agendado para processamento3 dias antes da data de cobrança
processingPagamento sendo processado2 dias antes da data de cobrança
authorizedPagamento autorizado com sucessoApós confirmação do pagamento
refusedPagamento recusado (saldo insuficiente, limite excedido, etc.)Quando a cobrança falha
expiredQR Code ou cobrança expirouApós período de expiração sem pagamento
settledPagamento liquidadoApós processamento final e transferência

Transições de Status Permitidas

PIX Recorrente - Primeiro Pagamento:
waiting_payment → authorized (pagamento confirmado)
waiting_payment → scheduled (para PIX recorrente, quando inicia ciclo)
waiting_payment → expired (QR code expirou)
PIX Recorrente - Cobranças Automáticas:
scheduled → processing (enviado para processadora)
scheduled → authorized (cobrança aprovada)
scheduled → refused (cobrança recusada)
scheduled → error (erro no processamento)

refused → scheduled (retry automático, se retry_policy = true)

Regras Importantes

Janela de Processamento: Pagamentos PIX Recorrentes devem ser enviados entre 2 e 10 dias antes da data de vencimento.
  • Valor Mínimo: Defina min_amount para evitar cobranças abaixo de um valor específico
  • Período de Trial: Pode ser usado com trial_days > 0, mas o primeiro pagamento deve ser amount = 0
  • Política de Retry: Com retry_policy = true, até 3 tentativas automáticas em caso de falha
  • Charge Code: Obrigatório e único por assinatura, usado para identificar a autorização recorrente

Exemplo de Resposta com PIX Recorrente

201 Created
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "hash": "SUB_pixrec123xyz",
  "status": "waiting_payment",
  "interval": "monthly",
  "next_charge_amount": 4990,
  "installments": 1,
  "next_charge_at": "10/02/2024 10:00:00",
  "start_at": "10/01/2024",
  "trial_days": 0,
  "current_cycle": 1,
  "payment": {
    "id": "pay_pixrec456def",
    "hash": "PAY_pixrec789ghi",
    "merchant_reference": "SUB_PIX_REC_001",
    "status": "waiting_payment",
    "payment_method": "pix_recurring",
    "amount": 4990,
    "installments": 1,
    "currency": "BRL",
    "description": "Assinatura Mensal Premium PIX",
    "pix_recurring": {
      "qr_code": "00020126580014br.gov.bcb.pix...",
      "qr_code_url": "https://api.autorizou.dev/qr/pixrec456def.png",
      "charge_code": "CHG_REC_abc123xyz789",
      "recurring_statement": "Assinatura Premium - MeuApp",
      "expires_at": "2024-01-15T23:59:59Z"
    },
    "created_at": "10/01/2024 10:00:00",
    "updated_at": "10/01/2024 10:00:00"
  },
  "customer": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "João Silva",
    "email": "joao@exemplo.com.br"
  }
}

Próximos Passos

Após criar uma assinatura:
  1. Cancelar assinatura quando necessário
  2. Consultar pagamentos da assinatura
  3. Configurar webhooks para acompanhar eventos de cobrança recorrente
  4. Para PIX Recorrente: exibir QR Code ao cliente e aguardar primeiro pagamento