Guía Técnica 📅 17 de abril de 2026 ⏱️ 11 min de lectura

Cómo establecer impuestos de tokens en Solana: Guía de tarifas de transferencia SPL 2026

Escrito por el equipo de CreateMyCoin

¿Desea añadir un impuesto de compra/venta o una tarifa de transferencia a su token de Solana? El programa Token-2022 lo hace posible — on-chain, automático y a prueba de manipulaciones. Esta guía explica exactamente cómo funciona la tarifa de transferencia de tokens de Solana, qué parámetros necesita configurar y cómo habilitarlo utilizando una herramienta sin código y la CLI de SPL.

¿Qué es un impuesto de tokens en Solana?

Un impuesto de tokens en Solana — también llamado tarifa de transferencia o impuesto de tokens SPL — es una deducción automática aplicada cada vez que su token cambia de manos. Cada vez que alguien envía, compra o vende su token, un porcentaje de la cantidad transferida se retiene y se almacena en la cuenta de tokens del destinatario. El proyecto de tokens puede retirar esas tarifas retenidas a su monedero en cualquier momento.

Este es el equivalente nativo de Solana de lo que las cadenas EVM llaman un "impuesto de compra/venta" o "impuesto de reflexión". La diferencia clave: en Solana, el mecanismo de tarifas reside dentro del propio programa de tokens, no en un contrato inteligente separado. Esto lo hace más barato, más confiable y más difícil de eludir que las implementaciones de impuestos EVM.

  • Casos de uso comunes: Financiamiento de tesorería de recompra automática, fondos de recompensa de la comunidad, ingresos del equipo, mecanismos de quema a través de la redirección de tarifas
  • Quién lo controla: El monedero que tiene la autoridad de configuración de la tarifa de transferencia — establecida cuando se crea el token
  • Cuándo se cobran las tarifas: En cada transferencia de tokens SPL, automáticamente, a nivel de protocolo
  • Adónde van las tarifas: Retenidas en la cuenta de tokens del destinatario hasta que la autoridad de tarifas las recoja
En resumen: Un impuesto de tokens de Solana es completamente on-chain. Sin bot, sin interacción contractual, sin juego de gas, simplemente funciona en cada transferencia. La tarifa es aplicada por el propio entorno de ejecución de Solana.

Extensión de tarifa de transferencia Token-2022 explicada

Solana tiene dos programas de tokens: el programa de tokens SPL original (también llamado Token) y el más nuevo programa Token-2022 (también escrito como Extensiones de tokens o Token22). Las tarifas de transferencia son una característica de Token-2022, no están disponibles en el programa de tokens SPL original.

Característica Token SPL (Original) Token-2022 (Extensiones)
Tarifa de transferencia / impuesto de tokens ❌ No compatible ✅ Extensión incorporada
Transferencias confidenciales ❌ No compatible ✅ Disponible
Tokens no transferibles ❌ No compatible ✅ Disponible
Tokens con intereses ❌ No compatible ✅ Disponible
Autoridad de cierre de emisión ❌ No compatible ✅ Disponible
Soporte DEX (Raydium, Orca) ✅ Soporte completo ✅ Creciente (verificar versión)
Soporte de monederos (Phantom, Solflare) ✅ Universal ✅ Compatible

La extensión de tarifa de transferencia funciona incrustando la lógica de la tarifa directamente en la cuenta de emisión de tokens. Cuando crea un token Token-2022 con la extensión de tarifa de transferencia habilitada, cada instrucción de transferencia verifica los parámetros de la tarifa y retiene la cantidad correcta, antes de que los tokens lleguen al destino.

Importante: La extensión de la tarifa de transferencia debe añadirse en el momento de la creación del token. No se puede añadir una tarifa de transferencia a un token SPL existente o a un token Token-2022 existente después de la implementación. Esta decisión se toma una vez, permanentemente, en el momento de la creación de la emisión.

Parámetros clave: Puntos base, tarifa máxima, autoridades

