Realizar pagamento PIX (Cash-Out)
POST /api/pix/cash-out
POST https://<api-host>/api/pix/cash-outRequer um Bearer token no header Authorization. Veja Gerar Token para obter um.
Envia um pagamento PIX para uma chave PIX de destino. A transação é criada com status PENDING e o resultado final é notificado via webhook ou pode ser consultado via polling.
Autenticação
Requer token Bearer no header Authorization.
Request Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
value | number | Sim | Valor em reais (até 2 casas decimais). Mínimo: 0.01 |
externalId | string | Sim | Identificador externo único por conta (máx 50 caracteres) |
description | string | Não | Descrição da transação (máx 140 chars) |
details | object | Sim | Informações da chave PIX de destino |
details.key | string | Sim | Chave PIX de destino (veja formatos na tabela abaixo) |
details.keyType | string | Sim | Tipo da chave: DOCUMENT, EMAIL, PHONE, RANDOM. Obrigatório pois a API não consulta DICT |
details.name | string | Não | Nome do titular da chave (máx 100 caracteres). Alguns provedores de liquidação exigem o campo: recomendamos enviar sempre |
details.document | string | Não | CPF (11 dígitos) ou CNPJ (14 dígitos) válido do titular da chave, apenas números. Alguns provedores de liquidação exigem o campo: recomendamos enviar sempre. A API valida só o formato; veja Verificação de titularidade por liquidante |
details.checkPixKeyWithDocument | boolean | Não | Se true, pede a conferência de que a chave pertence ao CPF/CNPJ de details.document e a rejeição do pagamento se divergir. Exige details.document (sem ele, a API responde 400). Só tem efeito nos provedores de liquidação que suportam a conferência. Default: false |
Formatos aceitos para details.key
keyType | Formato | Exemplo |
|---|---|---|
DOCUMENT | CPF: 11 dígitos / CNPJ: 14 dígitos (apenas números) | 12345678909, 12345678000195 |
EMAIL | Endereço de email válido | usuario@exemplo.com |
PHONE | DDD + número (10-11 dígitos, sem DDI +55) | 11999999999 |
RANDOM | UUID (com ou sem hífens) | a1b2c3d4-e5f6-4890-abcd-ef1234567890 |
O pagamento é sempre endereçado pela chave PIX (details.key). A API Gateways valida o formato de details.document, mas não o compara com details.key nem consulta a DICT antes de enviar. A conferência com o titular real da chave depende do provedor de liquidação da sua conta (e, em alguns provedores, de details.checkPixKeyWithDocument). Sem essa conferência, um details.document divergente não bloqueia o pagamento: o valor é creditado ao dono da chave. Veja Verificação de titularidade por liquidante.
Exemplos de Request
Pagamento por CPF — o caso mais comum. O details.key e details.document devem ser iguais (ambos são o CPF). A API não verifica essa igualdade: garanta isso do seu lado antes de enviar.
{
"value": 150.00,
"externalId": "PAG-2024-0001",
"description": "Pagamento freelancer - Janeiro/2024",
"details": {
"key": "12345678909",
"keyType": "DOCUMENT",
"name": "Ana Costa",
"document": "12345678909"
}
}Verificação de titularidade por liquidante
A API Gateways valida details.document apenas quanto ao formato (11 ou 14 dígitos e dígitos verificadores) e valida details.key quanto ao formato esperado para o keyType. Ela não compara details.document com details.key, não consulta a DICT e não bloqueia a operação quando os dois divergem. O pagamento é sempre endereçado pela chave PIX.
A conferência do documento com o titular real da chave, quando existe, é feita pelo provedor de liquidação configurado na sua conta:
- Alguns provedores conferem
details.documentsempre que o campo é enviado. Em caso de divergência, a transação termina emERROR, sem débito, e o webhook traz a mensagem do provedor. - Outros só fazem a conferência quando você envia
details.checkPixKeyWithDocument: true. - Nos demais, o campo é aceito mas não é conferido: o pagamento é efetivado ao dono da chave.
Como saber o comportamento da minha conta? O provedor de liquidação é definido por conta. Em caso de dúvida, consulte seu gerente de integração. Se a sua operação exige que um documento divergente bloqueie o pagamento, valide a titularidade do seu lado antes de enviar: para keyType: DOCUMENT, garanta que details.document seja igual a details.key.
Exemplos de Código
curl -X POST "https://<api-host>/api/pix/cash-out" \
-H "Authorization: Bearer $PIX_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"value": 150.00,
"externalId": "PAG-2024-0001",
"description": "Pagamento freelancer - Janeiro/2024",
"details": {
"key": "12345678909",
"keyType": "DOCUMENT",
"name": "Ana Costa",
"document": "12345678909"
}
}'const axios = require('axios');
const response = await axios.post('https://<api-host>/api/pix/cash-out',
{
"value": 150.00,
"externalId": "PAG-2024-0001",
"description": "Pagamento freelancer - Janeiro/2024",
"details": {
"key": "12345678909",
"keyType": "DOCUMENT",
"name": "Ana Costa",
"document": "12345678909"
}
},
{
headers: {
'Authorization': `Bearer ${process.env.PIX_API_TOKEN}`,
'Content-Type': 'application/json',
},
}
);
console.log(response.data);Response (201 Created)
| Campo | Tipo | Descrição |
|---|---|---|
transactionId | string | Identificador interno da transação gerada (string numérica) |
externalId | string | Identificador externo informado na requisição |
status | string | Status inicial: PENDING. Confirmação via webhook: CONFIRMED ou ERROR |
generateTime | string | Data/hora de geração da transação (ISO 8601 UTC) |
{
"transactionId": "466208",
"externalId": "PAG-2024-0001",
"status": "PENDING",
"generateTime": "2024-01-15T10:30:00.000Z"
}Erros
Retornado quando o body não atende as validações. Erros nos campos de primeiro nível (value, externalId, description, details ou campo desconhecido) vêm com code: PUB_REQUEST_BODY_INVALID e os campos em details.violations, como no exemplo. Erros nos campos de details.* vêm com message em forma de lista, uma mensagem por campo.
{
"statusCode": 400,
"timestamp": "2026-04-10T15:30:34.560Z",
"path": "/api/pix/cash-out",
"method": "POST",
"code": "PUB_REQUEST_BODY_INVALID",
"message": "Request body validation failed: value: value must not be less than 0.01",
"userMessage": "Request body is invalid.",
"errorId": "a1b2c3d4e5f6789012345678abcdef01",
"details": {
"violations": {
"value": "value must not be less than 0.01"
}
}
}Causas comuns:
valuemenor que0.01ou com mais de 2 casas decimaisdetails.keyTypecom valor inválidodetails.keynão corresponde ao formato dokeyTypedetails.documentcom CPF/CNPJ inválidoexternalIdcom mais de 50 caracteres oudescriptioncom mais de 140details.checkPixKeyWithDocument: truesemdetails.document
Consulte o guia de integração PIX Cash-Out para exemplos de código, validação local de chaves e boas práticas.