API pública
Base URL:
https://app.slimpay.com.br/api/v1. Cobranças, saldo, saques e webhooks.llms.txt para IAs
Só as instruções. Copie, cole na sua IA e peça para integrar o PIX — em minutos.
Como usar
- Copiar ou Baixar o arquivo abaixo.
- Cole no chat da IA com algo como: “Integre a SlimPay no meu checkout com este llms.txt.”
Detalhes e outros recursos ficam na documentação. URL direta: /llms.txt.
Arquivo
slimpay-llms.txt · 2.794 caracteres
# SlimPay — integrar Pagamentos via API PIX
> Docs humanas: https://slimpay.com.br/docs
## O que fazer
1. Criar cobrança no servidor
2. Mostrar o PIX (QR + copia e cola) pro cliente
3. Receber o webhook `charge.paid` e liberar o pedido
Pronto. Não precisa de mais nada para receber PIX.
## Regras (não quebre)
- Valores em **centavos inteiros**: R$ 149,90 → `14990`
- Header `Authorization: Bearer sp_SUA_CHAVE` (chave só no servidor)
- Em todo POST: header `Idempotency-Key` (use o id do pedido)
- Não faça polling de status — use webhook
- Não invente campos (`fee`, `provider`, `expires_in`, etc.)
## 1. Criar cobrança
`POST https://app.slimpay.com.br/api/v1/charges`
```bash
curl https://app.slimpay.com.br/api/v1/charges \
-H "Authorization: Bearer sp_SUA_CHAVE" \
-H "Idempotency-Key: pedido-1042" \
-H "Content-Type: application/json" \
-d '{
"amount": 14990,
"description": "Pedido #1042",
"reference_id": "1042",
"customer": { "name": "Maria Silva", "tax_id": "12345678909" }
}'
```
Resposta (use estes campos):
- `id` — `chg_...`
- `brcode` — PIX copia e cola
- `qrcode_url` — URL pública da imagem do QR (`<img src="...">`)
- `expires_at` — validade
## 2. Mostrar o PIX
- QR: `<img src="{qrcode_url}" />`
- Copia e cola: texto do `brcode`
- Mostre os dois
## 3. Webhook (pagamento confirmado)
No painel SlimPay → Webhooks: cadastre sua URL HTTPS e guarde o segredo `whsec_...`.
A SlimPay envia `POST` com:
```json
{
"id": "evt_...",
"type": "charge.paid",
"data": {
"id": "chg_...",
"status": "paid",
"amount": 14990,
"reference_id": "1042"
}
}
```
Header: `SlimPay-Signature: t=<unix>,v1=<hmac_hex>`
Verifique assim (corpo **bruto**, sem re-serializar JSON):
```ts
import crypto from "node:crypto";
function verify(rawBody: string, header: string, secret: string) {
const map = new Map(header.split(",").map((p) => {
const i = p.indexOf("=");
return [p.slice(0, i), p.slice(i + 1)];
}));
const t = map.get("t");
const v1 = map.get("v1");
if (!t || !v1) return false;
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const expected = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
const a = Buffer.from(expected, "hex");
const b = Buffer.from(v1, "hex");
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
```
No handler: se `type === "charge.paid"` e assinatura ok → liberar o pedido.
Ignore `event.id` repetido. Responda `200` rápido.
## Env
```
SLIMPAY_API_KEY=sp_...
SLIMPAY_WEBHOOK_SECRET=whsec_...
```
## Extra (só se pedir)
- Consultar: `GET https://app.slimpay.com.br/api/v1/charges/{id}`
- Cancelar (ainda não paga): `DELETE https://app.slimpay.com.br/api/v1/charges/{id}`
- Docs: https://slimpay.com.br/docs