Al establecer un impuesto de tokens en Solana, se configuran cuatro parámetros críticos. Comprender cada uno antes de desplegar es esencial — estos valores definen cómo se comporta económicamente su token.

Parámetro Tipo Descripción Ejemplo
feeBasisPoints u16 (0–10000) La tarifa en puntos base. 100 puntos base = 1%. 500 = 5%. 300 = 3% de impuesto
maxFee u64 Tarifa máxima por transferencia en unidades de token brutas (con decimales). Limita la tarifa para transferencias muy grandes. 1000000 = 1 token (si tiene 6 decimales)
transferFeeConfigAuthority Pubkey | null El monedero que puede actualizar la tasa de la tarifa y la tarifa máxima en el futuro. Se establece en nulo para bloquearlo para siempre. Su monedero de proyecto o nulo
withdrawWithheldAuthority Pubkey | null El monedero que puede recolectar las tarifas retenidas de las cuentas de tokens. Debe ser un monedero de tesorería seguro. Su monedero de tesorería

Entendiendo los puntos base

Los puntos base (bps) son la unidad estándar para expresar porcentajes de tarifas en sistemas financieros. Un punto base equivale al 0.01%, por lo que:

  • 50 bps = 0.5% de impuesto por transferencia
  • 100 bps = 1% de impuesto por transferencia
  • 300 bps = 3% de impuesto por transferencia
  • 500 bps = 5% de impuesto por transferencia
  • 1000 bps = 10% de impuesto por transferencia
  • 10000 bps = 100% (cada token retenido — efectivamente intransferible)

Entendiendo maxFee

El parámetro maxFee limita la cantidad retenida en cualquier transferencia individual. Esto evita que su impuesto se vuelva punitivo en transacciones masivas de ballenas. Por ejemplo, si establece un impuesto del 3% pero una ballena transfiere 10,000,000 tokens, sin un límite pagaría 300,000 tokens en tarifas. Un maxFee de, digamos, 10,000 tokens (con 6 decimales: 10000000000) limita la tarifa máxima en cualquier transferencia individual.

Establecer maxFee al valor máximo (18446744073709551615, un máximo u64) significa efectivamente que no hay límite — el porcentaje siempre se aplica. La mayoría de los proyectos establecen un límite razonable para evitar disuadir a los grandes poseedores.

Autoridad de configuración de la tarifa de transferencia vs. Autoridad de retirada de fondos retenidos

Estas son dos autoridades separadas, cada una con poderes distintos:

  • Autoridad de configuración de la tarifa de transferencia — Puede actualizar feeBasisPoints y maxFee en cualquier momento mediante una instrucción setTransferFee. Esto es poderoso: si retiene esta autoridad, puede cambiar la tasa de impuestos del 3% al 10% sin el consentimiento de los poseedores de tokens. Los proyectos que quieren generar confianza deben renunciar a esta autoridad (establecerla en nulo) o comprometerse públicamente con un proceso de gobernanza de tarifas.
  • Autoridad de retirada de fondos retenidos — Puede recolectar las tarifas acumuladas en las cuentas de tokens y en la cuenta de emisión. Esta autoridad no puede cambiar la tasa de la tarifa — solo cobra las tarifas ya ganadas. Esto siempre debe apuntar a un monedero seguro (idealmente un monedero multifirma).
Advertencia: Nunca establezca ambas autoridades en el mismo monedero caliente que utiliza para las operaciones diarias. Si ese monedero se ve comprometido, un atacante puede drenar todas las tarifas retenidas y establecer la tarifa en el 100% (10,000 bps), congelando efectivamente todas las transferencias. Utilice un monedero de hardware o multifirma para ambas funciones de autoridad.

Impuesto de tokens de Solana vs. Impuesto de compra/venta EVM — Diferencias clave

Si ha creado tokens en Ethereum, BNB Chain u otras cadenas EVM, el concepto de impuesto de compra/venta le resultará familiar, pero Solana lo implementa de manera muy diferente. Esto es lo que cambia:

