Pular para o conteúdo
QAdocs
PTEN
Ir para o painel

Saques

O termo de produto é Saque (payout). O endpoint atual é /v1/withdrawals — o nome de fio em uso hoje, ainda não renomeado para /v1/payouts.

Tira saldo para fora da sua carteira Neozentry QA, rumo a um destino real — uma chave Pix, uma conta bancária (TED) ou um endereço cripto. É o inverso do pagamento Pix: pagamento credita sua carteira, saque debita.

#O fluxo, de relance

text
1. POST /v1/withdrawals/validate-pix-key   (opcional — checagem prévia)
2. POST /v1/withdrawals                    (cria a solicitação; debita na aprovação)
3. A Neozentry QA aprova / o adquirente liquida
4. O webhook withdrawal.completed (ou .failed) chega no seu endpoint

Saque exige usuário autenticado por JWT (o painel ou seu back-office), não a chave de API pública. Ele debita a carteira do lojista direto e passa por aprovação — não é um fluxo que o cliente final dispara.

A disponibilidade dos trilhos é por conta. TED e cripto dependem de o módulo correspondente estar habilitado para você. Confirme com seu contato na Neozentry QA antes de construir em cima de um deles.

#1. Validar uma chave Pix (recomendado)

Antes de criar o saque, confira se a chave de destino está bem formada.

POST /v1/withdrawals/validate-pix-key

json
{
  "key": "12345678909",
  "type": "CPF"
}

Resposta 200 OK

json
{
  "valid": true,
  "type": "CPF",
  "normalised": "12345678909"
}

Valores aceitos em type

TipoFormato
CPF11 dígitos, dígito verificador mod-11.
CNPJ14 dígitos, dígito verificador mod-11.
EMAILRFC 5322, até 77 caracteres.
PHONEE.164 com código do país +55 (+5511999999999).
EVPChave aleatória — UUID v4.
(omitido)Detectado automaticamente pelo valor da chave.

Falha

json
{
  "valid": false,
  "type": "CPF",
  "errors": ["invalid CPF checksum"]
}

#2. Criar o saque

POST /v1/withdrawals

CampoTipoObrigatórioDescrição
typeenumsimPIX, TED, CRYPTO.
amountinteirosimMenor unidade da moeda. Não pode exceder o saldo da carteira depois das taxas.
currencystringsimBRL para PIX/TED; ticker da cripto para CRYPTO.
pixKeystringquando PIXChave Pix de destino.
pixKeyTypeenumquando PIXVeja os tipos do validador acima.
bankAccountobjetoquando TED{ bankCode, agency, account, holderName, holderDocument }.
cryptoAddressstringquando CRYPTOEndereço BEP-20 de destino (0x…, 40 caracteres hex). Validado no servidor.
cryptoNetworkenumquando CRYPTOBSC (BEP-20). É a única rede suportada.
cryptoCurrencyenumquando CRYPTOUSDT. É o único token suportado.
descriptionstringnãoTexto livre, para o seu controle.
idempotencyKeystringsimMesma semântica dos pagamentos.

Exemplo — saque Pix

bash
curl -X POST https://qa.liqfy.com.br/v1/withdrawals \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "PIX",
    "amount": 50000,
    "currency": "BRL",
    "pixKey": "12345678909",
    "pixKeyType": "CPF",
    "description": "Saque semanal — semana 17",
    "idempotencyKey": "saque-2026-S17"
  }'

Resposta 201 Created

json
{
  "id": "f6a7b8c9-d0e1-4234-9f01-234567890123",
  "status": "PENDING",
  "type": "PIX",
  "amount": 50000,
  "currency": "BRL",
  "pixKey": "12345678909",
  "pixKeyType": "CPF",
  "fee": 100,
  "netAmount": 49900,
  "description": "Saque semanal — semana 17",
  "createdAt": "2026-04-25T16:10:00.000Z"
}

A carteira ainda não foi debitada — isso acontece na aprovação.

