Technical Playbook

PIX PSP Receiver API

Technical guide to implement functional tests, security, performance and monitoring for PIX PSP Receiver APIs — in compliance with BACEN.

Zeroregression incidents
< 15 minfeedback per change
100%critical flows coverage
Talk to expert
01

Scope and Requirements

APIs covered, mTLS/OAuth 2.0 requirements, and applicable BACEN regulations.

APIs Cobertas neste Playbook

RecursoEndpointDescrição
Cobrança Imediata/cob e /cob/{txid}CRUD de cobranças imediatas com QR Code
Cobrança c/ Vencimento/cobv e /cobv/{txid}Cobranças com data de vencimento (boleto Pix)
Pix Recebidos/pix e /pix/{e2eid}Consulta e devolução de Pix recebidos
Webhook/webhook/{chave}Configuração de notificações push
Location (Payload)/loc e /loc/{id}Gerenciamento de payloads para QR Code
Pix Automático (Rec)/rec e /rec/{idRec}Gerenciamento de recorrências (débito automático)
Lote CobV/lotecobv/{id}Criação e gestão de lotes de cobranças com vencimento
Solicitação Rec/solicrec/{idSolicRec}Confirmação de autorização de recorrência

API Pix v2.9.0 — Requisitos de Segurança

  • mTLS obrigatório: Certificado ICP-Brasil (produção) ou emitido pelo PSP (homologação)
  • OAuth 2.0 Client Credentials: Escopos específicos por recurso (cob.read, cob.write, pix.read)
  • RFC 8705: Token vinculado ao certificado TLS — impede uso do token em outra conexão

Normativas Aplicáveis

NormativaEscopo de Aplicação
Resolução BCB nº 1/2020Regulamento base do arranjo Pix
Manual de Segurança do PixRequisitos técnicos de segurança
Manual de APIs PixEspecificações técnicas das APIs
Resolução Conjunta nº 6/2023Compartilhamento de indícios de fraude
Circular BCB nº 3.978/2020Prevenção à lavagem de dinheiro
LGPD (Lei 13.709/2018)Proteção de dados pessoais

Mantenha um mapeamento entre cada normativa e os casos de teste correspondentes para facilitar auditorias.

02

Functional Tests

Test case matrix for /cob, /cobv, /pix and /webhook with P0/P1 prioritization.

Cobrança Imediata (/cob)

MétodoPrioridadeCaso de TesteValidações
POST /cob/{txid}P0Criar cobrança com valor fixoHTTP 201, txid, location, QR Code
POST /cob/{txid}P0Criar cobrança Pix SaquemodalidadeAlteracao, retirada
POST /cob/{txid}P1Criar cobrança Pix Trocovalor.original, valor.troco
GET /cob/{txid}P0Consultar cobrança existentestatus, calendario, valor, chave
PATCH /cob/{txid}P1Revisar cobrança (alterar status)status REMOVIDA_PELO_USUARIO
GET /cobP1Listar cobranças com paginaçãoparametros.paginacao, filtros

Pix Recebidos (/pix)

MétodoPrioridadeCaso de TesteValidações
GET /pix/{e2eid}P0Consultar Pix por endToEndIde2eid, txid, valor, horario
PUT /pix/{e2eid}/devolucao/{id}P0Solicitar devolução (MD06)rtrId, status, motivo
GET /pix/{e2eid}/devolucao/{id}P1Consultar status devoluçãostatus, horario, motivo
GET /pixP1Listar Pix por períodoinicio, fim, paginacao

Priorize P0 para o primeiro ciclo de testes. P1 pode ser implementado em paralelo ou na segunda iteração.

03

Security Tests

OWASP API Top 10, OAuth/mTLS validation, and injection vectors for financial APIs.

OWASP API Security Top 10

IDVulnerabilidadeTestes Específicos
API1:2023Broken Object Level AuthorizationTentar acessar /cob/{txid} de outro usuário; Manipular e2eid para consultar Pix alheio
API2:2023Broken AuthenticationTestar tokens expirados, revogados, sem escopo; Validar mTLS certificate binding
API3:2023Broken Object Property Level AuthorizationMass Assignment: tentar alterar campos readonly como status, horario; Verificar se response expõe dados sensíveis
API4:2023Unrestricted Resource ConsumptionValidar rate limiting; Testar timeout de 15s; DoS com requests paralelos
API5:2023Broken Function Level AuthorizationAcessar endpoints administrativos; Testar escalação de privilégio em escopos OAuth
API6:2023Unrestricted Access to Sensitive Business FlowsAutomação de criação massiva de cobranças; Abuse de devoluções
API7:2023Server-Side Request Forgery (SSRF)Testar webhookUrl com endereços internos/localhost; Validar sanitização de URLs
API8:2023Security MisconfigurationHeaders de segurança (HSTS, CSP); Verificar error handling não expõe stack traces
API9:2023Improper Inventory ManagementMapear endpoints não documentados; Verificar versões antigas da API expostas
API10:2023Unsafe Consumption of APIsValidar integração com DICT; Testar respostas malformadas de parceiros

