Integre seu site ao
gateway GeralPay
Crie cobranças Pix, disponibilize o código Pix Copia e Cola, redirecione o cliente para o checkout hospedado e acompanhe os pagamentos pelo painel.
Como a integração funciona
Crie uma chave na seção API do painel GeralPay.
Envie o valor, a descrição e os dados completos do pagador ao endpoint de pagamentos.
A API retorna a referência, a URL do checkout hospedado e o código Pix Copia e Cola.
Cabeçalhos da requisição
Todas as chamadas privadas usam as chaves criadas no painel em API > Nova chave.
Na criação de pagamentos, envie também Content-Type: application/json e Idempotency-Key.
Content-Type: application/json
X-Public-Key: pk_test_xxxxxxxxx
X-Secret-Key: variável de ambiente do backend
Idempotency-Key: pedido-1001-pix-1Criar pagamento PIX
Idempotency-Key em toda criação. A mesma chave e o mesmo payload devolvem a resposta original sem gerar outro PIX.| Campo | Obrigatório | Descrição |
|---|---|---|
method | Sim | Use pix. |
amount | Sim | Valor em reais (BRL), com até duas casas decimais. Mínimo de R$ 3,00 e máximo de R$ 100.000,00 por cobrança. |
external_reference | Sim | Identificador único do pedido na loja, com 3 a 120 caracteres: letras, números, ponto, sublinhado, dois-pontos, barra ou hífen. |
success_url | Não | URL HTTPS após a aprovação. |
cancel_url | Não | URL HTTPS para cancelamento. |
return_url | Não | URL HTTPS para retornar à loja. |
description | Não | Descrição do pedido. |
payer.name | Sim | Nome do pagador. |
payer.email | Sim | E-mail do pagador. |
payer.document | Sim | CPF ou CNPJ válido do pagador, incluindo os dígitos verificadores. |
payer.phone | Sim, na Fyntra | Telefone brasileiro válido com DDD: 10 dígitos para telefone fixo ou 11 para celular. O prefixo internacional 55 é opcional. |
payer.address | Sim, na Fyntra | Endereço completo do pagador. Envie os campos detalhados abaixo. |
expires_in_minutes | Não | Prazo solicitado de 5 a 1.440 minutos; padrão de 30 minutos. Na Fyntra, o prazo é arredondado para dias completos, com mínimo de 1 dia. Consulte expira_em na resposta. |
amount em reais, por exemplo, "3.00". Valores inferiores ao mínimo são rejeitados antes do envio à adquirente.Endereço obrigatório na Fyntra
Use o campo payer.address (com dois “d”). Em produção, a Fyntra exige o endereço completo e o telefone com DDD. O sandbox não consulta a adquirente; uma simulação aprovada não confirma que os dados serão aceitos em produção.
| Campo em payer.address | Obrigatório | Descrição |
|---|---|---|
street | Sim | Logradouro, com até 160 bytes em UTF-8. |
streetNumber | Sim | Número do imóvel, com até 30 bytes em UTF-8. |
complement | Não | Complemento, com até 120 bytes em UTF-8. |
zipCode | Sim | CEP com 8 dígitos. Exemplo: 01310100. |
neighborhood | Sim | Bairro, com até 100 bytes em UTF-8. |
city | Sim | Cidade, com até 100 bytes em UTF-8. |
state | Sim | UF com 2 letras. Exemplo: SP. |
country | Não; padrão BR | País com 2 letras. Envie BR para endereços brasileiros. |
{
"method": "pix",
"amount": "49.90",
"external_reference": "pedido-1001",
"description": "Pedido #1001",
"payer": {
"name": "Maria Silva",
"email": "maria@email.com",
"document": "52998224725",
"phone": "11987654321",
"address": {
"street": "Avenida Paulista",
"streetNumber": "1000",
"zipCode": "01310100",
"neighborhood": "Bela Vista",
"city": "Sao Paulo",
"state": "SP",
"country": "BR"
}
}
}
Dados retornados
{
"sucesso": true,
"mensagem": "Pagamento criado com sucesso.",
"pagamento": {
"referencia": "PIX-123456",
"external_reference": "pedido-1001",
"ambiente": "test",
"status": "pending",
"valor_bruto": 49.9,
"taxa": 0,
"valor_liquido": 49.9,
"checkout_url": "https://geralpay.com/checkout?token=chk_7db91e4c...",
"pix": {
"copia_e_cola": "GERAL_PAY_SANDBOX_PIX-123456_..."
}
}
}
pagamento.pix.copia_e_cola para gerar o QR Code ou redirecione o cliente para pagamento.checkout_url. No sandbox, o código retornado é fictício e não pode ser pago.cURL
curl -X POST "https://geralpay.com/api/v1/payments" \
-H "Content-Type: application/json" \
-H "X-Public-Key: pk_test_xxxxxxxxx" \
-H "X-Secret-Key: $GERAL_SECRET_KEY" \
-H "Idempotency-Key: pedido-1001-pix-1" \
-d '{
"method": "pix",
"amount": "49.90",
"external_reference": "pedido-1001",
"description": "Pedido #1001",
"payer": {
"name": "Maria Silva",
"email": "maria@email.com",
"document": "52998224725",
"phone": "11987654321",
"address": {
"street": "Avenida Paulista",
"streetNumber": "1000",
"zipCode": "01310100",
"neighborhood": "Bela Vista",
"city": "Sao Paulo",
"state": "SP",
"country": "BR"
}
}
}'
JavaScript no backend (Node.js)
const response = await fetch("https://geralpay.com/api/v1/payments", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Public-Key": process.env.GERAL_PUBLIC_KEY,
"X-Secret-Key": process.env.GERAL_SECRET_KEY,
"Idempotency-Key": "pedido-1001-pix-1"
},
body: JSON.stringify({
method: "pix",
amount: "49.90",
external_reference: "pedido-1001",
description: "Pedido #1001",
payer: {
name: "Maria Silva",
email: "maria@email.com",
document: "52998224725",
phone: "11987654321",
address: {
street: "Avenida Paulista",
streetNumber: "1000",
zipCode: "01310100",
neighborhood: "Bela Vista",
city: "Sao Paulo",
state: "SP",
country: "BR"
}
}
})
});
const data = await response.json();
if (!data.sucesso) {
throw new Error(data.mensagem || "Erro ao criar PIX");
}
console.log(data.pagamento.pix.copia_e_cola);
Consultar o status pela referência
Use as mesmas chaves nos cabeçalhos para consultar o status, os valores, a origem e as datas da cobrança.
Cadastrar a URL de notificação
{
"url": "https://loja.com/webhooks/geral-pay",
"events": ["pagamento.aprovado"]
}
O cadastro habilita as notificações de cobranças criadas pela API e pelo painel. Guarde o secret retornado e responda com HTTP 2xx após validar e persistir o evento. O processamento das entregas depende do worker de webhooks.
Payload de pagamento aprovado
{
"id": "evt_f4e159c5f8db7f4d6c6628ae",
"event": "pagamento.aprovado",
"created_at": "2026-07-26T15:42:18-03:00",
"data": {
"reference": "PIX-615312",
"external_reference": "pedido-1001",
"environment": "live",
"status": "approved",
"method": "pix",
"amount": 49.90,
"fee": 0,
"net_amount": 49.90,
"currency": "BRL",
"description": "Pedido #1001",
"origin": "api",
"checkout_url": "https://geralpay.com/checkout?token=chk_7db91e4c...",
"acquirer_reference": "abc123",
"updated_at": "2026-07-26T15:42:18-03:00",
"payer": {
"name": "Maria Silva",
"email": "maria@email.com",
"document": "52998224725",
"phone": "11987654321"
}
}
}
Validar assinatura HMAC
Calcule HMAC-SHA256(timestamp + "." + corpo_json_bruto, secret) e compare com X-Geral-Signature no formato sha256=<hash>. O timestamp está em X-Geral-Timestamp.
$raw = file_get_contents('php://input');
$timestamp = $_SERVER['HTTP_X_GERAL_TIMESTAMP'] ?? '';
$received = $_SERVER['HTTP_X_GERAL_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac(
'sha256',
$timestamp . '.' . $raw,
$webhookSecret
);
if (abs(time() - (int) $timestamp) > 300 || !hash_equals($expected, $received)) {
http_response_code(401);
exit;
}
http_response_code(204);
Entregas com falha são repetidas em intervalos progressivos. Não há IP fixo garantido; valide sempre a assinatura HMAC.
Reenviar o evento de uma cobrança existente
{
"reference": "PIX-615312"
}
Envie esse JSON para POST https://geralpay.com/api/v1/webhooks. Um novo evento é criado sem creditar o saldo novamente.
Erros comuns
| HTTP | Situação | Como corrigir |
|---|---|---|
| 401 | Chaves ausentes ou inválidas. | Envie X-Public-Key e X-Secret-Key válidas nos cabeçalhos. |
| 422 | JSON inválido. | Confira o formato do corpo da requisição. |
| 422 | Dados do pagador ausentes ou inválidos. | Envie payer.name, payer.email e payer.document válidos. |
| 422 | Valor fora dos limites. | Envie amount entre R$ 3,00 e R$ 100.000,00, com até duas casas decimais. |
| 422 | Telefone ou endereço incompleto. | Na Fyntra, envie payer.phone com DDD e payer.address completo. |
Antes de publicar sua integração
Confirme se sua conta está aprovada, se a chave da API está ativa e se o checkout coleta os dados completos do pagador.
| Conta | Conta aprovada no painel GeralPay. |
| API | Chaves ativas no ambiente de produção. |
| Pagador | Nome, e-mail e CPF ou CNPJ válido são obrigatórios. Na Fyntra, informe também telefone com DDD e endereço completo. |
| Pedido | Referência salva no sistema da loja para conciliação. |
| Pagamento | Exiba o código Pix Copia e Cola ou redirecione o cliente para o checkout hospedado. |