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

# Evento de pago con stablecoin

> Referencia del payload STABLE_COIN_PAYMENT_WEBHOOK que VelaFi envía a tu endpoint cuando se confirma una orden de pago con stablecoin.

Cuando se confirma una orden de pago con stablecoin, VelaFi envía una solicitud HTTP POST firmada a tu endpoint de `STABLE_COIN_PAYMENT_WEBHOOK`. Este es el único evento de pago con stablecoin que envía VelaFi. Las órdenes rechazadas, canceladas, reembolsadas o marcadas por una diferencia de monto o de red no disparan un webhook. El payload incluye los detalles completos de la orden, los datos de la transacción en blockchain y las direcciones on-chain involucradas. Tu endpoint debe verificar el header `signature` y devolver HTTP 200 con `{"callbackStatus": "SUCCESS"}` para confirmar la recepción. VelaFi reintenta la entrega si tu endpoint no responde dentro del tiempo límite.

## Headers de la solicitud

| Header | Descripción |
| - | - |
| `signature` | Firma RSA-SHA256 del cuerpo sin procesar de la solicitud, codificada en hexadecimal. Usa la `publicKey` de tu webhook para verificarla. Consulta [Configuración de webhooks](https://docs.velafi.com/es/api-reference/webhooks/webhook-setup.md). |
| `Content-Type` | `application/json` |

## Campos del payload

**webhookId** `string`

ID del endpoint de webhook que entregó este evento.

**eventType** `string`

Siempre `STABLE_COIN_PAYMENT_WEBHOOK` para este tipo de evento.

**orderId** `string`

ID único de la orden de pago.

**userId** `string`

ID del usuario asociado a la orden de pago.

**merchantId** `string`

ID del comercio al que pertenece esta orden de pago.

**linkId** `string`

ID del link de pago que generó esta orden.

**walletId** `string`

ID de la billetera de destino.

**walletName** `string`

Nombre legible de la billetera de destino.

**referenceId** `string`

Número de referencia de la orden proporcionado por el comercio.

**currency** `string`

Stablecoin del pago (p. ej., `USDT`, `USDC`).

**network** `string`

Código de la red (p. ej., `USDT-POL`, `USDT-BEP20`).

**networkName** `string`

Nombre legible de la red (p. ej., `Polygon (POS)`, `Binance Smart Chain (BEP20)`).

**depositAmount** `string`

Monto bruto depositado por el pagador.

**feeAmount** `string`

Comisión de la transacción descontada del depósito.

**receivedAmount** `string`

Monto neto recibido después de comisiones (`depositAmount - feeAmount`).

**status** `string`

Estado de la orden al momento de la entrega. Como este webhook se envía cuando se confirma la orden, el valor normalmente es `CONFIRMED`.

**fromAddress** `string`

Dirección on-chain de la billetera remitente.

**toAddress** `string`

Dirección on-chain de la billetera destinataria.

**txHash** `string`

Hash de la transacción en blockchain de la liquidación on-chain.

**paymentLink** `string`

URL del link de pago asociado a esta orden.

**createTime** `string`

Marca de tiempo Unix (milisegundos) en que se creó la orden.

**cancelTime** `string`

Marca de tiempo Unix (milisegundos) en que se cancela la orden si no se paga. Se establece en 30 minutos después de `createTime` al crear la orden, por lo que las órdenes confirmadas también lo tienen.

**processTime** `string`

Marca de tiempo Unix (milisegundos) en que comenzó el procesamiento.

**confirmTime** `string`

Marca de tiempo Unix (milisegundos) en que se confirmó la transacción on-chain.

**timestamp** `string`

Marca de tiempo Unix (milisegundos) en que se firmó este intento de entrega.

## Ejemplo de payload

```json Cuerpo del POST entrante theme={null}
{
  "webhookId": "ebab8a9663704e7cbbebe672c7c67912",
  "eventType": "STABLE_COIN_PAYMENT_WEBHOOK",
  "orderId": "619586512161566720",
  "userId": "9876543",
  "merchantId": "42",
  "linkId": "619570217441521664",
  "walletId": "1",
  "walletName": "Main USDT Wallet",
  "referenceId": "REF-2024-05-03-001",
  "currency": "USDT",
  "network": "USDT-POL",
  "networkName": "Polygon (POS)",
  "depositAmount": "1000",
  "feeAmount": "2.5",
  "receivedAmount": "997.5",
  "status": "CONFIRMED",
  "fromAddress": "0x1234567890abcdef1234567890abcdef12345678",
  "toAddress": "0x9876543210fedcba9876543210fedcba98765432",
  "txHash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
  "paymentLink": "https://www.velafi.com/velafi-payments?linkId=619570217441521664",
  "createTime": "1714671600000",
  "cancelTime": "1714673400000",
  "processTime": "1714672200000",
  "confirmTime": "1714672800000",
  "timestamp": "1714672801000"
}
```

## Respuesta requerida

Devuelve el siguiente cuerpo JSON con el estado HTTP `200`:

```json Tu respuesta theme={null}
{
  "callbackStatus": "SUCCESS"
}
```

> [!NOTE]
>
> Todos los valores se envían como cadenas JSON. Las marcas de tiempo están en milisegundos Unix, y una marca de tiempo que no está establecida se envía como la cadena `"null"`. El `txHash` identifica de forma única la liquidación on-chain; úsalo para verificar la finalidad de forma independiente en la blockchain si tu flujo de cumplimiento lo requiere.


## Related topics

- [Evento de pago global](https://docs.velafi.com/es/api-reference/webhooks/fiat-fiat-order-message-push.md)
- [Evento de retiro cripto](https://docs.velafi.com/es/api-reference/webhooks/crypto-withdraw-message-push.md)
- [Crear un webhook](https://docs.velafi.com/es/api-reference/webhooks/create-webhook-endpoints.md)
- [Configuración de webhooks](https://docs.velafi.com/es/api-reference/webhooks/webhook-setup.md)
- [Evento de orden](https://docs.velafi.com/es/api-reference/webhooks/fiat-crypto-order-message-push.md)


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