Como funciona
Cobre seus clientes de forma recorrente por Pix. Você cadastra um plano, assina um cliente nele e a plataforma emite uma cobrança a cada ciclo, envia o Pix por e-mail e dá baixa sozinha quando o cliente paga.
- PlanoValor e periodicidade (ex.: R$ 99,90 por mês). Um plano serve a várias assinaturas.
- AssinaturaLiga um cliente (nome, e-mail e CPF/CNPJ) a um plano, com início e, se quiser, valor próprio e número de ciclos.
- CobrançaUm ciclo: vencimento, valor, status e o Pix. Gerada automaticamente a cada período.
Ciclo de vida de uma cobrança
- No dia do vencimento, a partir das 8h (horário de Brasília), a plataforma gera o Pix e envia ao cliente um e-mail com o copia e cola e o link da página de pagamento (
pay_url). - A 1ª cobrança sai na hora em que a assinatura é criada (
issue_first_charge, padrãotrue), com vencimento emstart_date. Comfalse, segue a regra acima. - Em aberto, o cliente recebe lembretes em D+1 e D+3. E-mails automáticos só saem entre 8h e 21h.
- No dia seguinte ao vencimento ela passa para
overduee continua podendo ser paga. - Se o Pix expirar, a página de pagamento gera um novo quando o cliente a abre.
- O pagamento é conciliado sozinho e dispara o webhook
recurring_charge.paid. - Plano mensal com vencimento nos dias 29, 30 ou 31: nos meses mais curtos vence no último dia e volta ao dia original depois.
Periodicidades (periodicity)
weekly- Semanal
biweekly- Quinzenal
monthly- Mensal
bimonthly- Bimestral
quarterly- Trimestral
semiannual- Semestral
annual- Anual
Status da assinatura
active- Ativa: gera uma cobrança a cada ciclo.
paused- Pausada: não gera novas cobranças até ser retomada.
cancelled- Cancelada por você.
completed- Concluída: atingiu
max_cyclesouend_date.
Status da cobrança
pending- Em aberto: emitida, aguardando pagamento.
overdue- Vencida: passou do vencimento sem pagamento; continua pagável.
paid- Paga: pagamento confirmado.
cancelled- Cancelada por você ou junto com a assinatura.
Regras gerais
- Liberação
- O recurso precisa ser liberado para a sua conta. Sem isso, as rotas respondem
403comcode: "recurring_billing_disabled". Consulte antes comGET https://api.sancopay.com/api/recurring/access(rota fora do/v1), que devolve{ "enabled": true }. - Valores
- Número em reais; mínimo 1.00 e máximo 999999.99 por cobrança. Vencimentos em
YYYY-MM-DD; as demais datas em ISO 8601. - IDs
- Planos, assinaturas e cobranças usam uuid nas rotas e nas respostas. Um id de outra conta responde
404. - Idempotência
- Envie
referenceao criar planos e assinaturas. Criação nova:201.referencerepetida:200com o registro existente e o headerIdempotent-Replayed: true. - Permissões
- Leitura (GET) exige
transactions.view; escrita (POST/PATCH/DELETE) exigepayments.pix. A credencial padrão tem as duas. - Respostas
- Recurso: o objeto direto. Listas:
{ "data": [...], "meta": {...} }, compageeper_page(1 a 100, padrão 20). - Erros
- Mesmo formato
{ message, code, errors? }do resto da API.409comcode: "invalid_state": regra de negócio (ex.: assinatura já cancelada).429comcode: "too_many_requests": limite de reenvio, comretry_afterem segundos.
Webhooks
recurring_charge.created- Cobrança emitida. Com o Pix gerado,
data.pixtrazcopy_pasteetransaction_id. recurring_charge.paid- Pagamento confirmado: libere o ciclo no seu sistema.
recurring_charge.overdue- Venceu sem pagamento (dia seguinte ao vencimento). Continua pagável.
recurring_charge.cancelled- Cancelada por você ou pelo cancelamento da assinatura com
cancel_open_charges. recurring_charge.duplicate_payment- A cobrança já estava paga e outro Pix dela também foi pago;
data.duplicate_transaction_idtraz a transação excedente.
{ "event": "recurring_charge.paid", "created_at": "2026-10-01T12:42:31.000000Z", "data": { "id": "c71d4e8a-2f3b-4a6c-9e15-8b0d7f3a2c96", "subscription_id": "3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47", "subscription_reference": "ASS-1001", "plan_id": "9f2c1a7e-4b8d-4c1f-9a3e-2d5b7c8e1f40", "plan_name": "Plano Mensal", "cycle_number": 1, "due_date": "2026-10-01", "amount": 99.9, "message": "Plano Mensal", "status": "paid", "pay_url": "https://app.sancopay.com/cobranca/k3Jd9xQ2mZ7pL4vR8tW1nB6cY0aF5sH2eU9gT4oM", "pix": null, "paid_at": "2026-10-01T12:42:05.000000Z", "paid_transaction_id": 4821, "cancelled_at": null, "customer": { "name": "Maria Souza", "email": "[email protected]" } }}