Pular para o conteúdo
xFlow Payments

Para quem

xFlow para plataformas de payout

Para plataformas que pagam muita gente por Pix, a xFlow oferece saque por API: cada pagamento é um POST /api/v1/transfers para uma chave Pix ou um QR Code, com Idempotency-Key própria, débito no saldo da sua conta e acompanhamento pelos webhooks withdrawal.*. O pagamento em massa é uma fila no seu sistema que envia um saque por favorecido.

Atualizado em · Equipe xFlow Payments · 5 min de leitura

Uma API de pagamento em massa por Pix serve a plataformas que repassam dinheiro para muita gente: entregadores, motoristas, sellers, afiliados, clientes de cashback, ganhadores de prêmios. Na xFlow Payments, cada pagamento é um saque por API, o POST /api/v1/transfers, que tira o valor do saldo da sua conta e envia por Pix para uma chave ou um QR Code. Não existe endpoint que receba uma lista: a massa é uma fila no seu sistema, com um saque e uma Idempotency-Key por favorecido. Os campos e as respostas do saque estão em API de saque Pix.

O que pesa para quem paga muita gente

  • Ciclos com hora marcada. O repasse semanal dos entregadores ou o fechamento mensal dos afiliados concentra centenas de pagamentos numa janela curta.
  • Pagamento em dobro. Um job que roda duas vezes ou um retry depois de uma queda de rede não pode pagar a mesma pessoa de novo.
  • Chave errada. Um favorecido com chave inválida não pode travar o ciclo inteiro.
  • Saldo no meio do caminho. O ciclo precisa caber no saldo, com as taxas.
  • Quem pagou o quê. No fim do ciclo, cada valor devido tem de estar ligado a um pagamento e a um status.

Como a xFlow atende cada ponto

Necessidade Recurso da xFlow
Pagar qualquer chave Pix pix_key com pix_key_type CPF, CNPJ, EMAIL, PHONE ou EVP, ou qr_code com o copia e cola
Não pagar duas vezes Idempotency-Key por pagamento: a mesma chave devolve o mesmo saque, sem novo débito
Saber se o dinheiro saiu Webhooks withdrawal.processing, withdrawal.completed e withdrawal.failed, e GET /api/v1/transfers/{id}
Alçada antes de pagar Saque automático desligado: o saque nasce com pending_approval: true
Saldo antes do ciclo GET /api/v1/balance, com available e reserved em centavos
Custo de cada pagamento withdrawalPercent e withdrawalFixedCents em GET /api/v1/company, e fee e net_amount na resposta do saque
Rastrear uma chamada request_id em toda resposta, localizável em Integrações > Logs da API por 30 dias

Saque ou split: qual usar no repasse

Repassar dinheiro a terceiros tem dois caminhos na xFlow, e a escolha depende de quem recebe.

Saque por API Split de pagamento
Quem pode receber Qualquer chave Pix ou QR Code Só contas ativas da xFlow, diferentes da sua
Quando o dinheiro sai Quando o seu sistema manda Quando a cobrança é paga, direto no saldo do recebedor
De onde sai Do saldo disponível da sua conta Do líquido de cada cobrança
Custo Taxa de saque da sua conta Sem saque seu; o recebedor saca o próprio saldo
Bom para Entregadores, motoristas, afiliados, cashback, prêmios Sellers que têm conta e recebem a cada venda

Um marketplace pode usar os dois: split para os sellers com conta na xFlow e saque para quem só informou uma chave. O desenho com split está em xFlow para marketplaces.

O desenho que aguenta volume

  1. Um registro por valor devido. Cada corrida, comissão ou prêmio vira uma linha no seu sistema, com id próprio. Esse id gera a Idempotency-Key do saque, como repasse-8841. Assim, a chave nunca muda entre tentativas, e reusar a mesma chave com outro corpo dá 409 idempotency_conflict, o que denuncia erro na geração de chaves. O motivo está em idempotência em API de pagamento.
  2. Chave validada no cadastro. Peça a chave Pix quando o favorecido entra na plataforma, não na hora de pagar. Confira o formato pelo tipo: 11 dígitos de CPF, 14 de CNPJ, e-mail, telefone ou chave aleatória no formato UUID. São os tipos do DICT. A documentação da xFlow não traz consulta do titular da chave antes do saque, então a sua checagem é de formato e de cadastro.
  3. Prefira chave a QR Code em escala. Nem todo provedor aceita saque por QR: quando não aceita, a resposta é 422 transfer_failed e nada é debitado. A chave evita esse desvio num ciclo grande.
  4. Saldo conferido antes. Some o ciclo, inclua as taxas e compare com o available. No saque por chave, a taxa sai do próprio amount; no saque por QR, sai por cima.
  5. Envio controlado. O limite de requisições é por conta. Mande os saques em sequência ou com poucos em paralelo, acompanhe x-ratelimit-remaining e, no 429, espere o retry-after. A fila pronta, com retry e gravação de resultado, está em pagamento Pix em lote.
  6. Status pelo webhook, confirmação pela consulta. A documentação não detalha o data dos eventos withdrawal.*. Use o evento como gatilho e confirme com GET /api/v1/transfers/{id}.