Quando o saque não vai. O contrato completo da recusa — o error.code da recusa imediata por saldo, os códigos de falha do provedor e quais deles estornam sozinhos — está em Falhas de saque.

#3. Ciclo de vida

text
PENDING  ─▶  APPROVED  ─▶  PROCESSING  ─▶  COMPLETED   ✓ dinheiro entregue
                                            ─▶  FAILED       adquirente recusou, carteira estornada
              ─▶  REJECTED                                   negado na revisão — nunca debitado
              ─▶  CANCELLED                                  você cancelou antes da aprovação
StatusEfeito na carteira
PENDINGNenhum — retido até a aprovação
APPROVEDDebitado (valor + taxa)
PROCESSINGDebitado
COMPLETEDDebitado (terminal)
FAILEDEstornado automaticamente para a carteira
REJECTEDNenhum
CANCELLEDNenhum

#4. Webhooks

Assine withdrawal.completed e withdrawal.failed (o mesmo array events usado nos pagamentos) para acompanhar o desfecho:

json
{
  "event": "withdrawal.completed",
  "data": {
    "withdrawalId": "f6a7b8c9-d0e1-4234-9f01-234567890123",
    "amount": 50000,
    "fee": 100,
    "netAmount": 49900,
    "status": "COMPLETED",
    "previousStatus": "PROCESSING",
    "type": "PIX",
    "occurredAt": "2026-04-25T16:11:42.000Z"
  }
}

Em withdrawal.failed, o data.status é FAILED, REJECTED ou CANCELLED. No caso de FAILED a carteira já foi estornada automaticamente.

#5. Listar seus saques

GET /v1/withdrawals?page=1&limit=20&status=COMPLETED

Autenticação: o mesmo JWT do endpoint de criação.

json
{
  "data": [
    {
      "id": "wd_...",
      "status": "COMPLETED",
      "type": "PIX",
      "amount": 50000,
      "fee": 100,
      "netAmount": 49900,
      "completedAt": "2026-04-25T16:11:42.000Z",
      "...": "..."
    }
  ],
  "total": 17,
  "page": 1,
  "limit": 20
}

#6. Limites e regras

  • Teto por transação no Pix — R$ 100.000,00 por padrão (seu contrato pode ampliar).
  • Teto diário — 5× o teto por transação, por padrão.
  • A carteira precisa cobrir valor + taxa — débito parcial nunca acontece; a solicitação é recusada de uma vez.
  • Aprovação — por padrão, todo saque passa por aprovação. Lojistas com histórico podem solicitar aprovação automática abaixo de um limite configurado.
  • TED — restrito a bancos brasileiros (código do banco na lista da FEBRABAN). Liquidação no mesmo dia útil se aprovado até 16:30 (horário de Brasília).
  • Cripto — liquida só em USDT na BSC (BEP-20). O cryptoNetwork precisa ser BSC e o cryptoCurrency, USDT; o destino precisa ser um endereço BEP-20 (0x…) válido, verificado no servidor antes de qualquer débito na carteira. Rede, token ou endereço não suportados são recusados de imediato e não movem dinheiro. Envio para a rede errada não tem recuperação — é assim por natureza do trilho, não por decisão nossa.

#Dúvidas

P: Criei um saque e ele está preso em PENDING. R: A aprovação é obrigatória por padrão. Aprove pelo painel ou solicite a aprovação automática ao suporte.

P: Meu saque deu FAILED — a taxa foi cobrada? R: Não. O FAILED dispara um estorno automático e atômico de valor + taxa na carteira.

P: Dá para cancelar um saque? R: Só enquanto estiver PENDING. Depois de aprovado, o dinheiro já está em trânsito.

P: Minha chave CNPJ foi recusada como inválida, mas meu banco aceita. R: O dígito verificador mod-11 falha em chaves emitidas antes de 2014. Dá para aceitar o valor com o parâmetro ?strictCnpj=false — peça ao suporte para habilitar.

P: Meu banco não aparece na lista de TED. R: Usamos a lista de códigos FEBRABAN do Bacen. Abra um chamado se faltar algum — normalmente resolvemos em 24h.