curl --request POST \
--url https://api.sandbox.z2pay.com/v1/checkout/charges/{id}/cancel \
--header 'x-api-key: <api-key>'const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sandbox.z2pay.com/v1/checkout/charges/{id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.z2pay.com/v1/checkout/charges/{id}/cancel"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text){
"id": "cs_02f232c4dcf8eec4c29e0f3748476d1339b63c0e7ffab1dc",
"linkId": null,
"status": "canceled",
"mode": "payment",
"currency": "BRL",
"locale": "pt-BR",
"config": {
"paymentMethods": {
"card": {
"enabled": true,
"installments": {
"maxInstallments": 12
}
},
"pix": {
"enabled": true,
"expiresIn": 3600
}
},
"description": "Curso de Marketing Digital"
},
"customer": {
"name": "Maria Souza",
"email": "maria.souza@example.com",
"document": "12345678909",
"documentType": "cpf"
},
"customFieldValues": null,
"paymentMethodSelected": null,
"subtotal": 19900,
"discountTotal": 0,
"amount": 19900,
"discounts": [],
"paymentAttempts": 0,
"transactionId": null,
"subscriptionId": null,
"invoiceId": null,
"metadata": null,
"createdAt": "2025-06-29T13:45:30.000Z",
"updatedAt": "2025-06-29T14:10:00.000Z",
"openedAt": "2025-06-29T13:46:02.000Z",
"paidAt": null,
"canceledAt": "2025-06-29T14:10:00.000Z",
"expiresAt": "2025-06-30T13:45:30.000Z",
"url": "https://checkout.z2pay.com.br/c/s/cs_02f232c4dcf8eec4c29e0f3748476d1339b63c0e7ffab1dc"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Forbidden — insufficient permissions"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Charge not found"
}
}{
"error": {
"code": "CONFLICT",
"message": "No refundable payment found"
}
}{
"error": "Idempotency key already used with a different request body"
}Cancelar venda rápida
Encerra uma cobrança que ainda não foi paga — a URL para de aceitar pagamento.
curl --request POST \
--url https://api.sandbox.z2pay.com/v1/checkout/charges/{id}/cancel \
--header 'x-api-key: <api-key>'const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sandbox.z2pay.com/v1/checkout/charges/{id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.z2pay.com/v1/checkout/charges/{id}/cancel"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text){
"id": "cs_02f232c4dcf8eec4c29e0f3748476d1339b63c0e7ffab1dc",
"linkId": null,
"status": "canceled",
"mode": "payment",
"currency": "BRL",
"locale": "pt-BR",
"config": {
"paymentMethods": {
"card": {
"enabled": true,
"installments": {
"maxInstallments": 12
}
},
"pix": {
"enabled": true,
"expiresIn": 3600
}
},
"description": "Curso de Marketing Digital"
},
"customer": {
"name": "Maria Souza",
"email": "maria.souza@example.com",
"document": "12345678909",
"documentType": "cpf"
},
"customFieldValues": null,
"paymentMethodSelected": null,
"subtotal": 19900,
"discountTotal": 0,
"amount": 19900,
"discounts": [],
"paymentAttempts": 0,
"transactionId": null,
"subscriptionId": null,
"invoiceId": null,
"metadata": null,
"createdAt": "2025-06-29T13:45:30.000Z",
"updatedAt": "2025-06-29T14:10:00.000Z",
"openedAt": "2025-06-29T13:46:02.000Z",
"paidAt": null,
"canceledAt": "2025-06-29T14:10:00.000Z",
"expiresAt": "2025-06-30T13:45:30.000Z",
"url": "https://checkout.z2pay.com.br/c/s/cs_02f232c4dcf8eec4c29e0f3748476d1339b63c0e7ffab1dc"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Forbidden — insufficient permissions"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Charge not found"
}
}{
"error": {
"code": "CONFLICT",
"message": "No refundable payment found"
}
}{
"error": "Idempotency key already used with a different request body"
}POST /checkout/charges/{id}/cancel
Faz parte do recurso Vendas rápidas — a relação com Link e Session está
lá.
Leva a cobrança para canceled, que é estado terminal: a URL para de aceitar pagamento e não há
como reabri-la. A resposta é 200 com a Session já no estado novo.
created, opened, filling e
failed. Uma cobrança paid ou paying responde 409 com
key: "errors.checkout.session_not_cancellable", e o estado atual vem em params.status.Para desfazer uma cobrança já paga, o caminho é outro: o estorno, sobre a
transação.expiresAt (24h por
padrão) e vai para expired. Cancelar serve para encerrar antes disso.code. A resposta traz code: "CONFLICT" — o que distingue o
caso é a key, com o prefixo inteiro. Comparar error.code === "session_not_cancellable" nunca
casa. Veja Erros de domínio.Exemplo
curl -X POST https://api.sandbox.z2pay.com/v1/checkout/charges/cs_50b0abc54b632e7c57de3a73815413ace1d545dcd16da95c/cancel \
-H "x-api-key: SUA_CHAVE_DE_SANDBOX"
{
"id": "cs_50b0abc54b632e7c57de3a73815413ace1d545dcd16da95c",
"linkId": null,
"status": "canceled",
"amount": 30000,
"currency": "BRL",
"transactionId": null,
"createdAt": "2026-06-24T12:00:00.000Z",
"expiresAt": "2026-06-25T12:00:00.000Z"
}
Authorizations
API key unificada (z2_{live|test}{sk|pk}...) — secret (sk) para integração backend, publishable (pk) para uso no frontend público
Path Parameters
ID da Session (cs_*)
Response
Venda rápida cancelada
Identificador único do registro.
Identificador do link de checkout que originou o registro; nulo em sessões ad-hoc.
Estado atual do registro.
Modo do checkout: 'payment' (pagamento único) ou 'subscription' (assinatura).
Moeda no padrão ISO 4217 (ex.: BRL).
Idioma do checkout (ex.: pt-BR, en-US, es-ES).
Snapshot da configuração do checkout (formas de pagamento, itens e personalização visual).
Dados do comprador (nome, e-mail, documento e demais informações).
Valores preenchidos nos campos personalizados, indexados pela key de cada campo.
Forma de pagamento selecionada pelo comprador na sessão (ex.: credit_card, pix, boleto).
Soma dos itens antes dos descontos, em centavos.
Total de descontos aplicados, em centavos.
Valor total a ser cobrado, em centavos.
Descontos aplicados ao valor da sessão.
Quantidade de tentativas de pagamento realizadas na sessão.
Identificador da transação gerada pelo pagamento da sessão; nulo até haver pagamento.
Identificador da assinatura criada a partir da sessão; nulo até a ativação.
Fatura gerada pela venda com data de cobrança (scheduledAt), criada quando o comprador aceita. Nula em toda outra venda — pagamento no ato não gera fatura.
Metadados livres (pares chave-valor) para uso do integrador; não afeta o processamento.
Data e hora de criação do registro (ISO 8601).
Data e hora da última atualização do registro (ISO 8601).
Data e hora em que a sessão foi aberta pelo comprador (ISO 8601); nula se ainda não aberta.
Data e hora em que o pagamento foi confirmado (ISO 8601); nula se não pago.
Data e hora do cancelamento (ISO 8601); nula se não cancelado.
Data e hora de expiração (ISO 8601).
URL pública do checkout para o comprador finalizar o pagamento.