Docs/Référence API

Référence API

Référence complète de tous les points d'accès de l'API Fivo.

URL de base

https://api.fivo.finance

Authentification

Les points d'accès protégés nécessitent une authentification 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...

Idempotence

L'API Fivo dispose de protections d'idempotence intégrées pour éviter les opérations en double :

Paiements

Le de chaque paiement est unique. Si vous soumettez un paiement avec un qui existe déjà, l'API renvoie avec les données du paiement existant au lieu de créer un doublon.txHashtxHash200

Sessions de paiement

Chaque session possède un unique. Une seule session de paiement ne peut produire qu'un seul paiement.payment_id

Notifications

Les livraisons de webhooks et les e-mails utilisent un système d'idempotence interne pour éviter les notifications en double pour le même événement.

i

Gestion des réponses POST

Lorsqu'un point d'accès POST renvoie au lieu de , cela signifie que la ressource existe déjà. Votre code doit gérer les deux codes de statut comme un succès.200201

Paiements

POST/payments/create-public
Créer un paiement depuis le widget

Crée un enregistrement de paiement après une transaction blockchain réussie. Ce point d'accès est appelé automatiquement par le widget Fivo.

Corps de la requête

merchantIdstringRequired

Merchant ID avec préfixe (fivo_live_UUID)

txHashstringRequired

Hash de transaction blockchain (0x...)

amountnumberRequired

Montant du paiement (0.01 - 1 000 000)

expectedAmountnumberOptional

Montant attendu pour la validation on-chain. Requis pour les paiements sur la même chaîne, optionnel pour les paiements inter-chaînes.

tokenstringRequired

"USDC" ou "EURC"

chainIdnumberRequired

Chain ID de la blockchain source

fromAddressstringRequired

Adresse wallet de l'expéditeur

toAddressstringRequired

Adresse wallet du commerçant

isCrossChainbooleanOptional

Indique s'il s'agit d'un paiement inter-chaînes CCTP

bridgeKitobjectOptional

Payload Bridge Kit pour les paiements inter-chaînes : { burnTxHash: string, mintTxHash?: string }. Requis pour le flux inter-chaînes Bridge Kit.

feeQuoteobjectOptional

Devis de frais signé pour les paiements inter-chaînes CCTP legacy (obsolète). Utilisez bridgeKit à la place.

destinationChainIdnumberOptional

Chaîne de destination (si inter-chaînes)

sessionIdstringOptional

ID de session de paiement pour lier ce paiement (si vous utilisez les sessions de paiement)

customerEmailstringRequired

Adresse e-mail du client pour l'envoi du reçu. 255 caractères max.

referencestringOptional

Votre référence interne (ID de commande, numéro de facture). 255 caractères max.

descriptionstringOptional

Description du paiement. 500 caractères max.

metadataobjectOptional

Paires clé-valeur personnalisées pour votre usage interne. 10 Ko max.

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

Réponse minimale

Ce point d'accès renvoie uniquement les champs nécessaires au widget. Pour obtenir tous les détails du paiement (montant, tx_hash, etc.), utilisez avec authentification.GET /payments/:id
GET/payments/:id/status
Obtenir le statut du paiement

Renvoie le statut actuel d'un paiement. Utile pour interroger l'état d'achèvement du paiement.

Paramètres de chemin

idstringRequired

UUID du paiement

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

Point d'accès public minimal

Ceci est un point d'accès public qui renvoie uniquement les champs de statut. Les données sensibles comme les montants, tx_hash et adresses ne sont pas incluses. Utilisez avec authentification pour les détails complets. Note : est pour les paiements Bridge Kit (système actuel). Il n'a de valeurs que pour les paiements legacy via relayer CCTP.GET /payments/:idcctp_attestation_statusnull

Valeurs de statut de paiement

StatutDescription
completedPaiement réussi et fonds reçus
pendingPaiement créé, en attente de traitement
pending_attestationInter-chaînes : en attente de l'attestation CCTP de Circle
ready_to_mintInter-chaînes : attestation reçue, mint en cours sur la chaîne de destination
minted_pending_transferInter-chaînes : minté, transfert vers le wallet du commerçant
failedPaiement échoué (vérifiez failure_reason)
GET/payments
Auth RequiredLister les paiements du commerçant

Renvoie la liste paginée des paiements pour le commerçant authentifié.

Paramètres de requête

statusstringOptional

Filtre : "pending", "completed", "failed"

currencystringOptional

