Para vibecoders

Integre a Vitrin
com seu LLM favorito.

Construa o checkout, a recorrência, os webhooks — tudo sem ler documentação manual. Cole o prompt abaixo no Claude, Cursor, Windsurf ou ChatGPT, descreva sua tarefa, e deixa o LLM cuidar do resto.

Master prompt

~900 tokens

Cole isso no início da sua conversa com o LLM. Inclui URL base, auth, convenções de dados, requisitos técnicos da API (tokenização, HMAC, PIN), endpoints principais e eventos de webhook — só o que a API exige, sem opiniões sobre arquitetura. No final, troque [descreva aqui] pela sua tarefa.

vitrin-llm-prompt.txt
Você está integrando a Vitrin Digital, um intermediador de pagamentos brasileiro.

Referência completa: https://vitrin.digital/llms-full.txt
Spec OpenAPI 3.0: https://vitrin.digital/openapi.json
Swagger interativo: https://api.vitrin.digital/api/public/docs/

ESCOPO DA INTEGRAÇÃO VIA API:

A API REST cobre operações de comerciante: cobranças, assinaturas, produtos, pedidos, clientes, webhooks, antecipação, transferências, relatórios. **Cadastro, login, definição de PIN, assinatura de contrato e upload de documentos são feitos no dashboard web** (vitrin.digital) — não há endpoints REST para essas ações porque exigem interação humana inequívoca. Sua aplicação consome a API com uma API key obtida pelo dono da org no dashboard depois do onboarding.

CONFIGURAÇÃO DA API:

- URL base: https://api.vitrin.digital/api/v1
- Auth: header `Authorization: Bearer vd_live_<chave>` em todas as chamadas
- Content-Type: application/json em POST/PATCH/PUT
- Encoding: UTF-8

CONVENÇÕES DE DADOS:

- Valores monetários são strings decimais: "99.90" (não centavos, não float)
- Datas no formato ISO 8601: "2026-04-15"
- IDs são UUIDs em string
- Listas retornam paginadas: `{ count, next, previous, results }`
- Erros retornam JSON com chave `error` ou `detail` + status HTTP padrão

MÉTODOS DE PAGAMENTO DISPONÍVEIS:

- Pix instantâneo (`POST /checkout/pix/`) — retorna QR Code base64 e copia-cola
- Pix Automático (`POST /pix-automatic/authorizations/`) — recorrência nativa do BC com aceite único; cobranças posteriores via `POST /pix-automatic/authorizations/{id}/charges/` com due_date entre 2 e 10 dias úteis no futuro
- Boleto (`POST /checkout/boleto/`) — retorna URL do PDF e linha digitável
- Cartão de crédito 1-12x — fluxo de duas etapas: `POST /checkout/tokenize/` (retorna token) → `POST /checkout/pay/` (cobra com o token)

A escolha de qual método oferecer ao seu cliente final é decisão sua.

REQUISITOS TÉCNICOS DA API:

1. Tokenização de cartão: dados de cartão (número, ccv) devem ser enviados ao endpoint `/checkout/tokenize/` que retorna `credit_card_token`. Use o token nas cobranças subsequentes. Esse fluxo é exigido pela conformidade PCI da plataforma.

2. Webhooks: o dono da org configura a URL pelo dashboard (`/dashboard/webhooks`) e recebe um `webhook_secret`. A Vitrin envia eventos para essa URL com header `X-Vitrin-Signature: sha256=<hex>` calculado como HMAC-SHA256 do body cru com o secret. Validar essa assinatura é necessário para confiar no payload.

```python
import hmac, hashlib
def verify(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature)
```

3. Operações sensíveis exigem o PIN do dono da org no body: refund, cancel, transfer (Pix/banco), anticipation request, rotação de api-key. O PIN é definido pelo dono no cadastro inicial. Como expor a entrada do PIN ao usuário é decisão do integrador.

4. Antes da primeira cobrança, a org precisa ter assinado os 4 contratos comerciais (Termos, Anexo Comercial, Política de Chargebacks, LGPD). Isso é feito pelo dono no dashboard. Sua aplicação pode checar via `GET /contracts/status/`. Se `all_signed` for false, mostre uma mensagem orientando o operador a ir para `/dashboard/contract` — tentar cobrar antes retorna HTTP 403.

5. Antes da primeira saída de dinheiro, a org precisa concluir o onboarding documental. Sua aplicação pode checar via `GET /onboarding/status/` se `account_status.general == "APPROVED"`. Upload de documentos é humano (no dashboard).

ENDPOINTS PRINCIPAIS DA API:

