CredPix API v2

API completa para pagamentos e saques PIX. Integre seu sistema em minutos.

https://api.credpix.finance/v2

Autenticacao

Todas as requisicoes exigem autenticacao via API Key (Bearer Token). Endpoints que criam recursos ou acessam saldo tambem exigem assinatura HMAC-SHA256.

1. Bearer Token

Envie sua API Key no header Authorization:

Authorization: Bearer cpx_live_SUA_CHAVE_AQUI

2. Assinatura HMAC-SHA256

Para endpoints protegidos (criar pagamento, solicitar saque, consultar saldo), envie dois headers adicionais:

HeaderDescricao
X-CredPix-TimestampUnix timestamp em segundos (ex: 1709500000). Janela de 5 minutos.
X-CredPix-SignatureHMAC-SHA256 hex de timestamp.body usando seu API Secret.

O timestamp nao pode ter diferenca superior a 5 minutos do servidor. Requisicoes fora dessa janela serao rejeitadas com erro timestamp_expired.

Exemplos de calculo da assinatura

import crypto from 'node:crypto';

const apiKey    = 'cpx_live_SUA_CHAVE_AQUI';
const apiSecret = 'SEU_SECRET_AQUI';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body      = JSON.stringify({ amount: 100 });

const signature = crypto
  .createHmac('sha256', apiSecret)
  .update(timestamp + '.' + body)
  .digest('hex');

const res = await fetch('https://api.credpix.finance/v2/payment/create', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
    'X-CredPix-Timestamp': timestamp,
    'X-CredPix-Signature': signature,
  },
  body: body,
});
import hmac, hashlib, time, json, requests

api_key    = 'cpx_live_SUA_CHAVE_AQUI'
api_secret = 'SEU_SECRET_AQUI'
timestamp  = str(int(time.time()))
body       = json.dumps({"amount": 100})

signature = hmac.new(
    api_secret.encode(), (timestamp + '.' + body).encode(),
    hashlib.sha256
).hexdigest()

r = requests.post('https://api.credpix.finance/v2/payment/create',
    headers={
        'Authorization': f'Bearer {api_key}',
        'Content-Type': 'application/json',
        'X-CredPix-Timestamp': timestamp,
        'X-CredPix-Signature': signature,
    },
    data=body
)
<?php
$apiKey    = 'cpx_live_SUA_CHAVE_AQUI';
$apiSecret = 'SEU_SECRET_AQUI';
$timestamp = (string)time();
$body      = json_encode(['amount' => 100]);

$signature = hash_hmac('sha256', $timestamp . '.' . $body, $apiSecret);

$ch = curl_init('https://api.credpix.finance/v2/payment/create');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $apiKey",
        'Content-Type: application/json',
        "X-CredPix-Timestamp: $timestamp",
        "X-CredPix-Signature: $signature",
    ],
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
# Gerar timestamp e assinatura
TIMESTAMP=$(date +%s)
BODY='{"amount":100}'
SIGNATURE=$(echo -n "${TIMESTAMP}.${BODY}" | \
  openssl dgst -sha256 -hmac "SEU_SECRET_AQUI" | cut -d' ' -f2)

curl -X POST https://api.credpix.finance/v2/payment/create \
  -H "Authorization: Bearer cpx_live_SUA_CHAVE_AQUI" \
  -H "Content-Type: application/json" \
  -H "X-CredPix-Timestamp: $TIMESTAMP" \
  -H "X-CredPix-Signature: $SIGNATURE" \
  -d "$BODY"

Criar Pagamento PIX

POST /v2/payment/create HMAC

Cria um novo pagamento PIX e retorna o QR Code e o codigo copia-e-cola para pagamento.

Parametros (Body JSON)

ParametroTipoDescricao
amountnumberObrigatorioValor em reais (1.00 a 50000.00)
callbackUrlstringObrigatorioURL HTTPS para receber webhook quando o pagamento for confirmado
externalIdstringOpcionalSeu ID interno. Garante idempotencia — mesma externalId retorna o pagamento existente

Resposta de Sucesso (200)

{
  "ok": true,
  "payment": {
    "id": "a1b2c3d4e5f6...",
    "externalId": "pedido_123",
    "amount": "100.00",
    "status": "pending",
    "pixCopiaECola": "00020126580014br.gov.bcb.pix...",
    "qrCodeBase64": "data:image/png;base64,iVBOR...",
    "expiresAt": "2026-03-05T15:30:00.000Z"
  }
}

O QR Code expira em 30 minutos. Apos expirar, o pagamento muda para status expired e nao pode mais ser pago.

▶ Testar Endpoint


        

Verificar Pagamento

GET /v2/payment/:id/status

Consulta o status de um pagamento pelo id retornado na criacao ou pelo seu externalId.

Parametros (Path)

ParametroTipoDescricao
:idstringObrigatorioID do pagamento (id) ou externalId

Resposta de Sucesso (200)

{
  "ok": true,
  "payment": {
    "id": "a1b2c3d4e5f6...",
    "externalId": "pedido_123",
    "amount": "100.00",
    "status": "approved",
    "payer": {
      "name": "JOAO DA SILVA",
      "document": "***456789**"
    },
    "endToEndId": "E0001234520260305...",
    "createdAt": "2026-03-05T15:00:00.000Z",
    "updatedAt": "2026-03-05T15:02:30.000Z"
  }
}