Aspecto Impuesto de compra/venta EVM Tarifa de transferencia de Solana (Token-2022)
Implementación Lógica de contrato Solidity personalizada (ej. anulación ERC-20) Extensión de programa Token-2022 incorporada
Se aplica a Normalmente solo compras/ventas DEX (mediante detección de intercambio) Todas las transferencias, incluidas de monedero a monedero
¿Eludible? A veces (las llamadas directas a contratos pueden omitir la lógica fiscal) No — aplicado a nivel de tiempo de ejecución
Destino de la tarifa Típicamente autodistribuida (reflexión) o enviada a contrato Retenida en la cuenta del destinatario, recolectada manualmente
Flexibilidad de actualización de tarifas Requiere volver a desplegar o llamar a funciones del propietario Instrucción setTransferFee (si se retiene la autoridad)
Requisito de auditoría El código personalizado debe ser auditado en busca de puertas traseras ocultas Programa estándar — no se necesita auditoría personalizada para la lógica de tarifas
Costo de gas Más alto (lógica extra por transferencia) Mínimo (pocas unidades de cálculo extra por transferencia)

La diferencia más importante: la tarifa de transferencia de Solana se aplica a todas las transferencias, no solo a los intercambios DEX. Esto significa que las transferencias de monedero a monedero, los airdrops y los movimientos internos del equipo también incurren en la tarifa. Tenga esto en cuenta en su tokenomics: las operaciones internas frecuentes reducirán su propia tesorería si no tiene cuidado.

Cómo establecer impuestos de tokens usando la CLI de SPL

Para los desarrolladores que desean control total, la CLI spl-token y la biblioteca TypeScript @solana/spl-token admiten la creación de tokens Token-2022 con tarifas de transferencia. A continuación, se explica cómo hacerlo a través de la CLI y el código.

Requisitos previos

  • CLI de Solana instalada (solana --version)
  • CLI spl-token actualizada a una versión que admita Token-2022 (spl-token --version ≥ 3.0)
  • Un par de claves de Solana financiado (mainnet o devnet)
  • Node.js ≥ 18 si usa TypeScript

Método 1: CLI de tokens SPL

Cree una emisión de Token-2022 con la extensión de tarifa de transferencia en un solo comando:

Shell — Crear token con tarifa de transferencia
spl-token create-token \
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
  --transfer-fee 300 1000000 \
  --decimals 6

Desglosando los indicadores:

  • --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb — Esta es la dirección del programa Token-2022. Requerida para crear un token Token-2022.
  • --transfer-fee 300 1000000 — Establece la tarifa en 300 puntos base (3%) con una tarifa máxima de 1,000,000 unidades brutas. Con 6 decimales, eso equivale a 1 token máximo.
  • --decimals 6 — Estándar para la mayoría de los tokens de Solana (igual que USDC).

La CLI mostrará su nueva dirección de emisión. El par de claves actual (su ~/.config/solana/id.json) se convierte en la autoridad de configuración de la tarifa de transferencia y en la autoridad de retirada de fondos retenidos por defecto.

Método 2: TypeScript (@solana/spl-token)

Para la creación programática — útil para scripts, backends o dApps:

TypeScript — Crear emisión de Token-2022 con tarifa de transferencia
import {
  createInitializeMintInstruction,
  createInitializeTransferFeeConfigInstruction,
  ExtensionType,
  getMintLen,
  TOKEN_2022_PROGRAM_ID,
} from "@solana/spl-token";
import {
  Connection, Keypair, SystemProgram,
  Transaction, sendAndConfirmTransaction, clusterApiUrl
} from "@solana/web3.js";

const connection = new Connection(clusterApiUrl("mainnet-beta"), "confirmed");
const payer = Keypair.fromSecretKey(/* your secret key */);
const mintKeypair = Keypair.generate();

// Fee config
const feeBasisPoints = 300;          // 3%
const maxFee = BigInt(1_000_000);    // 1 token (6 decimals)
const feeConfigAuthority = payer.publicKey;
const withdrawAuthority = payer.publicKey;
const decimals = 6;

