Docs/Referência da API

Referência da API

Referência completa para todos os endpoints da API Fivo.

URL Base

https://api.fivo.finance

Autenticação

Os endpoints protegidos requerem autenticação via API Key ou token JWT.

Authentication Headers
# Option 1: API Key (recommended for server-side)
X-API-Key: your_api_key_here

# Option 2: JWT Token (for user sessions)
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Idempotência

A API Fivo tem proteções de idempotência incorporadas para prevenir operações duplicadas:

Pagamentos

O de cada pagamento é único. Se submeter um pagamento com um que já existe, a API devolve com os dados do pagamento existente em vez de criar um duplicado.txHashtxHash200

Sessões de Pagamento

Cada sessão tem um único. Uma única sessão de pagamento só pode produzir um pagamento.payment_id

Notificações

As entregas de webhooks e emails utilizam um sistema de idempotência interno para prevenir notificações duplicadas para o mesmo evento.

i

Tratamento de respostas POST

Quando um endpoint POST devolve em vez de , significa que o recurso já existe. O seu código deve tratar ambos os códigos de estado como sucesso.200201

Pagamentos

POST/payments/create-public
Criar pagamento a partir do widget

Cria um registo de pagamento após uma transação blockchain bem-sucedida. Este endpoint é chamado automaticamente pelo widget Fivo.

Corpo do Pedido

merchantIdstringRequired

Merchant ID com prefixo (fivo_live_UUID)

txHashstringRequired

Hash da transação blockchain (0x...)

amountnumberRequired

Montante do pagamento (0.01 - 1.000.000)

expectedAmountnumberOptional

Montante esperado para validação on-chain. Obrigatório para pagamentos na mesma cadeia, opcional para entre cadeias.

tokenstringRequired

"USDC" ou "EURC"

chainIdnumberRequired

ID da cadeia blockchain de origem

fromAddressstringRequired

Endereço da wallet do remetente

toAddressstringRequired

Endereço da wallet do comerciante

isCrossChainbooleanOptional

Se este é um pagamento CCTP entre cadeias

bridgeKitobjectOptional

Payload do Bridge Kit para pagamentos entre cadeias: { burnTxHash: string, mintTxHash?: string }. Obrigatório para o fluxo entre cadeias com Bridge Kit.

feeQuoteobjectOptional

Cotação de taxa assinada para CCTP entre cadeias legado (descontinuado). Utilize bridgeKit em vez disso.

destinationChainIdnumberOptional

Cadeia de destino (se entre cadeias)

sessionIdstringOptional

ID da sessão de pagamento para associar este pagamento (se utilizar sessões de pagamento)

customerEmailstringRequired

Endereço de email do cliente para envio de recibo. Máx. 255 caracteres.

referencestringOptional

A sua referência interna (ID de encomenda, número de fatura). Máx. 255 caracteres.

descriptionstringOptional

Descrição do pagamento. Máx. 500 caracteres.

metadataobjectOptional

Pares chave-valor personalizados para uso interno. Máx. 10KB.

Example Request
const response = await fetch(`https://api.fivo.finance/payments/create-public`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    merchantId: 'fivo_live_969c4442-5741-4624-8305-427391683190',
    txHash: '0x1234567890abcdef...',
    amount: 49.99,
    expectedAmount: 49.99,
    token: 'USDC',
    chainId: 137,
    fromAddress: '0xCustomerWallet...',
    toAddress: '0xMerchantWallet...',
    isCrossChain: false,
    customerEmail: 'customer@example.com',
    reference: 'ORD-2024-001',
    metadata: { product_id: 'plan_pro' }
  })
});
Response (201)
{
  "success": true,
  "data": {
    "paymentId": "payment-uuid-here",
    "status": "completed",
    "isCrossChain": false
  }
}
i

Resposta mínima

Este endpoint devolve apenas os campos necessários para o widget. Para obter os detalhes completos do pagamento (montante, tx_hash, etc.), utilize com autenticação.GET /payments/:id
GET/payments/:id/status
Obter estado do pagamento

Devolve o estado atual de um pagamento. Útil para consultar a conclusão do pagamento.

Parâmetros de Caminho

idstringRequired

