🚀 PequiPay API v1

API REST para processamento de pagamentos. Aceite Pix, cartão de crédito e boleto no seu e-commerce em minutos.

Base URL: https://pequipay.com/api/v1

Quick Start

Crie sua primeira cobrança em 3 passos:

# 1. Obtenha sua API Key no dashboard
# 2. Crie uma cobrança Pix
curl -X POST https://pequipay.com/api/v1/charges \
  -H "Authorization: Bearer sk_live_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 150.00,
    "payment_method": "pix",
    "description": "Pedido #1234",
    "customer": {
      "name": "João Silva",
      "email": "[email protected]",
      "document": "123.456.789-00"
    }
  }'

# 3. Exiba o QR Code Pix para o cliente pagar

🔐 Autenticação

Todas as requisições devem incluir o header Authorization com sua Secret Key:

Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TipoFormatoUso
pk_live_xxxPublic KeyFrontend (checkout.js)
sk_live_xxxSecret KeyBackend (API calls)
⚠️ Nunca exponha sua Secret Key no frontend. Use apenas no servidor.

⚠️ Erros

A API retorna erros em formato JSON consistente:

{
  "error": {
    "code": "validation_error",
    "message": "Missing required fields: amount",
    "fields": ["amount"]
  }
}
HTTP CodeSignificado
200Sucesso
201Criado com sucesso
400Requisição inválida
401Não autenticado
422Erro de validação
429Rate limit excedido
500Erro interno

Criar Cobrança

POST /api/v1/charges

Cria uma nova cobrança para o cliente efetuar pagamento.

Parâmetros

CampoTipoObrigatórioDescrição
amountfloatValor em reais (ex: 150.00)
payment_methodstringpix, credit_card, boleto, debit
descriptionstringDescrição da cobrança
customer.namestringNome do pagador
customer.emailstringE-mail do pagador
customer.documentstringCPF/CNPJ
metadataobjectDados extras (até 50 campos)

Resposta (201)

{
  "charge": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "object": "charge",
    "amount": 150.00,
    "currency": "BRL",
    "status": "pending",
    "payment_method": "pix",
    "pix": {
      "qr_code": "data:image/svg+xml;base64,...",
      "qr_code_text": "00020126580014br.gov.bcb.pix...",
      "expiration": "2026-05-07T17:30:00"
    },
    "created_at": "2026-05-07T17:00:00"
  }
}

Consultar Cobrança

GET /api/v1/charges/{id}
curl https://pequipay.com/api/v1/charges/a1b2c3d4-e5f6-... \
  -H "Authorization: Bearer sk_live_xxx"

Listar Cobranças

GET /api/v1/charges?page=1&per_page=25&status=paid
Query ParamDescrição
pagePágina (default: 1)
per_pageItens por página (max: 100)
statusFiltrar por status

Simular Pagamento (Sandbox)

POST /api/v1/charges/{id}/pay

Simula o pagamento de uma cobrança pendente. Disponível apenas em modo sandbox.

curl -X POST https://pequipay.com/api/v1/charges/a1b2c3d4.../pay \
  -H "Authorization: Bearer sk_live_xxx"

Cancelar Cobrança

POST /api/v1/charges/{id}/cancel

Criar Estorno

POST /api/v1/refunds
curl -X POST https://pequipay.com/api/v1/refunds \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "charge_id": "a1b2c3d4-e5f6-...",
    "amount": 50.00,
    "reason": "Cliente solicitou estorno"
  }'

Consultar Saldo

GET /api/v1/balance
{
  "balance": {
    "available": 8600.50,
    "pending": 1650.00,
    "total_received": 10750.50,
    "total_refunded": 500.00,
    "total_withdrawn": 1650.00,
    "currency": "BRL"
  }
}

Dados do Merchant

GET /api/v1/me

🔔 Webhooks

Receba notificações em tempo real quando eventos ocorrem nas suas cobranças. Configure a URL de webhook no dashboard.

Payload enviado

{
  "event": "charge.paid",
  "data": {
    "id": "a1b2c3d4-...",
    "amount": 150.00,
    "status": "paid",
    ...
  },
  "timestamp": "2026-05-07T17:00:00+00:00"
}

Eventos Disponíveis

EventoDescrição
charge.createdCobrança criada
charge.paidPagamento confirmado
charge.failedPagamento falhou
charge.refundedEstorno processado
charge.expiredCobrança expirou
charge.cancelledCobrança cancelada

Verificar Assinatura

Valide a autenticidade do webhook verificando o header X-PequiPay-Signature:

// PHP
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_PEQUIPAY_SIGNATURE'];
$secret = 'whsec_seu_secret_aqui';

$expected = hash_hmac('sha256', $payload, $secret);

if (hash_equals($expected, $signature)) {
    // Webhook válido ✅
    $event = json_decode($payload, true);
    // Processar evento...
} else {
    http_response_code(403);
    // Assinatura inválida ❌
}