Conciliação do ciclo

No fim de cada ciclo, cada valor devido precisa ter um id de saque e um status: requested, processing, completed ou rejected. Para conferir o ciclo inteiro, liste com GET /api/v1/transfers?from=...&to=... e siga o cursor starting_after enquanto has_more for true. Saque rejected traz failure_reason e volta para a fila como pagamento novo, depois de corrigido. Guarde o request_id de cada chamada: é com ele que o suporte localiza um pagamento específico. O raciocínio de ligar cada movimento ao seu registro está em conciliação de pagamentos.

Controles que uma plataforma de payout precisa ter

  • Alçada fora da API. A API paga o que o seu sistema mandar. Quem monta o ciclo não deveria ser quem libera. Com o saque automático desligado, a aprovação vira uma etapa a mais.
  • Allowlist de IP. Limite as chamadas ao IP dos servidores que pagam. Fora da lista, a API responde 401, mesmo com a credencial certa.
  • Segredo só no servidor. O sk_live_ fica num cofre ou numa variável de ambiente. Se vazar, revogue no painel: a revogação é imediata.
  • Primeiro ciclo pequeno. O saque não roda no sandbox. Valide a fila com a API simulada nos seus testes e comece a produção com poucos favorecidos.

Antes de começar

O saque pela API precisa estar habilitado na conta: sem isso, a resposta é 403 api_withdrawal_disabled. Conta em análise recebe 403 account_inactive. O saque usa o saldo disponível da sua conta na xFlow, onde entra o líquido das cobranças Pix pagas. Se a sua operação paga muita gente, fale com a equipe para revisar a configuração de saque, a aprovação e o volume esperado antes do primeiro ciclo. A referência completa está na documentação da API.

Perguntas frequentes

A API da xFlow tem um endpoint de pagamento em massa?

Não. A documentação descreve um saque por chamada, em POST /api/v1/transfers, com um destino e um valor. O pagamento em massa é uma fila no seu sistema que envia um saque por favorecido, cada um com a sua Idempotency-Key.

Quem recebe o pagamento precisa ter conta na xFlow?

No saque, não. O destino é uma chave Pix (CPF, CNPJ, e-mail, telefone ou chave aleatória) ou um QR Code. Conta na xFlow só é exigida de quem recebe por split, que é outro recurso.

Os pagamentos podem passar por aprovação antes de sair?

Sim. Com o saque automático desligado na conta, cada saque nasce com pending_approval: true e espera aprovação. Com o saque automático ligado, ele é processado na hora.

Dá para testar os pagamentos no ambiente de teste?

Não. Com chave de teste, POST /api/v1/transfers responde 403 test_mode_unsupported e GET /balance responde zeros. Teste a fila com a API simulada nos seus testes e comece a produção com um ciclo pequeno.

Continue lendo

BlogPagamento Pix em lote por APINa API da xFlow não existe um endpoint de lote: cada pagamento é um POST /api/v1/transfers. O lote é uma fila no seu sistema que envia um saque Pix por item, com Idempotency-Key própria, respeita o limite de requisições e confere cada resultado por webhook ou consulta.BlogAPI de saque PixNa API da xFlow, o saque Pix (Pix out) é um POST /api/v1/transfers com amount em centavos e a chave do destinatário (pix_key e pix_key_type) ou um qr_code copia e cola. O saque nasce com status requested, pode exigir aprovação (pending_approval) e é acompanhado pelos webhooks withdrawal.* ou por GET /api/v1/transfers/{id}. Não funciona com chave de teste.BlogIdempotência em API de pagamento: retry sem duplicarIdempotência é a garantia de que repetir a mesma requisição não repete o efeito. Na API da xFlow, você envia o header Idempotency-Key ao criar cobranças e saques: num retry com a mesma chave, a API devolve a mesma cobrança ou o mesmo saque, sem gerar outro Pix nem debitar o saldo de novo.BlogConciliação de pagamentos com várias adquirentesConciliar pagamentos é conferir se cada valor recebido bate com um pedido e com o extrato. Com várias adquirentes, cada uma devolve dados de um jeito. Na xFlow, toda cobrança volta no mesmo formato, com End-to-end ID, dados de quem pagou, a referência do seu pedido, valor, líquido e taxa.SoluçãoSplit de pagamentoSplit de pagamento é dividir o valor de uma venda entre mais de um recebedor. Na xFlow, você divide cada cobrança Pix entre contas da xFlow, por porcentagem ou valor fixo, direto na cobrança pela API ou como regra padrão da conta.