UUID do pagamento

Response
{
  "success": true,
  "data": {
    "id": "payment-uuid-here",
    "status": "completed",
    "is_cross_chain": true,
    "cctp_attestation_status": null,
    "updated_at": "2026-03-04T10:32:00.000Z"
  }
}
i

Endpoint público mínimo

Este é um endpoint público que devolve apenas campos de estado. Dados sensíveis como montantes, tx_hash e endereços não são incluídos. Utilize com autenticação para detalhes completos. Nota: é para pagamentos Bridge Kit (sistema atual). Só tem valores para pagamentos legados com relayer CCTP.GET /payments/:idcctp_attestation_statusnull

Valores de Estado do Pagamento

EstadoDescrição
completedPagamento bem-sucedido e fundos recebidos
pendingPagamento criado, a aguardar processamento
pending_attestationEntre cadeias: a aguardar atestação CCTP do Circle
ready_to_mintEntre cadeias: atestação recebida, a cunhar na cadeia de destino
minted_pending_transferEntre cadeias: cunhado, a transferir para a wallet do comerciante
failedPagamento falhado (verificar failure_reason)
GET/payments
Auth RequiredListar pagamentos do comerciante

Devolve a lista paginada de pagamentos para o comerciante autenticado.

Parâmetros de Consulta

statusstringOptional

Filtro: "pending", "completed", "failed"

currencystringOptional

Filtro: "USDC" ou "EURC"

startDatestringOptional

Filtro: data em formato ISO

endDatestringOptional

Filtro: data em formato ISO

searchstringOptional

Pesquisar em tx_hash, from_address, customer_email, reference (mín. 3 caracteres)

limitnumberOptional

Resultados por página (predefinido: 50)

offsetnumberOptional

Deslocamento de paginação (predefinido: 0)

sortBystringOptional

Campo de ordenação (ex.: "created_at", "amount")

sortDirectionstringOptional

"asc" ou "desc"

sincestringOptional

Data/hora ISO: devolver apenas pagamentos criados após esta data. Útil para consultas em tempo real.

Example Request
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  "https://api.fivo.finance/payments?status=completed&limit=10&sortBy=created_at&sortDirection=desc"
GET/payments/:id
Auth RequiredObter detalhes do pagamento

Devolve os detalhes completos de um pagamento específico, incluindo todos os campos CCTP.

GET/payments/api/list
Auth RequiredListar pagamentos (API Key)

Devolve a lista paginada de pagamentos para o comerciante autenticado via API Key. Útil para reconciliação do lado do servidor e verificação de dados de webhooks.

Parâmetros de Consulta

statusstringOptional

Filtro: "pending", "completed", "failed"

currencystringOptional

Filtro: "USDC" ou "EURC"

startDatestringOptional

Filtro: data em formato ISO

endDatestringOptional

Filtro: data em formato ISO

searchstringOptional

Pesquisar em tx_hash, from_address, customer_email, reference (mín. 3 caracteres)

limitnumberOptional

Resultados por página (predefinido: 50, máx.: 200)

offsetnumberOptional

Deslocamento de paginação (predefinido: 0)

sortBystringOptional

Campo de ordenação (ex.: "created_at", "amount")

sortDirectionstringOptional

"asc" ou "desc"

sincestringOptional

Data/hora ISO: devolver apenas pagamentos criados após esta data

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/payments/api/list?status=completed&limit=10"
Response
{
  "success": true,
  "data": {
    "payments": [
      {
        "id": "payment-uuid",
        "amount": "49.990000",
        "currency": "USDC",
        "status": "completed",
        "tx_hash": "0x1234567890abcdef...",
        "from_address": "0xCustomer...",
        "to_address": "0xMerchant...",
        "source_chain": "BASE",
        "is_cross_chain": false,
        "customer_email": "customer@example.com",
        "reference": "ORD-2024-001",
        "metadata": { "product_id": "plan_pro" },
        "created_at": "2026-02-28T10:30:00.000Z"
      }
    ],
    "total": 1,
    "limit": 10,
    "offset": 0
  }
}
GET/payments/api/:id
Auth RequiredObter detalhes do pagamento (API Key)