// Calculate space needed for the mint + extension
const extensions = [ExtensionType.TransferFeeConfig];
const mintLen = getMintLen(extensions);
const lamports = await connection.getMinimumBalanceForRentExemption(mintLen);

const transaction = new Transaction().add(
  SystemProgram.createAccount({
    fromPubkey: payer.publicKey,
    newAccountPubkey: mintKeypair.publicKey,
    space: mintLen,
    lamports,
    programId: TOKEN_2022_PROGRAM_ID,
  }),
  createInitializeTransferFeeConfigInstruction(
    mintKeypair.publicKey,
    feeConfigAuthority,
    withdrawAuthority,
    feeBasisPoints,
    maxFee,
    TOKEN_2022_PROGRAM_ID
  ),
  createInitializeMintInstruction(
    mintKeypair.publicKey,
    decimals,
    payer.publicKey,   // mint authority
    null,              // freeze authority (null = none)
    TOKEN_2022_PROGRAM_ID
  )
);

await sendAndConfirmTransaction(connection, transaction, [payer, mintKeypair]);
console.log("Mint address:", mintKeypair.publicKey.toBase58());
El orden importa: La instrucción createInitializeTransferFeeConfigInstruction debe ir antes de createInitializeMintInstruction en la transacción. La inicialización de la extensión debe ocurrir antes de que se inicialice la emisión. Si se equivoca en este orden, se producirá un error de transacción.

Cómo retirar las tarifas de transferencia recaudadas

Después de que su token esté activo y se transfiera, las tarifas se acumulan en dos lugares:

  • Cuentas de tokens del destinatario — Cada cuenta que recibe tokens con una tarifa retenida almacena esa tarifa internamente.
  • La propia cuenta de emisión — Las tarifas pueden ser barridas opcionalmente de cuentas individuales a la cuenta de emisión primero.

Para recolectar estas tarifas, la autoridad de retiro de fondos retenidos ejecuta un proceso de dos pasos:

  1. Cosechar los tokens retenidos para la emisión. Llame a harvestWithheldTokensToMint contra la lista de cuentas de tokens que retienen tarifas. Esto barre todas las cantidades retenidas de las cuentas individuales a la cuenta de fideicomiso de la emisión.
  2. Retirar de la emisión a su monedero. Llame a withdrawWithheldTokensFromMint con su cuenta de token de tesorería como destino. Esto mueve las tarifas del fideicomiso de la emisión a su cuenta de token.

Retirada CLI

Shell — Retirar tarifas retenidas
# Paso 1: Cosechar tarifas de todas las cuentas de tokens a la emisión
spl-token harvest-withheld-tokens YOUR_MINT_ADDRESS \
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb

# Paso 2: Retirar tarifas de la emisión a su cuenta de token
spl-token withdraw-withheld-tokens YOUR_MINT_ADDRESS YOUR_TOKEN_ACCOUNT \
  --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb

El monedero que ejecuta estos comandos debe ser la autoridad de retirada de fondos retenidos establecida en el momento de la creación de la emisión. Cualquier otra persona que llame a estas instrucciones recibirá un error de no autorizado.

Compatibilidad DEX: Dónde se negocian los tokens Token-2022

Una de las preguntas prácticas más importantes para un token de Solana con una tarifa de transferencia: ¿qué DEX admiten Token-2022? No todos los AMM actualizaron sus pools para manejar la contabilidad de tarifas retenidas que requiere Token-2022.

