Playbook Técnico

API PIX PSP Receptor

Guía técnica para implementar tests funcionales, seguridad, performance y monitoreo en APIs PIX PSP Receptor — en conformidad con BACEN.

Zeroincidentes de regresión
< 15 minfeedback por cambio
100%cobertura flujos críticos
Hablar con experto
01

Alcance y Requisitos

APIs cubiertas, requisitos mTLS/OAuth 2.0, y normativas BACEN aplicables.

APIs Cubiertas en este Playbook

RecursoEndpointDescripción
Cobro Inmediato/cob e /cob/{txid}CRUD de cobros inmediatos con QR Code
Cobro con Vencimiento/cobv e /cobv/{txid}Cobros con fecha de vencimiento (boleto PIX)
PIX Recibidos/pix e /pix/{e2eid}Consulta y devolución de pagos PIX recibidos
Webhook/webhook/{chave}Configuración de notificaciones push
Location (Payload)/loc e /loc/{id}Gestión de payloads para QR Code
PIX Automático (Rec)/rec e /rec/{idRec}Gestión de recurrencias (débito automático)
Lote CobV/lotecobv/{id}Creación y gestión de lotes de cobros con vencimiento
Solicitud Rec/solicrec/{idSolicRec}Confirmación de autorización de recurrencia

PIX API v2.9.0 — Requisitos de Seguridad

  • mTLS obligatorio: Certificado ICP-Brasil (producción) o emitido por el PSP (homologación)
  • OAuth 2.0 Client Credentials: Alcances específicos por recurso (cob.read, cob.write, pix.read)
  • RFC 8705: Token vinculado al certificado TLS — impide el uso del token en otra conexión

Normativas Aplicables

NormativaAlcance de Aplicación
Resolución BCB No. 1/2020Regulación base del arreglo PIX
Manual de Seguridad del PIXRequisitos técnicos de seguridad
Manual de APIs PIXEspecificaciones técnicas de las APIs
Resolución Conjunta No. 6/2023Compartición de indicios de fraude
Circular BCB No. 3.978/2020Prevención del lavado de dinero
LGPD (Ley 13.709/2018)Protección de datos personales

Mantenga un mapeo entre cada normativa y los casos de prueba correspondientes para facilitar auditorías.

02

Tests Funcionales

Matriz de casos de test para /cob, /cobv, /pix y /webhook con priorización P0/P1.

Cobro Inmediato (/cob)

MétodoPrioridadCaso de PruebaValidaciones
POST /cob/{txid}P0Crear cobro con valor fijoHTTP 201, txid, location, QR Code
POST /cob/{txid}P0Crear cobro Pix RetiromodalidadeAlteracao, retirada
POST /cob/{txid}P1Crear cobro Pix Cambiovalor.original, valor.troco
GET /cob/{txid}P0Consultar cobro existentestatus, calendario, valor, chave
PATCH /cob/{txid}P1Revisar cobro (cambiar estado)status REMOVIDA_PELO_USUARIO
GET /cobP1Listar cobros con paginaciónparametros.paginacao, filtros

PIX Recibidos (/pix)

MétodoPrioridadCaso de PruebaValidaciones
GET /pix/{e2eid}P0Consultar PIX por endToEndIde2eid, txid, valor, horario
PUT /pix/{e2eid}/devolucao/{id}P0Solicitar devolución (MD06)rtrId, status, motivo
GET /pix/{e2eid}/devolucao/{id}P1Consultar estado de devoluciónstatus, horario, motivo
GET /pixP1Listar PIX por períodoinicio, fim, paginacao

Priorice P0 para el primer ciclo de pruebas. P1 puede implementarse en paralelo o en la segunda iteración.

03

Tests de Seguridad

OWASP API Top 10, validación OAuth/mTLS, y vectores de inyección para APIs financieras.

OWASP API Security Top 10

IDVulnerabilidadPruebas Específicas
API1:2023Broken Object Level AuthorizationIntentar acceder a /cob/{txid} de otro usuario; Manipular e2eid para consultar PIX ajeno
API2:2023Broken AuthenticationProbar tokens expirados, revocados, sin alcance; Validar mTLS certificate binding
API3:2023Broken Object Property Level AuthorizationMass Assignment: intentar alterar campos readonly como status, horario; Verificar si response expone datos sensibles
API4:2023Unrestricted Resource ConsumptionValidar rate limiting; Probar timeout de 15s; DoS con requests paralelos
API5:2023Broken Function Level AuthorizationAcceder a endpoints administrativos; Probar escalación de privilegios en alcances OAuth
API6:2023Unrestricted Access to Sensitive Business FlowsAutomatización de creación masiva de cobros; Abuso de devoluciones
API7:2023Server-Side Request Forgery (SSRF)Probar webhookUrl con direcciones internas/localhost; Validar sanitización de URLs
API8:2023Security MisconfigurationHeaders de seguridad (HSTS, CSP); Verificar que el error handling no exponga stack traces
API9:2023Improper Inventory ManagementMapear endpoints no documentados; Verificar versiones antiguas de la API expuestas
API10:2023Unsafe Consumption of APIsValidar integración con DICT; Probar respuestas malformadas de socios

