URL de base
https://api.fivo.financeAuthentification
Les points d'accès protégés nécessitent une authentification 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...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.
Gestion des réponses POST
200201Paiements
/payments/create-publicCré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
merchantIdstringRequiredMerchant ID avec préfixe (fivo_live_UUID)
txHashstringRequiredHash de transaction blockchain (0x...)
amountnumberRequiredMontant du paiement (0.01 - 1 000 000)
expectedAmountnumberOptionalMontant 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"
chainIdnumberRequiredChain ID de la blockchain source
fromAddressstringRequiredAdresse wallet de l'expéditeur
toAddressstringRequiredAdresse wallet du commerçant
isCrossChainbooleanOptionalIndique s'il s'agit d'un paiement inter-chaînes CCTP
bridgeKitobjectOptionalPayload Bridge Kit pour les paiements inter-chaînes : { burnTxHash: string, mintTxHash?: string }. Requis pour le flux inter-chaînes Bridge Kit.
feeQuoteobjectOptionalDevis de frais signé pour les paiements inter-chaînes CCTP legacy (obsolète). Utilisez bridgeKit à la place.
destinationChainIdnumberOptionalChaîne de destination (si inter-chaînes)
sessionIdstringOptionalID de session de paiement pour lier ce paiement (si vous utilisez les sessions de paiement)
customerEmailstringRequiredAdresse e-mail du client pour l'envoi du reçu. 255 caractères max.
referencestringOptionalVotre référence interne (ID de commande, numéro de facture). 255 caractères max.
descriptionstringOptionalDescription du paiement. 500 caractères max.
metadataobjectOptionalPaires clé-valeur personnalisées pour votre usage interne. 10 Ko max.
| Name | Type | Required | Description |
|---|---|---|---|
merchantId | string | Required | Merchant ID avec préfixe (fivo_live_UUID) |
txHash | string | Required | Hash de transaction blockchain (0x...) |
amount | number | Required | Montant du paiement (0.01 - 1 000 000) |
expectedAmount | number | Optional | Montant attendu pour la validation on-chain. Requis pour les paiements sur la même chaîne, optionnel pour les paiements inter-chaînes. |
token | string | Required | "USDC" ou "EURC" |
chainId | number | Required | Chain ID de la blockchain source |
fromAddress | string | Required | Adresse wallet de l'expéditeur |
toAddress | string | Required | Adresse wallet du commerçant |
isCrossChain | boolean | Optional | Indique s'il s'agit d'un paiement inter-chaînes CCTP |
bridgeKit | object | Optional | Payload Bridge Kit pour les paiements inter-chaînes : { burnTxHash: string, mintTxHash?: string }. Requis pour le flux inter-chaînes Bridge Kit. |
feeQuote | object | Optional | Devis de frais signé pour les paiements inter-chaînes CCTP legacy (obsolète). Utilisez bridgeKit à la place. |
destinationChainId | number | Optional | Chaîne de destination (si inter-chaînes) |
sessionId | string | Optional | ID de session de paiement pour lier ce paiement (si vous utilisez les sessions de paiement) |
customerEmail | string | Required | Adresse e-mail du client pour l'envoi du reçu. 255 caractères max. |
reference | string | Optional | Votre référence interne (ID de commande, numéro de facture). 255 caractères max. |
description | string | Optional | Description du paiement. 500 caractères max. |
metadata | object | Optional | Paires clé-valeur personnalisées pour votre usage interne. 10 Ko max. |
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
}
}Réponse minimale
GET /payments/:id/payments/:id/statusRenvoie le statut actuel d'un paiement. Utile pour interroger l'état d'achèvement du paiement.
Paramètres de chemin
idstringRequiredUUID du paiement
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID du paiement |
{
"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"
}
}Point d'accès public minimal
GET /payments/:idcctp_attestation_statusnullValeurs de statut de paiement
| Statut | Description |
|---|---|
completed | Paiement réussi et fonds reçus |
pending | Paiement créé, en attente de traitement |
pending_attestation | Inter-chaînes : en attente de l'attestation CCTP de Circle |
ready_to_mint | Inter-chaînes : attestation reçue, mint en cours sur la chaîne de destination |
minted_pending_transfer | Inter-chaînes : minté, transfert vers le wallet du commerçant |
failed | Paiement échoué (vérifiez failure_reason) |
/paymentsRenvoie la liste paginée des paiements pour le commerçant authentifié.
Paramètres de requête
statusstringOptionalFiltre : "pending", "completed", "failed"
currencystringOptionalFiltre : "USDC" ou "EURC"
startDatestringOptionalFiltre : chaîne de date ISO
endDatestringOptionalFiltre : chaîne de date ISO
searchstringOptionalRecherche dans tx_hash, from_address, customer_email, reference (3 caractères min.)
limitnumberOptionalRésultats par page (par défaut : 50)
offsetnumberOptionalDécalage de pagination (par défaut : 0)
sortBystringOptionalChamp de tri (ex. : "created_at", "amount")
sortDirectionstringOptional"asc" ou "desc"
sincestringOptionalDate/heure ISO : renvoie uniquement les paiements créés après cette date. Utile pour l'interrogation en temps réel.
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filtre : "pending", "completed", "failed" |
currency | string | Optional | Filtre : "USDC" ou "EURC" |
startDate | string | Optional | Filtre : chaîne de date ISO |
endDate | string | Optional | Filtre : chaîne de date ISO |
search | string | Optional | Recherche dans tx_hash, from_address, customer_email, reference (3 caractères min.) |
limit | number | Optional | Résultats par page (par défaut : 50) |
offset | number | Optional | Décalage de pagination (par défaut : 0) |
sortBy | string | Optional | Champ de tri (ex. : "created_at", "amount") |
sortDirection | string | Optional | "asc" ou "desc" |
since | string | Optional | Date/heure ISO : renvoie uniquement les paiements créés après cette date. Utile pour l'interrogation en temps réel. |
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
"https://api.fivo.finance/payments?status=completed&limit=10&sortBy=created_at&sortDirection=desc"/payments/:idRenvoie tous les détails d'un paiement spécifique, y compris tous les champs CCTP.
/payments/api/listRenvoie 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
statusstringOptionalFiltre : "pending", "completed", "failed"
currencystringOptionalFiltre : "USDC" ou "EURC"
startDatestringOptionalFiltre : chaîne de date ISO
endDatestringOptionalFiltre : chaîne de date ISO
searchstringOptionalRecherche dans tx_hash, from_address, customer_email, reference (3 caractères min.)
limitnumberOptionalRésultats par page (par défaut : 50, max : 200)
offsetnumberOptionalDécalage de pagination (par défaut : 0)
sortBystringOptionalChamp de tri (ex. : "created_at", "amount")
sortDirectionstringOptional"asc" ou "desc"
sincestringOptionalDate/heure ISO : renvoie uniquement les paiements créés après cette date
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filtre : "pending", "completed", "failed" |
currency | string | Optional | Filtre : "USDC" ou "EURC" |
startDate | string | Optional | Filtre : chaîne de date ISO |
endDate | string | Optional | Filtre : chaîne de date ISO |
search | string | Optional | Recherche dans tx_hash, from_address, customer_email, reference (3 caractères min.) |
limit | number | Optional | Résultats par page (par défaut : 50, max : 200) |
offset | number | Optional | Décalage de pagination (par défaut : 0) |
sortBy | string | Optional | Champ de tri (ex. : "created_at", "amount") |
sortDirection | string | Optional | "asc" ou "desc" |
since | string | Optional | Date/heure ISO : renvoie uniquement les paiements créés après cette date |
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/:idRenvoie 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
idstringRequiredUUID du paiement
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID du paiement |
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"
}
}Flux typique
payment.completedGET /payments/api/:id/payments/cctp-feeRenvoie 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
destinationChainstringRequiredNom de la blockchain de destination (ex. : "ETH", "BASE", "ARB")
productPricestringRequiredPrix du produit en USD (ex. : "49.99")
| Name | Type | Required | Description |
|---|---|---|---|
destinationChain | string | Required | Nom de la blockchain de destination (ex. : "ETH", "BASE", "ARB") |
productPrice | string | Required | Prix du produit en 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..."
}
}Devis signé
POST /payments/create-publicfeeQuoteCommerçants
/merchants/:id/walletRenvoie l'adresse wallet et la blockchain du commerçant. Utilisé par le widget pour savoir où envoyer les paiements.
{
"success": true,
"data": {
"wallet": {
"id": "wallet-uuid",
"address": "0x1234567890abcdef...",
"blockchain": "MATIC",
"chainId": 137
}
}
}/merchants/:id/infoRenvoie les informations publiques du commerçant comme le nom et les devises acceptées.
{
"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.
/public/checkout/sessionsCrée une nouvelle session de paiement et renvoie une URL pour y rediriger votre client.
Corps de la requête
amountstring | numberOptionalMontant du paiement (0.01 - 1 000 000). Omettez pour un montant variable.
currencystringOptional"USDC" ou "EURC". Par défaut : "USDC".
return_urlstringRequiredURL de redirection après le paiement. Doit être HTTPS en production.
cancel_urlstringOptionalURL de redirection en cas d'annulation. Doit être HTTPS en production.
metadataobjectOptionalJusqu'à 5 paires clé-valeur pour votre référence (ex. : order_id).
expires_innumberOptionalDurée de vie de la session en secondes (60 - 86400). Par défaut : 1800 (30 min).
| Name | Type | Required | Description |
|---|---|---|---|
amount | string | number | Optional | Montant du paiement (0.01 - 1 000 000). Omettez pour un montant variable. |
currency | string | Optional | "USDC" ou "EURC". Par défaut : "USDC". |
return_url | string | Required | URL de redirection après le paiement. Doit être HTTPS en production. |
cancel_url | string | Optional | URL de redirection en cas d'annulation. Doit être HTTPS en production. |
metadata | object | Optional | Jusqu'à 5 paires clé-valeur pour votre référence (ex. : order_id). |
expires_in | number | Optional | Durée de vie de la session en secondes (60 - 86400). Par défaut : 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/:idRenvoie 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.
{
"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
| Statut | Description |
|---|---|
open | Session créée, en attente du paiement par le client |
complete | Paiement confirmé et fonds reçus |
expired | Session expirée avant que le paiement ne soit effectué |
/checkout/sessions/:id/publicPoint 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
/api-keysCorps de la requête
namestringRequiredNom descriptif pour la clé (1-50 caractères)
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Nom descriptif pour la clé (1-50 caractères) |
{
"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é
/api-keysRenvoie 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).
{
"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/:idRévoque définitivement une API Key. Toute requête utilisant cette clé échouera immédiatement.
{
"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.
/invoicesRetourne toutes les factures du marchand authentifié, triées par date (les plus récentes en premier).
Paramètres de requête
yearnumberOptionalFiltrer par année (ex. 2026)
statusstringOptional"issued" ou "rectified"
| Name | Type | Required | Description |
|---|---|---|---|
year | number | Optional | Filtrer par année (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/pdfRetourne 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
idstringRequiredUUID de la facture
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID de la facture |
Reponse PDF directe
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.
X-API-Key/merchant-webhooks/api/listRetourne tous les endpoints de webhook configurés pour votre compte marchand.
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/createCorps de la requête
urlstringRequiredURL de webhook HTTPS
eventsstring[]RequiredÉvénements auxquels s'abonner (voir les événements disponibles ci-dessous)
descriptionstringOptionalDescription (max 200 caractères)
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Required | URL de webhook HTTPS |
events | string[] | Required | Événements auxquels s'abonner (voir les événements disponibles ci-dessous) |
description | string | Optional | Description (max 200 caractères) |
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/:idParamètres de chemin
idstringRequiredUUID du webhook
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID du webhook |
/merchant-webhooks/api/:idCorps de la requête
urlstringOptionalNouvelle URL du webhook
eventsstring[]OptionalNouvelle liste d'événements
descriptionstringOptionalNouvelle description
is_activebooleanOptionalActiver/désactiver le webhook
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Optional | Nouvelle URL du webhook |
events | string[] | Optional | Nouvelle liste d'événements |
description | string | Optional | Nouvelle description |
is_active | boolean | Optional | Activer/désactiver le webhook |
/merchant-webhooks/api/:idParamètres de chemin
idstringRequiredUUID du webhook
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID du webhook |
/merchant-webhooks/api/:id/regenerate-secretGénère un nouveau secret HMAC pour la vérification des signatures. L'ancien secret cesse de fonctionner immédiatement.
/merchant-webhooks/api/:id/testEnvoie un événement de test à l'URL du webhook. Utile pour vérifier votre endpoint.payment.completed
/merchant-webhooks/api/:id/logsParamètres de requête
limitnumberOptionalNombre de journaux à retourner (par défaut : 20, max : 100)
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | Optional | Nombre de journaux à retourner (par défaut : 20, max : 100) |
/merchant-webhooks/api/eventsRetourne tous les événements de webhook auxquels vous pouvez vous abonner, avec des descriptions.
Solde (API Key)
/wallets/api/balanceRetourne le solde USDC et EURC de votre portefeuille principal. Utile pour surveiller les fonds disponibles avant de déclencher des retraits.
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" }
]
}
}Pas de cache
Cache-Control: no-storeFactures (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é.
/invoices/api/listParamètres de requête
yearnumberOptionalFiltrer par année (ex. 2026)
statusstringOptional"issued" ou "rectified"
| Name | Type | Required | Description |
|---|---|---|---|
year | number | Optional | Filtrer par année (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/pdfParamètres de chemin
idstringRequiredUUID de la facture
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID de la facture |
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.fivo.finance/invoices/api/INVOICE_UUID/pdf?mode=download"Reponse PDF directe
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
/refunds/api/createCré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
paymentIdstringRequiredUUID du paiement à rembourser
amountstringOptionalMontant à rembourser (par défaut, le montant total du paiement)
reasonstringRequired"duplicate", "fraudulent", "requested_by_customer" ou "other"
notestringOptionalNote interne concernant le remboursement (max 500 caractères)
| Name | Type | Required | Description |
|---|---|---|---|
paymentId | string | Required | UUID du paiement à rembourser |
amount | string | Optional | Montant à rembourser (par défaut, le montant total du paiement) |
reason | string | Required | "duplicate", "fraudulent", "requested_by_customer" ou "other" |
note | string | Optional | Note interne concernant le remboursement (max 500 caractères) |
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"
}
}Délai de remboursement
/refunds/api/listRetourne une liste paginée des remboursements pour le marchand authentifié.
Paramètres de requête
statusstringOptionalFiltrer : "pending", "processing", "completed", "failed", "cancelled"
currencystringOptionalFiltre : "USDC" ou "EURC"
searchstringOptionalRechercher dans l'ID de paiement, l'adresse de destination, le hash de transaction
limitnumberOptionalRésultats par page (par défaut : 50, max : 200)
offsetnumberOptionalDécalage de pagination (par défaut : 0)
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filtrer : "pending", "processing", "completed", "failed", "cancelled" |
currency | string | Optional | Filtre : "USDC" ou "EURC" |
search | string | Optional | Rechercher dans l'ID de paiement, l'adresse de destination, le hash de transaction |
limit | number | Optional | Résultats par page (par défaut : 50, max : 200) |
offset | number | Optional | Décalage de pagination (par défaut : 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/:idRetourne les détails complets d'un remboursement spécifique, y compris les données du paiement associé.
Paramètres de chemin
idstringRequiredUUID du remboursement
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID du remboursement |
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/cancelAnnule 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
idstringRequiredUUID du remboursement
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | UUID du remboursement |
curl -X POST https://api.fivo.finance/refunds/api/REFUND_UUID/cancel \
-H "X-API-Key: YOUR_API_KEY"{
"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énement | Description |
|---|---|
payment.completed | Paiement réussi et fonds reçus par le marchand |
payment.failed | Paiement échoué |
refund.created | Un remboursement a été créé pour un paiement |
refund.completed | Remboursement effectué on-chain et envoyé au client |
refund.failed | Remboursement échoué (vérifiez 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"
}
}En-têtes
| En-tête | Description |
|---|---|
X-Fivo-Signature | Signature HMAC-SHA256 ()sha256=hex |
X-Fivo-Event | Type d'événement (ex. )payment.completed |
X-Fivo-Timestamp | Horodatage 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
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
Format de réponse
Toutes les réponses de l'API suivent un format cohérent :
{
"success": true,
"data": { ... },
"message": "Optional message"
}{
"success": false,
"error": "Error description",
"details": [ ... ]
}Besoin d'aide ?
Consultez notre guide de gestion des erreurs ou contactez le support.