Skip to main content
GET
/
v1
/
wallets
/
{address}
/
pnl
Get wallet PnL
curl --request GET \
  --url https://api.zerion.io/v1/wallets/{address}/pnl \
  --header 'Authorization: Basic <encoded-value>'
{
  "links": {
    "self": "https://api.zerion.io/v1/wallets/0x42b9df65b219b3dd36ff330a4dd8f327a6ada990/pnl"
  },
  "data": {
    "type": "pnl",
    "id": "0x42b9df65b219b3dd36ff330a4dd8f327a6ada990",
    "attributes": {
      "total_gain": -637.8173517,
      "realized_gain": -655.3618983,
      "unrealized_gain": 17.5445466,
      "relative_total_gain_percentage": -11.38,
      "relative_realized_gain_percentage": -15.15,
      "relative_unrealized_gain_percentage": -0.19,
      "total_fee": 281.9088917,
      "total_invested": 701.2,
      "realized_cost_basis": 655.36,
      "net_invested": 45.84218703,
      "received_external": 133971.2931,
      "sent_external": 133270.089,
      "sent_for_nfts": 133971.2931,
      "received_for_nfts": 133971.2931,
      "breakdown": {
        "by_id": {
          "eth": {
            "average_buy_price": 1258.8,
            "average_sell_price": 1224.96,
            "total_gain": -6900.85,
            "realized_gain": -6871.21,
            "unrealized_gain": -29.64,
            "relative_total_gain_percentage": -11.38,
            "relative_realized_gain_percentage": -15.15,
            "relative_unrealized_gain_percentage": -0.19,
            "total_fee": 4679.93,
            "total_invested": 60643.33,
            "realized_cost_basis": 45363.2,
            "net_invested": 15280.13,
            "received_external": 35402.73,
            "sent_external": 22213.21,
            "sent_for_nfts": 1713.23,
            "received_for_nfts": 1635.05
          }
        },
        "by_implementation": {
          "ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": {
            "average_buy_price": 1,
            "average_sell_price": 1,
            "total_gain": 0,
            "realized_gain": 0,
            "unrealized_gain": 0,
            "relative_total_gain_percentage": 0,
            "relative_realized_gain_percentage": 0,
            "relative_unrealized_gain_percentage": 0,
            "total_fee": 12.5,
            "total_invested": 5000,
            "realized_cost_basis": 3000,
            "net_invested": 2000,
            "received_external": 1000,
            "sent_external": 500,
            "sent_for_nfts": 0,
            "received_for_nfts": 0
          }
        }
      }
    }
  },
  "meta": {
    "excluded_fungible_ids": [
      "4a702a34-5cfd-41af-96ad-bd1c45c3672e"
    ],
    "excluded_fungible_implementations": [
      "ethereum:0x6b175474e89094c44da98b954eedeac495271d0f",
      "ethereum:"
    ]
  }
}

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Path Parameters

address
required

The web3 wallet address A wallet address, which can be either an EVM or Solana address

Pattern: ^0x[a-fA-F0-9]{40}$
Example:

"0x42b9df65b219b3dd36ff330a4dd8f327a6ada990"

Query Parameters

currency
enum<string>
default:usd

Denominated currency value of returned prices

Available options:
eth,
btc,
usd,
eur,
krw,
rub,
gbp,
aud,
cad,
inr,
jpy,
nzd,
try,
zar,
cny,
chf
filter[chain_ids]
string[]

Calculate PnL only for specified chains (comma-separated list).

Maximum array length: 25
Example:
["ethereum", "polygon"]
filter[fungible_ids]
string[]

Account only for PnL related to given fungible assets (comma-separated list). Maximum of 100 fungible IDs allowed.

When filtering by fungible_ids or fungible_implementations, assets without available prices are automatically excluded from calculations instead of causing an error. Excluded assets are returned in the response metadata for transparency.

Maximum array length: 100
Maximum string length: 44
filter[fungible_implementations]
string[]

Account only for PnL related to given fungible asset implementations (comma-separated list of chain:address pairs). Maximum of 100 implementations allowed. example: "base:0xae16c445d8a4082cecb49a9465e4dd5499df947d,ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"

When filtering by fungible_ids or fungible_implementations, assets without available prices are automatically excluded from calculations instead of causing an error. Excluded assets are returned in the response metadata for transparency.

Maximum array length: 100
since
string

Only account sales since the given date. A unix timestamp in milliseconds. Note: high performance is only guaranteed for certain time ranges (now, 1 day ago, 1 week ago, 1 month ago, 1 year ago, or the beginning of the year).

Required string length: 13
Example:

"1688842525735"

till
string

Only account sales till the given date. A unix timestamp in milliseconds. Note: high performance is only guaranteed for certain time ranges (now, 1 day ago, 1 week ago, 1 month ago, 1 year ago, or the beginning of the year).

Required string length: 13
Example:

"1688842525735"

Response

Response for requested wallet's pnl

data
object
required
meta
object

Metadata about the PnL calculation (only present when assets were excluded from the calculation). The structure matches the filter type used in the request:

  • When filtering by fungible_ids, the meta contains an excluded_fungible_ids array
  • When filtering by fungible_implementations, the meta contains an excluded_fungible_implementations array
  • If both filters are used, both fields may appear in the meta