Validación OAuth 2.0 + mTLS

EscenarioResultadoValidación
Token válido + certificado correcto200 OKRequest procesado normalmente
Token válido + certificado diferente401cnf claim no corresponde al certificado
Token expirado401TokenExpirado
Token sin alcance necesario403AcessoNegado - alcance insuficiente
Certificado expiradoFallo TLSHandshake falla antes del request
Certificado revocado (CRL/OCSP)Fallo TLSVerificar validación de revocación
Certificado auto-firmadoFallo TLSNo aceptado según regulación
Token con audience incorrecto401TokenInvalido

Seguridad de Webhooks

  • SSRF: Bloquear URLs internas (localhost, 127.0.0.1, rangos privados)
  • DNS Rebinding: Resolver DNS una única vez antes de conectar
  • Validación de Protocolo: Aceptar solo https://, rechazar file://, gopher://

Validar certificados mTLS, alcances OAuth y rate limiting manualmente en cada deploy no escala. DAST automatizado en el pipeline detecta vulnerabilidades antes de que lleguen a producción.

Voidr ejecuta DAST, valida specs OpenAPI y centraliza resultados en un único dashboard.

Ver como funciona: Segurança & Compliance
04

Monitoreo Sintético

Escenarios de monitoreo, SLAs regulatorios, y configuración de alertas.

Escenarios de Monitoreo Recomendados

EscenarioFrecuenciaSLAAlertas
Health Check OAuth1 min< 500msPagerDuty P1, Slack #alerts
Token Refresh Flow5 min< 1000msSlack, Grafana
Crear + Consultar Cob5 min< 2000msEmail, Slack, Grafana
Webhook Delivery5 min< 5000msPagerDuty P1
Consulta DICT5 min< 1500msSlack, Datadog
Flujo E2E Pago15 min< 10000msTodos los canales

SLAs Regulatorios (Manual de Seguridad del PIX)

  • Disponibilidad: Mínimo 99.5% mensual por endpoint
  • Timeout: Máximo 15 segundos para operaciones síncronas
  • Ventana de mantenimiento: Comunicación previa al BACEN requerida

Configure alertas en múltiples canales (Slack, PagerDuty, email) para garantizar respuesta rápida a incidentes.

05

Tests de Performance

Perfiles de carga (smoke, load, stress, soak), distribución de tráfico y criterios de aceptación.

Perfiles de Carga

TipoVUsDuraciónObjetivo
Smoke Test1-51 minValidar scripts y ambiente de prueba
Load Test100-50030 minCarga normal de producción
Stress Test500-200015 minEncontrar breaking point
Spike Test0→1000→010 minPicos súbitos (flash sale, día de pago)
Soak Test200-3004-8 horasMemory leaks, degradación gradual
Breakpoint TestRamp upHasta falloCapacidad máxima absoluta

Distribución Realista de Tráfico

EndpointTráficoThink TimePacing
POST /cob/{txid} (crear cobro)40%1-3sRandom
GET /cob/{txid} (consultar cobro)35%0.5-1sConstant
GET /pix (listar recibidos)15%2-5sRandom
PUT /pix/{e2eid}/devolucao (devolución)8%5-10sRandom
Webhook callbacks (simulado)2%N/AAsync

Criterios de Aceptación

Error Rate < 1%
P95 Latency < 2s
Throughput ≥ 500 TPS
Recuperación < 60s
CPU/Memory < 80%

Ejecute Soak Tests (4h+) regularmente para detectar memory leaks y degradación gradual que no aparecen en pruebas cortas.

06

Virtualización de Servicios

Mock server para APIs BACEN, stubs stateful e inyección de fallas.

Arquitectura de Ambiente de Pruebas

