PIX Out
Transfira saldo disponível por Pix para terceiros em lote, com segurança via assinatura RSA.
Atualizado em
RecenteO PIX Out permite transferir o saldo disponível na sua conta Dom para terceiros via Pix — individualmente ou em lote de até 1.000 transferências.
[!WARNING] O PIX Out requer assinatura RSA em todos os endpoints POST e PUT, além do token de autenticação padrão. Veja como configurar em Autenticação com assinatura RSA.
Regras importantes
- Limite de R$ 100.000 por lote
- Máximo de 1.000 transferências por lote
- Processamento em dias úteis, das 08h às 16h30
- O saldo é reservado para todas as transferências do lote ao criá-lo — inclusive as que retornem erro
- A taxa de PIX Out é descontada do saldo disponível
Gere e configure sua chave RSA
Gere um par de chaves RSA, envie a chave pública ao seu gerente de contas Dom, e use a chave privada para assinar os payloads.
Assine o payload
Antes de cada requisição POST/PUT, assine o body JSON com sua chave privada e envie a assinatura no header `Signature`.
Crie o lote de transferências
Envie as transferências para `POST /pixout/transfer` com o body assinado.
Acompanhe o status
Consulte o status do lote ou de cada transferência individualmente.
Passo 1 — Gerar e configurar a chave RSA
No terminal, gere o par de chaves:
# Gerar chave privada
openssl genrsa -out private-dom.pem 2048
# Gerar chave pública a partir da privada
openssl rsa -in private-dom.pem -outform PEM -pubout -out public-dom.pemEnvie o arquivo public-dom.pem ao seu gerente de contas Dom. A chave privada (private-dom.pem) fica somente no seu servidor.
Passo 2 — Assinar o payload
import crypto from 'crypto';
import fs from 'fs';
function assinarPayload(payload: string): string {
const privateKey = fs.readFileSync('./private-dom.pem', 'utf-8');
const sign = crypto.createSign('SHA256');
sign.update(payload);
sign.end();
return sign.sign(privateKey, 'base64');
}
async function pixOutRequest(url: string, body: object) {
const payload = JSON.stringify(body);
const signature = assinarPayload(payload);
return fetch(url, {
method: 'POST',
headers: {
'Authorization': 'Bearer {token}',
'Signature': signature,
'Content-Type': 'application/json',
},
body: payload,
});
}Passo 3 — Criar lote de transferências
curl --request POST \
--url "{apiUrl}/pixout/transfer" \
--header "Authorization: Bearer {token}" \
--header "Signature: ASSINATURA_RSA_BASE64" \
--header "Content-Type: application/json" \
--data '{
"transfers": [
{
"key": "joao@exemplo.com",
"key_type": "EMAIL",
"value": 150.00,
"document": "11111111111",
"name": "João da Silva",
"description": "Pagamento #001"
},
{
"key": "11999990000",
"key_type": "PHONE",
"value": 75.50,
"document": "22222222222",
"name": "Maria Oliveira",
"description": "Pagamento #002"
}
]
}'Tipos de chave Pix (key_type)
| Valor | Descrição |
|---|---|
CPF | CPF do destinatário |
CNPJ | CNPJ do destinatário |
EMAIL | E-mail cadastrado como chave |
PHONE | Telefone (formato: 11999990000) |
EVP | Chave aleatória (UUID) |
Passo 4 — Consultar o lote
curl --request GET \
--url "{apiUrl}/pixout/batch/{batch_id}" \
--header "Authorization: Bearer {token}"Status possíveis
| Status | Descrição |
|---|---|
pending | Aguardando processamento |
paid | Transferência concluída com sucesso |
returned | Devolução recebida |
erro | Falha na transferência (saldo ainda reservado) |
[!WARNING] Transferências com status
erroainda consomem saldo reservado do lote. Consulte o erro específico de cada transferência para entender a causa antes de criar um novo lote.
Próximos passos
- Autenticação com assinatura RSA — configuração completa da chave RSA
- Pixout — referência completa da API