curl --request GET \
--url https://api.sandbox.z2pay.com/v1/subscriptions \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sandbox.z2pay.com/v1/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.z2pay.com/v1/subscriptions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "sub_hsm2kigu74htdxj3nw2z6f9xw",
"number": {
"sequence": 42
},
"referenceCode": "CONTRATO-2026-0042",
"customerId": "cust_c72q6ogr9iko0we85mqal04te",
"customerEmail": "maria.silva@example.com",
"customerName": "Maria Silva",
"customerDocument": "12345678909",
"currency": "BRL",
"status": "active",
"billingGroupId": null,
"currentPeriodStart": "2025-06-01T03:00:00.000Z",
"currentPeriodEnd": "2025-07-01T03:00:00.000Z",
"nextInvoiceAt": "2025-07-01T03:00:00.000Z",
"recurrence": {
"interval": 1,
"unit": "month",
"anchor": "day_of_month",
"anchorDay": 1,
"collectionTiming": "prepaid"
},
"collectionMethod": "charge_automatically",
"collectionTiming": "prepaid",
"invoiceGenerationMode": "just_in_time",
"cancelAtPeriodEnd": false,
"canceledAt": null,
"endedAt": null,
"cancellationReason": null,
"pausedAt": null,
"pauseResumesAt": null,
"pauseReason": null,
"trialEnd": null,
"incompleteExpiresAt": null,
"trialRemindersFired": [],
"maxCycles": null,
"issuedCycles": 1,
"completedCycles": 1,
"defaultPaymentMethodRef": {
"id": "crd_tsj66oabsygc9kwvvzt8189f9",
"type": "card"
},
"splitConfig": null,
"paymentBehavior": "allow_incomplete",
"latestInvoiceId": "inv_c3qahi4qnkc258lfc14gplupt",
"paymentUpdateToken": null,
"paymentUpdateMethods": null,
"metadata": {},
"createdAt": "2025-06-01T13:45:30.000Z",
"updatedAt": "2025-06-01T13:45:30.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"issues": [
{
"path": "status",
"message": "Status inválido. Valores aceitos: pending, waiting_payment, paid, refused, canceled, refunded"
},
{
"path": "startDate",
"message": "Data deve ser ISO 8601 com timezone (ex.: 2026-06-24T00:00:00Z)"
}
]
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
}
}Listar assinaturas
Lista paginada das assinaturas da conta, com filtros por estado, cliente, plano, forma de pagamento e data.
curl --request GET \
--url https://api.sandbox.z2pay.com/v1/subscriptions \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sandbox.z2pay.com/v1/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.z2pay.com/v1/subscriptions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "sub_hsm2kigu74htdxj3nw2z6f9xw",
"number": {
"sequence": 42
},
"referenceCode": "CONTRATO-2026-0042",
"customerId": "cust_c72q6ogr9iko0we85mqal04te",
"customerEmail": "maria.silva@example.com",
"customerName": "Maria Silva",
"customerDocument": "12345678909",
"currency": "BRL",
"status": "active",
"billingGroupId": null,
"currentPeriodStart": "2025-06-01T03:00:00.000Z",
"currentPeriodEnd": "2025-07-01T03:00:00.000Z",
"nextInvoiceAt": "2025-07-01T03:00:00.000Z",
"recurrence": {
"interval": 1,
"unit": "month",
"anchor": "day_of_month",
"anchorDay": 1,
"collectionTiming": "prepaid"
},
"collectionMethod": "charge_automatically",
"collectionTiming": "prepaid",
"invoiceGenerationMode": "just_in_time",
"cancelAtPeriodEnd": false,
"canceledAt": null,
"endedAt": null,
"cancellationReason": null,
"pausedAt": null,
"pauseResumesAt": null,
"pauseReason": null,
"trialEnd": null,
"incompleteExpiresAt": null,
"trialRemindersFired": [],
"maxCycles": null,
"issuedCycles": 1,
"completedCycles": 1,
"defaultPaymentMethodRef": {
"id": "crd_tsj66oabsygc9kwvvzt8189f9",
"type": "card"
},
"splitConfig": null,
"paymentBehavior": "allow_incomplete",
"latestInvoiceId": "inv_c3qahi4qnkc258lfc14gplupt",
"paymentUpdateToken": null,
"paymentUpdateMethods": null,
"metadata": {},
"createdAt": "2025-06-01T13:45:30.000Z",
"updatedAt": "2025-06-01T13:45:30.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"issues": [
{
"path": "status",
"message": "Status inválido. Valores aceitos: pending, waiting_payment, paid, refused, canceled, refunded"
},
{
"path": "startDate",
"message": "Data deve ser ISO 8601 com timezone (ex.: 2026-06-24T00:00:00Z)"
}
]
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
}
}GET /subscriptions
Faz parte do recurso Assinaturas — o conceito e os dez estados estão lá.
Devolve as assinaturas da sua conta em páginas de 20 por padrão, da mais recente para a mais antiga.
Os filtros são opcionais e se somam: quem envia mais de um recebe só as assinaturas que atendem a
todos.
items. Para saber o que ela cobra, use
GET /subscriptions/{id}.dateFrom e dateTo não fazem nada sozinhos. Eles filtram o campo escolhido em dateField
— started, ended ou next_invoice. Sem dateField, o intervalo não tem sobre o que incidir.É o filtro que responde as perguntas de operação: next_invoice entre hoje e amanhã lista o que
vai ser cobrado. Para achar quem está devendo, liste as faturas com
GET /invoices?status=past_due — o vencimento é dado da
fatura, não da assinatura.cust_. O filtro customerId é correspondência
exata, e não há busca por nome ou e-mail aqui — use
GET /customers para achar o cliente e filtre por ID.canceled, completed e
incomplete_expired vêm junto com as ativas. Para o que está cobrando hoje, filtre
?status=active,trialing,past_due.Exemplo
curl -G https://api.sandbox.z2pay.com/v1/subscriptions \
-H "x-api-key: SUA_CHAVE_DE_SANDBOX" \
-d status=active,past_due \
-d sortBy=nextInvoiceAt \
-d sortDir=asc \
-d limit=20
{
"data": [
{
"id": "sub_x33m4yn6brazh71en4mki6f5c",
"number": { "sequence": 42 },
"referenceCode": "contrato-2026-0042",
"customerId": "cust_eqjzf65crxsrywqdfptanl7yp",
"customerName": "Ana Souza",
"status": "active",
"currency": "BRL",
"currentPeriodEnd": "2026-09-10T12:00:00.000Z",
"nextInvoiceAt": "2026-09-10T12:00:00.000Z",
"cancelAtPeriodEnd": false,
"createdAt": "2026-08-10T12:00:00.000Z"
}
],
"pagination": { "page": 1, "limit": 20, "total": 1, "totalPages": 1 }
}
Authorizations
API Key da Credential (gerada no Backoffice)
Query Parameters
Página da listagem. Padrão: 1.
x >= 1Itens por página. Padrão: 20. Máximo: 100.
1 <= x <= 100Situação da assinatura. Aceita vários valores, separados por vírgula ou repetindo o parâmetro. Um valor inválido responde 400 com a lista dos aceitos.
incomplete, incomplete_expired, pending_enrollment, trialing, active, past_due, unpaid, paused, canceled, completed Número da assinatura, como aparece no painel (2026-0042). Correspondência parcial: 42 encontra 2026-0042. Um valor por requisição.
20Forma de pagamento padrão da assinatura. Aceita vários valores, separados por vírgula ou repetindo o parâmetro.
card, pix, boleto, other Assinaturas que cobram algum componente destes planos. Aceita vários ids, separados por vírgula ou repetindo o parâmetro.
36Qual data o período dateFrom/dateTo filtra: started (início), ended (encerramento) ou next_invoice (próxima fatura). Sem ele, o período não é aplicado.
started, ended, next_invoice Início do período, em ISO 8601. Exige dateField.
Fim do período, em ISO 8601. Exige dateField.
Assinaturas de um cliente (cust_). Correspondência exata.
O código que você gravou na criação da assinatura. Correspondência exata — é o caminho para reencontrar pelo seu próprio identificador.
255Campo de ordenação: code, startedAt ou nextInvoiceAt. Default: startedAt.
code, startedAt, nextInvoiceAt Direção da ordenação: asc ou desc. Default: desc.
asc, desc