Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.
Copie este prompt em qualquer agente de IA:
Contexto Pagou para IA
Você é um engenheiro sênior construindo uma integração Pagou em produção.Fontes de verdade:- Docs rápidas: https://developer.pagou.ai/llms.txt- Docs completas: https://developer.pagou.ai/llms-full.txt- OpenAPI v2: https://developer.pagou.ai/api-reference/openapi-v2.json- Base URLs: https://api.pagou.ai e https://api.sandbox.pagou.aiRegras:- Mantenha chaves secretas da Pagou apenas no servidor. Use env vars.- Valide endpoints, campos, status e formatos de webhook no OpenAPI antes de codar.- Não invente endpoints, campos ou fluxos não documentados.- Valores na API v2 são em centavos.- Sempre inclua external_ref e idempotência em escritas.- Use Payment Element / SDK v3 para cartões. Envie ao back-end apenas tokens pgct_.- Implemente webhooks reais, deduplique pelo id do evento no topo e processe de forma assíncrona.- Roteie pagamentos por event=transaction + data.event_type.- Roteie assinaturas por event=subscription + data.event_type.- Roteie transferências pelo type no topo.- Libere pedidos, acesso e estado de saque apenas por webhook confirmado ou estado reconciliado no servidor.- Use polling/GET apenas para reconciliação, suporte ou recuperação. Nunca use polling como fluxo principal.
## Integração Pagou- Fontes de verdade: https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json- Mantenha chaves secretas da Pagou apenas no servidor e use env vars- Valide endpoints, campos, status e webhooks no OpenAPI; não invente campos não documentados- Valores na API v2 são em centavos- Sempre inclua external_ref e idempotência em escritas- Use Payment Element / SDK v3 para cartões e envie ao back-end apenas tokens pgct_- Implemente webhooks reais, deduplique pelo id no topo, processe de forma assíncrona e evite polling como fluxo principal- Libere pedidos, assinaturas e transferências apenas por webhook confirmado ou estado reconciliado no servidor
## Integração Pagou- Fontes de verdade: https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json- Mantenha chaves secretas da Pagou apenas no servidor e use env vars- Valide endpoints, campos, status e webhooks no OpenAPI; não invente campos não documentados- Valores na API v2 são em centavos- Sempre inclua external_ref e idempotência em escritas- Use Payment Element / SDK v3 para cartões e envie ao back-end apenas tokens pgct_- Implemente webhooks reais, deduplique pelo id no topo, processe de forma assíncrona e evite polling como fluxo principal- Libere pedidos, assinaturas e transferências apenas por webhook confirmado ou estado reconciliado no servidor
Ou rode com contexto inline:
codex "Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json. Crie checkout Pix com chamadas Pagou apenas no back-end, external_ref, endpoint de webhook, deduplicação de evento e GET apenas para reconciliação."
Adicione ao .cursorrules na raiz do projeto:
## Integração Pagou- Fontes de verdade: https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json- Mantenha chaves secretas da Pagou apenas no servidor e use env vars- Valide endpoints, campos, status e webhooks no OpenAPI; não invente campos não documentados- Valores na API v2 são em centavos- Sempre inclua external_ref e idempotência em escritas- Use Payment Element / SDK v3 para cartões e envie ao back-end apenas tokens pgct_- Implemente webhooks reais, deduplique pelo id no topo, processe de forma assíncrona e evite polling como fluxo principal- Libere pedidos, assinaturas e transferências apenas por webhook confirmado ou estado reconciliado no servidor
Cole o Contexto Pagou para IA acima no início do chat e faça sua pergunta. Exija que o agente implemente webhooks reais, deduplique eventos, mantenha segredos no servidor e evite polling como fluxo principal.Se o agente não conseguir acessar URLs, cole a seção relevante do llms-full.txt diretamente.
Comece com esta primeira mensagem. Ela força limites de back-end, webhooks e campos documentados:
Prompt Lovable para integração Pagou
Você é um engenheiro sênior construindo uma integração Pagou em produção dentro do Lovable.Use somente estas fontes de verdade da Pagou:- Docs completas: https://developer.pagou.ai/llms-full.txt- OpenAPI v2: https://developer.pagou.ai/api-reference/openapi-v2.json- Base URL produção: https://api.pagou.ai- Base URL sandbox: https://api.sandbox.pagou.aiEscopo:- Clientes: criar, listar e consultar clientes- Transações: Pix, voucher/pagamento local, cartão, listagem, consulta e reembolso- Assinaturas: criar, listar, consultar, atualizar e cancelar cobrança recorrente por cartão ou Pix Automático- Transferências: criação, listagem, consulta e cancelamento de Pix Out- Webhooks: eventos de pagamento, assinatura e transferência- Cartão no front-end: Payment Element / SDK v3 para tokenização seguraRegras obrigatórias:- Nunca exponha token secreto da Pagou no browser.- Toda chamada para a API Pagou deve sair de uma rota de back-end, server function ou server action segura.- Use variáveis de ambiente para credenciais e base URL.- Use sandbox primeiro. A troca para produção deve ser apenas configuração.- Use Payment Element / SDK v3 para coletar cartão. Envie ao back-end apenas o token `pgct_`.- Nunca manipule número de cartão diretamente.- Valores na API Pagou v2 são em centavos. Exemplo: R$ 49,00 = `4900`.- Sempre envie um `external_ref` determinístico em criações e escritas sensíveis.- Use idempotência em criações, reembolsos, ações de assinatura e transferências.- Não invente endpoints, campos, status ou formatos de webhook. Valide no OpenAPI primeiro.Arquitetura webhook-first:- Implemente um endpoint real de webhook, não apenas polling.- Responda `2xx` rapidamente no endpoint de webhook.- Não execute tarefas lentas da aplicação antes de responder ao webhook.- Persista ou enfileire o payload e processe de forma assíncrona.- Faça deduplicação pelo `id` do evento no topo do payload.- Eventos de pagamento usam `event: "transaction"` e o evento concreto em `data.event_type`.- Eventos de assinatura usam `event: "subscription"` e o evento concreto em `data.event_type`.- Eventos de transferência usam `type` no topo, como `payout.transferred` ou `payout.failed`.- Use polling/GET apenas para reconciliação, tela de suporte ou recuperação de estado incerto. Não use polling como fluxo principal.Liberação e estado:- Nunca libere pedido usando apenas mensagem de sucesso do browser.- Libere pedidos Pix, voucher e cartão apenas depois de `transaction.paid` ou estado pago reconciliado.- Para cartão, trate `next_action` / 3DS quando retornar.- Para voucher/pagamento local, as instruções podem vir na criação ou depois por webhook.- Para assinaturas, use webhooks para eventos created, started, renewed, updated, canceled, payment_failed, past_due, trial_will_end e chargeback_received.- Para transferências, use o status do recurso como estado operacional e eventos de webhook como transições.Tratamento de erro:- 4xx: corrija requisição ou permissão. Não faça retry automático.- 409: reconcilie o recurso existente antes de criar outro.- 429, 5xx, timeout: faça retry com backoff exponencial e jitter apenas quando a escrita for idempotente.- Sempre logue `requestId` quando a API retornar.- Mostre mensagens seguras ao usuário. Não exponha detalhes de implementação nem segredos.Ao gerar código:1. Crie uma arquitetura clara com front-end + back-end/server functions.2. Mantenha todos os segredos da Pagou no servidor.3. Implemente endpoint de webhook e deduplicação de eventos.4. Use estado confirmado por webhook ou reconciliado no servidor para ações finais de negócio.5. Inclua variáveis de ambiente necessárias.6. Cite o endpoint usado em cada fluxo.7. Valide campos de request e response no OpenAPI.8. Se um comportamento não estiver documentado, diga que não está documentado e recomende contato com o suporte Pagou usando o `requestId`.Construa: [descreva o app e os fluxos Pagou necessários]
Substitua [descreva seu app] pelo que você quer construir.
Copie qualquer um destes direto no seu agente de IA:
Checkout Pix
Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.jsonConstrua um fluxo de checkout Pix:1. Back-end/server function apenas: POST /v2/transactions com method=pix, valor em centavos e external_ref2. Front-end: exiba apenas os campos Pix voltados ao comprador retornados pelo back-end3. Webhook: implemente POST /webhooks/pagou, deduplique pelo id de topo e roteie event=transaction por data.event_type4. Liberação: atualize o pedido apenas depois de transaction.paid ou estado pago reconciliado5. Reconciliação: use GET /v2/transactions/{id} apenas para recuperação/suporte, não como fluxo principalUse env vars para API keys. Nunca exponha credenciais Pagou no front-end. Valide todos os campos no OpenAPI.
Checkout cartão
Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.jsonConstrua um fluxo de checkout de cartão:1. Front-end: carregue Payment Element de https://js.pagou.ai/payments/v3.js e monte campos hospedados de cartão2. No submit: chame elements.submit() e envie ao back-end apenas o token pgct_3. Back-end/server function apenas: POST /v2/transactions com method=credit_card, valor em centavos, token, installments e external_ref4. 3DS: se a resposta do back-end tiver next_action, continue o challenge pelo fluxo do SDK5. Webhook: roteie event=transaction por data.event_type e atualize o pedido apenas depois de webhook ou reconciliação no servidor6. Reconciliação: use GET /v2/transactions/{id} apenas depois de estado incerto no browser/redeUse env vars para API keys. Nunca exponha segredos nem manipule número de cartão diretamente. Valide todos os campos no OpenAPI.
Link de checkout
Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.jsonConstrua um fluxo de link de checkout hospedado pela Pagou, sem manipular cartão:1. Apenas no back-end/server function: POST /v2/checkout-links com Authorization: Bearer <API key>2. Body com produtos: { "currency": "BRL", "title": "<pedido>", "products": [{ "external_id": "<seu id>", "name": "<nome>", "price": <centavos>, "quantity": <n> }] }3. Body só-valor: { "currency": "BRL", "amount": <centavos> }. Envie products OU amount, nunca ambos.4. external_id é o seu identificador de produto; reenviar o mesmo id atualiza o produto sem duplicá-lo.5. A resposta é { "data": { "url": "<url do checkout>" } }; redirecione o comprador para data.url.6. Liberação: atualize o pedido somente quando o webhook de transação (event=transaction, data.event_type) confirmar o pagamento, nunca no redirecionamento.Preços e valores são inteiros em centavos. Mantenha a API key no servidor em uma variável de ambiente, nunca no navegador. Valide todos os campos no OpenAPI.
Cobrança recorrente
Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.jsonConstrua um fluxo de assinatura:1. Back-end/server function apenas: crie ou consulte o cliente com /v2/customers2. Front-end: use Payment Element em modo subscription e envie ao back-end apenas o token pgct_3. Back-end: POST /v2/subscriptions com customer_id, token, valor em centavos, interval, interval_count, external_ref/metadata se necessário Para Pix Automático: pule o passo 2, envie payment_method "pix_automatic" sem token e mostre ao pagador o authorization.qr_code retornado4. Webhook: implemente POST /webhooks/pagou, deduplique pelo id de topo e roteie event=subscription por data.event_type5. Estado: libere ou remova acesso pelo status da assinatura e webhooks de assinatura, não pelo estado do browser6. Reconciliação: use GET /v2/subscriptions/{id} apenas para recuperação/suporte ou estado incertoTrate subscription.created, subscription.started, subscription.renewed, subscription.updated, subscription.canceled, subscription.payment_failed, subscription.past_due, subscription.unpaid, subscription.trial_will_end e subscription.chargeback_received.Use env vars para API keys. Nunca exponha credenciais Pagou no front-end. Valide todos os campos no OpenAPI.
Handler de webhook
Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.jsonConstrua um endpoint de webhook:1. POST /webhooks/pagou - aceite body JSON e retorne 200 com {"received": true} rapidamente2. Persista ou enfileire o payload bruto antes do processamento assíncrono3. Deduplique pelo campo "id" no topo (mesmo evento pode ser enviado múltiplas vezes)4. Roteie eventos de pagamento por event=transaction e data.event_type5. Roteie eventos de assinatura por event=subscription e data.event_type6. Roteie eventos de transferência pelo type no topo, como payout.transferred, payout.failed, payout.rejected, payout.canceled7. Execute tarefas lentas da aplicação em background, não antes da resposta HTTPArmazene IDs de eventos processados para prevenir duplicação. Não use polling como caminho principal de atualização de estado.
Transferência Pix
Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.jsonConstrua um fluxo de transferência Pix Out:1. Back-end/server function apenas: POST /v2/transfers com dados Pix do recebedor, valor em centavos e external_ref2. Webhook: roteie eventos de transferência pelo type no topo, incluindo payout.transferred, payout.failed, payout.rejected e payout.canceled3. Estado: atualize o status do payout pelo webhook/status do recurso, não por polling no front-end4. Reconciliação: use GET /v2/transfers/{id} apenas se o webhook atrasar ou ficar incerto5. Cancelamento: POST /v2/transfers/{id}/cancel apenas quando o status atual do recurso permitirUse env vars para API keys. Nunca exponha credenciais Pagou no front-end. Valide todos os campos no OpenAPI.
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Pagou Developer Docs","description":"Integrate payments, subscriptions, payouts, webhooks, and frontend card flows with Pagou.ai API.","colors":{"primary":"#198754","light":"#07C983","dark":"#198754"},"logo":{"light":"https://mintcdn.com/pagouai/G-8AHDSd0H3lSbe_/logo/logo-long.webp?fit=max\u0026auto=format\u0026n=G-8AHDSd0H3lSbe_\u0026q=85\u0026s=f29ebde8b8d8c96183843fc8bc58e508","dark":"https://mintcdn.com/pagouai/G-8AHDSd0H3lSbe_/logo/logo-long-dark.webp?fit=max\u0026auto=format\u0026n=G-8AHDSd0H3lSbe_\u0026q=85\u0026s=838f22bb8beb6e11ce9c45d0e3dba402"},"favicon":"https://mintcdn.com/pagouai/G-8AHDSd0H3lSbe_/logo/logo-short.webp?fit=max\u0026auto=format\u0026n=G-8AHDSd0H3lSbe_\u0026q=85\u0026s=38c30337b736500dd5c2667b1820ba19","background":{"decoration":"windows"},"navbar":{"links":[{"icon":"bot","href":"/start-here/ai-integration","label":"Integrate with AI"},{"icon":"activity","href":"https://status.pagou.ai","label":"Status"},{"icon":"arrow-up-right","href":"https://pagou.ai","label":"Pagou.ai"}]},"footer":{},"fonts":{"family":"Google Sans"},"icons":{"library":"lucide"},"integrations":{"intercom":{"appId":"uhg6tri7"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"AI Integration","icon":"bot","href":"/start-here/ai-integration"},{"anchor":"API status","href":"https://status.pagou.ai"},{"anchor":"GitHub","href":"https://github.com/pagouai"}]},"languages":[{"language":"en","default":true,"href":""},{"language":"pt-BR","href":"pt"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"pagouai","hasAudioNarration":false,"actualSubdomain":"pagouai","customDomains":["developer.pagou.ai"],"gitSource":{"type":"github","owner":"pagouai","repo":"gateway-backend","deployBranch":"main","contentDirectory":"packages/docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af1daa1b3969014b8f297a3","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"en","tag":"API Reference","count":37},{"language":"pt-BR","tag":"Referência API","count":37},{"language":"en","tag":"Payments","count":15},{"language":"pt-BR","tag":"Pagamentos","count":15},{"language":"en","tag":"Subscriptions","count":13},{"language":"en","tag":"Start Here","count":13},{"language":"pt-BR","tag":"Assinaturas","count":13},{"language":"pt-BR","tag":"Comece Aqui","count":13},{"language":"en","tag":"Webhooks","count":12},{"language":"pt-BR","tag":"Webhooks","count":12},{"language":"pt-BR","tag":"Transferências","count":10},{"language":"en","tag":"Legacy v1","count":9},{"language":"en","tag":"Front-end","count":9},{"language":"pt-BR","tag":"Legado v1","count":9},{"language":"pt-BR","tag":"Frontend","count":9},{"language":"en","tag":"Transactions","count":8},{"language":"pt-BR","tag":"Transações","count":8},{"language":"en","tag":"Resources","count":7},{"language":"en","tag":"Examples","count":7},{"language":"pt-BR","tag":"Recursos","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"rbac-expansion","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":"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":"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":"editor-metadata","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":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--pagou-ink: #0f172a;--pagou-mint: #07c983;--pagou-emerald: #16a34a;--pagou-forest: #14532d;--pagou-sand: #f8fafc;--pagou-border: rgba(15, 23, 42, 0.08)}.hero-shell{background:radial-gradient(circle at 18% 12%, rgba(7, 201, 131, 0.16), transparent 26%),\n\t\tradial-gradient(circle at 88% 10%, rgba(25, 135, 84, 0.12), transparent 22%),\n\t\tradial-gradient(circle at 50% 100%, rgba(22, 163, 74, 0.16), transparent 36%),\n\t\tlinear-gradient(180deg, rgba(8, 18, 14, 0.98) 0%, rgba(4, 12, 10, 0.96) 100%);border:1px solid rgba(52, 211, 153, 0.16);border-radius:28px;box-shadow:0 24px 80px rgba(2, 6, 23, 0.42);overflow:hidden;padding:2.4rem;position:relative}.hero-shell::after{background:radial-gradient(circle at 20% 100%, rgba(8, 201, 131, 0.12), transparent 26%),\n\t\tradial-gradient(circle at 70% 100%, rgba(163, 230, 53, 0.12), transparent 24%);bottom:-18%;content:\"\";height:54%;left:-6%;position:absolute;right:-6%}.hero-content{position:relative;z-index:1}.hero-kicker{color:#7ee7b8;font-size:0.8rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase}.hero-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr))}.hero-panel{background:rgba(11, 24, 20, 0.76);border:1px solid rgba(52, 211, 153, 0.16);border-radius:18px;padding:1rem;backdrop-filter:blur(16px);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.03)}.hero-shell h1,.hero-shell p,.hero-shell strong{color:rgba(241, 245, 249, 0.96)}.home-section{margin-top:2.4rem}.checklist-band{background:linear-gradient(90deg, rgba(20, 83, 45, 0.95), rgba(22, 163, 74, 0.92));border-radius:22px;color:white;padding:1.25rem 1.5rem}.checklist-band strong,.checklist-band code{color:white}.doc-note-grid{display:grid;gap:0.8rem;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr))}.doc-note{background:linear-gradient(180deg, rgba(7, 201, 131, 0.08), rgba(22, 163, 74, 0.02));border:1px solid rgba(7, 201, 131, 0.16);border-radius:18px;padding:1rem}.legacy-banner{background:linear-gradient(90deg, rgba(127, 29, 29, 0.08), rgba(180, 83, 9, 0.08));border:1px solid rgba(180, 83, 9, 0.18);border-radius:18px;padding:1rem 1.1rem}.status-table strong{color:var(--pagou-ink)}"}],"page":{"pagePath":"pt/start-here/ai-integration","slug":"/pt/start-here/ai-integration","pageMetadata":{"title":"Integração com IA","icon":"bot","sidebarTitle":"Integração com IA","description":"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.","href":"/pt/start-here/ai-integration"},"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: \"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.\"\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`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,Card,CardGroup,CodeBlock,Heading,Tab,Tabs}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Copie este prompt em qualquer agente de IA:`}),`\n`,_jsx(CodeBlock,{filename:`Contexto Pagou para IA`,numberOfLines:`22`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`22`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Você é um engenheiro sênior construindo uma integração Pagou em produção.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Fontes de verdade:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Docs rápidas: https://developer.pagou.ai/llms.txt`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Docs completas: https://developer.pagou.ai/llms-full.txt`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- OpenAPI v2: https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Base URLs: https://api.pagou.ai e https://api.sandbox.pagou.ai`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Regras:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Mantenha chaves secretas da Pagou apenas no servidor. Use env vars.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Valide endpoints, campos, status e formatos de webhook no OpenAPI antes de codar.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Não invente endpoints, campos ou fluxos não documentados.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Valores na API v2 são em centavos.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Sempre inclua external_ref e idempotência em escritas.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Use Payment Element / SDK v3 para cartões. Envie ao back-end apenas tokens pgct_.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Implemente webhooks reais, deduplique pelo id do evento no topo e processe de forma assíncrona.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Roteie pagamentos por event=transaction + data.event_type.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Roteie assinaturas por event=subscription + data.event_type.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Roteie transferências pelo type no topo.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Libere pedidos, acesso e estado de saque apenas por webhook confirmado ou estado reconciliado no servidor.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Use polling/GET apenas para reconciliação, suporte ou recuperação. Nunca use polling como fluxo principal.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`referência-da-documentação`,children:`Referência da documentação`}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsx(Card,{title:`Roteamento rápido`,icon:`list`,href:`https://developer.pagou.ai/llms.txt`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`llms.txt`}),` — encontre a página certa rapidamente`]})}),_jsx(Card,{title:`Contexto completo`,icon:`file-text`,href:`https://developer.pagou.ai/llms-full.txt`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`llms-full.txt`}),` — docs completa offline`]})}),_jsx(Card,{title:`Fonte de schema`,icon:`braces`,href:`https://developer.pagou.ai/api-reference/openapi-v2.json`,children:_jsx(_components.p,{children:`OpenAPI — endpoints, campos, webhooks`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`configurar-por-agente`,children:`Configurar por agente`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Claude Code`,id:`claude-code`,children:[_jsxs(_components.p,{children:[`Adicione ao `,_jsx(_components.code,{children:`CLAUDE.md`}),` na raiz do projeto:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Integração Pagou`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Fontes de verdade: https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Mantenha chaves secretas da Pagou apenas no servidor e use env vars`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Valide endpoints, campos, status e webhooks no OpenAPI; não invente campos não documentados`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Valores na API v2 são em centavos`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Sempre inclua external_ref e idempotência em escritas`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Use Payment Element / SDK v3 para cartões e envie ao back-end apenas tokens pgct_`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Implemente webhooks reais, deduplique pelo id no topo, processe de forma assíncrona e evite polling como fluxo principal`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Libere pedidos, assinaturas e transferências apenas por webhook confirmado ou estado reconciliado no servidor`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.a,{href:`/pt/start-here/claude-md-template`,children:`Template CLAUDE.md completo`})})]}),_jsxs(Tab,{title:`Codex`,id:`codex`,children:[_jsxs(_components.p,{children:[`Adicione ao `,_jsx(_components.code,{children:`AGENTS.md`}),` na raiz do projeto:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Integração Pagou`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Fontes de verdade: https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Mantenha chaves secretas da Pagou apenas no servidor e use env vars`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Valide endpoints, campos, status e webhooks no OpenAPI; não invente campos não documentados`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Valores na API v2 são em centavos`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Sempre inclua external_ref e idempotência em escritas`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Use Payment Element / SDK v3 para cartões e envie ao back-end apenas tokens pgct_`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Implemente webhooks reais, deduplique pelo id no topo, processe de forma assíncrona e evite polling como fluxo principal`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Libere pedidos, assinaturas e transferências apenas por webhook confirmado ou estado reconciliado no servidor`})]}),`\n`]})})}),_jsx(_components.p,{children:`Ou rode com contexto inline:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json. Crie checkout Pix com chamadas Pagou apenas no back-end, external_ref, endpoint de webhook, deduplicação de evento e GET apenas para reconciliação.\"`})]}),`\n`]})})})]}),_jsxs(Tab,{title:`Cursor`,id:`cursor`,children:[_jsxs(_components.p,{children:[`Adicione ao `,_jsx(_components.code,{children:`.cursorrules`}),` na raiz do projeto:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Integração Pagou`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Fontes de verdade: https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Mantenha chaves secretas da Pagou apenas no servidor e use env vars`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Valide endpoints, campos, status e webhooks no OpenAPI; não invente campos não documentados`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Valores na API v2 são em centavos`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Sempre inclua external_ref e idempotência em escritas`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Use Payment Element / SDK v3 para cartões e envie ao back-end apenas tokens pgct_`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Implemente webhooks reais, deduplique pelo id no topo, processe de forma assíncrona e evite polling como fluxo principal`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Libere pedidos, assinaturas e transferências apenas por webhook confirmado ou estado reconciliado no servidor`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.a,{href:`/pt/start-here/cursorrules-template`,children:`Template .cursorrules completo`})})]}),_jsxs(Tab,{title:`Copilot / Windsurf`,id:`copilot-%2F-windsurf`,children:[_jsx(_components.p,{children:`Cole o Contexto Pagou para IA acima no início do chat e faça sua pergunta. Exija que o agente implemente webhooks reais, deduplique eventos, mantenha segredos no servidor e evite polling como fluxo principal.`}),_jsxs(_components.p,{children:[`Se o agente não conseguir acessar URLs, cole a seção relevante do `,_jsx(_components.a,{href:`https://developer.pagou.ai/llms-full.txt`,children:`llms-full.txt`}),` diretamente.`]})]}),_jsxs(Tab,{title:`Lovable / Bolt`,id:`lovable-%2F-bolt`,children:[_jsx(_components.p,{children:`Comece com esta primeira mensagem. Ela força limites de back-end, webhooks e campos documentados:`}),_jsx(CodeBlock,{filename:`Prompt Lovable para integração Pagou`,numberOfLines:`66`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`66`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Você é um engenheiro sênior construindo uma integração Pagou em produção dentro do Lovable.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Use somente estas fontes de verdade da Pagou:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Docs completas: https://developer.pagou.ai/llms-full.txt`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- OpenAPI v2: https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Base URL produção: https://api.pagou.ai`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Base URL sandbox: https://api.sandbox.pagou.ai`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Escopo:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Clientes: criar, listar e consultar clientes`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Transações: Pix, voucher/pagamento local, cartão, listagem, consulta e reembolso`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Assinaturas: criar, listar, consultar, atualizar e cancelar cobrança recorrente por cartão ou Pix Automático`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Transferências: criação, listagem, consulta e cancelamento de Pix Out`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Webhooks: eventos de pagamento, assinatura e transferência`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Cartão no front-end: Payment Element / SDK v3 para tokenização segura`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Regras obrigatórias:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Nunca exponha token secreto da Pagou no browser.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Toda chamada para a API Pagou deve sair de uma rota de back-end, server function ou server action segura.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Use variáveis de ambiente para credenciais e base URL.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Use sandbox primeiro. A troca para produção deve ser apenas configuração.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Use Payment Element / SDK v3 para coletar cartão. Envie ao back-end apenas o token `pgct_`.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Nunca manipule número de cartão diretamente.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Valores na API Pagou v2 são em centavos. Exemplo: R$ 49,00 = `4900`.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Sempre envie um `external_ref` determinístico em criações e escritas sensíveis.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Use idempotência em criações, reembolsos, ações de assinatura e transferências.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Não invente endpoints, campos, status ou formatos de webhook. Valide no OpenAPI primeiro.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Arquitetura webhook-first:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Implemente um endpoint real de webhook, não apenas polling.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Responda `2xx` rapidamente no endpoint de webhook.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Não execute tarefas lentas da aplicação antes de responder ao webhook.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Persista ou enfileire o payload e processe de forma assíncrona.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Faça deduplicação pelo `id` do evento no topo do payload.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:'- Eventos de pagamento usam `event: \"transaction\"` e o evento concreto em `data.event_type`.'})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:'- Eventos de assinatura usam `event: \"subscription\"` e o evento concreto em `data.event_type`.'})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Eventos de transferência usam `type` no topo, como `payout.transferred` ou `payout.failed`.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Use polling/GET apenas para reconciliação, tela de suporte ou recuperação de estado incerto. Não use polling como fluxo principal.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Liberação e estado:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Nunca libere pedido usando apenas mensagem de sucesso do browser.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Libere pedidos Pix, voucher e cartão apenas depois de `transaction.paid` ou estado pago reconciliado.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Para cartão, trate `next_action` / 3DS quando retornar.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Para voucher/pagamento local, as instruções podem vir na criação ou depois por webhook.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Para assinaturas, use webhooks para eventos created, started, renewed, updated, canceled, payment_failed, past_due, trial_will_end e chargeback_received.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Para transferências, use o status do recurso como estado operacional e eventos de webhook como transições.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Tratamento de erro:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- 4xx: corrija requisição ou permissão. Não faça retry automático.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- 409: reconcilie o recurso existente antes de criar outro.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- 429, 5xx, timeout: faça retry com backoff exponencial e jitter apenas quando a escrita for idempotente.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"- Sempre logue `requestId` quando a API retornar.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- Mostre mensagens seguras ao usuário. Não exponha detalhes de implementação nem segredos.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Ao gerar código:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Crie uma arquitetura clara com front-end + back-end/server functions.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Mantenha todos os segredos da Pagou no servidor.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Implemente endpoint de webhook e deduplicação de eventos.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. Use estado confirmado por webhook ou reconciliado no servidor para ações finais de negócio.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Inclua variáveis de ambiente necessárias.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. Cite o endpoint usado em cada fluxo.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`7. Valide campos de request e response no OpenAPI.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"8. Se um comportamento não estiver documentado, diga que não está documentado e recomende contato com o suporte Pagou usando o `requestId`.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa: [descreva o app e os fluxos Pagou necessários]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[`Substitua `,_jsx(_components.code,{children:`[descreva seu app]`}),` pelo que você quer construir.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`prompts-completos`,children:`Prompts completos`}),`\n`,_jsx(_components.p,{children:`Copie qualquer um destes direto no seu agente de IA:`}),`\n`,_jsx(Accordion,{title:`Checkout Pix`,id:`checkout-pix`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa um fluxo de checkout Pix:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Back-end/server function apenas: POST /v2/transactions com method=pix, valor em centavos e external_ref`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Front-end: exiba apenas os campos Pix voltados ao comprador retornados pelo back-end`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Webhook: implemente POST /webhooks/pagou, deduplique pelo id de topo e roteie event=transaction por data.event_type`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. Liberação: atualize o pedido apenas depois de transaction.paid ou estado pago reconciliado`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Reconciliação: use GET /v2/transactions/{id} apenas para recuperação/suporte, não como fluxo principal`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Use env vars para API keys. Nunca exponha credenciais Pagou no front-end. Valide todos os campos no OpenAPI.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Accordion,{title:`Checkout cartão`,id:`checkout-cartao`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa um fluxo de checkout de cartão:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Front-end: carregue Payment Element de https://js.pagou.ai/payments/v3.js e monte campos hospedados de cartão`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. No submit: chame elements.submit() e envie ao back-end apenas o token pgct_`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Back-end/server function apenas: POST /v2/transactions com method=credit_card, valor em centavos, token, installments e external_ref`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. 3DS: se a resposta do back-end tiver next_action, continue o challenge pelo fluxo do SDK`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Webhook: roteie event=transaction por data.event_type e atualize o pedido apenas depois de webhook ou reconciliação no servidor`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. Reconciliação: use GET /v2/transactions/{id} apenas depois de estado incerto no browser/rede`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Use env vars para API keys. Nunca exponha segredos nem manipule número de cartão diretamente. Valide todos os campos no OpenAPI.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Accordion,{title:`Link de checkout`,id:`link-de-checkout`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa um fluxo de link de checkout hospedado pela Pagou, sem manipular cartão:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Apenas no back-end/server function: POST /v2/checkout-links com Authorization: Bearer \u003cAPI key>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Body com produtos: { \"currency\": \"BRL\", \"title\": \"\u003cpedido>\", \"products\": [{ \"external_id\": \"\u003cseu id>\", \"name\": \"\u003cnome>\", \"price\": \u003ccentavos>, \"quantity\": \u003cn> }] }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Body só-valor: { \"currency\": \"BRL\", \"amount\": \u003ccentavos> }. Envie products OU amount, nunca ambos.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. external_id é o seu identificador de produto; reenviar o mesmo id atualiza o produto sem duplicá-lo.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. A resposta é { \"data\": { \"url\": \"\u003curl do checkout>\" } }; redirecione o comprador para data.url.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. Liberação: atualize o pedido somente quando o webhook de transação (event=transaction, data.event_type) confirmar o pagamento, nunca no redirecionamento.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Preços e valores são inteiros em centavos. Mantenha a API key no servidor em uma variável de ambiente, nunca no navegador. Valide todos os campos no OpenAPI.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Accordion,{title:`Cobrança recorrente`,id:`cobranca-recorrente`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa um fluxo de assinatura:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Back-end/server function apenas: crie ou consulte o cliente com /v2/customers`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Front-end: use Payment Element em modo subscription e envie ao back-end apenas o token pgct_`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Back-end: POST /v2/subscriptions com customer_id, token, valor em centavos, interval, interval_count, external_ref/metadata se necessário`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Para Pix Automático: pule o passo 2, envie payment_method \"pix_automatic\" sem token e mostre ao pagador o authorization.qr_code retornado`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. Webhook: implemente POST /webhooks/pagou, deduplique pelo id de topo e roteie event=subscription por data.event_type`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Estado: libere ou remova acesso pelo status da assinatura e webhooks de assinatura, não pelo estado do browser`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. Reconciliação: use GET /v2/subscriptions/{id} apenas para recuperação/suporte ou estado incerto`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Trate subscription.created, subscription.started, subscription.renewed, subscription.updated, subscription.canceled, subscription.payment_failed, subscription.past_due, subscription.unpaid, subscription.trial_will_end e subscription.chargeback_received.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Use env vars para API keys. Nunca exponha credenciais Pagou no front-end. Valide todos os campos no OpenAPI.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Accordion,{title:`Handler de webhook`,id:`handler-de-webhook`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa um endpoint de webhook:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. POST /webhooks/pagou - aceite body JSON e retorne 200 com {\"received\": true} rapidamente`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Persista ou enfileire o payload bruto antes do processamento assíncrono`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Deduplique pelo campo \"id\" no topo (mesmo evento pode ser enviado múltiplas vezes)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. Roteie eventos de pagamento por event=transaction e data.event_type`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Roteie eventos de assinatura por event=subscription e data.event_type`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. Roteie eventos de transferência pelo type no topo, como payout.transferred, payout.failed, payout.rejected, payout.canceled`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`7. Execute tarefas lentas da aplicação em background, não antes da resposta HTTP`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Armazene IDs de eventos processados para prevenir duplicação. Não use polling como caminho principal de atualização de estado.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Accordion,{title:`Transferência Pix`,id:`transferencia-pix`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Leia https://developer.pagou.ai/llms-full.txt e https://developer.pagou.ai/api-reference/openapi-v2.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Construa um fluxo de transferência Pix Out:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Back-end/server function apenas: POST /v2/transfers com dados Pix do recebedor, valor em centavos e external_ref`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Webhook: roteie eventos de transferência pelo type no topo, incluindo payout.transferred, payout.failed, payout.rejected e payout.canceled`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Estado: atualize o status do payout pelo webhook/status do recurso, não por polling no front-end`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. Reconciliação: use GET /v2/transfers/{id} apenas se o webhook atrasar ou ficar incerto`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Cancelamento: POST /v2/transfers/{id}/cancel apenas quando o status atual do recurso permitir`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Use env vars para API keys. Nunca exponha credenciais Pagou no front-end. Valide todos os campos no OpenAPI.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`dicas-para-agentes`,children:`Dicas para agentes`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Segurança`,icon:`shield`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Mantenha API keys apenas no servidor, use env vars`}),`\n`,_jsx(_components.li,{children:`Nunca logue tokens de cartão ou chaves Pix`}),`\n`,_jsx(_components.li,{children:`Valide origem do webhook antes de processar`}),`\n`,_jsx(_components.li,{children:`Use HTTPS em todo lugar`}),`\n`]})}),_jsx(Card,{title:`Construção`,icon:`hammer`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Teste em sandbox primeiro, mesmo código funciona em prod`}),`\n`,_jsx(_components.li,{children:`Use ngrok para receber webhooks localmente`}),`\n`,_jsx(_components.li,{children:`Sempre envie external_ref para idempotência`}),`\n`,_jsx(_components.li,{children:`Reconcilie com GET se webhook falhar`}),`\n`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`leia-a-seguir`,children:`Leia a seguir`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/pt/sdks/typescript/quickstart`,children:`Início rápido SDK TypeScript`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/pt/payments/pix/accept-payments`,children:`Receber pagamentos Pix`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/pt/webhooks/overview`,children:`Visão geral de Webhooks`})}),`\n`]})]})}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":"Integração com IA","icon":"bot","sidebarTitle":"Integração com IA","description":"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.","href":"/pt/start-here/ai-integration"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Referência da documentação","slug":"referência-da-documentação","depth":2,"children":[]},{"title":"Configurar por agente","slug":"configurar-por-agente","depth":2,"children":[]},{"title":"Prompts completos","slug":"prompts-completos","depth":2,"children":[]},{"title":"Dicas para agentes","slug":"dicas-para-agentes","depth":2,"children":[]},{"title":"Leia a seguir","slug":"leia-a-seguir","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"pagouai","siteName":"Pagou Developer Docs","title":"Integração com IA - Pagou Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/start-here/ai-integration","matchLevel":1},"pt-BR":{"href":"/pt/start-here/ai-integration","matchLevel":0}}},"lastModified":"2026-11-05T11:30:36.992Z","originalFileLocation":"pt/start-here/ai-integration.mdx","locale":"pt-BR"},"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=\"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Pagou Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_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/pagouai/PlsMSqiZuXJsWwoT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Integração com IA - Pagou Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Pagou Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.pagou.ai/pt/start-here/ai-integration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://pagouai.mintlify.site/_mintlify/api/og/v2?division=Integra%C3%A7%C3%A3o+com+IA\u0026amp;title=Integra%C3%A7%C3%A3o+com+IA\u0026amp;description=Forne%C3%A7a+o+contexto+certo+da+documenta%C3%A7%C3%A3o+da+Pagou+antes+de+agentes+de+IA+gerarem+c%C3%B3digo.\u0026amp;theme=be5f6b4c2c97766dd572dfce\u0026amp;signature=99743c373b635fce2a7ffd84de3b21d12b1de8f45fffba4ccaa6bb0ad509d04c\">\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=\"Integração com IA - Pagou Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://pagouai.mintlify.site/_mintlify/api/og/v2?division=Integra%C3%A7%C3%A3o+com+IA\u0026amp;title=Integra%C3%A7%C3%A3o+com+IA\u0026amp;description=Forne%C3%A7a+o+contexto+certo+da+documenta%C3%A7%C3%A3o+da+Pagou+antes+de+agentes+de+IA+gerarem+c%C3%B3digo.\u0026amp;theme=be5f6b4c2c97766dd572dfce\u0026amp;signature=99743c373b635fce2a7ffd84de3b21d12b1de8f45fffba4ccaa6bb0ad509d04c\">\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/pagouai/PlsMSqiZuXJsWwoT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Pagou Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#198754\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.pagou.ai/pt/start-here/ai-integration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pt/start-here/ai-integration.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://developer.pagou.ai/pt/start-here/ai-integration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://developer.pagou.ai/start-here/ai-integration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://developer.pagou.ai/start-here/ai-integration\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.pagou.ai/#organization\",\"name\":\"Pagou Developer Docs\",\"url\":\"https://developer.pagou.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/pagouai/G-8AHDSd0H3lSbe_/logo/logo-long.webp?fit=max\u0026auto=format\u0026n=G-8AHDSd0H3lSbe_\u0026q=85\u0026s=f29ebde8b8d8c96183843fc8bc58e508\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.pagou.ai#website\",\"name\":\"Pagou Developer Docs\",\"url\":\"https://developer.pagou.ai\",\"publisher\":{\"@id\":\"https://developer.pagou.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.pagou.ai/pt/start-here/ai-integration#webpage\",\"url\":\"https://developer.pagou.ai/pt/start-here/ai-integration\",\"name\":\"Integração com IA\",\"description\":\"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.\",\"dateModified\":\"2026-11-05T11:30:36.992Z\",\"isPartOf\":{\"@id\":\"https://developer.pagou.ai#website\"},\"breadcrumb\":{\"@id\":\"https://developer.pagou.ai/pt/start-here/ai-integration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.pagou.ai/pt/start-here/ai-integration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pagou Developer Docs\",\"item\":\"https://developer.pagou.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integração com IA\",\"item\":\"https://developer.pagou.ai/pt/start-here/ai-integration\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.pagou.ai/pt/start-here/ai-integration#article\",\"headline\":\"Integração com IA\",\"name\":\"Integração com IA\",\"description\":\"Forneça o contexto certo da documentação da Pagou antes de agentes de IA gerarem código.\",\"url\":\"https://developer.pagou.ai/pt/start-here/ai-integration\",\"mainEntityOfPage\":{\"@id\":\"https://developer.pagou.ai/pt/start-here/ai-integration#webpage\"},\"dateModified\":\"2026-11-05T11:30:36.992Z\",\"publisher\":{\"@id\":\"https://developer.pagou.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.pagou.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Pagou Developer Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Pagou Developer Docs","nav":{"global":{"anchors":[{"anchor":"AI Integration","icon":"bot","href":"/start-here/ai-integration"},{"anchor":"API status","href":"https://status.pagou.ai"},{"anchor":"GitHub","href":"https://github.com/pagouai"}]},"languages":[{"language":"en","default":true,"pages":[{"title":"en","href":"/start-here/ai-integration"}]},{"language":"pt-BR","tabs":[{"tab":"Comece Aqui","icon":"rocket","groups":[{"group":"Primeiros Passos","pages":[{"title":"Documentação para Desenvolvedores da Pagou","icon":"house","sidebarTitle":"Início","mode":"wide","href":"/pt"},{"title":"Visão geral","icon":"map","href":"/pt/start-here/overview"},{"title":"Início rápido","icon":"rocket","href":"/pt/start-here/quickstart"},{"title":"Ambientes","icon":"server","href":"/pt/start-here/environments"},{"title":"Autenticação","icon":"key-round","href":"/pt/start-here/authentication"},{"title":"Dados de teste","icon":"flask-conical","href":"/pt/start-here/test-data"}]},{"group":"Rumo à Produção","pages":[{"title":"Idempotência","icon":"fingerprint","href":"/pt/start-here/idempotency"},{"title":"Erros e retentativas","icon":"triangle-alert","href":"/pt/start-here/errors-and-retries"},{"title":"Fundamentos de webhook","icon":"webhook","href":"/pt/start-here/webhooks"},{"title":"Checklist de entrada em produção","icon":"list-checks","description":"Use este checklist antes de liberar tráfego real para a integração com a Pagou.","href":"/pt/start-here/go-live-checklist"}]},{"group":"Integração com IA","pages":[{"title":"Integração com IA","icon":"bot","sidebarTitle":"Integração com IA","href":"/pt/start-here/ai-integration"},{"title":"Template CLAUDE.md","icon":"file-text","sidebarTitle":"Template CLAUDE.md","description":"Copie este arquivo CLAUDE.md para dar ao Claude Code contexto completo para integrações Pagou.","href":"/pt/start-here/claude-md-template"},{"title":"Template .cursorrules","icon":"file-cog","sidebarTitle":"Template .cursorrules","href":"/pt/start-here/cursorrules-template"}]}]},{"tab":"Pagamentos","icon":"wallet","pages":[{"title":"Pagamentos","href":"/pt/payments/overview"}]},{"tab":"Assinaturas","icon":"repeat","pages":[{"title":"Assinaturas","href":"/pt/subscriptions/overview"}]},{"tab":"Transferências","icon":"arrow-left-right","pages":[{"title":"Transferências","href":"/pt/payouts/pix-out/overview"}]},{"tab":"Webhooks","icon":"webhook","pages":[{"title":"Webhooks","href":"/pt/webhooks/overview"}]},{"tab":"Frontend","icon":"monitor-smartphone","pages":[{"title":"Frontend","href":"/pt/frontend/payment-element/overview"}]},{"tab":"SDKs","icon":"code-xml","pages":[{"title":"SDKs","href":"/pt/sdks/typescript/quickstart"}]},{"tab":"Exemplos","icon":"code","pages":[{"title":"Exemplos","href":"/pt/examples/overview"}]},{"tab":"Referência API","icon":"file-code-2","pages":[{"title":"Referência API","href":"/pt/api-reference/customers/reference"}]},{"tab":"Recursos","icon":"library-big","pages":[{"title":"Recursos","href":"/pt/changelog"}]}]}]},"basePath":"","title":"Integração com IA - Pagou Developer Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}