Skip to Content
docs

Realizar pagamento PIX (Cash-Out)

POST /api/pix/cash-out

POST https://<api-host>/api/pix/cash-out

Requer 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

CampoTipoObrigatórioDescrição
valuenumberSimValor em reais (até 2 casas decimais). Mínimo: 0.01
externalIdstringSimIdentificador externo único por conta (máx 50 caracteres)
descriptionstringNãoDescrição da transação (máx 140 chars)
detailsobjectSimInformações da chave PIX de destino
details.keystringSimChave PIX de destino (veja formatos na tabela abaixo)
details.keyTypestringSimTipo da chave: DOCUMENT, EMAIL, PHONE, RANDOM. Obrigatório pois a API não consulta DICT
details.namestringNãoNome do titular da chave (máx 100 caracteres). Alguns provedores de liquidação exigem o campo: recomendamos enviar sempre
details.documentstringNãoCPF (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.checkPixKeyWithDocumentbooleanNãoSe 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

keyTypeFormatoExemplo
DOCUMENTCPF: 11 dígitos / CNPJ: 14 dígitos (apenas números)12345678909, 12345678000195
EMAILEndereço de email válidousuario@exemplo.com
PHONEDDD + número (10-11 dígitos, sem DDI +55)11999999999
RANDOMUUID (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.document sempre que o campo é enviado. Em caso de divergência, a transação termina em ERROR, 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
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)

CampoTipoDescrição
transactionIdstringIdentificador interno da transação gerada (string numérica)
externalIdstringIdentificador externo informado na requisição
statusstringStatus inicial: PENDING. Confirmação via webhook: CONFIRMED ou ERROR
generateTimestringData/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:

  • value menor que 0.01 ou com mais de 2 casas decimais
  • details.keyType com valor inválido
  • details.key não corresponde ao formato do keyType
  • details.document com CPF/CNPJ inválido
  • externalId com mais de 50 caracteres ou description com mais de 140
  • details.checkPixKeyWithDocument: true sem details.document

Consulte o guia de integração PIX Cash-Out para exemplos de código, validação local de chaves e boas práticas.

On this page