---
title: "Saldo de moneda virtual"
description: "Consulta el saldo de monedas virtuales de un usuario en su perfil y revisa cada cambio de saldo en el historial de eventos."
---

:::link
Artículo principal: [Monedas virtuales](virtual-currencies)
:::

Cada perfil de usuario en [Profiles/CRM](profiles-crm) muestra el saldo de monedas virtuales de ese usuario, junto con un historial de cada cambio.

## Ver saldos en el perfil de un usuario \{#view-balances-in-a-user-profile\}

Abre el [perfil](https://app.adapty.io/profiles/users) del usuario. La tarjeta **Virtual currency** muestra todas las monedas que tiene el usuario.

Cada fila muestra:

- El **código** de la moneda, por ejemplo `COINS`.
- El **saldo** actual, como número entero.

Los saldos se actualizan a medida que el usuario gana, gasta o recibe créditos. Un saldo no puede bajar de 0: si una transacción intenta gastar más de lo que el usuario tiene, falla con `insufficient_balance` y no cambia nada. Un perfil sin saldos muestra una tarjeta vacía.

Para leer un saldo desde tu propio código, llama a [List virtual currency balances](api-adapty/operations/listVirtualCurrencyBalances) en la API del lado del servidor.

## Revisar cambios de saldo en el historial de eventos \{#review-balance-changes-in-the-event-history\}

Cada cambio de saldo aparece en el historial de eventos del perfil, del más reciente al más antiguo. Cada entrada indica el tipo de cambio y las monedas que se vieron afectadas.

El historial muestra tres tipos de eventos de moneda virtual:

- **Virtual currency credited**: una compra, renovación o inicio de prueba otorgó créditos.
- **Virtual currency transaction**: una llamada a la API del servidor acreditó o debitó el saldo.
- **Virtual currency expired**: los créditos con vencimiento se reiniciaron al final de un ciclo de facturación o cuando terminó la suscripción.

Cada entrada muestra, para cada moneda modificada:

- **Moneda virtual**: El nombre y código de la moneda, como `Gold Coins (COINS)`.
- **Importe**: El cambio con signo — positivo para un abono, negativo para un cargo.
- **Saldo tras el cambio**: El saldo de la moneda una vez aplicado el cambio.

Un evento puede cambiar varias monedas a la vez; por ejemplo, una sola [transacción](api-adapty/operations/createVirtualCurrencyTransaction) que carga una moneda y abona otra para convertir entre ellas.

## Saldos, perfiles y dispositivos \{#balances-profiles-and-devices\}

Un saldo siempre pertenece a exactamente un [perfil](profiles-crm) y nunca se transfiere a otro. Adapty no comparte ni transfiere saldos entre perfiles de la misma manera que puede [compartir niveles de acceso entre cuentas de usuario](profiles-crm#sharing-paid-access-between-user-accounts).

En la práctica, esto significa:

- **Usuarios identificados**: Un ID de usuario siempre se resuelve en el mismo perfil, por lo que el usuario ve el mismo saldo en todos los dispositivos en los que inicie sesión.
- **Usuarios anónimos**: Un perfil anónimo puede acumular y gastar créditos, pero solo existe en un dispositivo. Cuando el mismo usuario abre tu app en otro dispositivo sin iniciar sesión, Adapty crea un nuevo perfil anónimo con saldo cero.

Para gestionar una economía de moneda virtual entre dispositivos, identifica a tus usuarios. Puedes identificarlos en el código de la app a través del SDK (consulta [Identificar usuarios](ios-quickstart-identify) en la guía de inicio rápido) o desde tu backend a través de la [API del lado del servidor](getting-started-with-server-side-api).

Identificar a un usuario tarde tiene su propio inconveniente: si un usuario acumula créditos de forma anónima y luego inicia sesión con un customer user ID que ya pertenece a otro perfil, el dispositivo cambia a ese perfil y su saldo. Los créditos acumulados de forma anónima se quedan en el perfil anterior y dejan de ser accesibles. Si el customer user ID es nuevo, se asocia al perfil actual y el usuario conserva el saldo. Para mayor seguridad, identifica a los usuarios antes de que puedan acumular o comprar créditos.

En las llamadas a la [API de servidor](getting-started-with-server-side-api), identifica el perfil con el encabezado `adapty-profile-id` o `adapty-customer-user-id` — ambos resuelven a un único perfil. Para perfiles anónimos, usa `adapty-profile-id`.