Status possiveis

StatusDescricao
pendingAguardando pagamento
approvedPagamento confirmado
expiredQR Code expirado (30 min)
cancelledPagamento cancelado

▶ Testar Endpoint


        

Consultar Saldo

POST /v2/account/balance HMAC

Retorna o saldo atual, reservas, limites e taxas da sua conta. O body pode ser vazio ({}) mas a assinatura HMAC e obrigatoria.

Resposta de Sucesso (200)

{
  "ok": true,
  "account": {
    "balance": "15420.50",
    "reserved": "0.00",
    "available": "15420.50",
    "limits": {
      "withdrawal": "1000.00",
      "generate": "500.00"
    },
    "fees": {
      "withdrawalPct": 5,
      "withdrawalFixed": 1.0,
      "depositPct": 2
    }
  }
}

DOCUMENTACAO DE SAQUES

A documentacao de saques PIX via API so e exibida para contas com essa funcionalidade habilitada. Teste o endpoint de saldo abaixo com suas credenciais — se sua conta tiver saques habilitados, a documentacao aparecera automaticamente.

▶ Testar Endpoint


        

Webhooks de Saida

Quando um evento ocorre (pagamento confirmado, saque concluido), a CredPix envia um POST para a sua URL de callback.

Como configurar

Existem duas formas de receber webhooks:

1. Por requisicao (recomendado): Envie o parametro callbackUrl ao criar um pagamento ou saque. O webhook sera enviado para essa URL quando o evento ocorrer.

// Exemplo: criar pagamento com callback
{
  "amount": 100,
  "callbackUrl": "https://seu-site.com/webhook/credpix",
  "externalId": "pedido_123"
}

2. URL global da conta: Configure uma URL padrao no painel do MiniApp (app.credpix.finance > Configuracoes > API). Todos os pagamentos sem callbackUrl usarao essa URL.

A callbackUrl deve usar HTTPS obrigatoriamente. URLs HTTP serao rejeitadas. Sua URL deve retornar status 2xx para confirmar o recebimento.

Formato do Payload

// Exemplo: payment.confirmed
{
  "event": "payment.confirmed",
  "timestamp": "2026-03-05T15:02:30.000Z",
  "data": {
    "id": "a1b2c3d4e5f6...",
    "externalId": "pedido_123",
    "amount": "100.00",
    "status": "approved",
    "payer": {
      "name": "JOAO DA SILVA",
      "document": "***456789**"
    },
    "endToEndId": "E0001234520260305..."
  }
}

Headers de verificacao

HeaderDescricao
X-CredPix-SignatureHMAC-SHA256 do body completo usando seu api_secret. Valide este header para garantir autenticidade.
Content-Typeapplication/json

Verificacao do webhook (Node.js)

import crypto from 'node:crypto';

function verifyWebhook(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature), Buffer.from(expected)
  );
}

Politica de retry

Se sua URL retornar status diferente de 2xx, a CredPix fara ate 3 tentativas:

  • 1a tentativa: imediata
  • 2a tentativa: apos 5 segundos
  • 3a tentativa: apos 30 segundos

Apos 3 falhas, o webhook e marcado como failed no log.

Eventos disponiveis

EventoDescricao
payment.confirmedPagamento PIX foi confirmado pelo banco
withdrawal.completedSaque PIX foi enviado com sucesso
withdrawal.failedSaque PIX falhou (saldo estornado)

Erros & Limites

Rate Limits

EscopoLimiteJanela
Geral (todos endpoints)60 requisicoes1 minuto
Saques (/withdrawal/create)10 requisicoes1 minuto

Ao exceder o limite, a API retorna 429 Too Many Requests.

Codigos de Erro

Codigo HTTPErroDescricao
400invalid_amountValor fora do intervalo permitido (1-50000)
400invalid_callback_urlURL de callback invalida ou nao usa HTTPS
400missing_pix_keyChave PIX nao informada
400invalid_pix_key_typeTipo de chave invalido
400amount_exceeds_limitValor excede o limite de geracao da conta
400exceeds_withdrawal_limitValor excede o limite de saque da conta
400insufficient_balanceSaldo insuficiente (considerando taxas)
401missing_api_keyHeader Authorization ausente
401invalid_api_keyAPI Key nao encontrada ou inativa
401missing_signatureHeaders de assinatura HMAC ausentes
401timestamp_expiredTimestamp fora da janela de 5 minutos
401invalid_signatureAssinatura HMAC nao confere
403withdrawal_not_enabledSaque via API nao habilitado para a conta
404payment_not_foundPagamento nao encontrado
404withdrawal_not_foundSaque nao encontrado
429rate_limit_exceededLimite de requisicoes excedido
500internal_errorErro interno do servidor
502gateway_errorErro na comunicacao com o gateway de pagamento
502gateway_no_brcodeGateway nao retornou o codigo PIX

Formato padrao de erro

{
  "ok": false,
  "error": "invalid_amount",
  "message": "amount must be between 1.00 and 50000.00"
}

CredPix API v2.0 — Documentacao atualizada em Marco 2026