📖 Introdução

Bem-vindo à documentação da FlashPix API. Esta API permite integração completa com o sistema de pagamentos PIX, incluindo geração de QR Codes, pagamentos e consulta de saldo.

Base URL

Base URL
https://api.flashpix.cloud

Protocolo

A API utiliza o protocolo HTTP/HTTPS com requisições e respostas no formato JSON.

Características

  • ✅ Autenticação OAuth 2.0 com Client Credentials
  • ✅ Geração de QR Code PIX dinâmico
  • ✅ Pagamentos PIX via chave
  • ✅ Consulta de saldo em tempo real
  • ✅ Webhooks para notificações
  • ✅ Cálculo automático de taxas

🔐 Autenticação

A API utiliza tokens JWT (JSON Web Tokens) para autenticação. Você precisa obter um access_token através do endpoint OAuth antes de fazer requisições aos endpoints protegidos.

Fluxo de Autenticação

  1. Obtenha suas credenciais (client_id e client_secret)
  2. Faça uma requisição POST para /v2/oauth/token com Basic Auth
  3. Receba o access_token na resposta
  4. Use o token no header Authorization: Bearer {token} nas próximas requisições
ℹ️ Importante: Os tokens têm tempo de expiração configurável. Quando expirar, você precisará solicitar um novo token.

Headers Necessários

Header Valor Descrição
Authorization Bearer {access_token} Token JWT obtido via OAuth (endpoints protegidos)
Content-Type application/json Formato do corpo da requisição

🔑 OAuth - Obter Token de Acesso

POST /v2/oauth/token

Endpoint para obter ou renovar o access_token usando credenciais do cliente.

Headers

Header Tipo Descrição
Authorization Obrigatório Basic Auth com client_id:client_secret em Base64

Exemplo de Requisição

HTTP Request
POST /v2/oauth/token HTTP/1.1
Host: api.flashpix.cloud
Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=
Content-Type: application/json

Exemplo com cURL

cURL
curl -X POST https://api.flashpix.cloud/v2/oauth/token \
  -H "Authorization: Basic $(echo -n 'client_id:client_secret' | base64)" \
  -H "Content-Type: application/json"

Resposta de Sucesso (200 OK)

JSON Response
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expires_in": 3600
}

Parâmetros da Resposta

Campo Tipo Descrição
access_token string Token JWT para autenticação nas próximas requisições
expires_in integer Tempo de validade do token em segundos

Possíveis Erros

Código Mensagem Descrição
401 Cabeçalho Authorization ausente ou inválido Header Authorization não foi enviado ou está mal formatado
400 Formato do Authorization inválido Credenciais não estão no formato correto (client_id:client_secret)
404 Credenciais inválidas Client ID ou Client Secret incorretos

💰 Consultar Saldo

POST /v2/balance

Endpoint para consultar o saldo disponível do usuário autenticado.

⚠️ Autenticação Necessária: Este endpoint requer um token JWT válido no header Authorization.

Headers

Header Tipo Descrição
Authorization Obrigatório Bearer {access_token}
Content-Type Obrigatório application/json

Exemplo de Requisição

HTTP Request
POST /v2/balance HTTP/1.1
Host: api.flashpix.cloud
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json

Exemplo com cURL

cURL
curl -X POST https://api.flashpix.cloud/v2/balance \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"

Resposta de Sucesso (200 OK)

JSON Response
{
  "amount": 1500.50
}

Parâmetros da Resposta

Campo Tipo Descrição
amount number Saldo disponível do usuário em reais (R$)

Possíveis Erros

Código Mensagem Descrição
401 Token inválido ou expirado O token JWT não é válido ou já expirou
404 Usuário não encontrado O usuário associado ao token não existe no sistema

💳 PIX - Pagamentos

Gerar QR Code PIX

POST /v2/pix/qrcode

Endpoint para gerar um QR Code PIX dinâmico para recebimento de pagamentos.

⚠️ Autenticação Necessária: Este endpoint requer um token JWT válido no header Authorization.

Headers

Header Tipo Descrição
Authorization Obrigatório Bearer {access_token}
Content-Type Obrigatório application/json

Parâmetros do Body (JSON)

