> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blockradar.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Encaisser et payer en devise locale

> Encaissez un virement bancaire en devise locale via un compte virtuel, réglez-le en stablecoin et versez-le sur un compte bancaire local avec Retrait en Fiat.

> [!NOTE]
>
> En bref\\
>
> Votre client paie sur un compte virtuel par virement bancaire. Blockradar règle
> le paiement en stablecoin sur votre portefeuille et envoie `onramp.success`.
> Votre gestionnaire de webhooks verse ensuite le montant en devise locale avec
> Retrait en Fiat. Ni votre client ni le bénéficiaire n’ont à voir ou à détenir la
> stablecoin.

Ce guide prend le naira (NGN) comme exemple : un compte virtuel en NGN réglé en
USDC sur Base, et un paiement en NGN vers un compte bancaire nigérian. Le même
flux fonctionne pour toute devise qui prend en charge les
[dépôts et les paiements](https://docs.blockradar.co/fr/use-cases/supported-fiat-currencies.md).

## Prérequis

* **Une approbation de conformité** pour les corridors que vous utilisez, côté
  dépôt comme côté paiement. Consultez la
  [FAQ](https://docs.blockradar.co/fr/introduction/faq.md) pour savoir ce qu’implique la vérification de
  l’entreprise.
* **Les comptes virtuels activés** sur votre compte. Consultez les
  [prérequis des Comptes Virtuels](https://docs.blockradar.co/fr/use-cases/virtual-accounts.md#prérequis).
* **Un endpoint de webhooks** qui vérifie les signatures. Consultez
  [Webhooks](https://docs.blockradar.co/fr/utilities/webhooks.md).

## Fonctionnement

**1. Créez un compte virtuel**

Créez un compte virtuel sur votre portefeuille avec NGN comme devise et USDC
comme actif de destination. Suivez les [étapes 1 à 3 des Comptes
Virtuels](https://docs.blockradar.co/fr/use-cases/virtual-accounts.md#étape-1-découvrir-les-options).

**2. Votre client paie par virement bancaire**

Communiquez le numéro de compte à votre client. À l’arrivée de son virement,
Blockradar envoie `onramp.processing`, puis règle l’USDC sur votre
portefeuille et envoie `onramp.success`.

**3. Payez à la réception de onramp.success**

Votre gestionnaire de webhooks trouve l’actif Retrait en Fiat correspondant à
la stablecoin réglée, puis obtient un taux, demande un devis et exécute un
paiement en NGN. Suivez les [étapes 1 à 7 de Retrait en
Fiat](https://docs.blockradar.co/fr/use-cases/withdraw-fiat.md#étape-1-obtenir-les-actifs-pris-en-charge).

**4. Confirmez le paiement**

Retrait en Fiat envoie ses propres webhooks à mesure que le paiement
progresse. Consultez les [webhooks de Retrait en
Fiat](https://docs.blockradar.co/fr/use-cases/withdraw-fiat.md#webhooks).

## Le webhook onramp.success

Les champs nécessaires au paiement sont `toCurrency` (la stablecoin réglée),
`toAmount` (le montant réglé) et `wallet.id` (le portefeuille crédité) :

```json theme={null}
{
  "event": "onramp.success",
  "data": {
    "id": "0198f02a-9201-7000-8000-000000000002",
    "reference": "provider-payment-001",
    "type": "ONRAMP",
    "status": "SUCCESS",
    "currency": "NGN",
    "amount": "150000",
    "toCurrency": "USDC",
    "toAmount": "100",
    "virtualAccount": {
      "id": "0198f020-0000-7000-8000-000000000004",
      "accountNumber": "1234567890",
      "bankName": "Example Bank"
    },
    "paymentOrder": null,
    "wallet": {
      "id": "0198f020-0000-7000-8000-000000000005",
      "name": "Base Wallet"
    }
  }
}
```

Utilisez `data.id` pour traiter chaque événement une seule fois. Un même
événement peut être livré plusieurs fois.

## Lancer le paiement depuis le webhook

```javascript theme={null}
// Call this from your webhook endpoint after verifying the signature
async function onOnrampSuccess(event) {
  if (event.event !== "onramp.success") return;

  const { wallet, toCurrency, toAmount } = event.data;
  const assets = await fetch(
    `https://api.blockradar.co/v2/wallets/${wallet.id}/withdraw/fiat/assets`,
    { headers: { "x-api-key": process.env.BLOCKRADAR_API_KEY } },
  ).then((r) => r.json());
  const assetId = assets.data?.find((a) => a.asset?.symbol === toCurrency)?.id;

  // Continue with Steps 2 to 7 of Withdraw Fiat, using wallet.id, assetId,
  // currency NGN and an amount no larger than toAmount
}
```

## Si le compte virtuel est réglé en cNGN

Un compte virtuel peut être réglé en cNGN au lieu d’USDC, si ses options de
découverte le proposent. Le cNGN se paie uniquement en NGN. Pour verser du cNGN
dans une autre devise, effectuez d’abord un swap vers l’USDC. Consultez
[Swap avant le paiement](https://docs.blockradar.co/fr/use-cases/withdraw-fiat.md#swap-avant-le-paiement).

## Voir aussi

* [Comptes Virtuels](https://docs.blockradar.co/fr/use-cases/virtual-accounts.md)
* [Retrait en Fiat](https://docs.blockradar.co/fr/use-cases/withdraw-fiat.md)
* [Devises Fiat Compatibles](https://docs.blockradar.co/fr/use-cases/supported-fiat-currencies.md)
* [Flux fiat pour les clients](https://docs.blockradar.co/fr/guides/customer-fiat-flows.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.