Validação OAuth 2.0 + mTLS

CenárioResultadoValidação
Token válido + certificado correto200 OKRequest processado normalmente
Token válido + certificado diferente401cnf claim não corresponde ao certificado
Token expirado401TokenExpirado
Token sem escopo necessário403AcessoNegado - escopo insuficiente
Certificado expiradoFalha TLSHandshake falha antes do request
Certificado revogado (CRL/OCSP)Falha TLSVerificar validação de revogação
Certificado auto-assinadoFalha TLSNão aceito conforme regulamentação
Token com audience incorreto401TokenInvalido

Segurança de Webhooks

  • SSRF: Bloquear URLs internas (localhost, 127.0.0.1, ranges privados)
  • DNS Rebinding: Resolver DNS uma única vez antes de conectar
  • Validação de Protocolo: Aceitar apenas https://, rejeitar file://, gopher://

Validar certificados mTLS, escopos OAuth, e rate limiting manualmente a cada deploy não escala. DAST automatizado no pipeline detecta vulnerabilidades antes que cheguem a produção.

A Voidr executa DAST, valida specs OpenAPI, e centraliza resultados em um único dashboard.

Ver como funciona: Segurança & Compliance
04

Synthetic Monitoring

Monitoring scenarios, regulatory SLAs, and alert configuration.

Cenários de Monitoramento Recomendados

CenárioFrequênciaSLAAlertas
Health Check OAuth1 min< 500msPagerDuty P1, Slack #alerts
Token Refresh Flow5 min< 1000msSlack, Grafana
Criar + Consultar Cob5 min< 2000msEmail, Slack, Grafana
Webhook Delivery5 min< 5000msPagerDuty P1
Consulta DICT5 min< 1500msSlack, Datadog
Fluxo E2E Pagamento15 min< 10000msTodos os canais

SLAs Regulatórios (Manual de Segurança do Pix)

  • Disponibilidade: Mínimo 99.5% mensal por endpoint
  • Timeout: Máximo 15 segundos para operações síncronas
  • Janela de manutenção: Comunicação prévia ao BACEN

Configure alertas em múltiplos canais (Slack, PagerDuty, email) para garantir resposta rápida a incidentes.

05

Performance Tests

Load profiles (smoke, load, stress, soak), traffic distribution and acceptance criteria.

Perfis de Carga

TipoVUsDuraçãoObjetivo
Smoke Test1-51 minValidar scripts e ambiente de teste
Load Test100-50030 minCarga normal de produção
Stress Test500-200015 minEncontrar breaking point
Spike Test0→1000→010 minPicos súbitos (flash sale, 5º dia útil)
Soak Test200-3004-8 horasMemory leaks, degradação gradual
Breakpoint TestRamp upAté falhaCapacidade máxima absoluta

Distribuição Realista de Tráfego

EndpointTráfegoThink TimePacing
POST /cob/{txid} (criar cobrança)40%1-3sRandom
GET /cob/{txid} (consultar cobrança)35%0.5-1sConstant
GET /pix (listar recebimentos)15%2-5sRandom
PUT /pix/{e2eid}/devolucao (devolução)8%5-10sRandom
Webhook callbacks (simulado)2%N/AAsync

Critérios de Aceitação

Error Rate < 1%
P95 Latência < 2s
Throughput ≥ 500 TPS
Recuperação < 60s
CPU/Memory < 80%

Execute Soak Tests (4h+) regularmente para detectar memory leaks e degradação gradual que não aparecem em testes curtos.

06

Service Virtualization

Mock server for BACEN APIs, stateful stubs and fault injection.

Arquitetura de Ambiente de Testes

┌─────────────────────────────────────────────────────────────────┐
│                    Ambiente de Testes Isolado                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────┐     ┌─────────────────┐     ┌─────────────────┐   │
│  │  Testes │────▶│  Mock Server    │────▶│  Webhook        │   │
│  │  E2E    │     │  (API BACEN)    │     │  Simulator      │   │
│  └─────────┘     └─────────────────┘     └─────────────────┘   │
│       │                  │                       │              │
│       │          ┌───────┴───────┐               │              │
│       │          ▼               ▼               │              │
│       │    ┌──────────┐   ┌──────────┐           │              │
│       │    │ Stateful │   │  Fault   │           │              │
│       │    │ Stubs    │   │ Injection│           │              │
│       │    └──────────┘   └──────────┘           │              │
│       │                                          │              │
│       └──────────────────────────────────────────┘              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
          
Virtualização permite testar sem dependência do ambiente real do BACEN

Cenários de Simulação

