discount) é a regra econômica que abate valor de uma cobrança — um percentual ou um valor fixo, com janela de validade, limite de uso e escopo de produtos. Ele habilita campanhas promocionais, cupons digitáveis no checkout e abatimentos automáticos em links de pagamento, sempre com um registro auditável de cada aplicação.
Discount ≠ Discount codeUm desconto descreve quanto abater (
percentage ou fixed), por quanto tempo e onde se aplica. Um código de desconto (discount_code) é a string que o comprador digita para resgatar aquele desconto. Um desconto pode existir sem código (aplicado automaticamente via discount_id) e pode ter vários códigos apontando para ele.Como o desconto é aplicado
O schema público completo está em Objeto discount e Objeto discount_code. A redemption é um registro interno de auditoria — ela guarda um snapshot da regra e do código no momento da cobrança e não é um recurso editável via API.
Anatomia do desconto
Tipo: percentual ou valor fixo
São mutuamente exclusivos — a forma define quais campos o objeto carrega.O abatimento de um desconto
fixed nunca passa do subtotal — um amount_off
de 5000 aplicado a um subtotal de 3000 abate apenas 3000, e o total não
fica negativo.Duração
A duração descreve por quanto tempo o desconto acompanha uma cobrança recorrente (assinatura). Em cobrança avulsa, só a primeira aplicação importa.A validade é conferida quando o desconto entra na assinatura. A partir daí,
valor, percentual, escopo e duração ficam preservados no snapshot da
aplicação: desativar ou expirar o desconto, ou atingir
max_redemptions,
bloqueia novas aplicações, mas não interrompe as já adquiridas. Em
repeating, duration_in_months é uma janela de meses de calendário; por
isso uma assinatura trimestral com duração de 6 meses recebe o desconto nas
duas cobranças que começam dentro dessa janela.Limites e validade
Cada cobrança (checkout, link, assinatura) recebe no máximo um desconto —
a mesma cobrança não acumula dois.
Anatomia do código de desconto
O código herda a regra econômica do desconto pai (discount_id) e adiciona suas próprias condições de resgate.
Um código público ativo é único por organização. Códigos restritos a clientes
podem repetir a mesma string para clientes diferentes; um código público ativo
bloqueia reutilizar essa string para qualquer cliente.
Criar um desconto
POST /v1/discounts cria a regra. Para um cupom digitável, crie em seguida um discount_code apontando para o disc_*.
Criar um código de desconto
Com o desconto criado, gere a string que o comprador vai digitar. Ocode é opcional — quando omitido, a Chargefy gera um.
Como o desconto é aplicado
Há dois caminhos, e eles podem coexistir no mesmo fluxo de cobrança. Ambos valem para Checkout Sessions e Links de pagamento.1
Cupom digitável (discount_code)
O comprador digita o código no checkout. A Chargefy valida janela, limite,
restrições de cliente, valor mínimo e escopo de produto e calcula o
abatimento. Habilite ou oculte esse campo uma vez no Checkout
Builder.
2
Desconto automático (discount_id)
Você atrela um
discount_id direto ao checkout ou link de pagamento. O
abatimento é aplicado sem o comprador digitar nada — útil para campanhas
dirigidas e links promocionais.Casos de uso
Cupom promocional público
Cupom promocional público
Um desconto
percentage (ex.: 20%) com um discount_code divulgado em
campanha (PROMO20). Limite o alcance com max_redemptions e a janela com
starts_at/expires_at. Quem digitar o cupom no checkout recebe o
abatimento.Primeiros meses com desconto na assinatura
Primeiros meses com desconto na assinatura
Um desconto
percentage com duration=once (só a próxima cobrança),
duration=repeating + duration_in_months para abater as invoices dentro
desse período, ou duration=forever para acompanhar a assinatura por toda a
vida dela.Abatimento fixo de campanha
Abatimento fixo de campanha
Um desconto
fixed (ex.: amount_off: 5000, currency: "brl" = R 50 OFF acima de R$ 100” combinando o código com
minimum_amount: 10000 e minimum_amount_currency: "brl".Link de pagamento com cupom automático
Link de pagamento com cupom automático
Crie o desconto e atrele o
disc_* ao link via discount_id. Todo mundo
que abrir o link já recebe o abatimento, sem digitar código. Para também
permitir cupons digitados, ative allow_discount_codes no link — isso
habilita ainda o pré-preenchimento de código pela URL
(?prefilled_promo_code=…).Cupom restrito a um produto
Cupom restrito a um produto
Use
applies_to.products com os prod_* elegíveis. O desconto só vale
quando o checkout contém pelo menos um produto da lista; caso contrário é
recusado.Atualizar
O update é merge — você envia só os campos que mudam. Continuam editáveis a qualquer momento:name, applies_to, starts_at, expires_at, max_redemptions (nunca abaixo de redemptions_count), is_active e metadata.
Desativar e remover
DELETE /v1/discounts/{id} e DELETE /v1/discount-codes/{id} expressam “tirar de circulação”. O efeito depende do uso:
Nunca aplicado
Nunca aplicado
É removido de fato. A resposta é
{ "id": "disc_S4NsM6C27vSwguj4", "object": "discount", "deleted": true }.Já aplicado em alguma cobrança
Já aplicado em alguma cobrança
Não pode sumir sem quebrar a auditoria, então é desativado (
is_active = false) e a resposta é o objeto completo atualizado. Ele sai de novos fluxos, mas as aplicações passadas e seus snapshots permanecem íntegros.POST /v1/discounts/{id} enviando is_active: false.
Próximos passos
Objeto discount
Schema público completo e campos retornados.
Checkout Sessions
Como cupom digitável e desconto automático entram numa cobrança.
Criar um Link de pagamento
Atrelar um desconto ou habilitar cupons num link.
Assinaturas
Como
duration rege o abatimento ao longo dos ciclos.Produtos, preços e descontos
O valor que o desconto abate vem do preço.
Criar desconto (API)
Contrato do
POST /v1/discounts.
