Envelope e payloads
Todos os eventos usam o mesmo envelope, que é o corpo JSON do POST:
{ "event": "transaction.paid", "occurredAt": "2026-07-16T12:03:00.000Z", "data": { }}Campos de data por evento
Seção intitulada “Campos de data por evento”Campos de data por evento (valores monetários em centavos):
transaction.paid
Seção intitulada “transaction.paid”{ "companyId": "string", "transactionId": "string", "subTransactionId": "string", "providerTransactionId": "string", "paymentMethod": "PIX", "integration": "string", "status": "PAID", "amount": 10000, "currency": "BRL"}transaction.refunded
Seção intitulada “transaction.refunded”{ "companyId": "string", "refundId": "string", "subTransactionId": "string", "transactionId": "string | undefined", "refundStatus": "COMPLETED", "transactionStatus": "REFUNDED | undefined", "amount": 10000, "currency": "BRL"}withdraw.completed
Seção intitulada “withdraw.completed”{ "companyId": "string", "withdrawId": "string", "status": "string", "amount": 5000, "currency": "BRL", "providerEndToEndId": "string", "providerPaymentId": "string", "providerTid": "string"}withdraw.failed
Seção intitulada “withdraw.failed”{ "companyId": "string", "withdrawId": "string", "status": "string", "amount": 5000, "currency": "BRL", "reason": "string | undefined"}med.opened
Seção intitulada “med.opened”{ "companyId": "string", "medCaseId": "string", "status": "string", "contestedAmountCents": 10000, "subTransactionId": "string"}med.resolved
Seção intitulada “med.resolved”(uma de duas formas de decisão)
// RETURN{ "companyId": "string", "medCaseId": "string", "status": "string", "decision": "RETURN", "returnedCents": 10000 }// CONTEST{ "companyId": "string", "medCaseId": "string", "status": "CONTESTED", "decision": "CONTEST" }kyc.approved / kyc.rejected
Seção intitulada “kyc.approved / kyc.rejected”{ "companyId": "string", "kycStatus": "string", "rejectReason": "string | null"}split.received
Seção intitulada “split.received”(usa recipientCompanyId, não companyId)
{ "recipientCompanyId": "string", "subTransactionId": "string", "splitEntryId": "string", "amount": 10000, "currency": "BRL"}split.withdraw_received
Seção intitulada “split.withdraw_received”(usa recipientCompanyId, não companyId; enviado quando o saque da empresa indicada é confirmado)
{ "recipientCompanyId": "string", "withdrawId": "string", "amount": 1000, "currency": "BRL"}company.fees_updated
Seção intitulada “company.fees_updated”(foto completa das taxas efetivas — PSP + plataforma; pctApplied é fração, 0.0399 = 3,99%; método sem adquirente ativo não aparece)
{ "companyId": "string", "reason": "FEES_CHANGED | PROVIDER_CHANGED", "fees": [ { "paymentMethod": "PIX | BOLETO | CARD", "provider": "BEMPAGGO", "pctApplied": 0.0399, "fixedFeeCents": 50, "description": "3.99% + R$ 0.50" } ]}crypto.customer.updated
Seção intitulada “crypto.customer.updated”{ "customerId": "string", "status": "ACTIVE", "brCode": "string | null"}crypto.deposit.paid
Seção intitulada “crypto.deposit.paid”(amountUsdc é texto com 6 casas; match: EXACT | PARTIAL | OVERPAID | UNREQUESTED; fee em centavos; senderMismatch: true indica Pix vindo de CPF diferente do cliente)
{ "depositId": "11fcaddc-29b8-4353-a756-4073d8ec82d0", "customerId": "aaa61c8a-f702-4f02-aa16-0a803a232e0e", "depositIntentId": "610784d8-baa6-4daa-91c6-a45a16303c4a", "amountBrl": 4000, "amountUsdc": "7.820000", "match": "OVERPAID", "fee": 90, "senderMismatch": false}crypto.deposit.refunded
Seção intitulada “crypto.deposit.refunded”{ "depositId": "string", "customerId": "string", "depositIntentId": "string | null", "amountBrl": 4000, "amountUsdc": "7.820000", "reason": "string"}crypto.payout.processing
Seção intitulada “crypto.payout.processing”{ "payoutId": "a2ff86ec-b389-4d75-8e92-52b08740a912", "customerId": "string", "status": "PROCESSING", "amountBrl": 1000, "amountUsdc": "2.010000", "chargedUsdc": "2.130600", "rate": "4.970837"}crypto.payout.paid
Seção intitulada “crypto.payout.paid”(deliveredBrl é o valor que chegou na conta do cliente, em centavos; chargedUsdc é o total que saiu do saldo da loja em USDC: amountUsdc mais a taxa. Presente também em processing e failed; em failed o valor é devolvido ao saldo)
{ "payoutId": "string", "customerId": "string", "status": "PAID", "amountBrl": 1000, "amountUsdc": "2.010000", "chargedUsdc": "2.130600", "rate": "4.970837", "deliveredBrl": 999, "fee": 60}crypto.payout.failed
Seção intitulada “crypto.payout.failed”{ "payoutId": "string", "customerId": "string", "status": "FAILED", "reason": "string", "amountBrl": 1000, "chargedUsdc": "2.130600"}crypto.withdrawal.processing
Seção intitulada “crypto.withdrawal.processing”(saque do saldo da loja; grossUsdc sai do saldo, netUsdc é enviado no Pix; fee em centavos, descontada do valor)
{ "withdrawalId": "5c1e9a7d-3f0b-4b8e-9d2a-7a1f0c2e4b61", "status": "PROCESSING", "amountBrl": 10000, "grossUsdc": "18.867925", "netUsdc": "18.190000", "rate": "5.330000", "fee": 300}crypto.withdrawal.paid
Seção intitulada “crypto.withdrawal.paid”{ "withdrawalId": "5c1e9a7d-3f0b-4b8e-9d2a-7a1f0c2e4b61", "status": "PAID", "amountBrl": 10000, "netUsdc": "18.190000", "rate": "5.330000", "deliveredBrl": 9695, "fee": 300}crypto.withdrawal.failed
Seção intitulada “crypto.withdrawal.failed”(nada foi pago: o valor reservado volta inteiro para o saldo)
{ "withdrawalId": "5c1e9a7d-3f0b-4b8e-9d2a-7a1f0c2e4b61", "status": "FAILED", "reason": "string"}
