Versão 1.0
Bem-vindo à documentação da API EXPFY Pay. Nossa API permite que você integre pagamentos PIX de forma simples e segura em sua aplicação. Todas as transações são processadas em tempo real e com alta disponibilidade.
Todas as requisições à API devem incluir suas chaves de autenticação nos headers. Suas chaves são únicas e identificam sua conta no sistema.
{
"X-Public-Key": "sua_public_key",
"X-Secret-Key": "sua_secret_key",
"Content-Type": "application/json"
}
Nunca compartilhe sua Secret Key. Ela deve ser mantida em segurança e usada apenas em requisições do seu servidor para nossa API.
Para garantir a estabilidade e disponibilidade do serviço para todos os usuários, aplicamos os seguintes limites de requisições:
25.000
1MB
Caso exceda esses limites, você receberá um erro 429 Too Many Requests
.
Recomendamos implementar uma lógica de retry com exponential backoff para lidar com esses casos.
Gera um QR Code PIX para recebimento de pagamento.
{
"amount": 100.00,
"description": "Pagamento do Pedido #123",
"customer": {
"name": "João Silva",
"document": "123.456.789-00",
"email": "joao@email.com" // opcional
},
"external_id": "seu_id_interno", // opcional
"callback_url": "https://seusite.com.br/webhook",
"split_email": "seu@email.com", // opcional
"split_percentage": "10" // opcional
}
{
"success": true,
"data": {
"transaction_id": "285af09f32aa5f20b46f1ec288b25a8b",
"external_id": "seu_id_interno",
"qr_code": "00020126580014br.gov.bcb.pix...",
"qr_code_image": "data:image/svg+xml;base64,...",
"amount": 100.00,
"status": "pending"
}
}
Agora é possível enviar parâmetros de rastreamento (UTM) junto à criação do pagamento. Isso permite análise de origem de vendas em plataformas integradas como a UTMIFY.
{
"amount": 100.00,
"description": "Compra de Curso Avançado",
"customer": {
"name": "João da Silva",
"document": "123.456.789-00",
"email": "joao@email.com"
},
"external_id": "pedido_456",
"callback_url": "https://seusite.com.br/webhook",
"split_email": "seu@email.com", // opcional
"split_percentage": "10", // opcional
"utm": {
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "black_friday",
"utm_term": "curso+programacao",
"utm_content": "banner_topo",
"src": "src_valor",
"sck": "sck_valor"
}
}
➔ Se não forem enviados dados UTM, a integração continuará funcionando normalmente.
➔ Recomendamos sempre preencher os campos para maximizar a análise de performance.
Solicita um saque via PIX para uma chave específica.
{
"amount": 1000.00,
"pix_key": "joao@email.com",
"pix_key_type": "EMAIL", // EMAIL, CPF, CNPJ, PHONE, EVP
"description": "Saque mensal",
"callback_url": "https://seusite.com.br/webhook"
}
{
"success": true,
"data": {
"withdrawal_id": "1d50dcadf69d5378ff5fe93772b1cc5b",
"status": "processing",
"amount": 1000.00,
"expected_completion": "2024-01-16T16:30:00Z"
}
}
Retorna o saldo disponível para saque da sua conta vinculada à chave da API.
{
"public_key": "sua_public_key",
"secret_key": "sua_secret_key"
}
{
"balance": 1049.87
}
Receba notificações em tempo real sobre o status das suas transações através de webhooks. Nosso sistema envia automaticamente atualizações para a URL de callback configurada sempre que ocorre uma mudança de status.
payment.received
Pagamento recebido e em processamento
payment.confirmed
Pagamento confirmado e concluído
withdrawl.processing
Saque em processamento
withdrawl.completed
Saque concluído com sucesso
{
"event": "payment.confirmed",
"transaction_id": "tx_123456",
"external_id": "seu_id_interno",
"status": "completed",
"amount": 100.00,
"paid_at": "2024-01-16T15:30:00Z",
"pix_data": {
"end2end_id": "E12345678202401161530abcdef12345",
"receipt_url": "https://expfypay.com/receipts/tx_123456.pdf"
}
}
Dica de Segurança
Sempre verifique a autenticidade dos webhooks validando a assinatura no header X-Signature
.
Para garantir a integridade e segurança dos dados recebidos, todos os webhooks enviados pela nossa API são assinados com HMAC-SHA256 utilizando sua secret_key
.
X-Signature: <assinatura gerada com HMAC-SHA256 do corpo bruto>
secret_key
fornecida ao criar a integração.secret_key
.X-Signature
usando hash_equals()
(em PHP) ou método equivalente seguro.$payload = file_get_contents('php://input');
$signatureRecebida = $_SERVER['HTTP_X_SIGNATURE'];
$secretKey = 'SUA_SECRET_KEY_AQUI';
$assinaturaEsperada = hash_hmac('sha256', $payload, $secretKey);
if (!hash_equals($assinaturaEsperada, $signatureRecebida)) {
http_response_code(401);
exit('Assinatura inválida');
}
// OK: continue processando o webhook
$data = json_decode($payload, true);
$event = $data['event'];
// Processe o evento conforme necessário
switch ($event) {
case 'payment.confirmed':
// Atualize o status do pedido para pago
break;
case 'withdrawl.completed':
// Atualize o status do saque
break;
}
Sempre use hash_equals()
ou equivalente para comparações seguras.
Nunca compartilhe ou exponha sua chave secreta em código cliente.
A assinatura é a única prova de origem válida para webhooks.
Armazene IDs de transação já processados para evitar duplicidade.
Nossa API utiliza códigos de status HTTP padrão para indicar o sucesso ou falha de uma requisição. Abaixo estão os principais códigos de erro que você pode encontrar:
Código | Status | Descrição | Solução |
---|---|---|---|
400 | Bad Request | Requisição inválida ou mal formatada | Verifique os parâmetros enviados |
401 | Unauthorized | Credenciais inválidas | Verifique suas chaves de API |
422 | Unprocessable Entity | Dados inválidos | Verifique o formato dos dados enviados |
429 | Too Many Requests | Limite de requisições excedido | Aguarde e tente novamente com backoff |
500 | Internal Server Error | Erro interno do servidor | Contate o suporte técnico |