Ambiente
Base URLhttps://api.sancopay.com/api/v1
Arquivo para IA
RecorrênciaRequer liberação

Assinaturas

A assinatura liga um cliente a um plano. Por padrão a 1ª cobrança (vencimento em start_date) sai na hora; as seguintes, no vencimento de cada ciclo.

POST/recurring/subscriptions

Assina um cliente num plano.

Corpo da requisição

CampoTipoDescrição
plan_idobrigatóriostringuuid de um plano ativo da sua conta.
customerobrigatórioobjectQuem paga as cobranças.
customer.nameobrigatóriostringNome do cliente, até 255 caracteres.
customer.emailobrigatóriostringE-mail que recebe as cobranças.
customer.tax_idobrigatóriostringCPF ou CNPJ válido, com ou sem máscara.
amountopcionalnumberValor próprio desta assinatura (mínimo 1.00). Sem ele: o valor do plano.
messageopcionalstringMensagem das cobranças, até 255 caracteres.
start_dateopcionalstringData do 1º vencimento (YYYY-MM-DD), de hoje até 1 ano à frente. Padrão: hoje.
max_cyclesopcionalintegerQuantidade de cobranças (1 a 600). Padrão: default_max_cycles do plano.
end_dateopcionalstringData de término (YYYY-MM-DD), igual ou depois de start_date.
notify_customeropcionalbooleanPadrão true. Com false, a plataforma não envia e-mails ao cliente.
issue_first_chargeopcionalbooleanPadrão true: gera a 1ª cobrança agora (Pix + e-mail) e a devolve em first_charge. Com false, ela sai no vencimento, a partir das 8h.
referenceopcionalstringIdentificador do seu sistema (até 100); garante a idempotência.
Requisição
curl -X POST "https://api.sancopay.com/api/v1/recurring/subscriptions" \  -H "Authorization: Bearer <TOKEN>" \  -H "Content-Type: application/json" \  -d '{    "plan_id": "9f2c1a7e-4b8d-4c1f-9a3e-2d5b7c8e1f40",    "customer": {      "name": "Maria Souza",      "email": "[email protected]",      "tax_id": "123.456.789-09"    },    "start_date": "2026-10-01",    "issue_first_charge": true,    "reference": "ASS-1001"  }'
Resposta

A assinatura, com a 1ª cobrança em first_charge.

{  "id": "3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47",  "reference": "ASS-1001",  "status": "active",  "status_label": "Ativa",  "plan": {    "id": "9f2c1a7e-4b8d-4c1f-9a3e-2d5b7c8e1f40",    "name": "Plano Mensal",    "periodicity": "monthly",    "periodicity_label": "Mensal",    "amount": 99.9  },  "customer": {    "name": "Maria Souza",    "email": "[email protected]",    "tax_id": "12345678909"  },  "amount": 99.9,  "amount_override": null,  "message": null,  "start_date": "2026-10-01",  "next_due_date": "2026-11-01",  "upcoming_due_dates": [    "2026-11-01",    "2026-12-01",    "2027-01-01"  ],  "cycles_issued": 1,  "max_cycles": 12,  "end_date": null,  "notify_customer": true,  "paused_at": null,  "cancelled_at": null,  "completed_at": null,  "cancel_reason": null,  "created_at": "2026-09-18T13:15:03.000000Z",  "updated_at": "2026-09-18T13:15:03.000000Z",  "first_charge": {    "id": "c71d4e8a-2f3b-4a6c-9e15-8b0d7f3a2c96",    "subscription_id": "3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47",    "subscription_reference": "ASS-1001",    "plan": {      "id": "9f2c1a7e-4b8d-4c1f-9a3e-2d5b7c8e1f40",      "name": "Plano Mensal"    },    "customer": {      "name": "Maria Souza",      "email": "[email protected]"    },    "cycle_number": 1,    "due_date": "2026-10-01",    "amount": 99.9,    "message": "Plano Mensal",    "status": "pending",    "status_label": "Em aberto",    "pay_url": "https://app.sancopay.com/cobranca/k3Jd9xQ2mZ7pL4vR8tW1nB6cY0aF5sH2eU9gT4oM",    "pix": {      "copy_paste": "00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d65204000053039865406150.005802BR5913LOJA EXEMPLO6009SAO PAULO62070503***6304A1B2",      "transaction_id": 4821,      "generated_at": "2026-09-18T13:15:04.000000Z"    },    "last_pix_error": null,    "issued_at": "2026-09-18T13:15:04.000000Z",    "overdue_at": null,    "paid_at": null,    "paid_transaction_id": null,    "cancelled_at": null,    "duplicate_payment": false,    "duplicate_payment_at": null,    "created_at": "2026-09-18T13:15:04.000000Z",    "transactions": [      {        "id": 4821,        "status": "pending",        "origin": "issue",        "created_at": "2026-09-18T13:15:04.000000Z"      }    ],    "emails": [      {        "kind": "due",        "kind_label": "Vencimento",        "status": "sent",        "to_email": "[email protected]",        "skip_reason": null,        "failure_reason": null,        "sent_at": "2026-09-18T13:15:06.000000Z",        "created_at": "2026-09-18T13:15:04.000000Z"      }    ]  }}

