Solicitar Saque PIX
Solicite transferências PIX via API para enviar dinheiro para qualquer chave PIX.
Requisito de Segurança: IP autorizado ou Secret de saqueAlém da API Key (com o escopo
withdrawals:write), todo saque precisa de um segundo fator: o IP de origem cadastrado em Configurações → Regras de Segurança ou, se você não tem IP fixo, o header x-withdrawal-secret com o seu Secret de saque. Veja Autorização do saque.POST
/v1/withdrawalsSolicita uma transferência PIX para a chave PIX informada
Parâmetros do Request
Headers
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | ApiKey PUBLIC_KEY:SECRET_KEY. A API Key precisa do escopo withdrawals:write.Ex: "ApiKey ActivePayments_pk_xxx:ActivePayments_sk_xxx" |
x-withdrawal-secret | string | Não | Secret de saque (modo Saque via Secret). Obrigatório quando a requisição não sai de um IP autorizado. Copie em Configurações → Regras de Segurança → Secret para Saques.Ex: "9f2c4e…" |
Content-Type | string | Sim | Sempre application/jsonEx: "application/json" |
Body (JSON)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount | number | Sim | Valor que o destinatário recebe, em reais (mínimo: R$ 10, máximo: R$ 50.000). A taxa é somada por cima: o saldo é debitado em amount + fee.Ex: 100.00 |
pixKeyType | string | Sim | Tipo da chave PIX (case-insensitive): cpf, cnpj, email, phone, evp ou randomEx: "email" |
pixKey | string | Sim | Chave PIX do destinatário (8-100 caracteres)Ex: "destinatario@email.com" |
description | string | Não | Descrição ou referência do saque (máx. 140 caracteres)Ex: "Saque API - REF-12345" |
postbackUrl | string | Não | URL para receber notificações de status do saque (webhook)Ex: "https://seusite.com/webhooks/withdrawal" |
externalReference | string | Não | Referência externa para identificação no seu sistema (será retornada no webhook)Ex: "SAQUE-12345" |
Autorização do saque: IP autorizado ou Secret de saque
Cada POST /v1/withdrawals passa pela API Key e por um destes dois fatores:
| Modo | Quando usar | Como configurar |
|---|---|---|
| IP autorizado (padrão) | Seu servidor sai sempre pelo mesmo IP | Cadastre o IP de saída do servidor em Configurações → Regras de Segurança. Requisição de outro IP é recusada. |
| Saque via Secret (IP dinâmico) | Serverless, nuvem com IP variável ou plataforma de terceiros que faz os saques por você | Solicite a habilitação ao suporte. O secret aparece em Configurações → Regras de Segurança → Secret para Saques (botões Ver, Copiar e Resetar). Envie-o no header x-withdrawal-secret em cada saque. |
- Com o Saque via Secret habilitado, uma requisição sem o header ainda é aceita se sair de um IP autorizado.
- Integrando por uma plataforma de pagamentos que pede o "Secret de Saque" da ActivePayments? É este mesmo valor: copie na tela de Regras de Segurança e cole lá.
- O secret autoriza saques: guarde só no servidor, nunca em front-end ou app. Se vazar, use Resetar. O anterior para de valer na hora, e o reset pede o código da verificação em duas etapas.
- A mesma regra vale para o saque de subconta e para a conversão USDT.
Tipos de Chave PIX
| Tipo | Descrição | Exemplo |
|---|---|---|
cpf | CPF do destinatário (apenas números, 11 dígitos) | 12345678901 |
cnpj | CNPJ do destinatário (apenas números, 14 dígitos) | 12345678000190 |
email | Email cadastrado como chave PIX | email@exemplo.com |
phone | Telefone celular com código do país (+55) e DDD | +5511999998888 |
evp ou random | Chave aleatória (UUID gerada pelo banco) | a1b2c3d4-e5f6-7890-abcd-ef1234567890 |
Exemplos de Código
curl -X POST "https://api.activepayments.com.br/api/v1/withdrawals" \
-H "Authorization: ApiKey PUBLIC_KEY:SECRET_KEY" \
-H "x-withdrawal-secret: SEU_SECRET_DE_SAQUE" \
-H "Content-Type: application/json" \
-d '{
"amount": 10.00,
"pixKeyType": "email",
"pixKey": "destinatario@email.com",
"externalReference": "SAQUE-12345"
}'Resposta
A API retorna os dados do saque criado, incluindo o ID para consulta posterior:
HTTP 201 Created
{
"success": true,
"data": {
"withdrawalId": "34af7934-9991-41ea-aabc-e8601e98c8fb",
"amount": "10",
"fee": "1",
"netAmount": "10",
"totalDebited": "11",
"status": "PENDING",
"pixKey": "yur***com",
"pixKeyType": "EMAIL",
"createdAt": "2026-01-08T04:58:06.974Z",
"message": "Saque solicitado com sucesso. Aguardando processamento."
}
}Campos da Resposta
- withdrawalId: ID único do saque (use para consultar o status)
- amount: Valor solicitado, que é o que chega ao destinatário (string com decimal — ex:
"10.00") - fee: Taxa cobrada pela transferência (string)
- netAmount: Valor transferido ao destinatário — igual a
amount(string) - totalDebited:
amount+fee, o que efetivamente sai do seu saldo (string) - status: Status atual do saque em uppercase (
PENDING,APPROVED,PROCESSING,COMPLETED,REJECTED,FAILED) - pixKey: Chave PIX (parcialmente mascarada)
- pixKeyType: Tipo da chave em uppercase (
CPF,CNPJ,EMAIL,PHONE,EVP) - createdAt: Data/hora da solicitação (ISO 8601)
Como a taxa entra na contaO
amount que você envia é o valor que chega ao destinatário. A taxa não sai de dentro dele: ela é somada por cima, e o seu saldo é debitado em amount + fee (o campo totalDebited). Um saque de 100.00 com taxa de 2.00 entrega R$ 100,00 e debita R$ 102,00.Sobre os tipos numéricosOs campos
amount, netAmount e fee são retornados como string (serialização de Decimal). Use parseFloat() (JS), float() (Python) ou equivalente antes de fazer cálculos.Status do Saque
| Status | Descrição |
|---|---|
PENDING | Aguardando processamento ou aprovação manual |
PROCESSING | Em processamento no gateway de pagamento |
COMPLETED | Transferência realizada com sucesso |
FAILED | Falha na transferência (saldo devolvido) |
REJECTED | Rejeitado pelo admin (saldo devolvido) |
Consultar Status do Saque
GET
/v1/withdrawals/:idConsulta o status atual de um saque
Use o withdrawalId retornado na criação para consultar o status. A consulta usa o escopo withdrawals:read e não exige IP autorizado nem x-withdrawal-secret:
Consultar Status
curl -X GET "https://api.activepayments.com.br/api/v1/withdrawals/a1b2c3d4-e5f6-7890-abcd" \
-H "Authorization: ApiKey PUBLIC_KEY:SECRET_KEY"HTTP 200 OK
{
"success": true,
"data": {
"withdrawalId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"amount": "100.00",
"fee": "2.00",
"netAmount": "100.00",
"totalDebited": "102.00",
"status": "COMPLETED",
"pixKey": "des***com",
"pixKeyType": "EMAIL",
"createdAt": "2024-01-15T10:30:00.000Z",
"processedAt": "2024-01-15T10:35:00.000Z",
"gatewayTransactionId": "gateway-tx-id"
}
}Códigos de Erro
| Código | Descrição | Solução |
|---|---|---|
400 | Saldo insuficiente | Verifique se há saldo disponível para o valor + taxa |
400 | KYC não aprovado | Complete a verificação de identidade (KYC) antes de sacar |
400 | Valor mínimo R$ 10,00 | O valor do saque deve ser pelo menos R$ 10,00 |
400 | Secret de saque inválido | O header x-withdrawal-secret não confere. Copie de novo em Regras de Segurança (depois de um reset, só o novo vale) |
400 | Saque via Secret habilitado: envie o header x-withdrawal-secret… | Envie o header x-withdrawal-secret ou faça a requisição de um IP autorizado |
401 | IP não autorizado | Cadastre o IP de saída do servidor em Configurações → Regras de Segurança, ou solicite o Saque via Secret |
401 | Nenhum IP autorizado configurado | Cadastre ao menos um IP em Regras de Segurança, ou solicite o Saque via Secret |
401 | Não autenticado | Verifique suas credenciais de API Key |
403 | API Key não possui o escopo withdrawals:write | Use uma API Key com o escopo withdrawals:write (a consulta de status usa withdrawals:read) |
404 | Saque não encontrado | Verifique se o ID do saque está correto |
Webhooks de Saque
Passe o parâmetro postbackUrl na criação do saque para receber notificações automáticas quando o status mudar.
Eventos Disponíveis
| Evento | Descrição |
|---|---|
withdrawal.approved | Saque aprovado (aguardando processamento) |
withdrawal.completed | Saque transferido com sucesso |
withdrawal.failed | Saque falhou (saldo devolvido) |
withdrawal.rejected | Saque rejeitado pelo admin (saldo devolvido) |
Exemplo de Payload do Webhook
Webhook Payload
{
"event": "withdrawal.completed",
"timestamp": "2024-01-15T10:35:00.000Z",
"data": {
"withdrawalId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"externalReference": "SAQUE-12345",
"amount": 102.00,
"netAmount": 100.00,
"fee": 2.00,
"status": "completed",
"pixKey": "email@exemplo.com",
"pixKeyType": "EMAIL",
"endToEnd": "E12345678202401151035abc123",
"processedAt": "2024-01-15T10:30:00.000Z",
"createdAt": "2024-01-15T10:25:00.000Z"
}
}Assinatura HMACO webhook inclui o header
X-Webhook-Signature com assinatura HMAC-SHA256. Gere seu Webhook Secret em Configurações → Webhooks.Boas Práticas
- Sempre verifique o saldo: Consulte o endpoint
/v1/balanceantes de solicitar saques - Use postbackUrl: Receba notificações em tempo real sobre o status do saque
- Valide a chave PIX: Certifique-se de que a chave PIX do destinatário está correta
- Use referências únicas: Inclua uma descrição única para rastrear o saque no seu sistema
- Verifique a assinatura: Sempre valide o header
X-Webhook-Signaturepara garantir autenticidade
Próximo passoConfigure Webhooks para receber notificações automáticas sobre o status dos saques.