Pular para o conteúdo
xFlow Payments

Para quem

xFlow para apps e plataformas digitais

Para aplicativos e plataformas digitais, a xFlow é a API Pix que fica no seu servidor: o app pede o pagamento ao seu back-end, mostra o copia e cola e o QR Code devolvidos pela API e muda de tela quando o webhook assinado confirma o Pix.

Atualizado em · Equipe xFlow Payments · 3 min de leitura

Para receber Pix num aplicativo, o app não fala com a API de pagamento: ele fala com o seu servidor, e o servidor fala com a xFlow. A API Pix da xFlow devolve a cobrança com o copia e cola e o QR Code prontos e avisa o seu servidor por webhook assinado quando o pagamento é confirmado. O app só mostra o código e muda de tela.

A arquitetura certa: app, servidor, API

Passo Quem faz O quê
1 App Pede o pagamento do pedido ao seu servidor
2 Seu servidor Chama POST /api/v1/charges com o segredo da chave
3 Seu servidor Devolve ao app só pix.copyPaste, pix.qrCodeBase64 e o id do pedido
4 xFlow Confere o pagamento na adquirente e envia transaction.paid ao servidor
5 Seu servidor Valida a assinatura, atualiza o pedido e avisa o app

Dois motivos tornam o servidor obrigatório. O primeiro é o segredo: um pacote de aplicativo pode ser inspecionado, e o sk_live_ dentro dele vira credencial de qualquer um. O segundo é a allowlist de IP: ela limita as chamadas aos IPs dos seus servidores e recusa com 401 o que vem de fora, inclusive de celulares. Os controles estão na página de segurança.

No celular, o copia e cola vem primeiro

Quem paga pelo celular não consegue ler um QR Code que está na tela do próprio celular. No app, o botão "Copiar código Pix" é o caminho principal. O QR Code serve para quem abre o pagamento num computador ou noutro aparelho. O guia de Pix copia e cola por API explica o formato do código e como exibi-lo sem alterar nada.

Conexão instável sem cobrança em dobro

A conexão do celular cai no meio da requisição. Se o app repetir o pedido e o servidor repetir a chamada, sem proteção você gera dois Pix. Crie a Idempotency-Key quando o pedido nasce e use a mesma em toda repetição:

js
// No seu servidor: a chave nasce com o pedido e é reaproveitada em qualquer retry
const res = await fetch("https://app.xflowpayments.com/api/v1/charges", {
  method: "POST",
  headers: {
    Authorization: "Basic " + Buffer.from(`${process.env.XFLOW_PUBLIC_KEY}:${process.env.XFLOW_SECRET_KEY}`).toString("base64"),
    "Content-Type": "application/json",
    "Idempotency-Key": `app-pedido-${pedido.id}`,
  },
  body: JSON.stringify({
    amountCents: pedido.totalCentavos,
    customer: { name: pedido.nome, email: pedido.email, document: pedido.cpf },
    external_reference: `pedido-${pedido.id}`,
  }),
});

Na repetição com a mesma chave e o mesmo corpo, a API devolve a mesma cobrança. Com a mesma chave e outro corpo, responde 409 idempotency_conflict.

Confirmação e atualização da tela

O webhook transaction.paid chega ao seu servidor, nunca ao app. Depois de validar a assinatura e conferir livemode, o servidor marca o pedido como pago e avisa o aplicativo por notificação ou pela consulta que o app faz ao seu back-end. Se o webhook atrasar, o servidor confere com GET /api/v1/charges/{id}. O handler completo está em webhook Pix.

Se o usuário demorar, a cobrança pode passar a expired. Não há webhook de expiração: confira o status quando o usuário voltar à tela e gere uma cobrança nova se for o caso.

Repasses para quem usa a plataforma

Plataformas que pagam usuários, como prestadores, parceiros ou criadores, usam o saque Pix da API. POST /api/v1/transfers envia o valor para uma chave Pix (CPF, CNPJ, e-mail, telefone ou chave aleatória) ou para um QR Code, com Idempotency-Key por repasse. Os eventos withdrawal.completed e withdrawal.failed informam o resultado. Os detalhes estão em API de saque Pix. Se a divisão acontece na própria venda e o recebedor tem conta na xFlow, o split da cobrança faz a separação na confirmação do pagamento.

Teste antes de publicar o app

Crie uma chave de teste no painel, mesmo com o cadastro em análise. O servidor usa os mesmos endpoints, a cobrança não chama adquirente e o copia e cola de teste não é pagável. Simule o pagamento com POST /api/v1/test/charges/{id}/pay e confira se o app muda de tela. Saque e split não funcionam com chave de teste.

A API trabalha com Pix. Cartão e checkout hospedado ainda não estão disponíveis na API.

Perguntas frequentes

Posso chamar a API Pix direto do aplicativo?

Não. A chamada usa o segredo da chave (sk_live_), que não pode ir para dentro do app. O aplicativo pede o pagamento ao seu servidor, e o servidor chama a API da xFlow.

Como o app fica sabendo que o Pix foi pago?

O webhook transaction.paid chega no seu servidor, assinado com HMAC-SHA256. O servidor valida a assinatura, atualiza o pedido e avisa o app, por notificação ou pela consulta que o app faz ao seu back-end.

Dá para pagar usuários da plataforma por Pix?

Sim, com o saque Pix da API: POST /api/v1/transfers envia o valor do saldo da sua conta para uma chave Pix ou um QR Code. Use uma Idempotency-Key por repasse para não pagar duas vezes.

Tem ambiente de teste para o app?

Sim. Com chaves pk_test_ e sk_test_, o seu servidor usa os mesmos endpoints, simula o pagamento e recebe o webhook com livemode: false. Saque e split não estão disponíveis no teste.

Continue lendo

SoluçãoAPI PixA API Pix da xFlow Payments é uma API REST para criar cobranças Pix com QR Code e copia e cola, estornar, sacar e receber webhooks assinados. Uma única integração conecta a sua operação a 11 adquirentes, com roteamento por regras e retentativa automática.BlogWebhook Pix: eventos, assinatura HMAC e boas práticasWebhook Pix é o aviso que a API envia para a sua URL quando algo acontece com uma cobrança ou um saque, como o pagamento confirmado. Na xFlow, cada aviso é um POST JSON assinado com HMAC-SHA256, reenviado até 3 vezes até você responder 2xx.BlogPix copia e cola por API: como gerar o códigoPara gerar um Pix copia e cola por API na xFlow, crie uma cobrança com POST /api/v1/charges: a resposta traz o código em pix.copyPaste, um payload no padrão BR Code, e o QR Code da mesma cobrança em pix.qrCodeBase64.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.SegurançaNa xFlow, todo pagamento é conferido na adquirente antes de cair no saldo, o segredo da chave de API aparece uma única vez, credenciais podem ser revogadas na hora e limitadas por IP, webhooks são assinados e cada chamada fica registrada nos Logs da API.