Devolve os detalhes completos de um pagamento específico. Utilize isto para verificar um pagamento após receber uma notificação de webhook.

Parâmetros de Caminho

idstringRequired

UUID do pagamento

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/payments/api/abc123-payment-uuid"
Response
{
  "success": true,
  "data": {
    "id": "abc123-payment-uuid",
    "amount": "49.990000",
    "expected_amount": "49.990000",
    "currency": "USDC",
    "status": "completed",
    "tx_hash": "0x1234567890abcdef...",
    "from_address": "0xCustomer...",
    "to_address": "0xMerchant...",
    "source_chain": "BASE",
    "destination_chain": null,
    "is_cross_chain": false,
    "bridge_provider": null,
    "customer_email": "customer@example.com",
    "reference": "ORD-2024-001",
    "metadata": { "product_id": "plan_pro" },
    "created_at": "2026-02-28T10:30:00.000Z",
    "updated_at": "2026-02-28T10:30:00.000Z"
  }
}
i

Fluxo típico

1. Receber webhook → 2. Verificar com → 3. Processar a encomenda.payment.completedGET /payments/api/:id
GET/payments/cctp-fee
Estimar taxa entre cadeias

Devolve uma cotação de taxa assinada para um pagamento entre cadeias (CCTP). O widget chama isto automaticamente, mas pode utilizá-lo para integrações personalizadas para mostrar a discriminação de taxas antes do utilizador pagar.

Parâmetros de Consulta

destinationChainstringRequired

Nome da blockchain de destino (ex.: "ETH", "BASE", "ARB")

productPricestringRequired

Preço do produto em USD (ex.: "49.99")

Example Request
curl "https://api.fivo.finance/payments/cctp-fee?destinationChain=BASE&productPrice=49.99"
Response
{
  "success": true,
  "data": {
    "productPrice": 49.99,
    "amountToBurn": 50.74,
    "feeGas": 0.5,
    "feeCircle": 0.25,
    "feeTotal": 0.75,
    "totalUserPays": 50.74,
    "merchantReceives": 49.99,
    "destinationChain": "BASE",
    "validUntil": 1739871300,
    "validForSeconds": 300,
    "breakdown": {
      "gasEstimateUSD": 0.35,
      "gasWithBuffer": 0.5,
      "minGasFee": 0.5,
      "bufferPercent": 40
    },
    "signature": "hmac-sha256-hex..."
  }
}
i

Cotação assinada

A resposta inclui uma assinatura HMAC. Ao criar um pagamento entre cadeias via , passe os campos da cotação de volta como parâmetro . O backend verifica a assinatura para prevenir manipulação de taxas.POST /payments/create-publicfeeQuote

Comerciantes

GET/merchants/:id/wallet
Obter endereço da wallet do comerciante

Devolve o endereço da wallet e a blockchain do comerciante. Utilizado pelo widget para saber para onde enviar os pagamentos.

Response
{
  "success": true,
  "data": {
    "wallet": {
      "id": "wallet-uuid",
      "address": "0x1234567890abcdef...",
      "blockchain": "MATIC",
      "chainId": 137
    }
  }
}
GET/merchants/:id/info
Obter informação pública do comerciante

Devolve informação pública do comerciante, como nome e moedas aceites.

Response
{
  "success": true,
  "data": {
    "name": "My Store",
    "blockchain": "MATIC",
    "accepted_currencies": "USDC,EURC"
  }
}

Sessões de Pagamento

As Sessões de Pagamento permitem-lhe criar uma página de pagamento alojada pelo Fivo e redirecionar o seu cliente para ela. Após o pagamento, o cliente é redirecionado de volta para o seu site. Semelhante ao Stripe Checkout.

i
Todos os endpoints de Sessão de Pagamento (exceto ) requerem autenticação via API Key./public
POST/checkout/sessions
Auth RequiredCriar sessão de pagamento

Cria uma nova sessão de pagamento e devolve um URL para redirecionar o seu cliente.

Corpo do Pedido

amountstring | numberOptional

Montante do pagamento (0.01 - 1.000.000). Omita para montante variável.

currencystringOptional

"USDC" ou "EURC". Predefinido: "USDC".