┌─────────────────────────────────────────────────────────────────┐
│                    Ambiente de Testes Isolado                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────┐     ┌─────────────────┐     ┌─────────────────┐   │
│  │  Testes │────▶│  Mock Server    │────▶│  Webhook        │   │
│  │  E2E    │     │  (API BACEN)    │     │  Simulator      │   │
│  └─────────┘     └─────────────────┘     └─────────────────┘   │
│       │                  │                       │              │
│       │          ┌───────┴───────┐               │              │
│       │          ▼               ▼               │              │
│       │    ┌──────────┐   ┌──────────┐           │              │
│       │    │ Stateful │   │  Fault   │           │              │
│       │    │ Stubs    │   │ Injection│           │              │
│       │    └──────────┘   └──────────┘           │              │
│       │                                          │              │
│       └──────────────────────────────────────────┘              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
          
La virtualización permite probar sin dependencia del ambiente real de BACEN

Escenarios de Simulación

EscenarioComportamientoCaso de Uso
Happy PathRespuestas 2xx estándarDesarrollo ágil, pruebas básicas
Timeout SimulationDelay 16s → 504 Gateway TimeoutPrueba de resiliencia y circuit breaker
Rate Limiting429 tras N requests/minValidar exponential backoff/retry
Partial Failure50% errores aleatoriosChaos engineering, fallback logic
Webhook DelayCallback tras 30minPolling vs push, reconciliación
Certificate ErrorFallo mTLS simuladoManejo de errores de certificado

Los mocks stateful permiten simular flujos completos (crear cobro → recibir pago → procesar webhook) sin integración real.

07

Datos Sintéticos

Generación de txid, e2eid, CPF/CNPJ válidos sin datos reales (LGPD).

Campos y Reglas de Generación

CampoTipoRegla
txidString [26-35][a-zA-Z0-9]{26,35} único por CNPJ receptor
endToEndId (e2eid)String [32]E + ISPB(8) + FECHA(8) + SEQ(11) + CTRL(5)
chave (CPF)String [11]CPF válido con dígito verificador correcto
chave (CNPJ)String [14]CNPJ válido con dígito verificador correcto
chave (Email)String [max 77]user{uuid}@testdomain.pix.test
chave (Teléfono)String [14]+5511999{random(6)} - formato E.164
valor.originalDecimal [16,2]Random 0.01-999999.99 (distribución log-normal)
devedor.nomeString [max 200]Faker.name() locale pt-BR
Ejemplo: Generación de Datos 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 });

Cumplimiento LGPD

  • Cero datos reales: Los datos sintéticos no contienen PII de personas reales
  • No reversibilidad: Imposible reconstruir datos originales a partir de los sintéticos
  • Aislamiento total: Ambientes de prueba segregados de producción
08

Pipeline CI/CD

Gates de calidad por etapa: linting, contract tests, DAST, load tests.

Pipeline de Calidad

┌──────────┐   ┌──────────┐   ┌─────────────┐   ┌──────────┐   ┌────────────┐
│ Pre-     │──▶│  Build   │──▶│ Integration │──▶│ Staging  │──▶│ Production │
│ commit   │   │          │   │             │   │          │   │            │
└──────────┘   └──────────┘   └─────────────┘   └──────────┘   └────────────┘
     │              │               │                │               │
     ▼              ▼               ▼                ▼               ▼
 ┌────────┐   ┌──────────┐   ┌───────────┐   ┌──────────┐   ┌────────────┐
 │Linting │   │ Unit     │   │ Smoke     │   │Regressivo│   │ Canary     │
 │OpenAPI │   │ Contract │   │ Tests     │   │ Security │   │ Monitoring │
 │ Schema │   │ Tests    │   │ E2E       │   │ Load     │   │ Sintético  │
 └────────┘   └──────────┘   └───────────┘   └──────────┘   └────────────┘
          
Quality gates en cada etapa previenen regresiones en producción
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

Orquestar contract testing, DAST y load testing en pipelines separados genera overhead de mantenimiento y resultados fragmentados entre herramientas.

Voidr ejecuta todos los quality gates en un único workflow y reporta resultados consolidados por PR.

Ver como funciona: Automação de Testes
09

Checklist

Lista de verificación para infraestructura, tests, seguridad y compliance.

Infraestructura

0/6

Pruebas Funcionales

0/6

Pruebas de Seguridad

0/7

Performance

0/5

Datos y Compliance

0/5

Use este checklist como guía de implementación. El progreso se guarda automáticamente en su navegador.

10

Próximo Paso

Automatice pruebas y monitoreo de APIs PIX con IA

Voidr
AI Agent

AI Agent para APIs PIX

Genera casos de prueba a partir de la spec OpenAPI, ejecuta en cada PR y actualiza pruebas automáticamente cuando la API cambia. Corre en su cloud.

Generación desde OpenAPI
Actualización automática de pruebas
Ejecución en cada PR
Agendar demostración

¿Cuánto cuesta
una falla en producción?