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

# Receber e pagar em moeda local

> Receba uma transferência bancária em moeda local por meio de uma conta virtual, liquide-a como stablecoin e pague-a em uma conta bancária local com o Saque em Fiat.

> [!NOTE]
>
> Em resumo\\
>
> Seu cliente paga em uma conta virtual por transferência bancária. A Blockradar
> liquida o pagamento como stablecoin na sua carteira e envia `onramp.success`. Seu
> handler de webhooks então paga o valor em moeda local com o Saque em Fiat. Nem
> seu cliente nem o destinatário precisam ver ou manter a stablecoin.

Este guia usa a naira (NGN) como exemplo: uma conta virtual em NGN que liquida
em USDC na Base e um pagamento em NGN para uma conta bancária nigeriana. O mesmo
fluxo funciona para qualquer moeda que suporte
[depósitos e pagamentos](https://docs.blockradar.co/pt/use-cases/supported-fiat-currencies.md).

## Pré-requisitos

* **Aprovação de compliance** para os corredores que você usa, tanto do lado do
  depósito quanto do pagamento. Consulte as
  [perguntas frequentes](https://docs.blockradar.co/pt/introduction/faq.md) para ver o que a verificação da
  empresa envolve.
* **Contas virtuais habilitadas** na sua conta. Consulte os
  [pré-requisitos de Contas Virtuais](https://docs.blockradar.co/pt/use-cases/virtual-accounts.md#pré-requisitos).
* **Um endpoint de webhooks** que verifique as assinaturas. Consulte
  [Webhooks](https://docs.blockradar.co/pt/utilities/webhooks.md).

## Como funciona

**1. Crie uma conta virtual**

Crie uma conta virtual na sua carteira com NGN como moeda e USDC como ativo
de destino. Siga as [etapas 1 a 3 de Contas
Virtuais](https://docs.blockradar.co/pt/use-cases/virtual-accounts.md#etapa-1-descobrir-opções).

**2. Seu cliente paga por transferência bancária**

Compartilhe o número da conta com seu cliente. Quando a transferência chega,
a Blockradar envia `onramp.processing`, depois liquida o USDC na sua carteira
e envia `onramp.success`.

**3. Pague ao receber onramp.success**

Seu handler de webhooks encontra o ativo do Saque em Fiat para a stablecoin
liquidada e então obtém uma taxa, cota e executa um pagamento em NGN. Siga as
[etapas 1 a 7 do Saque em Fiat](https://docs.blockradar.co/pt/use-cases/withdraw-fiat.md#etapa-1-obter-ativos-suportados).

**4. Confirme o pagamento**

O Saque em Fiat envia seus próprios webhooks à medida que o pagamento avança.
Consulte os [webhooks do Saque em Fiat](https://docs.blockradar.co/pt/use-cases/withdraw-fiat.md#webhooks).

## O webhook onramp.success

Os campos de que você precisa para o pagamento são `toCurrency` (a stablecoin
liquidada), `toAmount` (quanto foi liquidado) e `wallet.id` (onde foi liquidado):

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

Use `data.id` para processar cada evento uma única vez. O mesmo evento pode ser
entregue mais de uma vez.

## Inicie o pagamento a partir do 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
}
```

## Se a conta virtual liquidar em cNGN

Uma conta virtual pode liquidar em cNGN em vez de USDC, se as opções de
descoberta oferecerem isso. cNGN só é pago em NGN. Para pagar cNGN em outra
moeda, faça primeiro um swap para USDC. Consulte
[Swap antes de pagar](https://docs.blockradar.co/pt/use-cases/withdraw-fiat.md#swap-antes-de-pagar).

## Veja também

* [Contas Virtuais](https://docs.blockradar.co/pt/use-cases/virtual-accounts.md)
* [Saque em Fiat](https://docs.blockradar.co/pt/use-cases/withdraw-fiat.md)
* [Moedas Fiat Suportadas](https://docs.blockradar.co/pt/use-cases/supported-fiat-currencies.md)
* [Fluxos fiat para clientes](https://docs.blockradar.co/pt/guides/customer-fiat-flows.md)


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