return_urlstringRequired

URL de redirecionamento após pagamento. Deve ser HTTPS em produção.

cancel_urlstringOptional

URL de redirecionamento ao cancelar. Deve ser HTTPS em produção.

metadataobjectOptional

Até 5 pares chave-valor para sua referência (ex.: order_id).

expires_innumberOptional

Duração da sessão em segundos (60 - 86400). Predefinido: 1800 (30 min).

Example Request
curl -X POST https://api.fivo.finance/checkout/sessions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "amount": "49.99",
    "currency": "USDC",
    "return_url": "https://yoursite.com/success",
    "cancel_url": "https://yoursite.com/cancel",
    "metadata": { "order_id": "order_123" }
  }'
Response (201)
{
  "success": true,
  "data": {
    "id": "cs_live_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "url": "https://checkout.fivo.finance?session=cs_live_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "expires_at": "2026-02-18T11:00:00.000Z"
  }
}
GET/checkout/sessions/:id
Auth RequiredObter detalhes da sessão

Devolve o estado da sessão e os dados do pagamento associado. Utilize isto para verificar a conclusão do pagamento após o cliente regressar ao seu site.

Response
{
  "success": true,
  "data": {
    "id": "cs_live_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "complete",
    "amount": "49.99",
    "currency": "USDC",
    "metadata": { "order_id": "order_123" },
    "return_url": "https://yoursite.com/success",
    "cancel_url": "https://yoursite.com/cancel",
    "payment": {
      "id": "payment-uuid",
      "status": "completed",
      "tx_hash": "0x1234567890abcdef...",
      "amount": "49.99",
      "is_cross_chain": false
    },
    "created_at": "2026-02-18T10:30:00.000Z",
    "expires_at": "2026-02-18T11:00:00.000Z"
  }
}

Valores de Estado da Sessão

EstadoDescrição
openSessão criada, a aguardar que o cliente pague
completePagamento confirmado e fundos recebidos
expiredSessão expirou antes do pagamento ser efetuado
GET/checkout/sessions/:id/public
Obter sessão (apenas widget)

Endpoint público utilizado pelo widget de pagamento para carregar os detalhes da sessão. Devolve apenas os campos necessários para renderizar a interface de pagamento (sem metadata). Não necessita de chamar este endpoint diretamente.

API Keys

i
Todos os endpoints de API Keys requerem autenticação JWT (sessão de comerciante autenticado). As API Keys não podem ser utilizadas para gerir outras API Keys.
POST/api-keys
Auth RequiredCriar nova API Key

Corpo do Pedido

namestringRequired

Nome descritivo para a chave (1-50 caracteres)

Response
{
  "success": true,
  "message": "API key created successfully",
  "data": {
    "id": "key-uuid",
    "name": "Production Server",
    "key": "fivo_live_abc123...",
    "created_at": "2024-01-15T10:30:00.000Z"
  }
}
!

Guarde a Sua Chave

A API Key completa é mostrada apenas uma vez no momento da criação. Guarde-a de forma segura. Se a perder, terá de criar uma nova chave.
GET/api-keys
Auth RequiredListar API Keys

Devolve todas as API Keys do comerciante autenticado. As chaves são mascaradas por segurança (apenas os últimos 4 caracteres são mostrados).

Response
{
  "success": true,
  "data": [
    {
      "id": "key-uuid-1",
      "name": "Production Server",
      "last4": "••••",
      "created_at": "2024-01-15T10:30:00.000Z"
    },
    {
      "id": "key-uuid-2",
      "name": "Staging Server",
      "last4": "••••",
      "created_at": "2024-01-10T08:00:00.000Z"
    }
  ]
}
DELETE/api-keys/:id
Auth RequiredRevogar API Key

Revoga permanentemente uma API Key. Quaisquer pedidos que utilizem esta chave falharão imediatamente.

Response
{
  "success": true,
  "message": "API key deleted successfully"
}

Faturas

As faturas são geradas automaticamente quando um saque é concluído. Cada fatura inclui um detalhamento de taxas e é armazenada como PDF. Todos os endpoints requerem autenticação JWT.

GET/invoices
Auth RequiredListar faturas do comerciante