Campos da assinatura

amount
Valor efetivo da próxima cobrança. amount_override é o valor próprio da assinatura (null = segue o plano).
upcoming_due_dates
Até 3 próximos vencimentos já calculados.
customer.tax_id
Volta só com dígitos.
max_cycles / end_date
Sem os dois, a assinatura segue até ser cancelada. Ao atingir um deles, passa para completed.

Consultar, listar e alterar

  • GET/recurring/subscriptionsFiltros: status (active, paused, cancelled, completed), plan_id, reference, q (nome, e-mail ou documento do cliente), page, per_page.
  • GET/recurring/subscriptions/{id}Consulta uma assinatura (mesmo formato da criação, sem first_charge).
  • PATCH/recurring/subscriptions/{id}Alteração parcial: customer.name, customer.email, customer.tax_id, amount (null volta a seguir o plano), message, max_cycles, end_date, notify_customer.
Buscar pela reference
curl -X GET "https://api.sancopay.com/api/v1/recurring/subscriptions?reference=ASS-1001" \  -H "Authorization: Bearer <TOKEN>"
Resposta200 OK
{  "data": [    {      "id": "3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47",      "reference": "ASS-1001",      "status": "active",      "status_label": "Ativa",      "plan": {        "id": "9f2c1a7e-4b8d-4c1f-9a3e-2d5b7c8e1f40",        "name": "Plano Mensal",        "periodicity": "monthly",        "periodicity_label": "Mensal",        "amount": 99.9      },      "customer": {        "name": "Maria Souza",        "email": "[email protected]",        "tax_id": "12345678909"      },      "amount": 99.9,      "amount_override": null,      "message": null,      "start_date": "2026-10-01",      "next_due_date": "2026-11-01",      "upcoming_due_dates": [        "2026-11-01",        "2026-12-01",        "2027-01-01"      ],      "cycles_issued": 1,      "max_cycles": 12,      "end_date": null,      "notify_customer": true,      "paused_at": null,      "cancelled_at": null,      "completed_at": null,      "cancel_reason": null,      "created_at": "2026-09-18T13:15:03.000000Z",      "updated_at": "2026-09-18T13:15:03.000000Z"    }  ],  "meta": {    "page": 1,    "per_page": 20,    "total": 1,    "last_page": 1  }}
Alterar valor e e-mail
curl -X PATCH "https://api.sancopay.com/api/v1/recurring/subscriptions/3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47" \  -H "Authorization: Bearer <TOKEN>" \  -H "Content-Type: application/json" \  -d '{    "amount": 79.9,    "customer": {      "email": "[email protected]"    }  }'
  • plan_id, start_date, periodicity e reference não podem ser alterados (422). Para trocar de plano, cancele e crie outra assinatura.
  • Assinatura cancelada ou concluída não pode ser alterada (409).
  • O novo amount vale a partir da próxima cobrança emitida; as já emitidas mantêm o valor.

Pausar, retomar e cancelar

  • POST/recurring/subscriptions/{id}/pausePausa uma assinatura active; deixa de gerar cobranças. Outro status: 409.
  • POST/recurring/subscriptions/{id}/resumeRetoma uma paused (outro status: 409). Sem cobrança retroativa: o próximo vencimento é o primeiro a partir de hoje.
  • POST/recurring/subscriptions/{id}/cancelEncerra a assinatura. Já cancelada ou concluída: 409.

Corpo do cancel

CampoTipoDescrição
cancel_open_chargesopcionalbooleanPadrão true: cancela também as cobranças em aberto e vencidas.
reasonopcionalstringMotivo do cancelamento, até 255 caracteres.
Cancelar
curl -X POST "https://api.sancopay.com/api/v1/recurring/subscriptions/3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47/cancel" \  -H "Authorization: Bearer <TOKEN>" \  -H "Content-Type: application/json" \  -d '{    "cancel_open_charges": true,    "reason": "Pedido do cliente"  }'
Resposta200 OK
{  "id": "3b6e9d12-7a4f-4e2b-8c91-5f0a1d2e3c47",  "reference": "ASS-1001",  "status": "cancelled",  "status_label": "Cancelada",  "plan": {    "id": "9f2c1a7e-4b8d-4c1f-9a3e-2d5b7c8e1f40",    "name": "Plano Mensal",    "periodicity": "monthly",    "periodicity_label": "Mensal",    "amount": 99.9  },  "customer": {    "name": "Maria Souza",    "email": "[email protected]",    "tax_id": "12345678909"  },  "amount": 99.9,  "amount_override": null,  "message": null,  "start_date": "2026-10-01",  "next_due_date": "2026-11-01",  "upcoming_due_dates": [    "2026-11-01",    "2026-12-01",    "2027-01-01"  ],  "cycles_issued": 1,  "max_cycles": 12,  "end_date": null,  "notify_customer": true,  "paused_at": null,  "cancelled_at": "2026-11-09T15:04:05.000000Z",  "completed_at": null,  "cancel_reason": "Pedido do cliente",  "created_at": "2026-09-18T13:15:03.000000Z",  "updated_at": "2026-09-18T13:15:03.000000Z"}

pause e resume não têm corpo. As três respondem 200 com a assinatura atualizada.