Overview
The Portfolio API gives you the account-level view after users deposit, withdraw, trade, or earn rewards. Use it to show current portfolio value, per-asset balances, an activity feed, and historical performance. All Portfolio endpoints are scoped to a specificaccount_id. Pass the same quote_symbol across related calls when you want summary values, holdings, history, and transaction amounts to line up in the same currency.
Prerequisites
- Payward Services API credentials (see the Authentication guide)
- A verified user with at least one account
- Base URL:
https://api.services.payward.com
Portfolio workflow
Use this flow when you build a portfolio dashboard or reconcile user activity after payments and trades.Show the account summary
Fetch total value, available value, withheld value, open-order value, and unrealized PnL.
GET /v1/accounts/{account_id}/portfolio/summaryList asset positions
Fetch the asset-level balance breakdown for the portfolio.
GET /v1/accounts/{account_id}/portfolio/detailsBuild the activity feed
Fetch transaction history for deposits, trades, price trigger swaps, and earn rewards.
GET /v1/accounts/{account_id}/portfolio/transactionsStep 1: show the account summary
CallGET /v1/accounts/{account_id}/portfolio/summary to get the top-level values for a portfolio dashboard.
| Field | How to use it |
|---|---|
value | Total portfolio value in the requested quote_symbol. |
cost_basis | Total cost basis of the portfolio, when available. |
available | Value freely available for trading or withdrawal. |
withheld | Value reserved across pending withdrawals, earn bonding or unbonding, and other platform holds. |
open_orders | Value held for open orders. |
pnl.unrealized | Unrealized profit and loss, when available. |
Step 2: list asset positions
CallGET /v1/accounts/{account_id}/portfolio/details to show the user’s holdings by asset.
| Field | How to use it |
|---|---|
symbol | Identify the held asset. |
total | Total balance in the asset itself. |
total_in_quote | Total position value in the requested quote_symbol. |
available | Balance available after holds. |
available_in_quote | Available balance value in the requested quote_symbol. |
open_orders | Asset amount held in open spot orders. |
index_price | Price used for current valuation. |
avg_entry_price_in_quote | Average entry price - when available. |
cost_basis_in_quote | Cost basis - when available. |
Step 3: build the activity feed
CallGET /v1/accounts/{account_id}/portfolio/transactions to list user-visible portfolio activity. Use it after a deposit, swap, price trigger swap, or earn reward to show what changed and support reconciliation.
| Filter | How to use it |
|---|---|
types | Filter by simple_order, simple_order_failed, price_trigger_swap, price_trigger_swap_failed, earn_reward, or deposit. |
statuses | Filter by in_progress, successful, failed, no_status, or uncategorized. |
start_timestamp and end_timestamp | Restrict results to a time window. |
assets | Filter by asset references using indexed deep-object syntax. |
ids | Look up specific portfolio transaction IDs. |
sort_direction | Return newest-first with desc or oldest-first with asc. |
quote_symbol | Add best-effort amount_in_quote values to spend, receive, and fee amounts. |
quote_type | Use fiat. Other quote types are not currently supported. |
spend, receive, or both. Failed transactions can omit movement details, so build your UI around the required fields id, timestamp, and type, then display optional money movement fields when present.
Use next_page_token as page_token to fetch more transactions.
See the List Portfolio Transactions API reference for all filters and response fields.
Step 4: chart portfolio performance
CallGET /v1/accounts/{account_id}/portfolio/history to draw a portfolio value chart or show how balances changed over time.
- Portfolio value charts with
timestampandvalue. - Historical PnL views with
total_pnl, when available. - Historical asset-balance charts when you request
assetsfilters with bothsymbolandtype. - Quote-aware charts with top-level
quote_symbol,quote_type,start_timestamp, andend_timestamp.
A missing asset balance at the start of the range means the user did not hold that asset at that time. A zero balance
means the user may have held the asset previously, but did not hold it at that snapshot. The latest daily balance can
be delayed by up to about five hours after UTC midnight while data is processed.
API reference
| Endpoint | Method | Description |
|---|---|---|
/v1/accounts/{account_id}/portfolio/summary | GET | Get total portfolio value, availability, holds, and unrealized PnL |
/v1/accounts/{account_id}/portfolio/details | GET | List asset-level balances, valuation, open orders, and cost basis |
/v1/accounts/{account_id}/portfolio/transactions | GET | List portfolio transactions for deposits, swaps, price trigger swaps, and earn rewards |
/v1/accounts/{account_id}/portfolio/history | GET | List historical balances and valuations for a portfolio |