Retorna todas as faturas do comerciante autenticado, ordenadas por data (mais recentes primeiro).

Parâmetros de Consulta

yearnumberOptional

Filtrar por ano (ex. 2026)

statusstringOptional

"issued" ou "rectified"

Example Request
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  "https://api.fivo.finance/invoices?year=2026"
Response
{
  "success": true,
  "data": [
    {
      "id": "invoice-uuid",
      "invoice_number": "FIV-2026-0001",
      "issued_at": "2026-02-25T14:30:00.000Z",
      "gross_amount": "1000.000000",
      "fivo_fee": "5.0000",
      "fivo_fee_eur": "4.6500",
      "tax_amount": "0.0000",
      "net_amount": "994.500000",
      "currency": "USDC",
      "status": "issued",
      "pdf_url": "invoices/2026/merchant-id/FIV-2026-0001.pdf",
      "blockchain": "BASE"
    }
  ]
}
GET/invoices/:id/pdf
Auth RequiredBaixar fatura em PDF

Retorna o arquivo PDF da fatura diretamente. Use mode=view para exibir no navegador ou mode=download para baixar.

Parâmetros de Caminho

idstringRequired

UUID da fatura

i

Resposta PDF direta

Este endpoint retorna o arquivo PDF diretamente com Content-Type: application/pdf. Sem redirecionamento ou URL temporaria.

Gestão de Webhooks (API Key)

Gerencie seus endpoints de webhook de forma programática via API Key. Estes endpoints espelham a configuração de webhooks do painel.

i
Todos os endpoints de gestão de webhooks requerem autenticação por API Key via header .X-API-Key
GET/merchant-webhooks/api/list
Auth RequiredListar todos os webhooks

Retorna todos os endpoints de webhook configurados para sua conta de comerciante.

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/merchant-webhooks/api/list"
Response
{
  "success": true,
  "data": [
    {
      "id": "webhook-uuid",
      "url": "https://yoursite.com/webhooks/fivo",
      "events": ["payment.completed", "payment.failed"],
      "description": "Production webhook",
      "is_active": true,
      "failure_count": 0,
      "created_at": "2026-02-20T10:00:00.000Z"
    }
  ]
}
POST/merchant-webhooks/api/create
Auth RequiredCriar um webhook

Corpo do Pedido

urlstringRequired

URL de webhook HTTPS

eventsstring[]Required

Eventos para assinar (veja os eventos disponíveis abaixo)

descriptionstringOptional

Descrição (máx. 200 caracteres)

Example Request
curl -X POST https://api.fivo.finance/merchant-webhooks/api/create \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://yoursite.com/webhooks/fivo",
    "events": ["payment.completed", "payment.failed"],
    "description": "Production webhook"
  }'
GET/merchant-webhooks/api/:id
Auth RequiredObter detalhes do webhook

Parâmetros de Caminho

idstringRequired

UUID do webhook

PUT/merchant-webhooks/api/:id
Auth RequiredAtualizar um webhook

Corpo do Pedido

urlstringOptional

Nova URL do webhook

eventsstring[]Optional

Nova lista de eventos

descriptionstringOptional

Nova descrição

is_activebooleanOptional

Ativar/desativar o webhook

DELETE/merchant-webhooks/api/:id
Auth RequiredExcluir um webhook

Parâmetros de Caminho

idstringRequired

UUID do webhook

POST/merchant-webhooks/api/:id/regenerate-secret
Auth RequiredRegenerar segredo do webhook

Gera um novo segredo HMAC para verificação de assinaturas. O segredo anterior para de funcionar imediatamente.

POST/merchant-webhooks/api/:id/test
Auth RequiredEnviar webhook de teste

Envia um evento de teste para a URL do webhook. Útil para verificar seu endpoint.payment.completed

GET/merchant-webhooks/api/:id/logs
Auth RequiredObter registros de entrega do webhook

Parâmetros de Consulta

limitnumberOptional

Número de registros a retornar (padrão: 20, máx: 100)

GET/merchant-webhooks/api/events
Auth RequiredListar eventos disponíveis

Retorna todos os eventos de webhook que você pode assinar, com descrições.

Saldo (API Key)

