Acesse API e Integrações
No painel do usuário, abra a seção API e Integrações.
Menu: API e Integrações → tela de credenciais e webhook.
Configure sua integração em poucos passos, com segurança de ponta a ponta, webhooks assinados e fluxo pronto para cobrança, transferência, automação e operação de mensageria em produção.
Com a integração pronta, seu time pode acionar comunicações, análises e controle de consumo sem sair da operação financeira.
Siga a ordem abaixo para seu sistema funcionar corretamente sem falhas de autenticação ou webhook.
No painel do usuário, abra a seção API e Integrações.
Menu: API e Integrações → tela de credenciais e webhook.
Crie uma chave com nome identificável, como ERP Produção.
A chave é exibida apenas uma vez. Salve em local seguro (cofre de segredos).
Informe a URL pública do seu sistema que receberá eventos do XPayUp.
Exemplo: https://api.seusistema.com/payflow/webhook
Clique em Rotacionar segredo e copie o valor gerado.
Use este segredo para validar assinatura HMAC dos webhooks.
Adicione IPs permitidos para chamadas da API externa.
Sem allowlist correta, a API retorna 403.
Com integração ativa, teste:
Conta, criação de cobrança, transferência e callback assinado.
Esses itens garantem integridade, rastreabilidade e proteção contra abuso.
Base URL: https://www.xpayup.com.br/api/v1/payflow
| Método | Endpoint | Finalidade |
|---|---|---|
| GET | /me | Consultar conta e links úteis |
| GET | /charges | Listar cobranças |
| POST | /charges | Criar cobrança (PIX, cartão, boleto) |
| GET | /charges/{transactionId} | Detalhar cobrança |
| GET | /transfers | Listar transferências |
| POST | /transfers | Solicitar transferência |
curl -X POST "https://www.xpayup.com.br/api/v1/payflow/charges" \
-H "Authorization: Bearer pf_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"amount": 59.90,
"method": "pix",
"description": "Pedido #1001",
"customer_email": "cliente@dominio.com",
"customer_name": "Cliente Final"
}'
$timestamp = $_SERVER['HTTP_X_XPAYUP_TIMESTAMP'] ?? '';
$signature = $_SERVER['HTTP_X_XPAYUP_SIGNATURE'] ?? '';
$rawBody = file_get_contents('php://input');
$secret = getenv('XPAYUP_WEBHOOK_SECRET');
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit('invalid signature');
}
Antes de ir para produção, confirme todos os itens abaixo.