Painel e cobranças
Indicadores de assinatura do seller e o histórico das tentativas de cobrança.
O painel responde "como está minha receita recorrente?" e a lista de cobranças responde "o que foi cobrado e o que falhou?". Ambos são só leitura e limitados aos produtos do seller.
Painel de assinaturas
Reúne os números do painel de assinaturas: receita recorrente (MRR), ativas, pausadas, falhas, cancelamentos, novas por dia, próximas cobranças, atrasadas, produtos campeões, cobranças recentes, divisão por frequência e motivos de cancelamento. Conta só assinaturas, não compras programadas.
/api/v1/vendor/recurring/dashboardSellerIndicadores de assinatura do seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Parâmetros de consulta
periodstringpadrão: 30d30d90d12m30d.product_iduuidExemplo de requisição
curl "$BASE_URL/api/v1/vendor/recurring/dashboard?period=90d" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"available": true,
"period": "90d",
"from": "2026-07-13",
"to": "2026-10-11",
"cards": {
"active_count": 12,
"paused_count": 1,
"past_due_count": 2,
"suspended_count": 0,
"overdue_count": 0,
"mrr_cents": 59880,
"mrr_formatted": "R$ 598,80",
"month_charges": 9,
"month_revenue_cents": 44910,
"month_revenue_formatted": "R$ 449,10",
"pending_charges": 1,
"pending_amount_cents": 4990,
"pending_amount_formatted": "R$ 49,90",
"churn_percent": 6.25,
"cancelled_in_period": 1,
"new_subscriptions": 4,
"new_previous_period": 3,
"new_growth_percent": 33.3
},
"new_series": [
{
"bucket": "2026-10-05",
"new": 1,
"cancelled": 0
}
],
"upcoming": [],
"upcoming_total": 0,
"overdue": [],
"overdue_total": 0,
"top_products": [
{
"product_name": "Café em grãos 1 kg",
"count": 8,
"mrr_cents": 39920,
"mrr_formatted": "R$ 399,20"
}
],
"recent_charges": [],
"by_plan": [
{
"cycle_days": 30,
"frequency": "mensal",
"count": 10
}
],
"cancel_reasons": [
{
"reason": "",
"count": 1
}
]
}Campos da resposta
availablebooleanfalse quando a loja nunca usou assinaturas (os demais campos vêm zerados).periodstringfromstringYYYY-MM-DD.tostringYYYY-MM-DD.cardsobjectNúmeros principais.
active_countintegerpaused_countintegerpast_due_countintegersuspended_countintegeroverdue_countintegermrr_centsintegermrr_formattedstringmonth_chargesintegermonth_revenue_centsintegermonth_revenue_formattedstringpending_chargesintegerpending_amount_centsintegerpending_amount_formattedstringchurn_percentnumbercancelled_in_periodintegernew_subscriptionsintegernew_previous_periodintegernew_growth_percentnumber|nullnull se o anterior foi zero.new_seriesobject[]12m): bucket, new, cancelled.upcomingobject[]upcoming_totalintegeroverdueobject[]overdue_totalintegertop_productsobject[]product_name, count, mrr_cents, mrr_formatted.recent_chargesobject[]As 8 cobranças mais recentes.
idstringrefstringsub:..., sch:..., app:...).kindstringcustomer_namestringproduct_namestringamount_centsintegeramount_formattedstringstatusstringpaid, failed, pending (compras programadas também usam captured).billing_datestringYYYY-MM-DD.attemptintegerorder_numberstringorder_iduuidcreated_atstringcan_retrybooleanfalse para o seller (repetir cobrança é da loja).by_planobject[]cycle_days, frequency, count.cancel_reasonsobject[]reason (vazio = não informado) e count.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | O módulo recurring-payments está desligado nesta loja. | {"error":"module_disabled","module":"recurring-payments"} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account"} |
Listar cobranças
Lista cada tentativa de cobrança (de assinaturas e de compras programadas) feita nos produtos do seller. O texto de erro do gateway e os ids do gateway ficam ocultos para o seller: só o status é visível.
/api/v1/vendor/recurring/chargesSellerTentativas de cobrança dos produtos do seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Parâmetros de consulta
statusstringpaidfailedpendingcapturedrefstringsub:..., sch:..., app:...).product_iduuidcustomer_iduuidqstringdate_fromstringYYYY-MM-DD.date_tostringYYYY-MM-DD.pageintegerpadrão: 1per_pageintegerpadrão: 25Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/recurring/charges?status=failed&date_from=2026-10-01" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"items": [
{
"id": "c1",
"ref": "sub:5d6b0a4e-7a3a-4a8e-b8b6-2e1f9d0a1c11",
"kind": "subscription",
"customer_name": "Maria Souza",
"product_name": "Café em grãos 1 kg",
"amount_cents": 4990,
"amount_formatted": "R$ 49,90",
"status": "paid",
"billing_date": "2026-10-05",
"attempt": 1,
"created_at": "2026-10-05T09:00:00Z",
"can_retry": false
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total": 1,
"total_pages": 1
}
}Campos da resposta
itemsobject[]Tentativas da página.
idstringrefstringsub:..., sch:..., app:...).kindstringcustomer_namestringproduct_namestringamount_centsintegeramount_formattedstringstatusstringpaid, failed, pending (compras programadas também usam captured).billing_datestringYYYY-MM-DD.attemptintegerorder_numberstringorder_iduuidcreated_atstringcan_retrybooleanfalse para o seller (repetir cobrança é da loja).paginationobjectpage, per_page, total, total_pages.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | O módulo recurring-payments está desligado nesta loja. | {"error":"module_disabled","module":"recurring-payments"} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account"} |