GET/wallets/api/balance
Auth RequiredObter saldo da carteira

Retorna o saldo de USDC e EURC da sua carteira principal. Útil para monitorar fundos disponíveis antes de iniciar saques.

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/wallets/api/balance"
Response
{
  "success": true,
  "data": {
    "wallet_id": "wallet-uuid",
    "address": "0x1234567890abcdef...",
    "blockchain": "MATIC",
    "balances": [
      { "token": "USDC", "amount": "1250.50" },
      { "token": "EURC", "amount": "340.00" }
    ]
  }
}
i

Sem cache

Este endpoint sempre retorna dados atualizados. A resposta inclui headers .Cache-Control: no-store

Faturas (API Key)

Acesse suas faturas de forma programática via API Key. As faturas são geradas automaticamente quando um saque é concluído.

GET/invoices/api/list
Auth RequiredListar faturas

Parâmetros de Consulta

yearnumberOptional

Filtrar por ano (ex. 2026)

statusstringOptional

"issued" ou "rectified"

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/invoices/api/list?year=2026"
GET/invoices/api/:id/pdf
Auth RequiredBaixar fatura em PDF

Parâmetros de Caminho

idstringRequired

UUID da fatura

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/invoices/api/INVOICE_UUID/pdf?mode=download"
i

Resposta PDF direta

Retorna o arquivo PDF diretamente com Content-Type: application/pdf.

Reembolsos (API Key)

Emita reembolsos para pagamentos concluídos. Os reembolsos são enviados on-chain para o endereço do remetente original. Todos os endpoints requerem autenticação por API Key via header .X-API-Key

POST/refunds/api/create
Auth RequiredCriar um reembolso

Cria um reembolso para um pagamento concluído. Por padrão, reembolsa o valor total do pagamento. Reembolsos parciais são suportados ao especificar um .amount

Corpo do Pedido

paymentIdstringRequired

UUID do pagamento a reembolsar

amountstringOptional

Valor a reembolsar (por padrão, o valor total do pagamento)

reasonstringRequired

"duplicate", "fraudulent", "requested_by_customer" ou "other"

notestringOptional

Nota interna sobre o reembolso (máx. 500 caracteres)

Example Request
curl -X POST https://api.fivo.finance/refunds/api/create \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "paymentId": "payment-uuid-here",
    "amount": "49.99",
    "reason": "requested_by_customer",
    "note": "Customer requested refund"
  }'
Response (201)
{
  "success": true,
  "data": {
    "id": "refund-uuid",
    "payment_id": "payment-uuid-here",
    "amount": "49.990000",
    "currency": "USDC",
    "status": "pending",
    "destination_address": "0xCustomer...",
    "blockchain": "BASE",
    "reason": "requested_by_customer"
  }
}
i

Prazo de reembolso

Os reembolsos podem ser emitidos até 180 dias após a conclusão do pagamento original.
GET/refunds/api/list
Auth RequiredListar reembolsos

Retorna uma lista paginada de reembolsos para o comerciante autenticado.

Parâmetros de Consulta

statusstringOptional

Filtrar: "pending", "processing", "completed", "failed", "cancelled"

currencystringOptional

Filtro: "USDC" ou "EURC"

searchstringOptional

Pesquisar em ID de pagamento, endereço de destino, hash de transação

limitnumberOptional

Resultados por página (predefinido: 50, máx.: 200)

offsetnumberOptional

Deslocamento de paginação (predefinido: 0)

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/refunds/api/list?status=completed&limit=10"
Response
{
  "success": true,
  "data": {
    "refunds": [
      {
        "id": "refund-uuid",
        "payment_id": "payment-uuid",
        "amount": "49.990000",
        "currency": "USDC",
        "status": "completed",
        "destination_address": "0xCustomer...",
        "blockchain": "BASE",
        "reason": "requested_by_customer",
        "tx_hash": "0xabc123...",
        "created_at": "2026-03-01T10:30:00.000Z"
      }
    ],
    "total": 1,
    "limit": 10,
    "offset": 0
  }
}
GET/refunds/api/:id
Auth RequiredObter detalhes do reembolso

Retorna os detalhes completos de um reembolso específico, incluindo os dados do pagamento vinculado.