Filtre : "USDC" ou "EURC"

startDatestringOptional

Filtre : chaîne de date ISO

endDatestringOptional

Filtre : chaîne de date ISO

searchstringOptional

Recherche dans tx_hash, from_address, customer_email, reference (3 caractères min.)

limitnumberOptional

Résultats par page (par défaut : 50)

offsetnumberOptional

Décalage de pagination (par défaut : 0)

sortBystringOptional

Champ de tri (ex. : "created_at", "amount")

sortDirectionstringOptional

"asc" ou "desc"

sincestringOptional

Date/heure ISO : renvoie uniquement les paiements créés après cette date. Utile pour l'interrogation en temps réel.

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 RequiredObtenir les détails du paiement

Renvoie tous les détails d'un paiement spécifique, y compris tous les champs CCTP.

GET/payments/api/list
Auth RequiredLister les paiements (API Key)

Renvoie la liste paginée des paiements pour le commerçant authentifié via API Key. Utile pour la réconciliation côté serveur et la vérification des données de webhook.

Paramètres de requête

statusstringOptional

Filtre : "pending", "completed", "failed"

currencystringOptional

Filtre : "USDC" ou "EURC"

startDatestringOptional

Filtre : chaîne de date ISO

endDatestringOptional

Filtre : chaîne de date ISO

searchstringOptional

Recherche dans tx_hash, from_address, customer_email, reference (3 caractères min.)

limitnumberOptional

Résultats par page (par défaut : 50, max : 200)

offsetnumberOptional

Décalage de pagination (par défaut : 0)

sortBystringOptional

Champ de tri (ex. : "created_at", "amount")

sortDirectionstringOptional

"asc" ou "desc"

sincestringOptional

Date/heure ISO : renvoie uniquement les paiements créés après cette date

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 RequiredObtenir les détails du paiement (API Key)

Renvoie tous les détails d'un paiement spécifique. Utilisez ceci pour vérifier un paiement après avoir reçu une notification webhook.

Paramètres de chemin

idstringRequired

UUID du paiement

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

Flux typique

1. Recevoir le webhook → 2. Vérifier avec → 3. Traiter la commande.payment.completedGET /payments/api/:id
GET/payments/cctp-fee
Estimer les frais inter-chaînes

Renvoie un devis de frais signé pour un paiement inter-chaînes (CCTP). Le widget l'appelle automatiquement, mais vous pouvez l'utiliser pour des intégrations personnalisées afin d'afficher le détail des frais avant que l'utilisateur ne paie.

Paramètres de requête

destinationChainstringRequired

Nom de la blockchain de destination (ex. : "ETH", "BASE", "ARB")

productPricestringRequired

Prix du produit en 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

Devis signé

La réponse inclut une signature HMAC. Lors de la création d'un paiement inter-chaînes via , transmettez les champs du devis en tant que paramètre . Le backend vérifie la signature pour empêcher la manipulation des frais.POST /payments/create-publicfeeQuote

Commerçants

GET/merchants/:id/wallet
Obtenir l'adresse wallet du commerçant

Renvoie l'adresse wallet et la blockchain du commerçant. Utilisé par le widget pour savoir où envoyer les paiements.

Response
{
  "success": true,
  "data": {
    "wallet": {
      "id": "wallet-uuid",
      "address": "0x1234567890abcdef...",
      "blockchain": "MATIC",
      "chainId": 137
    }
  }
}
GET/merchants/:id/info
Obtenir les informations publiques du commerçant

Renvoie les informations publiques du commerçant comme le nom et les devises acceptées.

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

Sessions de paiement

Les Sessions de paiement vous permettent de créer une page de paiement hébergée par Fivo et d'y rediriger votre client. Après le paiement, le client est redirigé vers votre site. Similaire à Stripe Checkout.

i
Tous les points d'accès des Sessions de paiement (sauf ) nécessitent une authentification par API Key./public
POST/checkout/sessions
Auth RequiredCréer une session de paiement

Crée une nouvelle session de paiement et renvoie une URL pour y rediriger votre client.

Corps de la requête

amountstring | numberOptional

Montant du paiement (0.01 - 1 000 000). Omettez pour un montant variable.

currencystringOptional

"USDC" ou "EURC". Par défaut : "USDC".

return_urlstringRequired

URL de redirection après le paiement. Doit être HTTPS en production.

cancel_urlstringOptional

URL de redirection en cas d'annulation. Doit être HTTPS en production.

