Objetivo
Enviar Pix para CPF, CNPJ, e-mail, telefone (E.164) ou chave aleatória (evp) via POST /api/pix/cash-out.
Request (exemplo)
| Campo | Obrigatório | Descrição |
|---|---|---|
transaction.value | Sim | Valor > 0 (BRL no request, conforme convenção). |
transaction.externalId | Sim | Único por operação. |
recipient.name | Sim | Nome do favorecido. |
recipient.pixKey | Sim | Chave. |
recipient.pixKeyType | Sim | cpf, cnpj, email, phone, evp. |
recipient.document | Não | Documento. |
Tipos de chave
pixKeyType | Formato |
|---|---|
cpf | Com ou sem máscara. |
cnpj | Com ou sem máscara. |
email | E-mail válido. |
phone | E.164, ex. +5511999999999. |
evp | UUID (chave aleatória). |
Reserva de saldo e tarifa
Na criação, a plataforma pode reservar valor + teto de tarifa (domínio:max_fee_cents / reserved_total_cents) para que a confirmação não dependa de saldo “livre” imediato no instante exato do webhook. Detalhes numéricos no GET /api/pix/cash-out/{id}.
Resposta imediata
A resposta do201 reflete o estado no momento do commit: pode ser um dos estados de domínio (incluindo pipeline: CREATED, RESERVED, DISPATCH_PENDING, DISPATCHED, PROVIDER_RESULT_UNKNOWN, etc. — status), e não necessariamente apenas a palavra PENDING (há nota de compatibilidade com PENDING legado).
Outbox, despacho e confirmação
Após o201, o cash-out percorre reserva → fila (outbox) → despacho ao BaaS. Falhas ambíguas na chamada HTTP (timeout, 5xx, EOF) não liberam a reserva de forma imprudente: entram em reconciliação (fluxo de reconciliação).
O webhook pix_cash_out ao comerciante acompanha confirmação/falha terminal de liquidação quando aplicável.
Falha ambígua e consulta
Se o estado estiverPROVIDER_RESULT_UNKNOWN ou RECONCILIATION_REQUIRED, não conclua “pago” ou “falhou” com base em suposição única. Use reconcilição e consulta de detalhe com correlação operacional.
Diferença do pagamento via QR (EMV)
Para pagar a partir de pix copia e cola (EMV), use cash-out por QR Code. O ciclo e webhooks seguem a mesma família; no detalhe,paymentType indica key vs qrcode.