Campo Tipo Obrigatório Descrição
amount number Sim Valor do pagamento em reais (ex: 100.50)
external_id string Sim ID único da transação (deve ser único no sistema)
payerQuestion string Sim Descrição/motivo do pagamento
postbackUrl string Sim URL para receber notificações de webhook
payer object Sim Dados do pagador
payer.name string Sim Nome completo do pagador
payer.document string Sim CPF ou CNPJ do pagador

Exemplo de Requisição

HTTP Request
POST /v2/pix/qrcode HTTP/1.1
Host: api.flashpix.cloud
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json

{
  "amount": 150.00,
  "external_id": "TXN123456789",
  "payerQuestion": "Pagamento de serviço",
  "postbackUrl": "https://seusite.com/webhook",
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  }
}

Exemplo com cURL

cURL
curl -X POST https://api.flashpix.cloud/v2/pix/qrcode \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 150.00,
    "external_id": "TXN123456789",
    "payerQuestion": "Pagamento de serviço",
    "postbackUrl": "https://seusite.com/webhook",
    "payer": {
      "name": "João Silva",
      "document": "12345678900"
    }
  }'

Resposta de Sucesso (201 Created)

JSON Response
{
  "transactionId": "e76e996f57849498d0ddm4ebrz4y5g55",
  "status": "PENDING",
  "qrCode": "00020126580014br.gov.bcb.pix...",
  "qrCodeImage": "data:image/png;base64,iVBORw0KGgoAAAANS...",
  "postbackUrl": "https://seusite.com/webhook",
  "amount": 150.00,
  "external_id": "TXN123456789"
}

Parâmetros da Resposta

Campo Tipo Descrição
transactionId string ID único da transação gerado pelo sistema
status string Status da transação (PENDING, COMPLETED, FAILED)
qrCode string Código PIX copia e cola
qrCodeImage string Imagem do QR Code em Base64
postbackUrl string URL configurada para webhook
amount number Valor da transação
external_id string ID externo fornecido na requisição
ℹ️ Taxas: O sistema calcula automaticamente as taxas de recebimento baseadas na configuração do banco de dados (tax_cashin e tax_min). A taxa é registrada na transação mas não afeta o valor do QR Code.

Possíveis Erros

Código Mensagem Descrição
400 O external_id já está em uso O external_id fornecido já existe em outra transação
401 Token inválido ou expirado O token JWT não é válido ou já expirou
500 Erro ao criar QR Code Erro na comunicação com a API externa ou erro interno

Realizar Pagamento PIX

POST /v2/pix/payment

Endpoint para realizar um pagamento PIX para uma chave PIX específica.

⚠️ Autenticação Necessária: Este endpoint requer um token JWT válido no header Authorization.

Headers

Header Tipo Descrição
Authorization Obrigatório Bearer {access_token}
Content-Type Obrigatório application/json

Parâmetros do Body (JSON)

Campo Tipo Obrigatório Descrição
amount number Sim Valor do pagamento em reais (ex: 100.50)
description string Sim Descrição do pagamento
creditParty object Sim Dados do recebedor
creditParty.name string Sim Nome do recebedor
creditParty.keyType string Sim Tipo da chave PIX (CPF, CNPJ, EMAIL, PHONE, EVP)
creditParty.key string Sim Chave PIX do recebedor

Exemplo de Requisição

HTTP Request
POST /v2/pix/payment HTTP/1.1
Host: api.flashpix.cloud
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json

{
  "amount": 250.00,
  "description": "Pagamento de fornecedor",
  "creditParty": {
    "name": "Maria Santos",
    "keyType": "CPF",
    "key": "98765432100"
  }
}

Exemplo com cURL

cURL
curl -X POST https://api.flashpix.cloud/v2/pix/payment \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250.00,
    "description": "Pagamento de fornecedor",
    "creditParty": {
      "name": "Maria Santos",
      "keyType": "CPF",
      "key": "98765432100"
    }
  }'

Resposta de Sucesso (200 OK)

HTTP/1.1 200 OK

Em caso de sucesso, o endpoint retorna status 200 sem corpo na resposta. O saldo do usuário é automaticamente debitado e a transação é registrada no banco de dados.