DEX / Plataforma Soporte Token-2022 Manejo de tarifas de transferencia Notas
Raydium ✅ Sí Compatible con pools CPMM Utilice el tipo de pool CPMM para tokens Token-2022
Orca ✅ Sí Compatible (Whirlpools) Whirlpool v2 admite extensiones Token-2022
Jupiter ✅ Sí El agregador enruta a través de pools compatibles Jupiter enruta a pools de Raydium/Orca automáticamente
Meteora ✅ Sí DLMM y pools dinámicos Verifique la compatibilidad del tipo de pool antes de crear
DexScreener ✅ Sí (muestra) Muestra pools de Token-2022 y precio Gráficos de precios y datos totalmente compatibles
Phantom Wallet ✅ Sí Muestra tokens e información de tarifas Muestra la insignia de tarifa de transferencia en los tokens Token-2022
Solflare ✅ Sí Soporte completo de visualización de Token-2022 Muestra el saldo de la tarifa retenida en los detalles de la cuenta

Para nuevos proyectos, el camino práctico es: cree su token Token-2022 → agregue liquidez en Raydium CPMM → su token aparece en DexScreener y se enruta a través de Jupiter automáticamente. Esto le da acceso completo al mercado sin ninguna configuración adicional.

Atención: Algunos tipos de pool de Raydium más antiguos (AMM v4) no son compatibles con Token-2022. Al crear su pool de liquidez en Raydium, seleccione siempre AMM Estándar (CPMM), no el AMM heredado. Usar el tipo de pool incorrecto causará errores de transacción.

Mejores prácticas y errores comunes

Mejores prácticas

  • Mantenga la tarifa razonable. Impuestos superiores al 5% reducen drásticamente la profundidad de liquidez y el interés de los operadores. La mayoría de los proyectos exitosos de Solana con tarifas de transferencia utilizan del 1 al 3%. Cualquier valor superior al 5% es etiquetado como "honeypot" por las herramientas de verificación de estafas.
  • Utilice un monedero de hardware o multifirma como autoridades. Tanto la autoridad de configuración de la tarifa como la autoridad de retirada de fondos retenidos deben estar protegidas. Multisig de Squads es el estándar para los equipos de proyectos de Solana.
  • Divulgue la tarifa públicamente. Añada un descargo de responsabilidad sobre la tarifa de transferencia en su sitio web, Telegram y cualquier página de listado de tokens. Los operadores informados tienen menos probabilidades de sentirse estafados cuando ven la tarifa en la cadena.
  • Establezca un límite máximo de tarifa sensato. Un límite razonable evita que los grandes poseedores paguen tarifas desproporcionadas y mantiene su token atractivo para inversores más grandes.
  • Pruebe primero en devnet. Despliegue su token en la devnet de Solana, ejecute algunas transferencias de prueba y confirme que las matemáticas de la tarifa son correctas antes del lanzamiento en la red principal.
  • Documente el uso de su tarifa. Publique a dónde van las tarifas recaudadas (recompra, equipo, recompensas de staking). La transparencia genera confianza y reduce la percepción de "rug pull".

Errores comunes a evitar

  • Establecer feeBasisPoints incorrectamente. Introducir 3 en lugar de 300 da como resultado una tarifa del 0.03% en lugar del 3%. Siempre verifique dos veces el valor de sus puntos base.
  • Olvidar las unidades de maxFee. El maxFee está en unidades de token brutas, no en cantidades legibles por humanos. Para un token de 6 decimales, 1 token = 1,000,000 unidades brutas. Un maxFee de 1 limita la tarifa a 0.000001 tokens, esencialmente cero.
  • Usar el mismo monedero para ambas autoridades. Si su monedero caliente se ve comprometido, perderá el control tanto de la tasa de tarifas como de la recaudación de tarifas de una sola vez.
  • No tener en cuenta las tarifas en las transferencias internas. Si usted distribuye su propio token o mueve tokens entre monederos de equipo, se aplica la tarifa de transferencia. Presupueste en consecuencia.
  • Intentar añadir la extensión después del despliegue. La extensión de la tarifa de transferencia no se puede adaptar a una emisión ya desplegada. Si olvidó habilitarla, debe crear un nuevo token.
  • Crear un pool de Raydium v4 (heredado). Los pools heredados de Raydium no son compatibles con Token-2022. Utilice CPMM.

Preguntas Frecuentes

¿Puedo añadir una tarifa de transferencia a un token de Solana existente?