metadataobjectOptional

Jusqu'à 5 paires clé-valeur pour votre référence (ex. : order_id).

expires_innumberOptional

Durée de vie de la session en secondes (60 - 86400). Par défaut : 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 RequiredObtenir les détails de la session

Renvoie le statut de la session et les données de paiement liées. Utilisez ceci pour vérifier l'achèvement du paiement après le retour du client sur votre 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"
  }
}

Valeurs de statut de session

StatutDescription
openSession créée, en attente du paiement par le client
completePaiement confirmé et fonds reçus
expiredSession expirée avant que le paiement ne soit effectué
GET/checkout/sessions/:id/public
Obtenir la session (widget uniquement)

Point d'accès public utilisé par le widget de paiement pour charger les détails de la session. Renvoie uniquement les champs nécessaires au rendu de l'interface de paiement (pas de métadonnées). Vous n'avez pas besoin d'appeler ce point d'accès directement.

API Keys

i
Tous les points d'accès API Key nécessitent une authentification JWT (session commerçant connectée). Les API Keys elles-mêmes ne peuvent pas être utilisées pour gérer d'autres API Keys.
POST/api-keys
Auth RequiredCréer une nouvelle API Key

Corps de la requête

namestringRequired

Nom descriptif pour la clé (1-50 caractères)

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"
  }
}
!

Sauvegardez votre clé

L'API Key complète n'est affichée qu'une seule fois lors de la création. Stockez-la en lieu sûr. Si vous la perdez, vous devrez en créer une nouvelle.
GET/api-keys
Auth RequiredLister les API Keys

Renvoie toutes les API Keys du commerçant authentifié. Les clés sont masquées pour la sécurité (seuls les 4 derniers caractères sont affichés).

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 RequiredRévoquer une API Key

Révoque définitivement une API Key. Toute requête utilisant cette clé échouera immédiatement.

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

Factures

Les factures sont générées automatiquement lorsqu'un retrait est effectué. Chaque facture inclut un détail des frais et est stockée en PDF. Tous les endpoints nécessitent une authentification JWT.

GET/invoices
Auth RequiredLister les factures du marchand

Retourne toutes les factures du marchand authentifié, triées par date (les plus récentes en premier).

Paramètres de requête

yearnumberOptional

