approved é a contestação deferida — ou seja, você perdeu. O adjetivo descreve a decisão sobre
a contestação, não sobre a sua loja. Um sistema que leia este evento como “aprovado para mim”
libera acesso numa venda que acabou de ser devolvida.
É aqui que você reverte o que med.opened mandou segurar:
cancele o acesso, o envio ou a assinatura. A retenção virou débito definitivo e o dinheiro já foi
para o comprador.O nome espelha o status interno (status: approved) para que evento, painel e API falem uma língua
só. Quem quiser o placar tem status e resolved_by; o painel mostra “Perdida”.Confira a assinatura antes de agir. Ver Verificar a assinatura.
data.charge chega com status e refunded_amount já atualizados, e data.med.refund descreve o
estorno feito ao comprador — do mesmo jeito que em
charge.refunded, para o seu código ler os dois pelo
mesmo caminho.resolved_by diz de onde veio o desfecho: platform é a Vext decidindo, seller é você tendo
assumido a contestação pelo painel.
refund vem null numa contestação deferida cuja venda já havia sido devolvida por outro
caminho. Leia data.charge.refunded_amount para saber quanto voltou, e não a presença do objeto.
Chave secreta do vendedor, criada no painel em Desenvolvedores.
O valor em claro existe uma única vez, na criação. Guardamos só o
hash SHA-256 - nem o suporte consegue recuperá-lo, o que é o ponto:
um dump do nosso banco não permite cobrar em nome de ninguém.
A chave vai no servidor. Colocá-la no navegador do comprador a
entrega a qualquer pessoa que abra a página.
Assinatura da entrega, no formato t=<timestamp>,v1=<hmac>, onde
hmac é HMAC-SHA256("<timestamp>.<corpo bruto>", <segredo>).
Duas regras ao conferir:
Calcule sobre o corpo bruto, antes de desserializar.
Reserializar muda espaçamento e ordem, e o HMAC deixa de bater.
Recuse timestamps com mais de 5 minutos. É isso que impede
alguém que interceptou uma entrega de charge.paid de reenviá-la
quantas vezes quiser, com assinatura perfeitamente válida.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vext","colors":{"primary":"#1A7A14","light":"#4FFC46","dark":"#14640F"},"logo":{"light":"https://mintcdn.com/vext/kcwCRAttQYaZqJCy/logo/light.svg?fit=max\u0026auto=format\u0026n=kcwCRAttQYaZqJCy\u0026q=85\u0026s=fb9b46dfbd546322b281376800e5d841","dark":"https://mintcdn.com/vext/kcwCRAttQYaZqJCy/logo/dark.svg?fit=max\u0026auto=format\u0026n=kcwCRAttQYaZqJCy\u0026q=85\u0026s=b5d7910037e70bdeaabd3c84a89ba3b8"},"favicon":"https://mintcdn.com/vext/OcFZC8TCCCNiFjKO/favicon.svg?fit=max\u0026auto=format\u0026n=OcFZC8TCCCNiFjKO\u0026q=85\u0026s=e0dfe4ab440758e15218c96ed34fe259","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","php","javascript","python"]}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"https://wa.me/5511936185272","label":"Suporte"}]},"footer":{"links":[{"header":"Documentação","items":[{"label":"Primeira cobrança","href":"/quickstart"},{"label":"Referência da API","href":"/api-reference/introducao"},{"label":"Webhooks","href":"/webhooks/visao-geral"}]},{"header":"Vext","items":[{"label":"Suporte","href":"https://wa.me/5511936185272"}]}]},"search":{"prompt":"Buscar na documentação da Vext"},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","claude","chatgpt","mcp"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vext","hasAudioNarration":false,"actualSubdomain":"vext","customDomains":["docs.usevext.com"],"gitSource":{"type":"github","owner":"brendooliveira","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae0ead2400e864d11faf0ec","collectionId":"064ef32c-2594-41ca-86a5-108594c9e07b","liveDeploymentHistoryId":"6ae0ead2400e864d11faf0ec","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae0ead2400e864d11faf0ec","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Referência da API","count":30},{"language":"default","tag":"Guias","count":26},{"language":"default","tag":"Cobranças","count":5},{"language":"default","tag":"Eventos de cobrança","count":5},{"language":"default","tag":"Convenções da API","count":5},{"language":"default","tag":"Cartão","count":5},{"language":"default","tag":"Depois da venda","count":5},{"language":"default","tag":"Cartões","count":4},{"language":"default","tag":"Objetos","count":4},{"language":"default","tag":"Cartão no navegador","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/webhooks/med-approved","slug":"/api-reference/webhooks/med-approved","pageMetadata":{"title":"med.approved","description":"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.","icon":"thumbs-down","openapi":"api-reference/openapi.yaml webhook med.approved","href":"/api-reference/webhooks/med-approved"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,Note,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`approved`}),` é a contestação deferida — ou seja, você perdeu.`]}),` O adjetivo descreve a decisão sobre\na contestação, não sobre a sua loja. Um sistema que leia este evento como “aprovado para mim”\nlibera acesso numa venda que acabou de ser devolvida.`]})}),`\n`,_jsxs(_components.p,{children:[`É aqui que você reverte o que `,_jsx(_components.a,{href:`/api-reference/webhooks/med-opened`,children:_jsx(_components.code,{children:`med.opened`})}),` mandou segurar:\ncancele o acesso, o envio ou a assinatura. A retenção virou débito definitivo e o dinheiro já foi\npara o comprador.`]}),`\n`,_jsxs(_components.p,{children:[`O nome espelha o status interno (`,_jsx(_components.code,{children:`status: approved`}),`) para que evento, painel e API falem uma língua\nsó. Quem quiser o placar tem `,_jsx(_components.code,{children:`status`}),` e `,_jsx(_components.code,{children:`resolved_by`}),`; o painel mostra “Perdida”.`]}),`\n`,_jsxs(_components.p,{children:[`Confira a assinatura antes de agir. Ver `,_jsx(_components.a,{href:`/webhooks/assinatura`,children:`Verificar a assinatura`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`o-que-vem-atualizado`,children:`O que vem atualizado`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`data.charge`}),` chega com `,_jsx(_components.code,{children:`status`}),` e `,_jsx(_components.code,{children:`refunded_amount`}),` já atualizados, e `,_jsx(_components.code,{children:`data.med.refund`}),` descreve o\nestorno feito ao comprador — do mesmo jeito que em\n`,_jsx(_components.a,{href:`/api-reference/webhooks/charge-refunded`,children:_jsx(_components.code,{children:`charge.refunded`})}),`, para o seu código ler os dois pelo\nmesmo caminho.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`resolved_by`}),` diz de onde veio o desfecho: `,_jsx(_components.code,{children:`platform`}),` é a Vext decidindo, `,_jsx(_components.code,{children:`seller`}),` é você tendo\nassumido a contestação pelo painel.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`refund`}),` vem `,_jsx(_components.code,{children:`null`}),` numa contestação deferida cuja venda já havia sido devolvida por outro\ncaminho. Leia `,_jsx(_components.code,{children:`data.charge.refunded_amount`}),` para saber quanto voltou, e não a presença do objeto.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"med.approved","description":"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.","icon":"thumbs-down","openapi":"api-reference/openapi.yaml webhook med.approved","href":"/api-reference/webhooks/med-approved"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"O que vem atualizado","slug":"o-que-vem-atualizado","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Contestação de Pix perdida","operationId":"webhookMedApproved","description":"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.","parameters":["a129fad8-3dac-4c38-b9f0-e0167cff8211","db091f8a-9088-4d78-a27e-8a85744ebf8a","7bdb9c2b-f610-4148-b6a3-160dffb8992d"],"requestBody":"e087d67a-1169-451a-9b83-d4a66a35c191","responses":{"200":"9ffe2dc7-a059-4df6-91c1-dc512212be33","default":"0b8ee732-f6b1-4cf5-ac1d-fe6826304009"},"method":"post","type":"webhook","servers":["ed9958ae-3134-4ef6-8d55-2744b0263cea"],"security":["35d11aa8-2563-49be-9ebf-815534166e0f"],"path":"med.approved","baseUrlOptions":["https://api.usevext.com"],"title":"Contestação de Pix perdida","codeSamples":[],"requestExampleLanguages":["bash","php","javascript","python"],"requiredOnlyExamples":true,"requestExamples":[{"language":"json","filename":"perdida","code":"{\n \"id\": \"evt_01k2p7q9s1u3w5y7a9c1e3g5j7\",\n \"type\": \"med.approved\",\n \"created_at\": \"2026-09-19T10:41:08+00:00\",\n \"data\": {\n \"med\": {\n \"object\": \"med\",\n \"id\": \"med_01k2m4n5r3t7v9x1z3b5d7f9h1\",\n \"status\": \"approved\",\n \"reason\": \"Não reconheço esta compra no meu extrato.\",\n \"held_amount\": 10000,\n \"currency\": \"BRL\",\n \"end_to_end_id\": \"E12345678202608041200\",\n \"purchase_date\": \"2026-08-04\",\n \"opened_by\": \"customer\",\n \"claimant\": {\n \"name\": \"Maria Souza\"\n },\n \"evidence\": [\n {\n \"id\": 41,\n \"side\": \"claimant\",\n \"filename\": \"extrato-do-banco.pdf\",\n \"mime\": \"application/pdf\",\n \"size\": 184320,\n \"sent_at\": \"2026-09-16T13:22:40+00:00\"\n },\n {\n \"id\": 42,\n \"side\": \"seller\",\n \"filename\": \"comprovante-de-entrega.png\",\n \"mime\": \"image/png\",\n \"size\": 96144,\n \"sent_at\": \"2026-09-17T09:10:02+00:00\"\n }\n ],\n \"events\": [\n {\n \"type\": \"opened\",\n \"at\": \"2026-09-16T13:22:40+00:00\",\n \"held_cents\": 10000,\n \"charge_code\": \"ch_01k1y6r6m6q2x0p3d9v4t7c8n2\",\n \"evidence_count\": 1\n },\n {\n \"type\": \"seller_defence\",\n \"at\": \"2026-09-17T09:10:02+00:00\",\n \"files\": 1\n },\n {\n \"type\": \"approved\",\n \"at\": \"2026-09-19T10:41:07+00:00\",\n \"released_cents\": 10000\n }\n ],\n \"opened_at\": \"2026-09-16T13:22:40+00:00\",\n \"defence_deadline\": \"2026-09-23T13:22:40+00:00\",\n \"responded_at\": \"2026-09-17T09:10:02+00:00\",\n \"decided_at\": \"2026-09-19T10:41:07+00:00\",\n \"decision_note\": \"Evidências não comprovam a entrega ao titular do Pix.\",\n \"resolved_by\": \"platform\",\n \"refund\": {\n \"object\": \"refund\",\n \"id\": \"re_01k2p7q8r0t2v4x6z8b0d2f4h6\",\n \"status\": \"refunded\"\n }\n },\n \"charge\": {\n \"object\": \"charge\",\n \"id\": \"ch_01k1y6r6m6q2x0p3d9v4t7c8n2\",\n \"status\": \"refunded\",\n \"payment_method\": \"pix\",\n \"amount\": 10000,\n \"currency\": \"BRL\",\n \"platform_fee\": 798,\n \"net_amount\": 9103,\n \"refunded_amount\": 10000,\n \"description\": \"Curso de Vue 3\",\n \"reference\": \"pedido-1042\",\n \"metadata\": {\n \"carrinho\": \"cart_88f21\"\n },\n \"customer\": {\n \"name\": \"Maria Souza\",\n \"email\": \"maria@exemplo.com.br\",\n \"document\": \"222.***.***-47\"\n },\n \"pix\": {\n \"qr_code\": \"00020101021226840014br.gov.bcb.pix2562qrcodepix.example.com/v2/abcd1234\",\n \"expires_at\": \"2026-08-04T15:00:00+00:00\",\n \"end_to_end_id\": \"E12345678202608041200\"\n },\n \"created_at\": \"2026-08-04T14:00:00+00:00\",\n \"paid_at\": \"2026-08-04T14:03:11+00:00\",\n \"expired_at\": null,\n \"refunded_at\": \"2026-09-19T10:41:07+00:00\"\n }\n }\n}"}],"requestExampleType":"webhook","responseExampleType":"generated"},"dependencies":{"parameters":{"a129fad8-3dac-4c38-b9f0-e0167cff8211":{"name":"X-Vext-Signature","in":"header","required":true,"description":"Assinatura da entrega, no formato `t=\u003ctimestamp>,v1=\u003chmac>`, onde\n`hmac` é `HMAC-SHA256(\"\u003ctimestamp>.\u003ccorpo bruto>\", \u003csegredo>)`.\n\nDuas regras ao conferir:\n\n1. Calcule sobre o **corpo bruto**, antes de desserializar.\n Reserializar muda espaçamento e ordem, e o HMAC deixa de bater.\n2. **Recuse timestamps com mais de 5 minutos.** É isso que impede\n alguém que interceptou uma entrega de `charge.paid` de reenviá-la\n quantas vezes quiser, com assinatura perfeitamente válida.\n","schema":{"type":"string","pattern":"^t=[0-9]+,v1=[0-9a-f]{64}$","isRequired":true,"description":"Assinatura da entrega, no formato `t=\u003ctimestamp>,v1=\u003chmac>`, onde\n`hmac` é `HMAC-SHA256(\"\u003ctimestamp>.\u003ccorpo bruto>\", \u003csegredo>)`.\n\nDuas regras ao conferir:\n\n1. Calcule sobre o **corpo bruto**, antes de desserializar.\n Reserializar muda espaçamento e ordem, e o HMAC deixa de bater.\n2. **Recuse timestamps com mais de 5 minutos.** É isso que impede\n alguém que interceptou uma entrega de `charge.paid` de reenviá-la\n quantas vezes quiser, com assinatura perfeitamente válida.\n","uniqueKey":"","typeLabel":"string"},"example":"t=1785931392,v1=8f3c1d0a5b7e9042c6a1b3d5e7f9012345678901abcdef234567890abcdef1234"},"db091f8a-9088-4d78-a27e-8a85744ebf8a":{"name":"X-Vext-Event","in":"header","required":true,"description":"Tipo do evento, repetido fora do corpo. Redundante com o payload e\nútil mesmo assim: permite filtrar no seu log sem desserializar nada.\n","schema":{"type":"string","isRequired":true,"description":"Tipo do evento, repetido fora do corpo. Redundante com o payload e\nútil mesmo assim: permite filtrar no seu log sem desserializar nada.\n","uniqueKey":"","typeLabel":"string"},"example":"charge.paid"},"7bdb9c2b-f610-4148-b6a3-160dffb8992d":{"name":"X-Vext-Delivery","in":"header","required":true,"description":"Identificador da entrega. Cite-o ao abrir um chamado - é por ele que\nlocalizamos a tentativa, a resposta do seu servidor e o horário.\n","schema":{"type":"string","isRequired":true,"description":"Identificador da entrega. Cite-o ao abrir um chamado - é por ele que\nlocalizamos a tentativa, a resposta do seu servidor e o horário.\n","uniqueKey":"","typeLabel":"string"},"example":"4821"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","type","created_at","data"],"properties":{"id":{"type":"string","description":"Identificador do evento. Estável entre as retentativas da mesma\nentrega - use-o para deduplicar do seu lado.\n","example":"evt_01k1y6r7z2m4n6p8q0r2s4t6u8","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"type":{"type":"string","enum":["charge.paid","charge.failed","charge.in_analysis","charge.refunded","charge.chargedback","withdrawal.paid","med.opened","med.approved","med.rejected"],"isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"data":{"type":"object","required":["med","charge"],"properties":{"med":{"type":"object","description":"Uma contestação de Pix (MED) contra uma venda sua.\n\nMesma forma nos três eventos - abertura e desfechos. O que muda é\no estado dentro dela: guarde o caso pelo `id` e atualize-o a cada\nevento, em vez de esperar corpos diferentes por tipo.\n","required":["object","id","status","reason","held_amount","currency","end_to_end_id","purchase_date","opened_by","claimant","evidence","events","opened_at","defence_deadline","responded_at","decided_at","decision_note","resolved_by","refund"],"properties":{"object":{"type":"string","const":"med","isRequired":true,"uniqueKey":"data.med.object","typeLabel":"string"},"id":{"type":"string","description":"O número de protocolo. É o mesmo que o comprador recebe por\ne-mail e o mesmo que aparece no painel.\n","example":"med_01k2m4n5r3t7v9x1z3b5d7f9h1","isRequired":true,"uniqueKey":"data.med.id","typeLabel":"string"},"status":{"type":"string","enum":["open","under_review","approved","rejected","refund_failed"],"description":"**`approved` é a contestação deferida - ou seja, você perdeu**;\n`rejected` é você ganhando. O adjetivo descreve a decisão sobre\na contestação, não sobre a loja.\n\n`open` e `under_review` ainda retêm o valor; `refund_failed`\ntambém, e significa que a decisão saiu contra você mas o\nestorno ainda não passou. Os eventos entregues carregam\n`open`, `approved` ou `rejected` - os outros dois são estados\ninternos que você vê no painel.\n","isRequired":true,"uniqueKey":"data.med.status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"O que o comprador escreveu ao contestar. Texto livre.","example":"Não reconheço esta compra no meu extrato.","isRequired":true,"uniqueKey":"data.med.reason","typeLabel":"string"},"held_amount":{"type":"integer","description":"Quanto saiu do seu saldo disponível, em centavos inteiros.\nCongelado na abertura: é o valor que a decisão vai devolver a\nvocê ou ao comprador, e não um recálculo.\n","format":"int64","isRequired":true,"uniqueKey":"data.med.held_amount","typeLabel":"integer\u003cint64>"},"currency":{"type":"string","const":"BRL","isRequired":true,"uniqueKey":"data.med.currency","typeLabel":"string"},"end_to_end_id":{"type":"string","description":"O identificador do Pix contestado.","example":"E12345678202608041200","isRequired":true,"uniqueKey":"data.med.end_to_end_id","typeLabel":"string"},"purchase_date":{"oneOf":[{"type":"string","format":"date","description":"A data que o comprador informou ao contestar, como ele a\ndigitou. Pode não ser a de `charge.paid_at`.\n\n`null` quando a contestação chega pelo arranjo do Pix em vez\ndo nosso formulário: ali a data da compra não existe como\ncampo, e a transação é identificada pelo `end_to_end_id`.\n","isRequired":true,"uniqueKey":"data.med.purchase_date.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","format":"date","description":"A data que o comprador informou ao contestar, como ele a\ndigitou. Pode não ser a de `charge.paid_at`.\n\n`null` quando a contestação chega pelo arranjo do Pix em vez\ndo nosso formulário: ali a data da compra não existe como\ncampo, e a transação é identificada pelo `end_to_end_id`.\n","isRequired":true,"uniqueKey":"data.med.purchase_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.purchase_date","typeLabel":"string\u003cdate> | null"},"opened_by":{"type":"string","enum":["customer","support"],"description":"`customer` é o formulário público preenchido pela pessoa;\n`support` é a Vext registrando o que ouviu por outro canal.\nAs duas retêm igual, mas sustentam alegações diferentes - vale\nsaber o que você está respondendo.\n","isRequired":true,"uniqueKey":"data.med.opened_by","typeLabel":"enum\u003cstring>"},"claimant":{"type":"object","description":"Quem abriu a contestação. **Só o nome.**\n\nE-mail e telefone ficam de fora de propósito: a alegação é de\nfraude e você é a parte acusada - o contato de quem acusa seria\num canal de pressão fora do processo. O nome vai porque sem ele\nvocê não reencontra a venda nos seus registros.\n\nPara os dados de quem PAGOU, use `data.charge.customer`: aquele\né o seu cliente, gravado no checkout, e você já o recebe em\n`charge.paid`. Podem ser pessoas diferentes.\n","required":["name"],"properties":{"name":{"oneOf":[{"type":"string","description":"`null` quando a contestação vem do arranjo do Pix e o banco\nde quem contestou não identifica a pessoa.\n","example":"Maria Souza","isRequired":true,"uniqueKey":"data.med.claimant.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"`null` quando a contestação vem do arranjo do Pix e o banco\nde quem contestou não identifica a pessoa.\n","example":"Maria Souza","isRequired":true,"uniqueKey":"data.med.claimant.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.claimant.name","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.med.claimant","typeLabel":"object"},"evidence":{"type":"array","description":"Os anexos dos DOIS lados, em ordem de envio. Vem vazio quando\nninguém anexou nada.\n","items":{"type":"object","description":"Um anexo da contestação, de qualquer um dos dois lados.\n\n**Não há link.** O disco é privado e os arquivos são servidos por\nstreaming autenticado - é material de litígio sobre uma pessoa\nnomeada, e um endereço que funcionasse fora da sessão viveria no\nlog de quem recebeu o webhook e poderia ser encaminhado. O\nconteúdo se abre no painel; aqui fica o que foi anexado, por qual\nlado e quando.\n","required":["id","side","filename","mime","size","sent_at"],"properties":{"id":{"type":"integer","description":"Identificador do anexo dentro da contestação.","example":41,"isRequired":true,"uniqueKey":"data.med.evidence.items.[INDEX].id","typeLabel":"integer"},"side":{"type":"string","enum":["claimant","seller"],"description":"`claimant` é o comprador, ao abrir a contestação. `seller` é a\nsua loja, ao se defender.\n","isRequired":true,"uniqueKey":"data.med.evidence.items.[INDEX].side","typeLabel":"enum\u003cstring>"},"filename":{"type":"string","description":"O nome do arquivo como quem enviou o nomeou.","example":"extrato-do-banco.pdf","isRequired":true,"uniqueKey":"data.med.evidence.items.[INDEX].filename","typeLabel":"string"},"mime":{"type":"string","example":"application/pdf","isRequired":true,"uniqueKey":"data.med.evidence.items.[INDEX].mime","typeLabel":"string"},"size":{"type":"integer","description":"Tamanho em bytes.","example":184320,"isRequired":true,"uniqueKey":"data.med.evidence.items.[INDEX].size","typeLabel":"integer"},"sent_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.med.evidence.items.[INDEX].sent_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.med.evidence.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.med.evidence","typeLabel":"object[]"},"events":{"type":"array","description":"A linha do tempo da contestação, do mais antigo ao mais novo.","items":{"type":"object","description":"Um passo da linha do tempo da contestação, em ordem cronológica.\n\nO que aconteceu, quando, e os números do passo. **Quem agiu não\nvai** - nas decisões, quem age é um analista da Vext, e o quadro\ninterno da plataforma não é parte do seu contrato.\n\nTrate `type` como aberto: passos novos podem aparecer, e um\n`switch` sem ramo padrão quebraria na primeira contestação que\nseguisse um caminho novo.\n","required":["type","at"],"properties":{"type":{"type":"string","description":"Os passos em uso hoje:\n\n- `opened` - o comprador abriu pelo formulário público\n- `opened_by_admin` - a Vext abriu registrando outro canal\n- `seller_defence` - você enviou contra-evidência\n- `refund_failed` - uma tentativa de estorno não passou; a\n retenção continua e a Vext tenta de novo\n- `approved` / `approved_without_refund` - deferida\n- `seller_accepted` / `seller_accepted_without_refund` -\n deferida porque você assumiu a contestação\n- `rejected` - indeferida\n","example":"opened","isRequired":true,"uniqueKey":"data.med.events.items.[INDEX].type","typeLabel":"string"},"at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.med.events.items.[INDEX].at","typeLabel":"string\u003cdate-time>"},"held_cents":{"type":"integer","description":"Quanto foi retido neste passo. Só em `opened`.","format":"int64","uniqueKey":"data.med.events.items.[INDEX].held_cents","typeLabel":"integer\u003cint64>"},"released_cents":{"type":"integer","description":"Quanto saiu da retenção. Só nos passos de desfecho.","format":"int64","uniqueKey":"data.med.events.items.[INDEX].released_cents","typeLabel":"integer\u003cint64>"},"evidence_count":{"type":"integer","description":"Quantos anexos vieram com a abertura.","uniqueKey":"data.med.events.items.[INDEX].evidence_count","typeLabel":"integer"},"files":{"type":"integer","description":"Quantos anexos vieram na sua defesa.","uniqueKey":"data.med.events.items.[INDEX].files","typeLabel":"integer"},"charge_code":{"type":"string","description":"A venda contestada. Só em `opened`.","uniqueKey":"data.med.events.items.[INDEX].charge_code","typeLabel":"string"}},"uniqueKey":"data.med.events.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.med.events","typeLabel":"object[]"},"opened_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.med.opened_at","typeLabel":"string\u003cdate-time>"},"defence_deadline":{"oneOf":[{"type":"string","format":"date-time","description":"Até quando você pode mandar a sua versão pelo painel. Não trava\na decisão da Vext - diz de quem é a vez.\n","isRequired":true,"uniqueKey":"data.med.defence_deadline.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Até quando você pode mandar a sua versão pelo painel. Não trava\na decisão da Vext - diz de quem é a vez.\n","isRequired":true,"uniqueKey":"data.med.defence_deadline.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.defence_deadline","typeLabel":"string\u003cdate-time> | null"},"responded_at":{"oneOf":[{"type":"string","format":"date-time","description":"Quando você enviou defesa. `null` se não enviou.","isRequired":true,"uniqueKey":"data.med.responded_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Quando você enviou defesa. `null` se não enviou.","isRequired":true,"uniqueKey":"data.med.responded_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.responded_at","typeLabel":"string\u003cdate-time> | null"},"decided_at":{"oneOf":[{"type":"string","format":"date-time","description":"`null` enquanto a contestação estiver aberta.","isRequired":true,"uniqueKey":"data.med.decided_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"`null` enquanto a contestação estiver aberta.","isRequired":true,"uniqueKey":"data.med.decided_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.decided_at","typeLabel":"string\u003cdate-time> | null"},"decision_note":{"oneOf":[{"type":"string","description":"O motivo da decisão, escrito por quem decidiu.","isRequired":true,"uniqueKey":"data.med.decision_note.oneOf.0","typeLabel":"string"},{"type":"null","description":"O motivo da decisão, escrito por quem decidiu.","isRequired":true,"uniqueKey":"data.med.decision_note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.decision_note","typeLabel":"string | null"},"resolved_by":{"oneOf":[{"type":"string","enum":["platform","seller",null],"description":"De onde veio o desfecho: `platform` é a Vext decidindo,\n`seller` é você tendo assumido a contestação pelo painel.\n`null` enquanto não houver decisão.\n","isRequired":true,"uniqueKey":"data.med.resolved_by.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["platform","seller",null],"description":"De onde veio o desfecho: `platform` é a Vext decidindo,\n`seller` é você tendo assumido a contestação pelo painel.\n`null` enquanto não houver decisão.\n","isRequired":true,"uniqueKey":"data.med.resolved_by.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.resolved_by","typeLabel":"enum\u003cstring> | null"},"refund":{"oneOf":[{"type":"object","description":"O estorno feito ao comprador. `null` em `med.opened` e em\n`med.rejected` - e também numa contestação deferida cuja venda\njá havia sido devolvida por outro caminho.\n","required":["object","id","status"],"properties":{"object":{"type":"string","const":"refund","isRequired":true,"uniqueKey":"data.med.refund.oneOf.0.object","typeLabel":"string"},"id":{"type":"string","example":"re_01k2p7q8r0t2v4x6z8b0d2f4h6","isRequired":true,"uniqueKey":"data.med.refund.oneOf.0.id","typeLabel":"string"},"status":{"type":"string","enum":["pending","succeeded","failed"],"description":"`failed` significa que a devolução **não** aconteceu e o saldo do\nvendedor foi reposto. A linha permanece de propósito: uma tentativa\nde devolver dinheiro que não deu certo é exatamente o que alguém vai\nprocurar depois.\n","isRequired":true,"uniqueKey":"data.med.refund.oneOf.0.status","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.med.refund.oneOf.0","typeLabel":"object"},{"type":"null","description":"O estorno feito ao comprador. `null` em `med.opened` e em\n`med.rejected` - e também numa contestação deferida cuja venda\njá havia sido devolvida por outro caminho.\n","required":["object","id","status"],"properties":{"object":{"type":"string","const":"refund"},"id":{"type":"string","example":"re_01k2p7q8r0t2v4x6z8b0d2f4h6"},"status":{"type":"string","enum":["pending","succeeded","failed"],"description":"`failed` significa que a devolução **não** aconteceu e o saldo do\nvendedor foi reposto. A linha permanece de propósito: uma tentativa\nde devolver dinheiro que não deu certo é exatamente o que alguém vai\nprocurar depois.\n"}},"isRequired":true,"uniqueKey":"data.med.refund.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.med.refund","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"data.med","typeLabel":"object"},"charge":{"oneOf":[{"type":"object","description":"A cobrança dentro de um evento. Quase sempre o objeto `Charge`\ncompleto; `ChargeMinimal` no caminho degradado descrito nele.\n","required":["object","id","status","payment_method","amount","currency","platform_fee","net_amount","refunded_amount","description","reference","metadata","customer","pix","card","boleto","created_at","paid_at","expired_at","refunded_at"],"properties":{"object":{"type":"string","const":"charge","isRequired":true,"uniqueKey":"data.charge.oneOf.0.object","typeLabel":"string"},"id":{"type":"string","description":"Código público da cobrança. Nunca é a chave primária: expor o\nautoincremento diria a qualquer cliente quantas vendas a\nplataforma inteira processou.\n","example":"ch_01k1y6r6m6q2x0p3d9v4t7c8n2","isRequired":true,"uniqueKey":"data.charge.oneOf.0.id","typeLabel":"string"},"status":{"type":"string","description":"Situação da cobrança. Só os estados de trânsito - `pending`,\n`processing` e `in_analysis` - ainda mudam sozinhos; os demais são\nterminais, exceto os que ainda admitem estorno.\n\n`processing` e `in_analysis` são do cartão: a autorização é\ndecidida na mesma requisição, mas pode parar na análise de fraude\nantes de virar `paid` ou `failed`. No PIX a cobrança vai direto de\n`pending` para o desfecho.\n\n`partially_refunded` é estado próprio, e não um `refunded` com\nasterisco: tratar uma venda devolvida pela metade como estornada\nfaria seu relatório descontar o valor inteiro.\n\n`chargedback` é definitivo: o dinheiro voltou pelo caminho da\nbandeira, e nem cancelamento nem estorno são mais possíveis.\n","enum":["pending","processing","in_analysis","paid","expired","canceled","partially_refunded","refunded","failed","chargedback"],"x-labels":{"pending":"Aguardando pagamento","processing":"Processando","in_analysis":"Em análise","paid":"Pago","expired":"Expirado","canceled":"Cancelado","partially_refunded":"Estornado em parte","refunded":"Estornado","failed":"Falhou","chargedback":"Chargeback"},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.status","typeLabel":"enum\u003cstring>"},"payment_method":{"type":"string","enum":["pix","credit_card","boleto"],"description":"O meio pelo qual esta cobrança foi criada. Omitir o campo na\ncriação continua significando `pix` - é o que toda integração\nque existe hoje espera, e mudar isso as quebraria todas de uma\nvez.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.payment_method","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"**O que o comprador paga**, em centavos inteiros.\n\nCuidado com a assimetria, porque ela é a pegadinha desta API: no\n`POST` você manda o PREÇO DO PRODUTO, e aqui volta o TOTAL. No\nPix e no cartão à vista os dois são iguais; no cartão parcelado\neste é maior, porque inclui o juro que o comprador pagou.\n\nO preço do produto, de volta, é `amount - interest`.\n","format":"int64","isRequired":true,"uniqueKey":"data.charge.oneOf.0.amount","typeLabel":"integer\u003cint64>"},"currency":{"type":"string","const":"BRL","isRequired":true,"uniqueKey":"data.charge.oneOf.0.currency","typeLabel":"string"},"platform_fee":{"type":"integer","description":"Nossa taxa, em centavos inteiros. Congelada na criação: reflete\no contrato que valia quando a venda aconteceu, não o de hoje.\n\nEla incide sobre o **preço do produto** (`amount - interest`), e\nnão sobre o total pago. É o que faz parcelar não custar nada a\nvocê - ver `net_amount`.\n","format":"int64","isRequired":true,"uniqueKey":"data.charge.oneOf.0.platform_fee","typeLabel":"integer\u003cint64>"},"net_amount":{"type":"integer","description":"O que fica com o vendedor, em centavos inteiros.\n\n**Não é `amount - platform_fee`.** Essa conta dá um número maior,\ne a diferença é o JURO do parcelamento: ele está dentro do\n`amount` porque o comprador o pagou, mas não é receita de\nninguém aqui - atravessa até o arranjo de pagamento.\n\nA identidade que fecha, e que o banco confere em toda cobrança:\n\n```\namount = net_amount + platform_fee + interest + co-produção\n```\n\nNo Pix e no cartão à vista o juro é zero, e aí\n`amount - platform_fee` fecha.\n","format":"int64","isRequired":true,"uniqueKey":"data.charge.oneOf.0.net_amount","typeLabel":"integer\u003cint64>"},"refunded_amount":{"type":"integer","description":"Total já devolvido ao comprador, em centavos inteiros. Acumulado\nentre estornos parciais.\n","format":"int64","isRequired":true,"uniqueKey":"data.charge.oneOf.0.refunded_amount","typeLabel":"integer\u003cint64>"},"description":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.charge.oneOf.0.description.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.charge.oneOf.0.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.description","typeLabel":"string | null"},"reference":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.charge.oneOf.0.reference.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.charge.oneOf.0.reference.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.reference","typeLabel":"string | null"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.charge.oneOf.0.metadata.additionalProperties","typeLabel":"string"},"description":"O que você enviou na criação. **Sempre um objeto**, `{}` quando\nnão houve nada - nunca `null`, para o seu código não ter dois\ncasos a tratar.\n","example":{"carrinho":"cart_88f21","campanha":"black-friday"},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.metadata","typeLabel":"object"},"customer":{"oneOf":[{"type":"object","description":"`null` na cobrança que não tem comprador vinculado. A chave em\nsi nunca falta.\n","required":["name","email","document"],"properties":{"name":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.email","typeLabel":"string | null"},"document":{"oneOf":[{"type":"string","description":"Mascarado. Você já enviou o documento; devolvê-lo inteiro em\ntoda consulta espalharia o dado sem nenhum ganho.\n","example":"111.***.***-35","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.document.oneOf.0","typeLabel":"string"},{"type":"null","description":"Mascarado. Você já enviou o documento; devolvê-lo inteiro em\ntoda consulta espalharia o dado sem nenhum ganho.\n","example":"111.***.***-35","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.document.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0.document","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.0","typeLabel":"object"},{"type":"null","description":"`null` na cobrança que não tem comprador vinculado. A chave em\nsi nunca falta.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.customer","typeLabel":"object | null"},"pix":{"type":"object","description":"Presente em toda cobrança, inclusive nas de cartão - onde os\ntrês campos vêm `null`. Um objeto sempre presente evita o\n`if (charge.pix)` antes de cada leitura.\n","required":["qr_code","expires_at","end_to_end_id"],"properties":{"qr_code":{"oneOf":[{"type":"string","description":"Payload copia-e-cola do PIX. Gere a imagem do QR a partir\ndele - não devolvemos PNG.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.qr_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Payload copia-e-cola do PIX. Gere a imagem do QR a partir\ndele - não devolvemos PNG.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.qr_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.qr_code","typeLabel":"string | null"},"expires_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.expires_at","typeLabel":"string\u003cdate-time> | null"},"end_to_end_id":{"oneOf":[{"type":"string","description":"Identificador da transação no Sistema de Pagamentos\nBrasileiro. Aparece depois do pagamento e é o que o banco do\ncomprador reconhece.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.end_to_end_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Identificador da transação no Sistema de Pagamentos\nBrasileiro. Aparece depois do pagamento e é o que o banco do\ncomprador reconhece.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.end_to_end_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix.end_to_end_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.pix","typeLabel":"object"},"card":{"type":"object","description":"Presente em toda cobrança, inclusive nas de PIX - onde os campos\nvêm `null`. Mesma regra do `pix` acima, e pelo mesmo motivo.\n\nO que **não** está aqui, e não vai estar: os seis primeiros\ndígitos, o código de retorno da adquirente e a nota do\nantifraude. Os dois primeiros são diagnóstico nosso; a nota numa\nresposta pública seria um oráculo de risco para quem testa\ncartão em lote. O código de recusa sai numa recusa, em\n`error.details.decline_code`, onde quem lê é o seu servidor.\n","required":["brand","last_four","holder_name","installments","recurrence_cycle","interest","three_d_secure","authorized_at"],"properties":{"brand":{"oneOf":[{"type":"string","description":"A bandeira que a **Pagar.me** reconheceu, e não a que o\nnavegador leu do BIN. Elas divergem, e a que vale é esta.\n","enum":["visa","mastercard","elo","hipercard","amex","diners","discover","aura",null],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.brand.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A bandeira que a **Pagar.me** reconheceu, e não a que o\nnavegador leu do BIN. Elas divergem, e a que vale é esta.\n","enum":["visa","mastercard","elo","hipercard","amex","diners","discover","aura",null],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.brand.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.brand","typeLabel":"enum\u003cstring> | null"},"last_four":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.last_four.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.last_four.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.last_four","typeLabel":"string | null"},"holder_name":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.holder_name.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.holder_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.holder_name","typeLabel":"string | null"},"installments":{"oneOf":[{"type":"integer","description":"`null` no PIX. A coluna tem default `1`, mas \"uma parcela\"\nnuma cobrança que não parcela é um número que convida a\nconta errada.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.installments.oneOf.0","typeLabel":"integer"},{"type":"null","description":"`null` no PIX. A coluna tem default `1`, mas \"uma parcela\"\nnuma cobrança que não parcela é um número que convida a\nconta errada.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.installments.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.installments","typeLabel":"integer | null"},"recurrence_cycle":{"oneOf":[{"type":"string","enum":["first","subsequent",null],"description":"O ciclo declarado na criação, de volta - e `null` em toda\ncobrança que não faz parte de uma série, que é a esmagadora\nmaioria.\n\nÉ por ele que você responde \"quais destas cobranças foram de\nassinatura?\" ao conciliar, e é ele que explica a ausência do\ncomprador na tela numa contestação.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.recurrence_cycle.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["first","subsequent",null],"description":"O ciclo declarado na criação, de volta - e `null` em toda\ncobrança que não faz parte de uma série, que é a esmagadora\nmaioria.\n\nÉ por ele que você responde \"quais destas cobranças foram de\nassinatura?\" ao conciliar, e é ele que explica a ausência do\ncomprador na tela numa contestação.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.recurrence_cycle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.recurrence_cycle","typeLabel":"enum\u003cstring> | null"},"interest":{"type":"integer","description":"Os juros do parcelamento, em centavos inteiros, e `0` nas\nparcelas sem juros. Eles viajam à Pagar.me como um ITEM à\nparte - ela deriva o valor do pedido da soma dos itens, e um\npedido que não fecha é recusado inteiro.\n","format":"int64","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.interest","typeLabel":"integer\u003cint64>"},"three_d_secure":{"type":"object","required":["status","transaction_id"],"properties":{"status":{"oneOf":[{"type":"string","description":"O `transStatus` do protocolo. `Y` é autenticado, `A` é\ntentativa comprovada - os dois carregam o liability\nshift em Visa e Mastercard.\n","enum":["Y","A","N","C","U","R","I",null],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure.status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"O `transStatus` do protocolo. `Y` é autenticado, `A` é\ntentativa comprovada - os dois carregam o liability\nshift em Visa e Mastercard.\n","enum":["Y","A","N","C","U","R","I",null],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure.status.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure.status","typeLabel":"enum\u003cstring> | null"},"transaction_id":{"oneOf":[{"type":"string","description":"O identificador da autenticação. É ele que se apresenta\nà bandeira numa contestação.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure.transaction_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"O identificador da autenticação. É ele que se apresenta\nà bandeira numa contestação.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure.transaction_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure.transaction_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.three_d_secure","typeLabel":"object"},"authorized_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.authorized_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.authorized_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card.authorized_at","typeLabel":"string\u003cdate-time> | null"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.card","typeLabel":"object"},"boleto":{"type":"object","description":"Presente em toda cobrança, inclusive nas de PIX e de cartão -\nonde os campos vêm `null`. Mesma regra do `pix` e do `card`, e\npelo mesmo motivo.\n\nBoleto é oferecido apenas a lojas em conta de split na Pagar.me.\nNuma loja fora desse arranjo, `POST /v1/charges` com\n`payment_method: boleto` responde 422 com\n`boleto_not_available`.\n","required":["line","barcode","url","pdf","nosso_numero","due_at"],"properties":{"line":{"oneOf":[{"type":"string","description":"Linha digitável - o equivalente do copia-e-cola do PIX, e o\núnico campo que o pagador realmente usa. É o que indica que\no boleto existe: quando ela vem `null`, o provedor recusou a\nemissão e a cobrança nasce `failed`.\n","example":"34191.79001 01043.510047 91020.150008 1 92230000050000","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.line.oneOf.0","typeLabel":"string"},{"type":"null","description":"Linha digitável - o equivalente do copia-e-cola do PIX, e o\núnico campo que o pagador realmente usa. É o que indica que\no boleto existe: quando ela vem `null`, o provedor recusou a\nemissão e a cobrança nasce `failed`.\n","example":"34191.79001 01043.510047 91020.150008 1 92230000050000","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.line.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.line","typeLabel":"string | null"},"barcode":{"oneOf":[{"type":"string","description":"Endereço da imagem do código de barras na Pagar.me. Não\nservimos o arquivo - como no QR do PIX, devolvemos o\nendereço.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.barcode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Endereço da imagem do código de barras na Pagar.me. Não\nservimos o arquivo - como no QR do PIX, devolvemos o\nendereço.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.barcode.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.barcode","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","description":"Página do boleto, para o pagador visualizar.","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Página do boleto, para o pagador visualizar.","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.url","typeLabel":"string | null"},"pdf":{"oneOf":[{"type":"string","description":"O mesmo documento em PDF.","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.pdf.oneOf.0","typeLabel":"string"},{"type":"null","description":"O mesmo documento em PDF.","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.pdf.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.pdf","typeLabel":"string | null"},"nosso_numero":{"oneOf":[{"type":"string","description":"Identificador do boleto na conta do emissor. É o número que\no banco devolve no arquivo de retorno, e é por ele que se\nencontra à mão um pagamento cujo webhook não chegou.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.nosso_numero.oneOf.0","typeLabel":"string"},{"type":"null","description":"Identificador do boleto na conta do emissor. É o número que\no banco devolve no arquivo de retorno, e é por ele que se\nencontra à mão um pagamento cujo webhook não chegou.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.nosso_numero.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.nosso_numero","typeLabel":"string | null"},"due_at":{"oneOf":[{"type":"string","format":"date-time","description":"**Vencimento, não expiração.** O banco aceita boleto depois\ndesta data, e por isso não varremos boleto vencido para\n`expired` - quem tratar esta data como fim encerraria venda\nque ainda pode ser paga. Normalizada pelo provedor para o\nfim do dia.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.due_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"**Vencimento, não expiração.** O banco aceita boleto depois\ndesta data, e por isso não varremos boleto vencido para\n`expired` - quem tratar esta data como fim encerraria venda\nque ainda pode ser paga. Normalizada pelo provedor para o\nfim do dia.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.due_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto.due_at","typeLabel":"string\u003cdate-time> | null"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.0.boleto","typeLabel":"object"},"created_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.created_at","typeLabel":"string\u003cdate-time> | null"},"paid_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.paid_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.paid_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.paid_at","typeLabel":"string\u003cdate-time> | null"},"expired_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.expired_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.expired_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.expired_at","typeLabel":"string\u003cdate-time> | null"},"refunded_at":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.refunded_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"data.charge.oneOf.0.refunded_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.charge.oneOf.0.refunded_at","typeLabel":"string\u003cdate-time> | null"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.0","typeLabel":"object"},{"type":"object","description":"A cobrança dentro de um evento. Quase sempre o objeto `Charge`\ncompleto; `ChargeMinimal` no caminho degradado descrito nele.\n","required":["object","id","status","payment_method","amount","currency","metadata"],"properties":{"object":{"type":"string","const":"charge","isRequired":true,"uniqueKey":"data.charge.oneOf.1.object","typeLabel":"string"},"id":{"type":"string","example":"ch_01k1y6r6m6q2x0p3d9v4t7c8n2","isRequired":true,"uniqueKey":"data.charge.oneOf.1.id","typeLabel":"string"},"status":{"type":"string","description":"Situação da cobrança. Só os estados de trânsito - `pending`,\n`processing` e `in_analysis` - ainda mudam sozinhos; os demais são\nterminais, exceto os que ainda admitem estorno.\n\n`processing` e `in_analysis` são do cartão: a autorização é\ndecidida na mesma requisição, mas pode parar na análise de fraude\nantes de virar `paid` ou `failed`. No PIX a cobrança vai direto de\n`pending` para o desfecho.\n\n`partially_refunded` é estado próprio, e não um `refunded` com\nasterisco: tratar uma venda devolvida pela metade como estornada\nfaria seu relatório descontar o valor inteiro.\n\n`chargedback` é definitivo: o dinheiro voltou pelo caminho da\nbandeira, e nem cancelamento nem estorno são mais possíveis.\n","enum":["pending","processing","in_analysis","paid","expired","canceled","partially_refunded","refunded","failed","chargedback"],"x-labels":{"pending":"Aguardando pagamento","processing":"Processando","in_analysis":"Em análise","paid":"Pago","expired":"Expirado","canceled":"Cancelado","partially_refunded":"Estornado em parte","refunded":"Estornado","failed":"Falhou","chargedback":"Chargeback"},"isRequired":true,"uniqueKey":"data.charge.oneOf.1.status","typeLabel":"enum\u003cstring>"},"payment_method":{"type":"string","enum":["pix","credit_card","boleto"],"isRequired":true,"uniqueKey":"data.charge.oneOf.1.payment_method","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"Valor cobrado, em centavos inteiros.","format":"int64","isRequired":true,"uniqueKey":"data.charge.oneOf.1.amount","typeLabel":"integer\u003cint64>"},"currency":{"type":"string","const":"BRL","isRequired":true,"uniqueKey":"data.charge.oneOf.1.currency","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.charge.oneOf.1.metadata.additionalProperties","typeLabel":"string"},"description":"Vai até no corpo reduzido: é por ela que você reencontra o\npedido do seu lado, e um evento sem ela anunciaria um pagamento\nsem dizer a que se refere.\n","isRequired":true,"uniqueKey":"data.charge.oneOf.1.metadata","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data.charge.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.charge","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"perdida":{"title":"perdida","value":{"id":"evt_01k2p7q9s1u3w5y7a9c1e3g5j7","type":"med.approved","created_at":"2026-09-19T10:41:08+00:00","data":{"med":{"object":"med","id":"med_01k2m4n5r3t7v9x1z3b5d7f9h1","status":"approved","reason":"Não reconheço esta compra no meu extrato.","held_amount":10000,"currency":"BRL","end_to_end_id":"E12345678202608041200","purchase_date":"2026-08-04","opened_by":"customer","claimant":{"name":"Maria Souza"},"evidence":[{"id":41,"side":"claimant","filename":"extrato-do-banco.pdf","mime":"application/pdf","size":184320,"sent_at":"2026-09-16T13:22:40+00:00"},{"id":42,"side":"seller","filename":"comprovante-de-entrega.png","mime":"image/png","size":96144,"sent_at":"2026-09-17T09:10:02+00:00"}],"events":[{"type":"opened","at":"2026-09-16T13:22:40+00:00","held_cents":10000,"charge_code":"ch_01k1y6r6m6q2x0p3d9v4t7c8n2","evidence_count":1},{"type":"seller_defence","at":"2026-09-17T09:10:02+00:00","files":1},{"type":"approved","at":"2026-09-19T10:41:07+00:00","released_cents":10000}],"opened_at":"2026-09-16T13:22:40+00:00","defence_deadline":"2026-09-23T13:22:40+00:00","responded_at":"2026-09-17T09:10:02+00:00","decided_at":"2026-09-19T10:41:07+00:00","decision_note":"Evidências não comprovam a entrega ao titular do Pix.","resolved_by":"platform","refund":{"object":"refund","id":"re_01k2p7q8r0t2v4x6z8b0d2f4h6","status":"refunded"}},"charge":{"object":"charge","id":"ch_01k1y6r6m6q2x0p3d9v4t7c8n2","status":"refunded","payment_method":"pix","amount":10000,"currency":"BRL","platform_fee":798,"net_amount":9103,"refunded_amount":10000,"description":"Curso de Vue 3","reference":"pedido-1042","metadata":{"carrinho":"cart_88f21"},"customer":{"name":"Maria Souza","email":"maria@exemplo.com.br","document":"222.***.***-47"},"pix":{"qr_code":"00020101021226840014br.gov.bcb.pix2562qrcodepix.example.com/v2/abcd1234","expires_at":"2026-08-04T15:00:00+00:00","end_to_end_id":"E12345678202608041200"},"created_at":"2026-08-04T14:00:00+00:00","paid_at":"2026-08-04T14:03:11+00:00","expired_at":null,"refunded_at":"2026-09-19T10:41:07+00:00"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"9ffe2dc7-a059-4df6-91c1-dc512212be33":{"description":"Recebido.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"0b8ee732-f6b1-4cf5-ac1d-fe6826304009":{"description":"Fora da faixa 2xx, agenda nova tentativa.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"35d11aa8-2563-49be-9ebf-815534166e0f":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"sk_live_… | sk_test_…","description":"Chave secreta do vendedor, criada no painel em **Desenvolvedores**.\n\nO valor em claro existe uma única vez, na criação. Guardamos só o\nhash SHA-256 - nem o suporte consegue recuperá-lo, o que é o ponto:\num dump do nosso banco não permite cobrar em nome de ninguém.\n\nA chave vai no **servidor**. Colocá-la no navegador do comprador a\nentrega a qualquer pessoa que abra a página.\n","scopes":[],"schemeName":"apiKey"}}},"servers":{"ed9958ae-3134-4ef6-8d55-2744b0263cea":{"url":"https://api.usevext.com","description":"Produção"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"sk_live_… | sk_test_…","description":"Chave secreta do vendedor, criada no painel em **Desenvolvedores**.\n\nO valor em claro existe uma única vez, na criação. Guardamos só o\nhash SHA-256 - nem o suporte consegue recuperá-lo, o que é o ponto:\num dump do nosso banco não permite cobrar em nome de ninguém.\n\nA chave vai no **servidor**. Colocá-la no navegador do comprador a\nentrega a qualquer pessoa que abra a página.\n","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Chave secreta do vendedor, criada no painel em **Desenvolvedores**.\n\nO valor em claro existe uma única vez, na criação. Guardamos só o\nhash SHA-256 - nem o suporte consegue recuperá-lo, o que é o ponto:\num dump do nosso banco não permite cobrar em nome de ninguém.\n\nA chave vai no **servidor**. Colocá-la no navegador do comprador a\nentrega a qualquer pessoa que abra a página.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"vext","siteName":"Vext","title":"med.approved - Vext","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-19T20:46:44.188Z","originalFileLocation":"api-reference/webhooks/med-approved.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vext\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"med.approved - Vext\">\u003cmeta data-mint-head property=\"og:description\" content=\"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vext\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.usevext.com/api-reference/webhooks/med-approved\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vext.mintlify.app/_mintlify/api/og/v2?division=Eventos+de+contesta%C3%A7%C3%A3o+%28MED%29\u0026amp;title=med.approved\u0026amp;description=Enviado+quando+a+contesta%C3%A7%C3%A3o+de+Pix+%C3%A9+deferida.+O+comprador+foi+estornado+e+a+venda+est%C3%A1+devolvida.\u0026amp;theme=04ad90c852999e4f38bcba12\u0026amp;signature=f416bbb3c274c482899bcd43b286a5ec2ff40775d5d1c973bbcdf30a6c8e7db5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"med.approved - Vext\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vext.mintlify.app/_mintlify/api/og/v2?division=Eventos+de+contesta%C3%A7%C3%A3o+%28MED%29\u0026amp;title=med.approved\u0026amp;description=Enviado+quando+a+contesta%C3%A7%C3%A3o+de+Pix+%C3%A9+deferida.+O+comprador+foi+estornado+e+a+venda+est%C3%A1+devolvida.\u0026amp;theme=04ad90c852999e4f38bcba12\u0026amp;signature=f416bbb3c274c482899bcd43b286a5ec2ff40775d5d1c973bbcdf30a6c8e7db5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/vext/1ynttjJ_6FW1Z8CJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vext\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1A7A14\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.usevext.com/api-reference/webhooks/med-approved\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/webhooks/med-approved.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.usevext.com/#organization\",\"name\":\"Vext\",\"url\":\"https://docs.usevext.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vext/kcwCRAttQYaZqJCy/logo/light.svg?fit=max\u0026auto=format\u0026n=kcwCRAttQYaZqJCy\u0026q=85\u0026s=fb9b46dfbd546322b281376800e5d841\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.usevext.com#website\",\"name\":\"Vext\",\"url\":\"https://docs.usevext.com\",\"publisher\":{\"@id\":\"https://docs.usevext.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.usevext.com/api-reference/webhooks/med-approved#webpage\",\"url\":\"https://docs.usevext.com/api-reference/webhooks/med-approved\",\"name\":\"med.approved\",\"description\":\"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.\",\"dateModified\":\"2026-09-19T20:46:44.188Z\",\"isPartOf\":{\"@id\":\"https://docs.usevext.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.usevext.com/api-reference/webhooks/med-approved#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.usevext.com/api-reference/webhooks/med-approved#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Eventos de contestação (MED)\",\"item\":\"https://docs.usevext.com/api-reference/webhooks/med-opened\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"med.approved\",\"item\":\"https://docs.usevext.com/api-reference/webhooks/med-approved\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.usevext.com/api-reference/webhooks/med-approved#apireference\",\"headline\":\"med.approved\",\"name\":\"med.approved\",\"description\":\"Enviado quando a contestação de Pix é deferida. O comprador foi estornado e a venda está devolvida.\",\"url\":\"https://docs.usevext.com/api-reference/webhooks/med-approved\",\"mainEntityOfPage\":{\"@id\":\"https://docs.usevext.com/api-reference/webhooks/med-approved#webpage\"},\"dateModified\":\"2026-09-19T20:46:44.188Z\",\"publisher\":{\"@id\":\"https://docs.usevext.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.usevext.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vext\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vext","nav":{"global":null,"tabs":[{"tab":"Guias","pages":[{"title":"Guias","href":""}]},{"tab":"Referência da API","groups":[{"group":"Visão geral","pages":[{"title":"Visão geral","icon":"terminal","href":"/api-reference/introducao"}]},{"group":"Objetos","pages":[{"title":"Cobrança","icon":"receipt","href":"/api-reference/objetos/cobranca"},{"title":"Cartão guardado","icon":"vault","href":"/api-reference/objetos/cartao-guardado"},{"title":"Comprador","icon":"user","href":"/api-reference/objetos/comprador"},{"title":"Saque","icon":"banknote","href":"/api-reference/objetos/saque"}]},{"group":"Cobranças","pages":[{"title":"Criar cobrança","icon":"circle-dollar-sign","openapi":"api-reference/openapi.yaml POST /v1/charges","href":"/api-reference/cobrancas/criar"},{"title":"Listar cobranças","icon":"list","openapi":"api-reference/openapi.yaml GET /v1/charges","href":"/api-reference/cobrancas/listar"},{"title":"Consultar cobrança","icon":"file-search","openapi":"api-reference/openapi.yaml GET /v1/charges/{code}","href":"/api-reference/cobrancas/consultar"},{"title":"Estornar cobrança","icon":"rotate-ccw","openapi":"api-reference/openapi.yaml POST /v1/charges/{code}/refund","href":"/api-reference/cobrancas/estornar"},{"title":"Grade de parcelas","icon":"table","openapi":"api-reference/openapi.yaml GET /v1/installments","href":"/api-reference/cobrancas/parcelas"}]},{"group":"Cartão no navegador","pages":[{"title":"A biblioteca vext.js","sidebarTitle":"vext.js","icon":"code","openapi":"api-reference/openapi.yaml GET /v1/vext.js","href":"/api-reference/cartao/vext-js"},{"title":"Configuração para o navegador","sidebarTitle":"client_config","icon":"browser","openapi":"api-reference/openapi.yaml GET /v1/client_config","href":"/api-reference/cartao/client-config"},{"title":"Emitir token de autenticação","icon":"shield-check","openapi":"api-reference/openapi.yaml POST /v1/three_ds_tokens","href":"/api-reference/cartao/three-ds-token"}]},{"group":"Cartões","pages":[{"title":"Guardar cartão","icon":"vault","openapi":"api-reference/openapi.yaml POST /v1/cards","href":"/api-reference/cartoes/guardar"},{"title":"Listar cartões guardados","icon":"credit-card","openapi":"api-reference/openapi.yaml GET /v1/cards","href":"/api-reference/cartoes/listar"},{"title":"Consultar cartão guardado","icon":"file-search","openapi":"api-reference/openapi.yaml GET /v1/cards/{code}","href":"/api-reference/cartoes/consultar"},{"title":"Remover cartão guardado","icon":"trash-2","openapi":"api-reference/openapi.yaml DELETE /v1/cards/{code}","href":"/api-reference/cartoes/remover"}]},{"group":"Saldo","pages":[{"title":"Consultar saldo","icon":"wallet","openapi":"api-reference/openapi.yaml GET /v1/balance","href":"/api-reference/saldo/consultar"}]},{"group":"Saques","pages":[{"title":"Solicitar saque","icon":"banknote","openapi":"api-reference/openapi.yaml POST /v1/withdrawals","href":"/api-reference/saques/solicitar"},{"title":"Listar saques","icon":"list","openapi":"api-reference/openapi.yaml GET /v1/withdrawals","href":"/api-reference/saques/listar"},{"title":"Consultar saque","icon":"search","openapi":"api-reference/openapi.yaml GET /v1/withdrawals/{code}","href":"/api-reference/saques/consultar"}]},{"group":"Eventos de cobrança","pages":[{"title":"charge.paid","icon":"badge-check","openapi":"api-reference/openapi.yaml webhook charge.paid","href":"/api-reference/webhooks/charge-paid"},{"title":"charge.failed","icon":"circle-x","openapi":"api-reference/openapi.yaml webhook charge.failed","href":"/api-reference/webhooks/charge-failed"},{"title":"charge.in_analysis","icon":"search","openapi":"api-reference/openapi.yaml webhook charge.in_analysis","href":"/api-reference/webhooks/charge-in-analysis"},{"title":"charge.refunded","icon":"undo-2","openapi":"api-reference/openapi.yaml webhook charge.refunded","href":"/api-reference/webhooks/charge-refunded"},{"title":"charge.chargedback","icon":"gavel","openapi":"api-reference/openapi.yaml webhook charge.chargedback","href":"/api-reference/webhooks/charge-chargedback"}]},{"group":"Eventos de contestação (MED)","pages":[{"title":"med.opened","description":"Enviado quando o comprador abre uma contestação de Pix. O valor sai do saldo e fica retido até a decisão.","icon":"shield-alert","openapi":"api-reference/openapi.yaml webhook med.opened","href":"/api-reference/webhooks/med-opened"},{"title":"med.approved","icon":"thumbs-down","openapi":"api-reference/openapi.yaml webhook med.approved","href":"/api-reference/webhooks/med-approved"},{"title":"med.rejected","description":"Enviado quando a contestação de Pix é indeferida. O valor retido volta ao saldo e a venda segue de pé.","icon":"thumbs-up","openapi":"api-reference/openapi.yaml webhook med.rejected","href":"/api-reference/webhooks/med-rejected"}]},{"group":"Eventos de saque","pages":[{"title":"withdrawal.paid","icon":"banknote","openapi":"api-reference/openapi.yaml webhook withdrawal.paid","href":"/api-reference/webhooks/withdrawal-paid"}]}]}]},"basePath":"","title":"med.approved - Vext","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}