CenárioComportamentoCaso de Uso
Happy PathRespostas 2xx padrãoDesenvolvimento ágil, testes básicos
Timeout SimulationDelay 16s → 504 Gateway TimeoutTeste de resiliência e circuit breaker
Rate Limiting429 após N requests/minValidar exponential backoff/retry
Partial Failure50% erros aleatóriosChaos engineering, fallback logic
Webhook DelayCallback após 30minPolling vs push, reconciliação
Certificate ErrorFalha mTLS simuladaHandling de erros de certificado

Mocks stateful permitem simular fluxos completos (criar cobrança → receber pagamento → processar webhook) sem integração real.

07

Synthetic Data

Generation of valid txid, e2eid, CPF/CNPJ without real data (LGPD).

Campos e Regras de Geração

CampoTipoRegra
txidString [26-35][a-zA-Z0-9]{26,35} único por CNPJ recebedor
endToEndId (e2eid)String [32]E + ISPB(8) + DATA(8) + SEQ(11) + CTRL(5)
chave (CPF)String [11]Faker CPF válido com dígito verificador correto
chave (CNPJ)String [14]Faker CNPJ válido com dígito verificador correto
chave (Email)String [max 77]user{uuid}@testdomain.pix.test
chave (Telefone)String [14]+5511999{random(6)} - formato E.164
valor.originalDecimal [16,2]Random 0.01-999999.99 (distribuição log-normal)
devedor.nomeString [max 200]Faker.name() locale pt-BR
Exemplo: Geração de Dados PIXtypescript
import { faker } from '@faker-js/faker/locale/pt_BR';

// txid: 26-35 caracteres alfanuméricos
const txid = faker.string.alphanumeric({ length: 32 });

// CPF válido com dígito verificador
const cpf = generateValidCPF();

// endToEndId no formato BACEN
const e2eid = `E${ispb}${dateStr}${seq}${ctrl}`;

// Valor com distribuição realista
const valor = faker.finance.amount({ min: 0.01, max: 999999.99 });

Conformidade LGPD

  • Zero dados reais: Dados sintéticos não contêm PII de pessoas existentes
  • Não-reversibilidade: Impossível reconstruir dados originais a partir dos sintéticos
  • Isolamento total: Ambientes de teste segregados de produção
08

CI/CD Pipeline

Quality gates per stage: linting, contract tests, DAST, load tests.

Pipeline de Qualidade

┌──────────┐   ┌──────────┐   ┌─────────────┐   ┌──────────┐   ┌────────────┐
│ Pre-     │──▶│  Build   │──▶│ Integration │──▶│ Staging  │──▶│ Production │
│ commit   │   │          │   │             │   │          │   │            │
└──────────┘   └──────────┘   └─────────────┘   └──────────┘   └────────────┘
     │              │               │                │               │
     ▼              ▼               ▼                ▼               ▼
 ┌────────┐   ┌──────────┐   ┌───────────┐   ┌──────────┐   ┌────────────┐
 │Linting │   │ Unit     │   │ Smoke     │   │Regressivo│   │ Canary     │
 │OpenAPI │   │ Contract │   │ Tests     │   │ Security │   │ Monitoring │
 │ Schema │   │ Tests    │   │ E2E       │   │ Load     │   │ Sintético  │
 └────────┘   └──────────┘   └───────────┘   └──────────┘   └────────────┘
          
Gates de qualidade em cada estágio previnem regressões em produção
GitHub Actions: Pipeline PIXyaml
name: PIX API Quality Gates
on: [push, pull_request]

jobs:
  quality:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Validate OpenAPI Schema
        run: npx @stoplight/spectral lint openapi.yaml
      
      - name: Contract Tests
        run: npx prism proxy openapi.yaml --errors
      
      - name: Functional Tests
        run: npm run test:pix-api
      
      - name: Security Scan (OWASP)
        run: npm run security:scan
      
      - name: Performance Baseline
        run: npm run perf:smoke

Orquestrar contract testing, DAST, e load testing em pipelines separados gera overhead de manutenção e resultados fragmentados entre ferramentas.

A Voidr executa todos os gates de qualidade em um único workflow e reporta resultados consolidados por PR.

Ver como funciona: Automação de Testes
09

Checklist

Verification list for infrastructure, tests, security and compliance.

Infraestrutura

0/6

Testes Funcionais

0/6

Testes de Segurança

0/7

Performance

0/5

Dados e Compliance

0/5

Use este checklist como guia de implementação. O progresso é salvo automaticamente no seu navegador.

10

Próximo Passo

Automatize testes e monitoramento de APIs PIX com IA

Voidr
AI Agent

AI Agent para APIs PIX

Gera casos de teste a partir da spec OpenAPI, executa em cada PR, e atualiza testes automaticamente quando a API muda. Roda na sua cloud.

Geração a partir de OpenAPI
Atualização automática de testes
Execução em cada PR
Agendar demonstração

What does
a production failure cost?

1h diagnostic. We map your
critical journeys and show what is uncovered.

Book a demo