---
title: "バーチャル通貨残高"
description: "ユーザープロファイルでバーチャル通貨の残高を確認し、残高変更の履歴をイベント履歴で確認できます。"
---

:::link
メイン記事：[バーチャル通貨](virtual-currencies)
:::

[Profiles/CRM](profiles-crm) のすべてのユーザープロファイルには、そのユーザーのバーチャル通貨残高と、すべての変更履歴が表示されます。

## ユーザープロファイルで残高を確認する \{#view-balances-in-a-user-profile\}

ユーザーの[プロファイル](https://app.adapty.io/profiles/users)を開きます。**Virtual currency** カードには、そのユーザーが保有しているすべての通貨が一覧表示されます。

各行には以下の情報が表示されます：

- 通貨の**コード**（例：`COINS`）
- 整数で表示される現在の**残高**

残高は、ユーザーがクレジットを獲得・消費・受取するたびに更新されます。残高が0を下回ることはありません。保有量を超えて消費しようとするトランザクションは`insufficient_balance`で失敗し、何も変更されません。残高が存在しないプロファイルには空のカードが表示されます。

独自のコードから残高を読み取るには、サーバーサイドAPIの[仮想通貨残高の一覧取得](api-adapty/operations/listVirtualCurrencyBalances)を呼び出してください。

## 残高変更をイベント履歴で確認する \{#review-balance-changes-in-the-event-history\}

すべての残高変更はプロファイルのイベント履歴に表示され、新しい順に並んでいます。各エントリには変更内容と影響を受けた通貨が記載されています。

履歴には3種類のバーチャル通貨イベントが表示されます：

- **Virtual currency credited**：購入、更新、またはトライアル開始によってクレジットが付与された。
- **Virtual currency transaction**：サーバーサイドのAPI呼び出しによって残高へのクレジット付与または引き落としが行われた。
- **Virtual currency expired**：有効期限付きのクレジットが請求サイクルの終了時、またはサブスクリプション終了時にリセットされた。

各エントリには、変更があったすべての通貨について以下の情報が記載されています：

- **Virtual currency**: 通貨名とコード（例：`Gold Coins (COINS)`）。
- **Amount**: 変動量（正の値は加算、負の値は減算）。
- **Balance after**: 変動適用後の通貨残高。

1つのイベントで複数の通貨を同時に変動させることも可能です。たとえば、1つの[トランザクション](api-adapty/operations/createVirtualCurrencyTransaction)で通貨を換算するために、ある通貨を減算し別の通貨を加算するケースなどがあります。

## 残高、プロファイル、デバイス \{#balances-profiles-and-devices\}

残高は常に1つの[プロファイル](profiles-crm)にのみ属し、別のプロファイルに移動することはありません。Adapty は[ユーザーアカウント間でアクセスレベルを共有する](profiles-crm#sharing-paid-access-between-user-accounts)ような方法でプロファイル間の残高を共有・移転することはできません。

実際には、これは次のことを意味します：

- **識別済みユーザー**: カスタマーユーザーIDは常に同じプロファイルに紐づくため、ログインしたすべてのデバイスで同じ残高が表示されます。
- **匿名ユーザー**: 匿名プロファイルもクレジットの獲得・消費は可能ですが、1台のデバイスにのみ存在します。同じユーザーがログインせずに別のデバイスでアプリを開いた場合、Adaptyは残高ゼロの新しい匿名プロファイルを作成します。

デバイスをまたいでバーチャルカレンシーのエコノミーを運用するには、ユーザーを識別する必要があります。識別はアプリのコード内でSDKを使って行う（クイックスタートの[ユーザーの識別](ios-quickstart-identify)を参照）か、バックエンドから[サーバーサイドAPI](getting-started-with-server-side-api)を使って行うことができます。

ユーザーの識別が遅れると、別の問題が生じます。ユーザーが匿名のままクレジットを獲得し、その後すでに別のプロファイルに紐付いているカスタマーユーザーIDでログインした場合、デバイスはそのプロファイルとその残高に切り替わります。匿名で獲得したクレジットは古いプロファイルに残ったままアクセスできなくなります。カスタマーユーザーIDが新規のものであれば、現在のプロファイルに紐付けられ、ユーザーは残高を引き継げます。安全のため、ユーザーがクレジットを獲得または購入できるようになる前に識別しておいてください。

[サーバーサイドAPI](getting-started-with-server-side-api)の呼び出しでは、`adapty-profile-id` または `adapty-customer-user-id` ヘッダーでプロファイルを識別します。どちらも同一のプロファイルに解決されます。匿名プロファイルの場合は `adapty-profile-id` を使用してください。