SaqSaq Docs

Enviar Pix

Caminho 1: por chave Pix

Consultar a chave no DICT

Antes de pagar, valide o destinatário consultando o DICT via GET /pix/key. Confirma que a chave existe e retorna o titular para você comparar com o esperado.

curl "https://api.saq.processamento.com/v1/pix/key?key=joao@example.com" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"
const url = new URL('https://api.saq.processamento.com/v1/pix/key');
url.searchParams.set('key', 'joao@example.com');

const res = await fetch(url, {
  headers: {
    Authorization: `Bearer ${process.env.SAQ_TOKEN}`,
    'Content-Type': 'application/json',
  },
});
const dict = await res.json();
res = requests.get(
    'https://api.saq.processamento.com/v1/pix/key',
    params={'key': 'joao@example.com'},
    headers={
        'Authorization': f'Bearer {os.environ["SAQ_TOKEN"]}',
        'Content-Type': 'application/json',
    },
)
dict_info = res.json()

Mais detalhes em Consulta DICT.

Executar o saque

Use POST /withdraw com a chave validada. pixType aceita: cpf, cnpj, phone, email, evp.

curl -X POST https://api.saq.processamento.com/v1/withdraw \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250.00,
    "pixKey": "joao@example.com",
    "pixType": "email",
    "callbackUrl": "https://seusite.com.br/webhooks/saq",
    "clientReference": "payout-2025-08-001",
    "description": "Pagamento referente ao pedido #1234"
  }'
const res = await fetch('https://api.saq.processamento.com/v1/withdraw', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SAQ_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    amount: 250.00,
    pixKey: 'joao@example.com',
    pixType: 'email',
    callbackUrl: 'https://seusite.com.br/webhooks/saq',
    clientReference: 'payout-2025-08-001',
    description: 'Pagamento referente ao pedido #1234',
  }),
});
const withdraw = await res.json();
res = requests.post(
    'https://api.saq.processamento.com/v1/withdraw',
    headers={
        'Authorization': f'Bearer {os.environ["SAQ_TOKEN"]}',
        'Content-Type': 'application/json',
    },
    json={
        'amount': 250.00,
        'pixKey': 'joao@example.com',
        'pixType': 'email',
        'callbackUrl': 'https://seusite.com.br/webhooks/saq',
        'clientReference': 'payout-2025-08-001',
        'description': 'Pagamento referente ao pedido #1234',
    },
)

Caminho 2: por QR Code

Ler o QR antes (opcional)

Se o QR foi escaneado de um cliente externo, extraia os dados antes de pagar via POST /pix/qrcode/read.

curl -X POST https://api.saq.processamento.com/v1/pix/qrcode/read \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "qrCode": "00020126870014br.gov.bcb.pix..." }'

Saq suporta apenas QR Code dinâmico. QR estático não é processado.

Executar o pagamento

POST /withdraw/qrcode. Se o QR já tem valor embutido, amount pode ser omitido.

curl -X POST https://api.saq.processamento.com/v1/withdraw/qrcode \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "qrCode": "00020126870014br.gov.bcb.pix...",
    "amount": 100.00,
    "callbackUrl": "https://seusite.com.br/webhooks/saq",
    "clientReference": "payout-qr-2025-08-001"
  }'

Acompanhar status

O saque começa PENDING e evolui para COMPLETED, CANCELED ou ERROR. O callback chega em cada transição. Para consultar manualmente via GET /withdraw:

curl "https://api.saq.processamento.com/v1/withdraw?clientReference=payout-2025-08-001" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"

Comprovante

Após COMPLETED, baixe o comprovante oficial via GET /withdraw/proof/{id}:

curl "https://api.saq.processamento.com/v1/withdraw/proof/SAQ2025..." \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"

Erros comuns

ErroResolução
Saldo insuficienteConfira GET /user/balance antes
Chave Pix inválidaValide via DICT primeiro
Valor abaixo do mínimoamount ≥ R$ 0,01 (chave) ou ≥ R$ 0,10 (QR)
Destinatário diferenteCompare dict.name com o esperado antes de pagar

On this page