- POST /customers/ — cria pagador (retorna id)
- POST /checkout/pix/, /checkout/boleto/, /checkout/pay/ — cobranças
- POST /checkout/tokenize/ — tokenização de cartão
- POST /checkout/guest/ — cria customer + cobrança em uma chamada
- POST /pix-automatic/authorizations/ + .../charges/ — recorrência via Pix Automático
- POST /subscriptions/ + /plans/ — recorrência via cartão
- POST /products/ + /orders/create/ — produtos avulsos
- GET /transactions/ — listar
- GET /balance/ + POST /transfers/pix/|/bank/ — saldo e saques
- POST /anticipations/simulate/ + /anticipations/request/ — antecipação
- POST /payments/{id}/refund/|/cancel/ — reembolso/cancelamento
- GET /payments/{id}/chargeback-defense/ — dossiê para contestação
- GET /onboarding/status/ — checar se a org está aprovada
- GET /contracts/status/ — checar se os contratos estão assinados
- POST /auth/api-key/regenerate/ — rotacionar a API key (requer PIN)

EVENTOS DE WEBHOOK (lista parcial — ver llms-full.txt para a lista completa):

- PAYMENT_RECEIVED, PAYMENT_CONFIRMED, PAYMENT_REFUNDED, PAYMENT_CHARGEBACK_REQUESTED
- SUBSCRIPTION_CREATED, SUBSCRIPTION_DELETED
- PIX_AUTOMATIC_RECURRING_AUTHORIZATION_ACTIVATED|REFUSED|CANCELLED|EXPIRED
- PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_CREATED|SCHEDULED|DONE|REFUSED

Para qualquer detalhe que faltar, leia https://vitrin.digital/llms-full.txt — tem o guia completo com exemplos e payloads.

MINHA TAREFA:
[descreva aqui o que você quer integrar]

Os arquivos

Para tarefas mais complexas onde o prompt master não basta, use os arquivos abaixo. São gerados automaticamente do guia oficial e ficam sempre atualizados.

Por ferramenta

Configure o contexto persistente da Vitrin no seu editor.

Claude Code

CLI da Anthropic. Adicione o llms-full.txt ao CLAUDE.md do projeto pra dar contexto persistente.

# CLAUDE.md (na raiz do seu projeto)

## Pagamentos via Vitrin Digital

Quando precisar integrar cobrança, refira-se a:
- Master prompt: https://vitrin.digital/docs/llm
- Referência completa: https://vitrin.digital/llms-full.txt
- OpenAPI 3.0: https://vitrin.digital/openapi.json

Regras: Pix Automático para SaaS B2C de massa,
cartão recorrente para B2B. Validar HMAC nos webhooks.
Tokenizar cartão via /checkout/tokenize/.

Cursor

Adicione um arquivo .cursorrules na raiz pra dar contexto automático em todas as conversas com o LLM.

# .cursorrules (na raiz do seu projeto)

# Vitrin Digital — pagamentos
- Base URL: https://api.vitrin.digital/api/v1
- Auth: Bearer vd_live_<key>
- Para recorrência em SaaS: Pix Automático nativo
- Tokenizar cartão via POST /checkout/tokenize/
- Validar HMAC SHA-256 nos webhooks
- Referência completa: https://vitrin.digital/llms-full.txt
- Spec OpenAPI: https://vitrin.digital/openapi.json

Windsurf / Outros

Para qualquer outro LLM-assisted editor: cole o prompt master no início da conversa, depois descreva sua tarefa.

1. Acesse https://vitrin.digital/llms-full.txt
2. Cole o conteúdo inteiro no início da conversa
3. Descreva sua tarefa: "Integre cobrança Pix Automático
   pro meu SaaS de fitness, com webhook de confirmação"
4. O LLM terá contexto suficiente pra escrever código
   de produção, sem alucinar endpoints inexistentes

Exemplos de tarefas

Exemplos reais do que pedir pro LLM depois de colar o prompt master. Clique pra copiar.

Validar o que o LLM gerou

LLMs alucinam. Antes de subir pra produção, valide num ambiente controlado.

  1. 1
    Use o sandbox — peça uma chave vd_test_... ao admin antes de testar. O sandbox é isolado de produção e tem helpers pra simular pagamentos.
  2. 2
    Confira os endpoints — abra o openapi.json e verifique se cada path/método que o LLM usou existe de verdade. LLMs ocasionalmente inventam endpoints que parecem plausíveis.
  3. 3
    Teste o webhook — use o sandbox helper POST /onboarding/sandbox-approve/ pra aprovar a conta e force um pagamento de teste. Veja se seu handler de webhook recebe o evento e valida o HMAC corretamente.
  4. 4
    Confira o fluxo de cartão — a API exige /checkout/tokenize/ antes do /checkout/pay/. Verifique se o LLM seguiu essa ordem (em vez de tentar enviar dados de cartão direto, que retorna 400).

Pronto pra construir?

Crie sua conta sandbox, copie o master prompt, e mande seu LLM fazer a integração inteira numa tarde.