No. La extensión de la tarifa de transferencia debe añadirse en el momento de la creación de la emisión. No se pueden añadir extensiones a una emisión de token ya desplegada. Si desea una tarifa de transferencia, debe crear un nuevo token Token-2022 desde cero.

¿Cuál es el impuesto máximo de tokens que puedo establecer en Solana?

Técnicamente, hasta 10,000 puntos base (100%) — lo que significa que todos los tokens transferidos son retenidos. En la práctica, cualquier cosa por encima del 5-10% hace que su token sea ilíquido y será marcado por los escáneres. La mayoría de los proyectos exitosos usan 1-3%. Una tarifa del 100% crea efectivamente un token intransferible.

¿La tarifa de transferencia se aplica a las operaciones DEX (compras y ventas)?

Sí, la tarifa se aplica a cada transferencia de token, incluidos los intercambios DEX. Cuando un comprador adquiere su token en Raydium, el intercambio transfiere internamente los tokens del pool al monedero del comprador. Esa transferencia activa la tarifa. Lo mismo ocurre con las ventas. La tarifa se aplica independientemente de si la transferencia es un envío directo o un intercambio DEX.

¿Cómo actualizo la tasa de tarifa de transferencia después del lanzamiento?

Si retuvo la autoridad de configuración de la tarifa de transferencia, puede llamar a setTransferFee con nuevos valores de feeBasisPoints y maxFee en cualquier momento. A través de la CLI: spl-token set-transfer-fee YOUR_MINT NUEVA_TASA NUEVA_TARIFA_MAXIMA --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb. Si renunció (estableció en nulo) a la autoridad en el momento de la creación, la tasa de la tarifa se bloquea permanentemente.

¿DexScreener y CoinGecko mostrarán la tarifa de transferencia de mi token?

DexScreener muestra insignias de extensión Token-2022, incluida información sobre la tarifa de transferencia, directamente en la página del token. Las páginas de listado de CoinGecko también pueden mostrar datos de extensión de token. Los monederos Phantom y Solflare muestran un indicador de tarifa de transferencia cuando los usuarios ven su token, para que los compradores vean la tarifa antes de realizar la transacción.

¿Cuál es la diferencia entre tarifas "retenidas" y tarifas "recaudadas"?

Las tarifas retenidas son las cantidades deducidas automáticamente de las transferencias y almacenadas dentro de las cuentas de tokens individuales del destinatario. Se mantienen en fideicomiso y aún no están disponibles para el proyecto. Recaudar tarifas es el proceso manual de ejecutar harvestWithheldTokensToMint seguido de withdrawWithheldTokensFromMint; esto mueve las tarifas retenidas a su monedero de tesorería. Debe recaudar tarifas activamente; no llegan automáticamente.

¿Un impuesto de tokens de Solana es lo mismo que un token de reflexión?

No. Un token de reflexión (común en la cadena BNB) redistribuye automáticamente las tarifas a todos los poseedores existentes de manera proporcional. El mecanismo de tarifa de transferencia de Solana no hace esto de forma nativa; las tarifas se retienen y van a quien controla la autoridad de retirada de fondos retenidos. Puede simular la reflexión distribuyendo manualmente las tarifas recaudadas a los poseedores, pero requiere lógica adicional y no es automático.

¿La tarifa de transferencia reduce la cantidad recibida o se añade?

La tarifa se deduce de la cantidad transferida. Si envía 1000 tokens con una tarifa del 3%, el destinatario recibe 970 tokens y 30 tokens son retenidos. El remitente no paga extra, el destinatario recibe menos. Esto es diferente de algunas implementaciones de impuestos EVM donde la tarifa se añade a la cantidad enviada.

Cree su token Token-2022 con tarifa de transferencia

Lance su token SPL de Solana con una tarifa de transferencia incorporada en menos de 60 segundos, sin necesidad de codificación. Establezca su tasa de tarifa, tarifa máxima y monederos de autoridad a través de la interfaz visual de CreateMyCoin.

Cree su token de Solana ahora →