URL Base
https://api.fivo.financeAutenticação
Os endpoints protegidos requerem autenticação via API Key ou token JWT.
# 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.
Tratamento de respostas POST
200201Pagamentos
/payments/create-publicCria um registo de pagamento após uma transação blockchain bem-sucedida. Este endpoint é chamado automaticamente pelo widget Fivo.
Corpo do Pedido
merchantIdstringRequiredMerchant ID com prefixo (fivo_live_UUID)
txHashstringRequiredHash da transação blockchain (0x...)
amountnumberRequiredMontante do pagamento (0.01 - 1.000.000)
expectedAmountnumberOptionalMontante esperado para validação on-chain. Obrigatório para pagamentos na mesma cadeia, opcional para entre cadeias.
tokenstringRequired"USDC" ou "EURC"
chainIdnumberRequiredID da cadeia blockchain de origem
fromAddressstringRequiredEndereço da wallet do remetente
toAddressstringRequiredEndereço da wallet do comerciante
isCrossChainbooleanOptionalSe este é um pagamento CCTP entre cadeias
bridgeKitobjectOptionalPayload do Bridge Kit para pagamentos entre cadeias: { burnTxHash: string, mintTxHash?: string }. Obrigatório para o fluxo entre cadeias com Bridge Kit.
feeQuoteobjectOptionalCotação de taxa assinada para CCTP entre cadeias legado (descontinuado). Utilize bridgeKit em vez disso.
destinationChainIdnumberOptionalCadeia de destino (se entre cadeias)
sessionIdstringOptionalID da sessão de pagamento para associar este pagamento (se utilizar sessões de pagamento)
customerEmailstringRequiredEndereço de email do cliente para envio de recibo. Máx. 255 caracteres.
referencestringOptionalA sua referência interna (ID de encomenda, número de fatura). Máx. 255 caracteres.
descriptionstringOptionalDescrição do pagamento. Máx. 500 caracteres.
metadataobjectOptionalPares chave-valor personalizados para uso interno. Máx. 10KB.
| Name | Type | Required | Description |
|---|---|---|---|
merchantId | string | Required | Merchant ID com prefixo (fivo_live_UUID) |
txHash | string | Required | Hash da transação blockchain (0x...) |
amount | number | Required | Montante do pagamento (0.01 - 1.000.000) |
expectedAmount | number | Optional | Montante esperado para validação on-chain. Obrigatório para pagamentos na mesma cadeia, opcional para entre cadeias. |
token | string | Required | "USDC" ou "EURC" |
chainId | number | Required | ID da cadeia blockchain de origem |
fromAddress | string | Required | Endereço da wallet do remetente |
toAddress | string | Required | Endereço da wallet do comerciante |
isCrossChain | boolean | Optional | Se este é um pagamento CCTP entre cadeias |
bridgeKit | object | Optional | Payload do Bridge Kit para pagamentos entre cadeias: { burnTxHash: string, mintTxHash?: string }. Obrigatório para o fluxo entre cadeias com Bridge Kit. |
feeQuote | object | Optional | Cotação de taxa assinada para CCTP entre cadeias legado (descontinuado). Utilize bridgeKit em vez disso. |
destinationChainId | number | Optional | Cadeia de destino (se entre cadeias) |
sessionId | string | Optional | ID da sessão de pagamento para associar este pagamento (se utilizar sessões de pagamento) |
customerEmail | string | Required | Endereço de email do cliente para envio de recibo. Máx. 255 caracteres. |
reference | string | Optional | A sua referência interna (ID de encomenda, número de fatura). Máx. 255 caracteres. |
description | string | Optional | Descrição do pagamento. Máx. 500 caracteres. |
metadata | object | Optional | Pares chave-valor personalizados para uso interno. Máx. 10KB. |
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' }
})
});{
"success": true,
"data": {
"paymentId": "payment-uuid-here",
"status": "completed",
"isCrossChain": false
}
}Resposta mínima
GET /payments/:id/payments/:id/statusDevolve o estado atual de um pagamento. Útil para consultar a conclusão do pagamento.
Parâmetros de Caminho
idstringRequiredUUID do pagamento
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID do pagamento |
{
"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"
}
}Endpoint público mínimo
GET /payments/:idcctp_attestation_statusnullValores de Estado do Pagamento
| Estado | Descrição |
|---|---|
completed | Pagamento bem-sucedido e fundos recebidos |
pending | Pagamento criado, a aguardar processamento |
pending_attestation | Entre cadeias: a aguardar atestação CCTP do Circle |
ready_to_mint | Entre cadeias: atestação recebida, a cunhar na cadeia de destino |
minted_pending_transfer | Entre cadeias: cunhado, a transferir para a wallet do comerciante |
failed | Pagamento falhado (verificar failure_reason) |
/paymentsDevolve a lista paginada de pagamentos para o comerciante autenticado.
Parâmetros de Consulta
statusstringOptionalFiltro: "pending", "completed", "failed"
currencystringOptionalFiltro: "USDC" ou "EURC"
startDatestringOptionalFiltro: data em formato ISO
endDatestringOptionalFiltro: data em formato ISO
searchstringOptionalPesquisar em tx_hash, from_address, customer_email, reference (mín. 3 caracteres)
limitnumberOptionalResultados por página (predefinido: 50)
offsetnumberOptionalDeslocamento de paginação (predefinido: 0)
sortBystringOptionalCampo de ordenação (ex.: "created_at", "amount")
sortDirectionstringOptional"asc" ou "desc"
sincestringOptionalData/hora ISO: devolver apenas pagamentos criados após esta data. Útil para consultas em tempo real.
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filtro: "pending", "completed", "failed" |
currency | string | Optional | Filtro: "USDC" ou "EURC" |
startDate | string | Optional | Filtro: data em formato ISO |
endDate | string | Optional | Filtro: data em formato ISO |
search | string | Optional | Pesquisar em tx_hash, from_address, customer_email, reference (mín. 3 caracteres) |
limit | number | Optional | Resultados por página (predefinido: 50) |
offset | number | Optional | Deslocamento de paginação (predefinido: 0) |
sortBy | string | Optional | Campo de ordenação (ex.: "created_at", "amount") |
sortDirection | string | Optional | "asc" ou "desc" |
since | string | Optional | Data/hora ISO: devolver apenas pagamentos criados após esta data. Útil para consultas em tempo real. |
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
"https://api.fivo.finance/payments?status=completed&limit=10&sortBy=created_at&sortDirection=desc"/payments/:idDevolve os detalhes completos de um pagamento específico, incluindo todos os campos CCTP.
/payments/api/listDevolve 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
statusstringOptionalFiltro: "pending", "completed", "failed"
currencystringOptionalFiltro: "USDC" ou "EURC"
startDatestringOptionalFiltro: data em formato ISO
endDatestringOptionalFiltro: data em formato ISO
searchstringOptionalPesquisar em tx_hash, from_address, customer_email, reference (mín. 3 caracteres)
limitnumberOptionalResultados por página (predefinido: 50, máx.: 200)
offsetnumberOptionalDeslocamento de paginação (predefinido: 0)
sortBystringOptionalCampo de ordenação (ex.: "created_at", "amount")
sortDirectionstringOptional"asc" ou "desc"
sincestringOptionalData/hora ISO: devolver apenas pagamentos criados após esta data
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filtro: "pending", "completed", "failed" |
currency | string | Optional | Filtro: "USDC" ou "EURC" |
startDate | string | Optional | Filtro: data em formato ISO |
endDate | string | Optional | Filtro: data em formato ISO |
search | string | Optional | Pesquisar em tx_hash, from_address, customer_email, reference (mín. 3 caracteres) |
limit | number | Optional | Resultados por página (predefinido: 50, máx.: 200) |
offset | number | Optional | Deslocamento de paginação (predefinido: 0) |
sortBy | string | Optional | Campo de ordenação (ex.: "created_at", "amount") |
sortDirection | string | Optional | "asc" ou "desc" |
since | string | Optional | Data/hora ISO: devolver apenas pagamentos criados após esta data |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/payments/api/list?status=completed&limit=10"{
"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
}
}/payments/api/:idDevolve 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
idstringRequiredUUID do pagamento
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID do pagamento |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/payments/api/abc123-payment-uuid"{
"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"
}
}Fluxo típico
payment.completedGET /payments/api/:id/payments/cctp-feeDevolve 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
destinationChainstringRequiredNome da blockchain de destino (ex.: "ETH", "BASE", "ARB")
productPricestringRequiredPreço do produto em USD (ex.: "49.99")
| Name | Type | Required | Description |
|---|---|---|---|
destinationChain | string | Required | Nome da blockchain de destino (ex.: "ETH", "BASE", "ARB") |
productPrice | string | Required | Preço do produto em USD (ex.: "49.99") |
curl "https://api.fivo.finance/payments/cctp-fee?destinationChain=BASE&productPrice=49.99"{
"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..."
}
}Cotação assinada
POST /payments/create-publicfeeQuoteComerciantes
/merchants/:id/walletDevolve o endereço da wallet e a blockchain do comerciante. Utilizado pelo widget para saber para onde enviar os pagamentos.
{
"success": true,
"data": {
"wallet": {
"id": "wallet-uuid",
"address": "0x1234567890abcdef...",
"blockchain": "MATIC",
"chainId": 137
}
}
}/merchants/:id/infoDevolve informação pública do comerciante, como nome e moedas aceites.
{
"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.
/public/checkout/sessionsCria uma nova sessão de pagamento e devolve um URL para redirecionar o seu cliente.
Corpo do Pedido
amountstring | numberOptionalMontante do pagamento (0.01 - 1.000.000). Omita para montante variável.
currencystringOptional"USDC" ou "EURC". Predefinido: "USDC".
return_urlstringRequiredURL de redirecionamento após pagamento. Deve ser HTTPS em produção.
cancel_urlstringOptionalURL de redirecionamento ao cancelar. Deve ser HTTPS em produção.
metadataobjectOptionalAté 5 pares chave-valor para sua referência (ex.: order_id).
expires_innumberOptionalDuração da sessão em segundos (60 - 86400). Predefinido: 1800 (30 min).
| Name | Type | Required | Description |
|---|---|---|---|
amount | string | number | Optional | Montante do pagamento (0.01 - 1.000.000). Omita para montante variável. |
currency | string | Optional | "USDC" ou "EURC". Predefinido: "USDC". |
return_url | string | Required | URL de redirecionamento após pagamento. Deve ser HTTPS em produção. |
cancel_url | string | Optional | URL de redirecionamento ao cancelar. Deve ser HTTPS em produção. |
metadata | object | Optional | Até 5 pares chave-valor para sua referência (ex.: order_id). |
expires_in | number | Optional | Duração da sessão em segundos (60 - 86400). Predefinido: 1800 (30 min). |
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" }
}'{
"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"
}
}/checkout/sessions/:idDevolve 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.
{
"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
| Estado | Descrição |
|---|---|
open | Sessão criada, a aguardar que o cliente pague |
complete | Pagamento confirmado e fundos recebidos |
expired | Sessão expirou antes do pagamento ser efetuado |
/checkout/sessions/:id/publicEndpoint 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
/api-keysCorpo do Pedido
namestringRequiredNome descritivo para a chave (1-50 caracteres)
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Nome descritivo para a chave (1-50 caracteres) |
{
"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
/api-keysDevolve todas as API Keys do comerciante autenticado. As chaves são mascaradas por segurança (apenas os últimos 4 caracteres são mostrados).
{
"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"
}
]
}/api-keys/:idRevoga permanentemente uma API Key. Quaisquer pedidos que utilizem esta chave falharão imediatamente.
{
"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.
/invoicesRetorna todas as faturas do comerciante autenticado, ordenadas por data (mais recentes primeiro).
Parâmetros de Consulta
yearnumberOptionalFiltrar por ano (ex. 2026)
statusstringOptional"issued" ou "rectified"
| Name | Type | Required | Description |
|---|---|---|---|
year | number | Optional | Filtrar por ano (ex. 2026) |
status | string | Optional | "issued" ou "rectified" |
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
"https://api.fivo.finance/invoices?year=2026"{
"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"
}
]
}/invoices/:id/pdfRetorna o arquivo PDF da fatura diretamente. Use mode=view para exibir no navegador ou mode=download para baixar.
Parâmetros de Caminho
idstringRequiredUUID da fatura
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID da fatura |
Resposta PDF direta
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.
X-API-Key/merchant-webhooks/api/listRetorna todos os endpoints de webhook configurados para sua conta de comerciante.
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/merchant-webhooks/api/list"{
"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"
}
]
}/merchant-webhooks/api/createCorpo do Pedido
urlstringRequiredURL de webhook HTTPS
eventsstring[]RequiredEventos para assinar (veja os eventos disponíveis abaixo)
descriptionstringOptionalDescrição (máx. 200 caracteres)
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Required | URL de webhook HTTPS |
events | string[] | Required | Eventos para assinar (veja os eventos disponíveis abaixo) |
description | string | Optional | Descrição (máx. 200 caracteres) |
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"
}'/merchant-webhooks/api/:idParâmetros de Caminho
idstringRequiredUUID do webhook
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID do webhook |
/merchant-webhooks/api/:idCorpo do Pedido
urlstringOptionalNova URL do webhook
eventsstring[]OptionalNova lista de eventos
descriptionstringOptionalNova descrição
is_activebooleanOptionalAtivar/desativar o webhook
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Optional | Nova URL do webhook |
events | string[] | Optional | Nova lista de eventos |
description | string | Optional | Nova descrição |
is_active | boolean | Optional | Ativar/desativar o webhook |
/merchant-webhooks/api/:idParâmetros de Caminho
idstringRequiredUUID do webhook
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID do webhook |
/merchant-webhooks/api/:id/regenerate-secretGera um novo segredo HMAC para verificação de assinaturas. O segredo anterior para de funcionar imediatamente.
/merchant-webhooks/api/:id/testEnvia um evento de teste para a URL do webhook. Útil para verificar seu endpoint.payment.completed
/merchant-webhooks/api/:id/logsParâmetros de Consulta
limitnumberOptionalNúmero de registros a retornar (padrão: 20, máx: 100)
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | Optional | Número de registros a retornar (padrão: 20, máx: 100) |
/merchant-webhooks/api/eventsRetorna todos os eventos de webhook que você pode assinar, com descrições.
Saldo (API Key)
/wallets/api/balanceRetorna o saldo de USDC e EURC da sua carteira principal. Útil para monitorar fundos disponíveis antes de iniciar saques.
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/wallets/api/balance"{
"success": true,
"data": {
"wallet_id": "wallet-uuid",
"address": "0x1234567890abcdef...",
"blockchain": "MATIC",
"balances": [
{ "token": "USDC", "amount": "1250.50" },
{ "token": "EURC", "amount": "340.00" }
]
}
}Sem cache
Cache-Control: no-storeFaturas (API Key)
Acesse suas faturas de forma programática via API Key. As faturas são geradas automaticamente quando um saque é concluído.
/invoices/api/listParâmetros de Consulta
yearnumberOptionalFiltrar por ano (ex. 2026)
statusstringOptional"issued" ou "rectified"
| Name | Type | Required | Description |
|---|---|---|---|
year | number | Optional | Filtrar por ano (ex. 2026) |
status | string | Optional | "issued" ou "rectified" |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/invoices/api/list?year=2026"/invoices/api/:id/pdfParâmetros de Caminho
idstringRequiredUUID da fatura
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID da fatura |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/invoices/api/INVOICE_UUID/pdf?mode=download"Resposta PDF direta
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
/refunds/api/createCria 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
paymentIdstringRequiredUUID do pagamento a reembolsar
amountstringOptionalValor a reembolsar (por padrão, o valor total do pagamento)
reasonstringRequired"duplicate", "fraudulent", "requested_by_customer" ou "other"
notestringOptionalNota interna sobre o reembolso (máx. 500 caracteres)
| Name | Type | Required | Description |
|---|---|---|---|
paymentId | string | Required | UUID do pagamento a reembolsar |
amount | string | Optional | Valor a reembolsar (por padrão, o valor total do pagamento) |
reason | string | Required | "duplicate", "fraudulent", "requested_by_customer" ou "other" |
note | string | Optional | Nota interna sobre o reembolso (máx. 500 caracteres) |
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"
}'{
"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"
}
}Prazo de reembolso
/refunds/api/listRetorna uma lista paginada de reembolsos para o comerciante autenticado.
Parâmetros de Consulta
statusstringOptionalFiltrar: "pending", "processing", "completed", "failed", "cancelled"
currencystringOptionalFiltro: "USDC" ou "EURC"
searchstringOptionalPesquisar em ID de pagamento, endereço de destino, hash de transação
limitnumberOptionalResultados por página (predefinido: 50, máx.: 200)
offsetnumberOptionalDeslocamento de paginação (predefinido: 0)
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filtrar: "pending", "processing", "completed", "failed", "cancelled" |
currency | string | Optional | Filtro: "USDC" ou "EURC" |
search | string | Optional | Pesquisar em ID de pagamento, endereço de destino, hash de transação |
limit | number | Optional | Resultados por página (predefinido: 50, máx.: 200) |
offset | number | Optional | Deslocamento de paginação (predefinido: 0) |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/refunds/api/list?status=completed&limit=10"{
"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
}
}/refunds/api/:idRetorna os detalhes completos de um reembolso específico, incluindo os dados do pagamento vinculado.
Parâmetros de Caminho
idstringRequiredUUID do reembolso
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID do reembolso |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/refunds/api/REFUND_UUID"{
"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"
}
}
}/refunds/api/:id/cancelCancela 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
idstringRequiredUUID do reembolso
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID do reembolso |
curl -X POST https://api.fivo.finance/refunds/api/REFUND_UUID/cancel \
-H "X-API-Key: YOUR_API_KEY"{
"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
| Evento | Descrição |
|---|---|
payment.completed | Pagamento bem-sucedido e fundos recebidos pelo comerciante |
payment.failed | Pagamento falhou |
refund.created | Um reembolso foi criado para um pagamento |
refund.completed | Reembolso concluído on-chain e enviado ao cliente |
refund.failed | Reembolso falhou (verifique failure_reason) |
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
| Header | Descrição |
|---|---|
X-Fivo-Signature | Assinatura HMAC-SHA256 ()sha256=hex |
X-Fivo-Event | Tipo de evento (ex. )payment.completed |
X-Fivo-Timestamp | Timestamp 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
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
Formato de resposta
Todas as respostas da API seguem um formato consistente:
{
"success": true,
"data": { ... },
"message": "Optional message"
}{
"success": false,
"error": "Error description",
"details": [ ... ]
}Precisa de ajuda?
Consulte nosso guia de tratamento de erros ou entre em contato com o suporte.