> ## 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.

# Cobrar y pagar en moneda local

> Cobra una transferencia bancaria en moneda local con una cuenta virtual, liquídala como stablecoin y págala a una cuenta bancaria local con Retiro a Fiat.

> [!NOTE]
>
> En resumen\\
>
> Tu cliente paga a una cuenta virtual por transferencia bancaria. Blockradar
> liquida el pago como stablecoin en tu billetera y envía `onramp.success`. Tu
> manejador de webhooks paga entonces el importe en moneda local con Retiro a Fiat.
> Ni tu cliente ni el destinatario tienen que ver ni tener la stablecoin.

Esta guía usa la naira (NGN) como ejemplo: una cuenta virtual en NGN que se
liquida en USDC en Base y un pago en NGN a una cuenta bancaria nigeriana. El
mismo flujo funciona con cualquier moneda que admita
[depósitos y pagos](https://docs.blockradar.co/es/use-cases/supported-fiat-currencies.md).

## Requisitos previos

* **Aprobación de cumplimiento** para los corredores que uses, tanto del lado del
  depósito como del pago. Consulta las
  [preguntas frecuentes](https://docs.blockradar.co/es/introduction/faq.md) para saber qué implica la
  verificación de la empresa.
* **Cuentas virtuales activadas** en tu cuenta. Consulta los
  [requisitos previos de Cuentas Virtuales](https://docs.blockradar.co/es/use-cases/virtual-accounts.md#requisitos-previos).
* **Un endpoint de webhooks** que verifique las firmas. Consulta
  [Webhooks](https://docs.blockradar.co/es/utilities/webhooks.md).

## Cómo funciona

**1. Crea una cuenta virtual**

Crea una cuenta virtual en tu billetera con NGN como moneda y USDC como
activo de destino. Sigue los [pasos 1 a 3 de Cuentas
Virtuales](https://docs.blockradar.co/es/use-cases/virtual-accounts.md#paso-1-descubrir-opciones).

**2. Tu cliente paga por transferencia bancaria**

Comparte el número de cuenta con tu cliente. Cuando llega su transferencia,
Blockradar envía `onramp.processing`, luego liquida el USDC en tu billetera y
envía `onramp.success`.

**3. Paga al recibir onramp.success**

Tu manejador de webhooks busca el activo de Retiro a Fiat para la stablecoin
liquidada y luego obtiene una tasa, cotiza y ejecuta un pago en NGN. Sigue
los [pasos 1 a 7 de Retiro a Fiat](https://docs.blockradar.co/es/use-cases/withdraw-fiat.md#paso-1-obtener-los-activos-compatibles).

**4. Confirma el pago**

Retiro a Fiat envía sus propios webhooks a medida que avanza el pago.
Consulta los [webhooks de Retiro a Fiat](https://docs.blockradar.co/es/use-cases/withdraw-fiat.md#webhooks).

## El webhook onramp.success

Los campos que necesitas para el pago son `toCurrency` (la stablecoin que se
liquidó), `toAmount` (cuánto se liquidó) y `wallet.id` (dónde se liquidó):

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

Usa `data.id` para procesar cada evento una sola vez. El mismo evento puede
entregarse más de una vez.

## Inicia el pago desde el 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 la cuenta virtual se liquida en cNGN

Una cuenta virtual puede liquidarse en cNGN en lugar de USDC, si sus opciones de
descubrimiento lo ofrecen. cNGN solo se paga en NGN. Para pagar cNGN en otra
moneda, haz primero un swap a USDC. Consulta
[Swap antes de pagar](https://docs.blockradar.co/es/use-cases/withdraw-fiat.md#swap-antes-de-pagar).

## Ver también

* [Cuentas Virtuales](https://docs.blockradar.co/es/use-cases/virtual-accounts.md)
* [Retiro a Fiat](https://docs.blockradar.co/es/use-cases/withdraw-fiat.md)
* [Monedas Fiat Compatibles](https://docs.blockradar.co/es/use-cases/supported-fiat-currencies.md)
* [Flujos fiat para clientes](https://docs.blockradar.co/es/guides/customer-fiat-flows.md)


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