Criar Pagamento

Criar pagamento (Cash-out/Payout)

Nesta seção, você aprenderá como criar pagamentos via PIX e via Dados Bancários usando a API PixToPay.

Endpoints Disponíveis

  • Sandbox PIX: https://sandbox.pixtopay.com.br/v2/payout/pix
  • Produção PIX: https://api.pixtopay.com.br/v2/payout/pix
  • Sandbox Dados Bancários: https://sandbox.pixtopay.com.br/v2/payout
  • Produção Dados Bancários: https://api.pixtopay.com.br/v2/payout

Criar pagamento via PIX (recomendado)

Crie um pagamento instantâneo via PIX usando uma chave PIX como destino.

Route

POST /v2/payout/pix

Headers

{
  "Authorization": "YOUR_API_KEY",
  "Content-Type": "application/json"
}

Body Parameters

ParâmetroTipoObrigatórioDescrição
transaction_idstringSimIdentificador único da transação na sua plataforma (UUID v4 recomendado)
currencystringSimMoeda da transação (apenas "BRL" é suportado)
amountnumberSimValor do pagamento em reais (ex: 150.75)
namestringSimNome completo do beneficiário
document_typestringSimTipo de documento do beneficiário ("CPF" ou "CNPJ")
document_numberstringSimNúmero do documento do beneficiário (apenas números)
pix_keystringSimChave PIX do beneficiário (CPF/CNPJ, e-mail, telefone ou chave aleatória)
phone_numberstringNãoNúmero de telefone do beneficiário no formato internacional (ex: "5547999999999")
emailstringNãoEndereço de email do beneficiário
webhookstringNãoURL para receber notificações de status do pagamento via webhook

Formatos de chave PIX aceitos:

  • CPF/CNPJ: Apenas números (ex: "12345678900")
  • E-mail: Endereço de e-mail válido (ex: "email@example.com")
  • Telefone: Formato internacional com +55 (ex: "+5547999999999")
  • Chave aleatória (EVP): Chave UUID gerada pelo banco (ex: "123e4567-e89b-12d3-a456-426614174000")

Exemplo de requisição:

curl --location 'https://sandbox.pixtopay.com.br/v2/payout/pix' \
--header 'Authorization: API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
    "transaction_id": "9233a90c-c4a8-4a3f-8da4-d77b7d0d3327",
    "name": "Daniel Menegasso",
    "document_type": "CPF",
    "document_number": "12345678900",
    "currency": "BRL",
    "amount": 1500,
    "pix_key": "email@example.com",
    "webhook": "https://webhook.site/785a3e4e-e444-4838-9c31-1c62fe4d276e"
}'

Resposta 200 - Sucesso:

{
  "id": 796,
  "transaction_id": "9233a90c-c4a8-4a3f-8da4-d77b7d0d3327",
  "status": 0,
  "currency": "BRL",
  "amount": 1500,
  "bank": {
    "type": "email",
    "bank_name": "COOPERATIVA DE CRÉDITO, POUPANÇA E INVESTIMENTO FRONTEIRAS DO PARANÁ",
    "ispb": "82527557",
    "account_agency": "3879",
    "account_number": "7716539016157248"
  }
}

Campos da Resposta

ParâmetroTipoDescrição
idintegerID interno do pagamento gerado pela PixToPay
transaction_idstringIdentificador único da transação na sua plataforma
statusintegerStatus atual do pagamento (0 = criado)
currencystringMoeda da transação
amountnumberValor do pagamento
bankobjectInformações da conta de destino identificada pela chave PIX
bank.typestringTipo da chave PIX utilizada
bank.bank_namestringNome do banco de destino
bank.ispbstringISPB do banco de destino
bank.account_agencystringAgência da conta de destino
bank.account_numberstringNúmero da conta de destino

Resposta 400 - Chave PIX ausente:

{
  "type": "ValidationError",
  "message": "body.pix_key is a required field"
}

Resposta 400 - transaction_id duplicado:

{
  "type": "ValidationError",
  "message": "body.transaction_id already exists"
}

Criar pagamento via Dados Bancários

Crie um pagamento usando dados bancários completos.

Route

POST /v2/payout

Headers