Parâmetros de Caminho

idstringRequired

UUID do reembolso

Example Request
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.fivo.finance/refunds/api/REFUND_UUID"
Response
{
  "success": true,
  "data": {
    "id": "refund-uuid",
    "payment_id": "payment-uuid",
    "amount": "49.990000",
    "currency": "USDC",
    "status": "completed",
    "destination_address": "0xCustomer...",
    "blockchain": "BASE",
    "reason": "requested_by_customer",
    "note": "Customer requested refund",
    "tx_hash": "0xabc123...",
    "failure_reason": null,
    "created_at": "2026-03-01T10:30:00.000Z",
    "completed_at": "2026-03-01T10:31:00.000Z",
    "payment": {
      "id": "payment-uuid",
      "amount": "49.990000",
      "currency": "USDC",
      "status": "completed",
      "tx_hash": "0xoriginal...",
      "from_address": "0xCustomer...",
      "created_at": "2026-02-28T10:30:00.000Z"
    }
  }
}
POST/refunds/api/:id/cancel
Auth RequiredCancelar um reembolso pendente

Cancela um reembolso que ainda está no status . Reembolsos que já estão em processamento ou concluídos não podem ser cancelados.pending

Parâmetros de Caminho

idstringRequired

UUID do reembolso

Example Request
curl -X POST https://api.fivo.finance/refunds/api/REFUND_UUID/cancel \
  -H "X-API-Key: YOUR_API_KEY"
Response
{
  "success": true
}

Webhooks

Os webhooks notificam seu servidor em tempo real quando eventos de pagamento ocorrem. Configure webhooks no seu ou através da .painel de controleAPI de gestão de webhooks

Eventos

EventoDescrição
payment.completedPagamento bem-sucedido e fundos recebidos pelo comerciante
payment.failedPagamento falhou
refund.createdUm reembolso foi criado para um pagamento
refund.completedReembolso concluído on-chain e enviado ao cliente
refund.failedReembolso falhou (verifique failure_reason)

Payload

Webhook Payload
{
  "event": "payment.completed",
  "timestamp": "2026-02-18T10:30:45.123Z",
  "data": {
    "payment_id": "abc123-uuid",
    "amount": "49.99",
    "currency": "USDC",
    "tx_hash": "0x1234567890abcdef...",
    "from_address": "0xCustomerWallet...",
    "to_address": "0xMerchantWallet...",
    "source_chain": "ETH",
    "destination_chain": null,
    "is_cross_chain": false,
    "status": "completed"
  }
}

Headers

HeaderDescrição
X-Fivo-SignatureAssinatura HMAC-SHA256 ()sha256=hex
X-Fivo-EventTipo de evento (ex. )payment.completed
X-Fivo-TimestampTimestamp Unix (segundos) de quando o webhook foi enviado
X-Fivo-Test ou , se é um webhook de testetruefalse

Verificação de assinaturas

Sempre verifique o header para garantir que o webhook veio do Fivo.X-Fivo-Signature

Signature Verification (Node.js)
const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, timestamp, secret) {
  const signaturePayload = timestamp + '.' + JSON.stringify(payload);
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(signaturePayload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

// In your webhook handler:
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-fivo-signature'];
  const timestamp = req.headers['x-fivo-timestamp'];

  if (!verifyWebhookSignature(req.body, signature, timestamp, WEBHOOK_SECRET)) {
    return res.status(401).send('Invalid signature');
  }

  // Process the event
  const { event, data } = req.body;
  console.log(event, data.payment_id, data.amount);
  res.status(200).send('OK');
});
!

Confiabilidade dos Webhooks

Seu endpoint deve responder com um código 2xx em 5 segundos. Após 10 falhas consecutivas, o webhook é automaticamente desativado. HTTPS é obrigatório em produção.

Formato de resposta

Todas as respostas da API seguem um formato consistente:

Success Response
{
  "success": true,
  "data": { ... },
  "message": "Optional message"
}
Error Response
{
  "success": false,
  "error": "Error description",
  "details": [ ... ]
}

Precisa de ajuda?

Consulte nosso guia de tratamento de erros ou entre em contato com o suporte.