> For the complete documentation index, see [llms.txt](https://docs.ston.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ston.fi/es/seccion-para-desarrolladores/omniston/referral-fees.md).

# Comisiones de referencia

Esta guía explica cómo se aplican las comisiones de referencia en el **protocolo de agregación de liquidez Omniston** cuando las operaciones se enrutan a través de **DEX v1, DEX v2, DeDust, Tonco o Escrow**.

> **Inicio rápido:** ¿Buscas ejemplos de código? Ve a [guías de implementación específicas de la plataforma](#platform-specific-implementation-guides) para ver ejemplos de integración con SDK y API.

***

## Especificación de parámetros de referencia

Cuando solicitas una cotización, puedes adjuntar datos de referencia para que una parte de la comisión del swap se redirija a tu dirección.

### Parámetros de referencia de nivel superior

| Parámetro          | Descripción                                         |
| ------------------ | --------------------------------------------------- |
| `referrer_address` | Dirección TON que recibe la comisión de referencia  |
| `referrer_fee_bps` | Tasa de comisión en puntos básicos (1 bps = 0,01 %) |

### Parámetros de liquidación

| Parámetro               | Descripción                                                                                                                                                                                                                                                                           |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `flexible_referrer_fee` | Marca booleana (dentro de `settlementParams`) que permite a los resolutores reducir la comisión efectiva del referidor cuando esto ofrece una mejor tasa de swap. Valor predeterminado: `false`. Consulte [Comisión flexible del referido](#flexible-referrer-fee) para más detalles. |

> **Nota solo para TON**: Los ejemplos siguientes usan el modelo de código de blockchain solo de TON, donde `607` se refiere a TON. Para los identificadores actuales entre cadenas, consulta [Omniston API v1beta8](/es/seccion-para-desarrolladores/omniston/v1beta8.md).

**Ejemplo de JSON en una solicitud de cotización**

```json
{
  "referrer_address": {
    "blockchain": 607,
    "address": "EQCXSs2xZ2dhk9TAxzGzXra2EbG_S2SqyN8Tfi6fJ82EYiVj"
  },
  "referrer_fee_bps": 10,
  "settlement_params": {
    "flexible_referrer_fee": true
  }
}
```

### guías de implementación específicas de la plataforma

Para ver ejemplos detallados de implementación y muestras de código:

* [**SDK de Node.js**](/es/seccion-para-desarrolladores/omniston/sdk/nodejs.md#send-a-quote-request) - Integración TypeScript/JavaScript con parámetros de referencia
* [**SDK de React**](/es/seccion-para-desarrolladores/omniston/sdk/react.md#send-a-quote-request) - Hooks y componentes de React para el seguimiento de referencias
* [**API gRPC**](/es/seccion-para-desarrolladores/omniston/swap/grpc.md#typical-flow-traders) - Integración directa de gRPC para implementaciones personalizadas
* [**API de WebSocket**](/es/seccion-para-desarrolladores/omniston/swap.md#subscription-method-quote) - Streaming de cotizaciones en tiempo real con soporte de referencia

***

## Comisión flexible del referido

La `flexible_referrer_fee` parámetro (parte de `settlementParams` / `RequestSettlementParams`) permite que el protocolo Omniston ajuste automáticamente a la baja tu comisión de referencia cuando hacerlo proporcione una mejor tasa de swap para el usuario.

### Por qué existe esta función

Esta función se diseñó para resolver un problema específico de compatibilidad entre distintas versiones de DEX:

* **DEX v1** tiene una comisión máxima fija de referencia de **0.1%** (10 bps) aplicada por el contrato del pool
* **DEX v2, DeDust, Tonco y Escrow** admiten comisiones configurables de **0,01 % a 1 %**

**El problema:** Supón que estableces una comisión de referencia de **0.3%** (30 bps) en tu solicitud de cotización. Si la mejor tasa de swap resulta ser a través de un **pool DEX v1**, esa ruta normalmente se excluiría porque v1 no puede admitir una comisión de referencia del 0,3 %. Esto obliga al protocolo a usar una ruta subóptima a través de v2, DeDust, Tonco o Escrow, incluso si el pool v1 ofrece una tasa significativamente mejor para el usuario.

**La solución:** Cuando activas `flexible_referrer_fee: true`, el protocolo puede reducir automáticamente tu comisión de referencia de 0,3 % a 0,1 % al enrutar a través de pools v1. Esto permite que el usuario se beneficie de la mejor tasa disponible mientras tú sigues ganando la comisión de referencia máxima que admite v1.

### Directrices de uso

* Valor predeterminado: `false`—debes activarlo explícitamente
* Solo afecta a rutas en las que una comisión más baja desbloquearía una mejor tasa
* Tu comisión de referencia nunca se aumentará; solo se reducirá cuando sea beneficioso
* Más útil al establecer comisiones de referencia por encima de 0,1 % (10 bps)

**Escenario de ejemplo:**

```json
{
  "referrer_address": { "blockchain": 607, "address": "EQC..." },
  "referrer_fee_bps": 30,
  "settlement_params": {
    "flexible_referrer_fee": true
  }
}
```

Con esta configuración:

* Si la mejor tasa es a través de v2/DeDust/Tonco/Escrow: recibes la comisión completa de **0.3%**
* Si la mejor tasa es a través de v1: tu comisión se reduce automáticamente a **0.1%**, pero el usuario obtiene una mejor tasa de swap

***

## Comisiones de referencia con DEX v1

| Característica       | Detalles                                                       |
| -------------------- | -------------------------------------------------------------- |
| **Tasa de comisión** | 0,1 % fijo (10 bps) aplicado por el contrato del pool          |
| **Liquidación**      | Pagada en cadena en la *misma* tx de swap a `referrer_address` |

No se requiere nada más: las comisiones llegan automáticamente.

***

## Comisiones de referencia con DEX v2

### 1 · Cómo se acumulan las comisiones

* La tasa de comisión es configurable de **0,01 % a 1 %** por swap.
* En lugar de pagarse al instante, las comisiones se depositan en una **Bóveda** (una bóveda por *token × dirección de referencia* ).

### 2 · Retiro de tus comisiones

Las comisiones de referencia de DEX v2 se almacenan en una bóveda especial y deben reclamarse manualmente.

**Para reclamar tus comisiones:**

1. Ve a la interfaz de la bóveda visitando el siguiente enlace: <https://sdk-demo-app.ston.fi/vault>
2. Conecta tu cartera al sitio.
3. Una vez conectada, la interfaz mostrará todas las comisiones de referencia disponibles que puedes reclamar.
4. Encuentra la comisión que deseas reclamar y haz clic en el botón "Claim".
5. Se enviará una transacción a tu cartera — confírmala.
6. Después de la confirmación, las comisiones de referencia reclamadas aparecerán en tu cartera.

**Para retiradas automatizadas mediante SDK/código:**

Para una referencia totalmente funcional, abre la **demostración de retiro de la bóveda** dentro de nuestro monorepo del SDK:

<https://github.com/ston-fi/sdk/tree/main/examples/next-js-app/app/vault>

### Cómo funciona en la práctica

* Supón que un trader intercambia **A → B** y se especifica una comisión de referencia.
* Durante ese swap, el **Router** despliega (o reutiliza) una **Bóveda** cuya dirección se deriva de forma determinista de la **dirección del pool** y la **dirección del router**.
* La API puede descubrir automáticamente todas tus bóvedas usando el `/v1/wallets/{addr_str}/fee_vaults` endpoint, eliminando la necesidad de rastrear manualmente las direcciones de los pools.
* Con las direcciones de las bóvedas recuperadas, instancia una `Router` desde el SDK y llama al helper (por ejemplo, `withdrawFees()`) para cobrar los tokens acumulados mediante TonConnect o cualquier integración de cartera preferida.

El ejemplo vinculado muestra este flujo de descubrir → instanciar → retirar de principio a fin, incluidas sólidas prácticas de TypeScript y la conexión con TonConnect.

> **Nota**\
> Para comisiones denominadas en TON en **DEX v2**, el `tokenMinter` es la *pTON* dirección maestra (`ptonMasterAddress`).

***

## Comisiones de referencia con Tonco

Para los swaps de Tonco, usamos el mismo mecanismo de comisión de referencia que DeDust a través del **contrato independiente Fee-Vault Minter**. El flujo es idéntico al de DeDust:

1. Encuentra tu bóveda personal usando los mismos métodos descritos en la sección de DeDust
2. Reclama las comisiones enviando un mensaje a tu bóveda con `collectFees()`
3. Las comisiones TON se acreditan al instante, mientras que las comisiones jetton se acumulan en tu bóveda

Consulta la sección de DeDust a continuación para obtener instrucciones detalladas de implementación.

> **Estado de la API** En este momento, Omniston no expone las comisiones de referencia de Tonco a través de la API REST pública. Para rastrear estas comisiones debes usar el flujo en cadena descrito arriba o tu propio indexador hasta que se publique la API de omni-fees.

***

## Comisiones de referencia con DeDust

Para los swaps de DeDust, implementamos nuestro propio mecanismo de comisión de referencia a través de un **contrato independiente Fee-Vault Minter**. Este flujo omite el Router usado en Ston.fi DEX v2, por lo que **los ayudantes existentes del SDK no pueden usarse**—debes llamar directamente a los métodos del contrato en cadena.

> **Actualización importante:** Hemos desplegado un nuevo contrato Fee-Vault Minter en `EQCcJf2KFlH9xIx3dztytxxRFk3KQZKEYBr-f0nFIO1h3dvv`. Las nuevas comisiones se dirigirán a este nuevo contrato. Los usuarios pueden reclamar comisiones de contratos anteriores (`EQD5TIvGT6NxphRDKX9wRUkJOHyE0VTuTGdVSGA5N_b62naH`, `EQBCAUfvMMSn-WHP0bKDs4wUVOK1r55OuHJIq25_QnVFCFye`y `EQAAoyu0C-aMYGPVEoMfuAge2-meJWeO5KLJKrKWJAJAKXGL`) y del nuevo contrato.

> **Nota de implementación:** Los ejemplos de código a continuación demuestran **llamadas a contratos en cadena** usando la blockchain TON. Estas son **no forman parte del SDK de STON.fi**. Para usarlas, necesitas:
>
> 1. **entorno de desarrollo TON** - Usa [Blueprint](https://github.com/ton-org/blueprint) marco con `@ton/core` y `@ton/ton` paquetes
> 2. **envoltorios de contrato** - Debes implementar clases envoltorio (`FeeVaultMinter`, `FeeVaultContract`) para los contratos de la bóveda de comisiones. Para `JettonMaster`, puedes usar el de `@ton/ton`
> 3. **acceso RPC** - Un proveedor RPC de TON como [toncenter.com](https://toncenter.com) para consultas a la blockchain
>
> Si prefieres no escribir envoltorios de contrato, consulta la [Enfoque RPC de bajo nivel](#low-level-rpc-approach) sección a continuación.

### 1 · Encuentra tu bóveda personal

Cada jetton tiene su propio contrato de bóveda. Para encontrar la dirección de tu bóveda para un jetton específico:

1. **Obtén la dirección de la cartera jetton del Fee-Vault Minter** Cada **Fee-Vault Minter** posee una *cartera jetton normal*. Recupérala mediante `jettonMaster.getWalletAddress(feeVaultMinter.address)`.
2. **Consulta tu bóveda personal** llamando a `feeVaultMinter.getVaultAddress({ owner: <your_wallet>, jettonWallet: <feeVaultMinterWallet> })`.

```ts
// --- Ejemplo de TypeScript ------------------------------------------------------
import { Address } from '@ton/core';
import { JettonMaster } from '@ton/ton';
// FeeVaultMinter, FeeVaultContract son envoltorios personalizados que debes implementar

// Fee-Vault Minters antiguos (para reclamar comisiones existentes):
// - EQD5TIvGT6NxphRDKX9wRUkJOHyE0VTuTGdVSGA5N_b62naH
// - EQBCAUfvMMSn-WHP0bKDs4wUVOK1r55OuHJIq25_QnVFCFye
// - EQAAoyu0C-aMYGPVEoMfuAge2-meJWeO5KLJKrKWJAJAKXGL
// Nuevo Fee-Vault Minter (para nuevas comisiones): EQCcJf2KFlH9xIx3dztytxxRFk3KQZKEYBr-f0nFIO1h3dvv
const feeVaultMinterAddress = Address.parse("EQCcJf2KFlH9xIx3dztytxxRFk3KQZKEYBr-f0nFIO1h3dvv");
const feeVaultMinter = provider.open(
  FeeVaultMinter.createFromAddress(feeVaultMinterAddress),
);

const jettonMasterAddress = Address.parse("USDT_jetton_master_address");
const ownerAddress = Address.parse("your_wallet_address"); // igual que referrer_address en la solicitud de cotización

// JettonMaster de @ton/ton (a veces llamado "Jetton Minter")
const jettonMaster = provider.open(JettonMaster.create(jettonMasterAddress));
const feeVaultMinterWallet = await jettonMaster.getWalletAddress(feeVaultMinter.address);

const vaultAddress = await feeVaultMinter.getVaultAddress({
  owner: ownerAddress,
  jettonWallet: feeVaultMinterWallet,
});

// ¿Necesitas más que solo la dirección? Consulta datos en cadena con getVaultData():
const vault = provider.open(FeeVaultContract.createFromAddress(vaultAddress));
const vaultData = await vault.getVaultData();
// vaultData.balance, vaultData.lastCollectTime, …
```

El getter devuelve:

* **`0:0`** – aún no se han acumulado comisiones para este jetton
* **dirección de la bóveda** – tu contrato Fee-Vault dedicado para este jetton

> Las direcciones de las bóvedas se derivan de forma determinista en función tanto de la dirección del referidor como de la dirección del jetton.

### 2 · Reclama las comisiones

1. Envía un mensaje interno a **tu bóveda** llamando a `collectFees()` (sin carga útil) con aproximadamente **0,3 TON** adjuntos para gas.
2. La bóveda transfiere inmediatamente los fee-tokens acumulados a **tu cartera** y restablece su saldo.
3. Para las comisiones TON, se acreditan al instante a la **dirección del referidor** durante la transacción de swap.

El flujo completo consiste en **dos o tres llamadas en cadena**:

| Paso            | Contrato         | Método                          | Propósito                                         |
| --------------- | ---------------- | ------------------------------- | ------------------------------------------------- |
| Leer            | Fee-Vault Minter | `getVaultAddress(user, jetton)` | Obtener la dirección de tu bóveda                 |
| Leer (opcional) | Tu Fee-Vault     | `getVaultData()`                | Comprobar el saldo antes de reclamar              |
| Escribir        | Tu Fee-Vault     | `collectFees()`                 | Transferir las comisiones acumuladas a tu cartera |

### Enfoque RPC de bajo nivel

Si no quieres configurar Blueprint ni escribir envoltorios de contrato, puedes consultar los datos de la bóveda directamente usando llamadas RPC a cualquier proveedor de API de TON (por ejemplo, [toncenter.com](https://toncenter.com)).

> **Codificación de slice:** Los elementos de la pila de tipo `tvm.Slice` deben codificarse como BOC en base64 (bag of cells). Para convertir una dirección en un slice:
>
> ```ts
> import { beginCell, Address } from '@ton/core';
> const addr = Address.parse("EQ...");
> const sliceBoc = beginCell().storeAddress(addr).endCell().toBoc().toString('base64');
> ```

**Paso 1: Obtén la dirección de la cartera jetton del Fee-Vault Minter**

Llama a `get_wallet_address` en el contrato Jetton Master:

```bash
curl -X POST "https://toncenter.com/api/v2/runGetMethod" \\
  -H "Content-Type: application/json" \\
  -d '{
    "address": "<JETTON_MASTER_ADDRESS>",
    "method": "get_wallet_address",
    "stack": [["tvm.Slice", "<FEE_VAULT_MINTER_ADDRESS_AS_SLICE_BOC>"]]
  }'
```

**Paso 2: Obtén la dirección de tu bóveda**

Llama a `get_vault_address` en el Fee-Vault Minter:

```bash
curl -X POST "https://toncenter.com/api/v2/runGetMethod" \\
  -H "Content-Type: application/json" \\
  -d '{
    "address": "<FEE_VAULT_MINTER_ADDRESS>",
    "method": "get_vault_address",
    "stack": [
      ["tvm.Slice", "<YOUR_WALLET_ADDRESS_AS_SLICE_BOC>"],
      ["tvm.Slice", "<FEE_VAULT_MINTER_WALLET_AS_SLICE_BOC>"]
    ]
  }'
```

**Paso 3: Consulta los datos de la bóveda**

Llama a `get_vault_data` en tu bóveda:

```bash
curl -X POST "https://toncenter.com/api/v2/runGetMethod" \\
  -H "Content-Type: application/json" \\
  -d '{
    "address": "<YOUR_VAULT_ADDRESS>",
    "method": "get_vault_data",
    "stack": []
  }'
```

La respuesta contiene celdas que codifican: dirección del propietario, dirección de la cartera jetton, saldo y dirección del minter.

> **Consejo:** Puedes ver los datos de la bóveda directamente en [tonviewer.com](https://tonviewer.com) yendo a la dirección de tu bóveda y haciendo clic en "Methods" para ejecutar `get_vault_data`.

### Verificación de la dirección de tu bóveda

Para confirmar que la dirección de tu bóveda es correcta:

1. **Calcula la dirección de la bóveda** usando el ejemplo de código anterior
2. **Abre tu transacción de swap** en [tonviewer.com](https://tonviewer.com) y expande el rastro de la transacción
3. **Encuentra la dirección de la bóveda** en el rastro: debe coincidir con la dirección calculada en tu código
4. **Navega hasta tu bóveda** en tonviewer: `https://tonviewer.com/<vault_address>?section=method`
5. **Ejecuta `get_vault_data`** - esto devuelve la misma estructura de datos que `vault.getVaultData()` en el ejemplo de código:
   * Dirección del propietario (tu dirección de referidor)
   * Dirección de la cartera Jetton
   * Saldo (comisiones acumuladas)
   * Dirección del minter

Si los datos coinciden con los valores esperados, la derivación de la dirección de tu bóveda es correcta.

> **Estado de la API** En este momento, Omniston no expone las comisiones de referencia de DeDust a través de la API REST pública. Para rastrear estas comisiones debes usar el flujo en cadena descrito arriba o tu propio indexador hasta que se publique la API de omni-fees.

***

## Comisiones de referencia con Escrow

Para los swaps de Escrow, las comisiones de referencia se recaudan a través de un **contrato Escrow Minter dedicado**. Aunque el mecanismo es conceptualmente similar al de DeDust, Escrow utiliza **distintos contratos de bóveda con distintas interfaces**—estas no son las mismas bóvedas usadas por el protocolo cross-dex.

> **Nota del SDK:** Los envoltorios del SDK (`EscrowMinter`/`EscrowVault`) aún no están disponibles en el SDK. Los ejemplos siguientes usan llamadas directas al contrato.

> **Nota de implementación:** Al igual que DeDust, la recolección de comisiones de Escrow requiere **llamadas a contratos en cadena** que son **no forman parte del SDK de STON.fi**. Necesitas:
>
> 1. **entorno de desarrollo TON** - Usa [Blueprint](https://github.com/ton-org/blueprint) marco con `@ton/core` y `@ton/ton` paquetes
> 2. **envoltorios de contrato** - Debes implementar clases envoltorio (`EscrowMinter`, `EscrowVault`) para los contratos de escrow. Para `JettonMaster`, puedes usar el de `@ton/ton`
> 3. **acceso RPC** - Un proveedor RPC de TON como [toncenter.com](https://toncenter.com) para consultas a la blockchain
>
> La [Enfoque RPC de bajo nivel](#low-level-rpc-approach) descrito en la sección de DeDust también se aplica aquí: simplemente sustituye la dirección del Escrow Minter y usa los get-methods apropiados.

### 1 · Encuentra tu bóveda personal

Cada jetton tiene su propio contrato de bóveda. Para encontrar la dirección de tu bóveda para un jetton específico:

1. **Obtén la dirección de la cartera jetton del Escrow Minter** Recupérala mediante `jettonMaster.getWalletAddress(escrowMinter.address)`.
2. **Consulta tu bóveda personal** llamando a `escrowMinter.getVaultAddress(escrowMinterWallet, ownerAddress)`.

```ts
// --- Ejemplo de TypeScript ------------------------------------------------------
import { Address } from '@ton/core';
import { JettonMaster } from '@ton/ton';
// EscrowMinter, EscrowVault son envoltorios personalizados que debes implementar

// Dirección oficial de despliegue del Escrow Minter (mainnet)
const escrowMinterAddress = Address.parse('EQAhedmtkPnKnQRlkkK3aEUDqGMg4Ewwz0LPj18HwLasAJdp');
const escrowMinter = provider.open(EscrowMinter.createFromAddress(escrowMinterAddress));

const jettonMasterAddress = Address.parse('USDT_jetton_master_address');
const ownerAddress = Address.parse('your_wallet_address'); // igual que referrer_address en la solicitud de cotización

// JettonMaster de @ton/ton (a veces llamado "Jetton Minter")
const jettonMaster = provider.open(JettonMaster.create(jettonMasterAddress));

const escrowMinterWallet = await jettonMaster.getWalletAddress(escrowMinter.address);
const vaultAddress = await escrowMinter.getVaultAddress(escrowMinterWallet, ownerAddress);
const escrowVault = provider.open(EscrowVault.createFromAddress(vaultAddress));

const vaultData = await escrowVault.getVaultData();
// {
//      minter: Address;
//      jettonWallet: Address;
//      balance: bigint;
//      owner: Address;
// }
```

El getter devuelve:

* **dirección nula o cero (`0:0`)** – aún no se han acumulado comisiones para este jetton
* **dirección de la bóveda** – tu contrato Escrow Fee-Vault dedicado para este jetton

### 2 · Retira las comisiones

Para retirar las comisiones acumuladas, llama a `sendVaultWithdrawTokens()` en tu bóveda:

```ts
// la cantidad está en unidades base del jetton; ajusta según los decimales (por ejemplo, 1_000_000n = 1 USDT para tokens de 6 decimales)
const amount = 1_000_000n; // 1 USDT

if (vaultData.owner.toString() !== ownerAddress.toString()) {
    throw new Error('El remitente no es el propietario de la bóveda');
}
if (vaultData.balance < amount) {
    throw new Error('No hay suficientes tokens en la bóveda');
}

await escrowVault.sendVaultWithdrawTokens(provider.sender(), toNano('0.2'), { // ~0,2 TON para gas (puede variar)
    queryId: 0n,
    amount: amount,
    excesses: ownerAddress,
    withdrawForwardParams: null,
});
```

El flujo completo consiste en **tres o cuatro llamadas en cadena**:

| Paso            | Contrato      | Método                                       | Propósito                                          |
| --------------- | ------------- | -------------------------------------------- | -------------------------------------------------- |
| Leer            | Jetton Master | `getWalletAddress(escrowMinter.address)`     | Obtener la cartera jetton del Escrow Minter        |
| Leer            | Escrow Minter | `getVaultAddress(escrowMinterWallet, owner)` | Obtener la dirección de tu bóveda                  |
| Leer (opcional) | Tu Fee-Vault  | `getVaultData()`                             | Comprobar el saldo y la propiedad antes de retirar |
| Escribir        | Tu Fee-Vault  | `sendVaultWithdrawTokens()`                  | Transferir las comisiones acumuladas a tu cartera  |

> **Estado de la API** En este momento, Omniston no expone las comisiones de referencia de Escrow a través de la API REST pública. Para rastrear estas comisiones debes usar el flujo en cadena descrito arriba o tu propio indexador hasta que se publique la API de omni-fees.

***

## Resumen

| Protocolo  | Mecanismo de comisión                                            | Rango      | Cómo recibir los fondos                                        |
| ---------- | ---------------------------------------------------------------- | ---------- | -------------------------------------------------------------- |
| **DEX v1** | Pago directo dentro de la tx de swap                             | 0.1 %      | Automático                                                     |
| **DEX v2** | Las comisiones se acumulan en una bóveda (*token × referidor*)   | 0,01 – 1 % | Retiro desde la UI o por código                                |
| **DeDust** | Bóvedas compatibles con tokens (una por jetton)                  | 0,01 – 1 % | TON: instantáneo, Jettons: `getVaultAddress` → `collectFees()` |
| **Tonco**  | Bóvedas compatibles con tokens (mismo flujo que DeDust)          | 0,01 – 1 % | TON: instantáneo, Jettons: `getVaultAddress` → `collectFees()` |
| **Escrow** | Bóvedas compatibles con tokens (contratos distintos a cross-dex) | 0,01 – 1 % | `getVaultAddress` → `sendVaultWithdrawTokens()`                |

## Puntos finales de la API de estadísticas y bóvedas

Además de la lectura en cadena o las llamadas directas al contrato, puedes rastrear y gestionar las comisiones de referencia usando nuestra API REST.

> **Nota de alcance** Estos endpoints exponen datos de referencia **solo para pools de STON.fi DEX**. Ellos **no** devuelven datos de referencia a nivel Omniston para rutas ejecutadas en **DeDust, Tonco o Escrow**. Se está planeando una API dedicada para comisiones de omni referral (que cubra el volumen de DeDust/Tonco/Escrow), pero aún no está disponible. Los endpoints de bóvedas de comisiones (`fee_vaults`, `fee_accruals`, `fee_withdrawals`) se aplican solo a **DEX v2**, porque no existen bóvedas en DEX v1.

* **GET** `/v1/wallets/{addr_str}/fee_vaults`\
  Enumera todas las bóvedas de comisiones de referencia para **STON.fi DEX v2** (una bóveda por `referidor × token`).\
  DEX v1 no usa bóvedas, por lo que este endpoint no mostrará actividad de referencia exclusiva de v1.
* **GET** `/v1/stats/fee_accruals`\
  Devuelve una fila por cada acumulación de comisión de referencia registrada en **las bóvedas de comisiones de referencia de STON.fi DEX v2**.\
  El conjunto de datos subyacente se construye a partir de operaciones de bóveda filtradas por propietario y rango de tiempo, por lo que **las comisiones de referencia de DEX v1 (pagadas directamente a las carteras de los referidores) no se incluyen**.
* **GET** `/v1/stats/fee_withdrawals`\
  Muestra los retiros de **DEX v2** bóvedas de comisiones de referidos.\
  No hay entradas v1 aquí, ya que las comisiones de referidos de DEX v1 nunca se almacenan en bóvedas.
* **GET** `/v1/stats/fees`\
  Devuelve métricas agregadas de comisiones de referidos (p. ej., el valor total acumulado en USD) durante un período de tiempo.\
  Usa la documentación de Swagger para conocer exactamente los filtros admitidos (p. ej., por referido, token o rango de tiempo).
* **Swagger UI** Accede a la documentación interactiva de la API en <https://api.ston.fi/swagger-ui/#/>.

***

### Recursos adicionales

**Guías de implementación:**

* [SDK de Node.js - Solicitudes de cotización](/es/seccion-para-desarrolladores/omniston/sdk/nodejs.md#send-a-quote-request)
* [SDK de React - Solicitudes de cotización](/es/seccion-para-desarrolladores/omniston/sdk/react.md#send-a-quote-request)
* [API gRPC - Flujo del trader](/es/seccion-para-desarrolladores/omniston/swap/grpc.md#typical-flow-traders)
* [API de WebSocket - Suscripción a cotizaciones](/es/seccion-para-desarrolladores/omniston/swap.md#subscription-method-quote)

**Otros recursos:**

* [Inicio rápido de Omniston](/es/seccion-para-desarrolladores/quickstart/omniston.md)
* [Contactar con soporte](/es/ayuda/contact.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ston.fi/es/seccion-para-desarrolladores/omniston/referral-fees.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