Filtrer par année (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 RequiredTélécharger la facture PDF

Retourne le fichier PDF de la facture directement. Utilisez mode=view pour l'affichage en ligne ou mode=download pour le telecharger.

Paramètres de chemin

idstringRequired

UUID de la facture

i

Reponse PDF directe

Cet endpoint renvoie le fichier PDF directement avec Content-Type: application/pdf. Aucune redirection ni URL temporaire.

Gestion des Webhooks (API Key)

Gérez vos endpoints de webhook de manière programmatique via API Key. Ces endpoints reflètent la configuration des webhooks du tableau de bord.

i
Tous les endpoints de gestion de webhooks nécessitent une authentification par API Key via l'en-tête .X-API-Key
GET/merchant-webhooks/api/list
Auth RequiredLister tous les webhooks

Retourne tous les endpoints de webhook configurés pour votre compte marchand.

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 RequiredCréer un webhook

Corps de la requête

urlstringRequired

URL de webhook HTTPS

eventsstring[]Required

Événements auxquels s'abonner (voir les événements disponibles ci-dessous)

descriptionstringOptional

Description (max 200 caractères)

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 RequiredObtenir les détails du webhook

Paramètres de chemin

idstringRequired

UUID du webhook

PUT/merchant-webhooks/api/:id
Auth RequiredMettre à jour un webhook

Corps de la requête

urlstringOptional

Nouvelle URL du webhook

eventsstring[]Optional

Nouvelle liste d'événements

descriptionstringOptional

Nouvelle description

is_activebooleanOptional

Activer/désactiver le webhook

DELETE/merchant-webhooks/api/:id
Auth RequiredSupprimer un webhook

Paramètres de chemin

idstringRequired

UUID du webhook

POST/merchant-webhooks/api/:id/regenerate-secret
Auth RequiredRégénérer le secret du webhook

Génère un nouveau secret HMAC pour la vérification des signatures. L'ancien secret cesse de fonctionner immédiatement.

POST/merchant-webhooks/api/:id/test
Auth RequiredEnvoyer un webhook de test

Envoie un événement de test à l'URL du webhook. Utile pour vérifier votre endpoint.payment.completed

GET/merchant-webhooks/api/:id/logs
Auth RequiredObtenir les journaux de livraison du webhook

Paramètres de requête

limitnumberOptional

Nombre de journaux à retourner (par défaut : 20, max : 100)

GET/merchant-webhooks/api/events
Auth RequiredLister les événements disponibles

Retourne tous les événements de webhook auxquels vous pouvez vous abonner, avec des descriptions.

Solde (API Key)

GET/wallets/api/balance
Auth RequiredObtenir le solde du portefeuille

Retourne le solde USDC et EURC de votre portefeuille principal. Utile pour surveiller les fonds disponibles avant de déclencher des retraits.

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

Pas de cache

Cet endpoint retourne toujours des données à jour. La réponse inclut les en-têtes .Cache-Control: no-store

Factures (API Key)

Accédez à vos factures de manière programmatique via API Key. Les factures sont générées automatiquement lorsqu'un retrait est effectué.

GET/invoices/api/list
Auth RequiredLister les factures

Paramètres de requête

yearnumberOptional

Filtrer par année (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 RequiredTélécharger la facture PDF

Paramètres de chemin

idstringRequired

UUID de la facture

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

Reponse PDF directe

Retourne le fichier PDF directement avec Content-Type: application/pdf.

Remboursements (API Key)

Émettez des remboursements pour les paiements effectués. Les remboursements sont envoyés on-chain à l'adresse de l'expéditeur d'origine. Tous les endpoints nécessitent une authentification par API Key via l'en-tête .X-API-Key

POST/refunds/api/create
Auth RequiredCréer un remboursement

Crée un remboursement pour un paiement effectué. Par défaut, rembourse le montant total du paiement. Les remboursements partiels sont possibles en spécifiant un .amount

Corps de la requête

paymentIdstringRequired

UUID du paiement à rembourser

amountstringOptional

Montant à rembourser (par défaut, le montant total du paiement)

reasonstringRequired

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

notestringOptional

Note interne concernant le remboursement (max 500 caractères)

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

Délai de remboursement

Les remboursements peuvent être émis jusqu'à 180 jours après la réalisation du paiement original.
GET/refunds/api/list
Auth RequiredLister les remboursements

Retourne une liste paginée des remboursements pour le marchand authentifié.

Paramètres de requête

statusstringOptional

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

currencystringOptional

Filtre : "USDC" ou "EURC"

searchstringOptional

Rechercher dans l'ID de paiement, l'adresse de destination, le hash de transaction

limitnumberOptional

Résultats par page (par défaut : 50, max : 200)

offsetnumberOptional

Décalage de pagination (par défaut : 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 RequiredObtenir les détails du remboursement

Retourne les détails complets d'un remboursement spécifique, y compris les données du paiement associé.

Paramètres de chemin

idstringRequired

UUID du remboursement

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 RequiredAnnuler un remboursement en attente

Annule un remboursement qui est encore en statut . Les remboursements déjà en cours de traitement ou terminés ne peuvent pas être annulés.pending

Paramètres de chemin

idstringRequired

UUID du remboursement

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

Les webhooks notifient votre serveur en temps réel lorsque des événements de paiement se produisent. Configurez les webhooks dans votre ou via l{api}.tableau de bordAPI de gestion des webhooks.

Événements

ÉvénementDescription
payment.completedPaiement réussi et fonds reçus par le marchand
payment.failedPaiement échoué
refund.createdUn remboursement a été créé pour un paiement
refund.completedRemboursement effectué on-chain et envoyé au client
refund.failedRemboursement échoué (vérifiez 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"
  }
}

En-têtes

En-têteDescription
X-Fivo-SignatureSignature HMAC-SHA256 ()sha256=hex
X-Fivo-EventType d'événement (ex. )payment.completed
X-Fivo-TimestampHorodatage Unix (secondes) de l'envoi du webhook
X-Fivo-Test ou , indique s'il s'agit d'un webhook de testtruefalse

Vérification des signatures

Vérifiez toujours l'en-tête pour vous assurer que le webhook provient de 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');
});
!

Fiabilité des Webhooks

Votre endpoint doit répondre avec un code 2xx en 5 secondes. Après 10 échecs consécutifs, le webhook est automatiquement désactivé. HTTPS est requis en production.

Format de réponse

Toutes les réponses de l'API suivent un format cohérent :

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

Besoin d'aide ?

Consultez notre guide de gestion des erreurs ou contactez le support.