transaction é um lançamento no extrato da sua organização: quanto dinheiro entrou (ou saiu), quando liquida e o que foi descontado no caminho. Cada parcela de uma venda é um lançamento próprio e um estorno é um lançamento negativo — o extrato reflete o dinheiro se movendo, não a venda como um todo.
A venda como experiência — parcelamento escolhido, juros, desconto — vive no payment intent. A transaction é a contabilidade: net_amount = amount - fee_amount, sempre, e fee_amount é a soma dos itens de fee_details.
Sinal dos valores
Entradas são positivas e saídas são negativas. A regra existe para que somar não tenha caso especial: somarnet_amount de qualquer conjunto de movimentos dá o efeito líquido no seu saldo — sem inverter sinal por tipo, sem excluir estorno.
Um estorno de R$ 50,00 aparece como
amount: -5000, fee_amount: 0 e net_amount: -5000 — a taxa da venda original não é devolvida, então não há o que deduzir do movimento de saída.
Objeto transaction
Este é o formato completo retornado emget, itens de list e em data.object dos webhooks transaction.*.
string
Identificador único do movimento. Usa o prefixo
txn_*.string
Sempre
"transaction".integer
O bruto do movimento em centavos: todo o dinheiro que entrou (ou saiu)
antes dos componentes de fee. É de onde
fee_amount é descontado para chegar
em net_amount.O que ele representa muda com o tipo do movimento:- Parcela de venda (
charge): a fatia daquela parcela no total pago pelo comprador — incluindo juros de parcelamento, quando houver. Numa venda de R$ 1.100,00 em 10x, cada movimento temamount: 11000. - Fee (
platform_fee,chargefy_fee): o valor bruto da fee daquela parcela, antes do custo de quem a recebe. - Estorno (
refund): valor negativo — é dinheiro saindo da conta. Um estorno de R$ 50,00 temamount: -5000.
0: movimento sem dinheiro não vira lançamento.string | null
Previsão de liquidação (ISO 8601).
null enquanto a data depende da
conciliação. Quando o movimento liquida, settled_at traz a data efetiva —
compare os dois para medir atraso.string
Data de criação em formato ISO 8601.
string
Moeda em minúsculas. Hoje sempre
brl.string | null
Rótulo derivado do movimento, quando aplicável (ex.:
Installment 2/10,
Refund).integer
Total descontado do bruto, em centavos.
0 quando não há desconto. Nunca é
negativo — é a soma exata dos itens de fee_details.array
Decomposição tipada do
fee_amount. Vazio quando não há desconto. Cada item
diz por que aquele valor saiu do bruto.O lojista nunca vê como a taxa que ele paga se divide entre a plataforma e a
Chargefy — essa decomposição pertence ao movimento da plataforma, não ao dele.
integer | null
Número da parcela (1-based).
null em movimentos não parcelados.integer | null
Total de parcelas da venda.
null em movimentos não parcelados.boolean
false em modo de teste.object
Sempre
{} — metadados vivem no payment intent.integer
Líquido do movimento, em centavos, com sinal:
amount - fee_amount. É o que
impacta o extrato — some este campo para fechar caixa.string | null
Pagamento que originou o movimento, quando houver. É por onde se chega na
venda como experiência: parcelas escolhidas, juros e desconto.
string | null
Quando o movimento liquidou de fato.
null enquanto pendente.string | null
O objeto que causou o movimento. É a ponte entre o extrato e o evento de
negócio que o originou.
Use para agrupar: todos os movimentos com o mesmo
ch_ pertencem à mesma
cobrança — em venda parcelada, são as N parcelas.string
Situação do movimento.
string
A natureza do movimento — “que dinheiro é esse”. Quais você recebe depende do
papel da sua organização: um lojista vê as vendas e os estornos dele; uma
plataforma vê, além dos próprios, a
platform_fee que cobra das organizações
conectadas.Um mesmo pagamento gera movimentos diferentes para cada parte, e cada uma só
enxerga os seus. Numa venda por plataforma, o lojista recebe o
charge com a
taxa que ele pagou; a plataforma recebe o platform_fee com a fee dela.
Nenhum dos dois vê o movimento do outro.string | null
Última atualização em formato ISO 8601.
Operações
O extrato é somente leitura: os movimentos nascem do processamento de pagamentos, nunca de uma chamada do parceiro.Eventos
Mudanças nesse objeto disparam os seguintes eventos: O payload carrega o objetotransaction completo em data.object.
Como se relaciona
transaction é o recurso público do extrato financeiro. Use
payment_intent para decidir o estado
do pagamento e charge para investigar a
tentativa concreta. Use Transaction para explicar bruto, taxas, líquido,
parcelas, previsão e liquidação.
Lifecycle financeiro
Relação entre Payment Intent, Charge e Transaction.
Conciliar pagamentos
Como ligar pedidos, movimentos, taxas e liquidação.