ℹ️ Taxas e Saldo: O sistema calcula automaticamente as taxas de saque (tax_cashout e tax_min). O valor total (amount + taxa) é debitado do saldo do usuário. A transação só é processada se houver saldo suficiente.
✅ IDs Automáticos: O sistema gera automaticamente:
  • external_id: ID de 10 dígitos numéricos
  • transactionId: ID único no formato hexadecimal
  • end2endId: ID no formato E + timestamp + caracteres aleatórios

Possíveis Erros

Código Mensagem Descrição
400 Parâmetros inválidos Campos obrigatórios ausentes ou inválidos
400 Saldo insuficiente O usuário não possui saldo suficiente para realizar o pagamento
401 Token inválido ou expirado O token JWT não é válido ou já expirou
404 Usuário não encontrado O usuário associado ao token não existe
500 Erro ao processar pagamento Erro na comunicação com a API externa ou erro interno

⚠️ Códigos de Erro

A API utiliza códigos de status HTTP padrão para indicar sucesso ou falha das requisições.

Códigos de Sucesso

Código Status Descrição
200 OK Requisição processada com sucesso
201 Created Recurso criado com sucesso (ex: QR Code gerado)

Códigos de Erro do Cliente

Código Status Descrição
400 Bad Request Requisição inválida ou parâmetros incorretos
401 Unauthorized Autenticação falhou ou token inválido/expirado
404 Not Found Recurso não encontrado

Códigos de Erro do Servidor

Código Status Descrição
500 Internal Server Error Erro interno do servidor ou erro na API externa

Formato de Resposta de Erro

Quando ocorre um erro, a API retorna um objeto JSON com a seguinte estrutura:

Error Response
{
  "statusCode": 400,
  "message": "Descrição do erro",
  "errorDetails": {
    // Detalhes adicionais quando disponível
  }
}

Exemplos de Erros Comuns

Token Expirado

401 Unauthorized
{
  "message": "Token inválido ou expirado."
}

Credenciais Inválidas

404 Not Found
{
  "statusCode": 404,
  "message": "Credenciais inválidas."
}

Saldo Insuficiente

400 Bad Request
{
  "message": "Saldo insuficiente."
}

External ID Duplicado

400 Bad Request
{
  "message": "O external_id já está em uso em outra transação."
}

🔔 Webhooks

A API envia notificações via webhook para informar sobre mudanças no status das transações.

Configuração

Ao criar um QR Code PIX, você deve fornecer uma URL no campo postbackUrl. Esta URL receberá notificações POST quando o status da transação mudar.

ℹ️ Importante: Sua URL de webhook deve estar acessível publicamente e responder com status 200 OK para confirmar o recebimento da notificação.

Formato da Notificação

As notificações são enviadas via POST com Content-Type application/json:

Webhook Payload
{
  "transactionId": "e76e996f57849498d0ddm4ebrz4y5g55",
  "external_id": "TXN123456789",
  "status": "COMPLETED",
  "amount": 150.00,
  "timestamp": "2024-01-15T10:30:00Z"
}

Status Possíveis

Status Descrição
PENDING Transação criada, aguardando pagamento
COMPLETED Pagamento confirmado com sucesso
FAILED Transação falhou ou foi cancelada

🔒 Segurança

Boas Práticas

  • ✅ Nunca exponha suas credenciais (client_id e client_secret) no frontend
  • ✅ Armazene tokens de forma segura e nunca os compartilhe
  • ✅ Use HTTPS em produção para todas as requisições
  • ✅ Implemente rate limiting para prevenir abuso
  • ✅ Valide e sanitize todos os dados de entrada
  • ✅ Monitore logs de acesso e transações suspeitas
  • ✅ Mantenha as dependências atualizadas
  • ✅ Configure webhooks com URLs HTTPS válidas
  • ✅ Implemente retry logic para webhooks falhados

📞 Suporte

Para dúvidas, problemas ou sugestões sobre a API:

  • 📧 Email: suporte@flashpix.cloud
  • 📱 Telefone: (11) 1234-5678
  • 💬 Chat: Disponível no painel administrativo