{
  "Authorization": "YOUR_API_KEY",
  "Content-Type": "application/json"
}

Body Parameters

ParâmetroTipoObrigatórioDescrição
transaction_idstringSimIdentificador único da transação na sua plataforma
currencystringSimMoeda da transação (apenas "BRL" é suportado)
amountnumberSimValor do pagamento em reais
namestringSimNome completo do beneficiário
document_typestringSimTipo de documento do beneficiário ("CPF" ou "CNPJ")
document_numberstringSimNúmero do documento do beneficiário (apenas números)
bankobjectSimObjeto contendo informações bancárias
bank.typestringSimTipo de transferência: "PIX"
bank.bank_namestringNãoNome do banco (opcional, mas recomendado)
bank.ispbstringSim*ISPB do banco (obrigatório para PIX) - 8 dígitos
bank.account_agencystringSimNúmero da agência (4 dígitos)
bank.account_numberstringSimNúmero da conta com dígito verificador (ex: "12345-6")
phone_numberstringNãoNúmero de telefone do beneficiário
emailstringNãoEndereço de email do beneficiário
webhookstringNãoURL para receber notificações de status

* bank_code é obrigatório para TED, ispb é obrigatório para PIX (quando usar endpoint /v2/payout com type PIX)

Exemplo de requisição TED:

curl --location 'https://sandbox.pixtopay.com.br/v2/payout' \
--header 'Authorization: API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "transaction_id": "c5d81228-6d97-4b49-835a-d29eeeea7025",
    "name": "Daniel Menegasso",
    "document_type": "CPF",
    "document_number": "12345678900",
    "currency": "BRL",
    "amount": 300,
    "bank": {
        "type": "PIX",
        "bank_name": "Banco do Brasil S.A",
        "bank_code": "00000000",
        "account_agency": "1234",
        "account_number": "12345-6"
    },
    "phone_number": "47999999999",
    "email": "email@example.com",
    "webhook": "https://webhook.site/c154fa95-701c-4bc1-b6e7-a4ba0e0c01c7"
}'

Resposta 200 - Sucesso TED:

{
  "id": 686,
  "transaction_id": "c5d81228-6d97-4b49-835a-d29eeeea7025",
  "status": 0,
  "currency": "BRL",
  "amount": 300,
  "bank": {
    "type": "PIX",
    "bank_name": "Banco do Brasil S.A",
    "ispb": "00000000",
    "account_agency": "1234",
    "account_number": "12345-6"
  }
}

Resposta 400 - ISPB ausente (PIX):

{
  "type": "ValidationError",
  "message": "body.bank.ispb is required when type is PIX"
}

Resposta 400 - Limite de agência excedido:

{
  "type": "ValidationError",
  "message": "body.bank.account_agency must be at most 4 characters"
}

Observações Importantes

PIX

  • Recomendado: Mais simples, requer apenas a chave PIX
  • Instantâneo: Processamento em segundos
  • 24/7: Disponível a qualquer momento
  • Validação automática: A API valida a chave PIX e retorna os dados bancários

TED

  • ⚠️ Horário limitado: Apenas em dias úteis, horário bancário
  • ⚠️ Dados completos: Requer código do banco, agência e conta
  • ⚠️ Processamento: Pode levar algumas horas

Status do Pagamento

Após criar o pagamento, ele passa pelos seguintes status:

StatusDescrição
0Pagamento criado, aguardando processamento
4Pagamento em processamento
1Pagamento aprovado/concluído
3Pagamento rejeitado

Webhook

Configure um webhook para receber notificações automáticas quando o status do pagamento mudar:

{
  "id": 796,
  "transaction_id": "9233a90c-c4a8-4a3f-8da4-d77b7d0d3327",
  "status": 1,
  "event": "payout_approved",
  "amount": 1500,
  "approved_at": "2024-12-02T10:30:00.000Z"
}

Modo Sandbox

No ambiente sandbox, você pode simular diferentes comportamentos:

Simular pagamento rejeitado:

Use a seguinte chave PIX para que o pagamento seja criado com sucesso, mas posteriormente rejeitado no webhook:

accept_and_reject@sandbox.com

Headers especiais de sandbox:

{
  "x-sandbox-behaviour": "approved" // ou "rejected"
}