On this page
A NAV series alone does not describe every change in an investor's economic position. Distribution events can matter when interpreting a price movement or preparing a return calculation. A developer needs the event date, per-unit amount, fund identity and source evidence, along with an honest statement of what the collection has observed.
ILovePSX's payout-history operation returns verified observed MUFAP events. This guide shows the request, response shape and pagination rules using a complete fictional model. It does not claim that every fund's distribution history is complete, compute total returns or predict a future payout.
The useful part, upfront.
- Payouts use nav:read and their own documented history route.
- coverage=observed_events_only is a substantive limitation.
- Payout date, ex-NAV, NAV date and source-observation time remain distinct.
Keep the observed event separate from a return#
MUFAP's public payouts table identifies a per-unit payout, ex-NAV and payout date for each displayed fund. A sourced event helps explain a distribution, but a list of events is not itself a total-return series. Keep the original event facts before applying any reinvestment or investor-level assumptions.
An event's per-unit amount is not a percentage yield. Deriving a yield requires a specified denominator and time convention. It is also not the investor's net receipt after individual tax or account treatment. Your application should not invent those amounts from the public event row. Use a factual distribution panel and reserve any additional calculation for a separately defined method.
A useful panel identifies the canonical fund, the selected date range and the coverage statement above the event table. Put source details near the row and show unavailable ex-NAV distinctly. This supports a researcher who wants to investigate an apparent NAV drop without encouraging an assistant to label every decline as an investment loss.
References: MUFAP public mutual-fund payouts table · ILovePSX public payout-history operation
Request a bounded fund-specific history#
Use GET /v1/mutual-funds/funds/{fund_slug}/payouts with a canonical returned slug and an API key enabled for nav:read. The operation supports from, to, order, limit and cursor. It defaults to roughly five years, limits one date window to 1830 days and accepts a page limit from 1 to 500. Choose explicit bounds when reproducibility matters.
The example uses environment placeholders and a one-year window. It makes no request until you supply a real canonical slug and protected key. Keep credentials on your server or in a private local environment; never place the key in a shared spreadsheet, browser bundle or query string. Inspect errors before parsing any body as successful data.
curl --fail-with-body --silent --show-error \
--header "X-API-Key: $ILOVEPSX_API_KEY" \
"https://funds.api.ilovepsx.com/v1/mutual-funds/funds/$FUND_SLUG/payouts?from=2025-10-01&to=2026-09-30&order=asc&limit=100"References: ILovePSX public payout-history operation · ILovePSX authentication and error conventions
Preserve a complete synthetic response#
The fictional response below follows the implemented envelope and payout fields. Its UUIDs, fund, date and numeric observations are invented. The event amount and ex-NAV are decimal strings; no internal integer IDs appear. Null source details are retained rather than replaced with a fabricated document link.
data.total counts the observed events within the requested window, not the number on this page and not every event that ever happened. meta.next_cursor controls continuation. The source observed_at value, when available, describes collection evidence; it is not the payout date. Preserve both so that a later review can explain when the source was seen and when the event occurred.
{
"success": true,
"data": {
"fund": {
"id": "00000000-0000-4000-8000-000000000001",
"slug": "example-research-fund",
"name": "Example Research Fund",
"mufap_fund_id": null
},
"currency": "PKR",
"from": "2025-10-01",
"to": "2026-09-30",
"order": "asc",
"total": 1,
"coverage": "observed_events_only",
"payouts": [
{
"id": "00000000-0000-4000-8000-000000000071",
"payout_date": "2026-06-30",
"amount_per_unit": "2.500000",
"ex_nav": "100.000000",
"source": {
"url": null,
"observed_at": null
}
}
]
},
"meta": {
"request_id": "synthetic-payout-history",
"generated_at": "2026-10-09T08:00:00Z",
"data_as_of": "2026-06-30",
"data_freshness_days": 101,
"next_cursor": null
}
}References: ILovePSX public payout-history operation
Keep cursor scope stable until the collection ends#
The payout cursor is tied to the fund, from date, to date and order. Continue with the returned opaque cursor while retaining those choices. Changing the date window or order during continuation is invalid. Do not decode, edit or reuse a payout cursor as a NAV cursor: the history operations have distinct pagination contracts.
Collect until next_cursor is null, and detect a repeated cursor so a faulty client cannot loop forever. Record each page and verify its fund and bounds before appending rows. If a request fails, preserve the successful pages as an explicitly partial collection. Do not label a stopped collection complete because its file contains some events.
For periods beyond the maximum window, split the request into deliberately chosen, non-overlapping inclusive ranges. Keep a manifest of those ranges and collection outcomes. An apparent duplicate at a boundary should trigger a scope and event-identity review rather than a name-based deletion that might discard legitimate evidence.
References: ILovePSX public payout-history operation
Read empty results as an evidence state#
A successful empty payouts array means no observed events were returned for that query. Under observed_events_only coverage, it does not establish that the fund never distributed income. Collection completeness, source availability and the selected date window remain relevant. Display 'No observed events in this range' instead of an unsupported 'This fund pays no dividends'.
A 404 fund identity failure is different from an empty history, and a 401 access failure is different again. Keep them as distinct interface states. Do not collapse failed requests into empty arrays, and do not count an unavailable fund as a verified zero in a research screener. The error guide provides a correction workflow for each kind of failure.
| Observed state | Safe description | Unsupported conclusion |
|---|---|---|
| One event returned | One observed distribution in the selected window | Complete lifetime history |
| Empty successful page; cursor null | No observed events in this range | No distribution ever occurred |
| Collection interrupted | Partial collected history | Final event count |
| Null ex-NAV | Ex-NAV unavailable in this record | Ex-NAV equals zero |
References: ILovePSX public payout-history operation
Prepare inputs before attempting total returns#
The invented event has a payout of PKR 2.50 per unit and an ex-NAV of PKR 100.00. Adding them gives PKR 102.50 as an arithmetic illustration, not a published pre-distribution NAV or a complete return. Different valuation times, market movement and event conventions can affect the relationship. Do not fill a missing NAV observation from this sum.
A total-return method needs appropriate NAV dates, distribution timing, reinvestment assumptions, complete relevant events and a stated treatment of costs. These inputs must be aligned to the same fund or unit scope. The existing NAV-change-versus-total-return guide explains the distinction; this endpoint supplies observed event facts rather than a precomputed return.
Before shipping, use fixtures for null ex-NAV, empty history, a multi-page result, changed cursor scope, exact decimals and an interrupted request. Retain event IDs and source metadata in exports, and label derived values separately. This makes the integration useful to both developers and evidence-based AI research tools while preserving the limitations of the underlying observation set.
References: ILovePSX public payout-history operation
Try a complete example.
Use these fictional records to prototype a full fund view: profile, reported returns, holdings, asset and sector allocations, credit quality, fees and ratings. Every name, identifier and number is invented. This is educational mock data, with no connection to a real fund, source document or agency opinion.
The JSON mirrors the public response structure. The complete FMR example includes all supported expansions; empty arrays and nulls demonstrate valid missing-data states. Your live integration must still request the sections it needs and check the returned coverage.
Inspect the complete FMR model
{
"success": true,
"data": {
"id": "00000000-0000-4000-8000-000000000101",
"report_ids": [
"00000000-0000-4000-8000-000000000101"
],
"fund": {
"id": "00000000-0000-4000-8000-000000000201",
"slug": "example-research-fund",
"name": "Example Research Fund",
"mufap_fund_id": null,
"amc": {
"id": "00000000-0000-4000-8000-000000000301",
"slug": "example-asset-management",
"name": "Example Asset Management"
}
},
"report_date": "2026-09-30",
"currency": "PKR",
"data_version": 1,
"identity": {
"fund_name_as_reported": "Example Research Fund",
"fund_short_name_as_reported": "ERF",
"parent_fund_name_as_reported": null,
"plan_name_as_reported": null,
"fund_type_as_reported": "Open-end",
"category_as_reported": "Illustrative mixed-asset category",
"risk_profile_as_reported": "Illustrative higher-risk profile",
"is_shariah_compliant": false,
"is_plan": false,
"is_pension_scheme": false,
"is_etf": false
},
"fund_size": {
"nav_per_unit": "100.500000",
"nav_date": "2026-09-30",
"offer_price": "100.500000",
"redemption_price": "100.500000",
"repurchase_price": "100.500000",
"market_price": null,
"net_assets_pkr": "1005000000.0000",
"fund_size_pkr": "1005000000.0000",
"fund_size_including_fof_pkr": "1005000000.0000",
"fund_size_excluding_fof_pkr": "1005000000.0000",
"amount_invested_by_fof_pkr": "0.0000",
"units_outstanding": "10000000.000000"
},
"profile": {
"launch_date": "2025-01-01",
"inception_date": "2025-01-01",
"maturity_date": null,
"benchmark": "Example composite benchmark",
"old_benchmark": null,
"new_benchmark": null,
"benchmark_effective_date": null,
"risk_of_principal_erosion": "Principal may fluctuate; synthetic disclosure.",
"pricing_mechanism": "Forward pricing — illustrative",
"dealing_days": "Monday to Friday — illustrative",
"dealing_time": "09:00 to 14:00 Pakistan time — illustrative",
"cutoff_time": "14:00 Pakistan time — illustrative",
"settlement_period": "T+2 — illustrative, not an actual dealing policy",
"minimum_initial_investment_pkr": "5000.0000",
"minimum_subsequent_investment_pkr": "1000.0000",
"minimum_redemption_pkr": "1000.0000",
"unit_classes": [
"Illustrative standard units"
],
"leverage": "None in this synthetic example"
},
"report_fragments": [
{
"id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"schema_version": "fmr_page_v3",
"data_version": 1,
"promoted_at": "2026-10-08T08:00:00Z",
"report_date": "2026-09-30",
"report_month": "September 2026",
"page_type": "FUND_REPORT",
"extraction_mode": "PROFILE_PERFORMANCE_PORTFOLIO",
"amc_name_raw": "Example Asset Management",
"fund_name_raw": "Example Research Fund",
"fund_short_name_raw": "ERF",
"parent_fund_name_raw": null,
"plan_name_raw": null,
"fund_type_raw": "Open-end",
"category_raw": "Illustrative mixed-asset category",
"risk_profile_raw": "Illustrative higher-risk profile",
"risk_of_principal_erosion_raw": "Principal may fluctuate; synthetic disclosure.",
"is_shariah_compliant": false,
"is_plan": false,
"is_pension_scheme": false,
"is_etf": false,
"launch_date": "2025-01-01",
"inception_date": "2025-01-01",
"maturity_date": null,
"benchmark_raw": "Example composite benchmark",
"old_benchmark_raw": null,
"new_benchmark_raw": null,
"benchmark_effective_date": null,
"par_value": "100.000000",
"listing_raw": null,
"leverage_raw": "None in this synthetic example",
"nav_per_unit": "100.500000",
"nav_date": "2026-09-30",
"offer_price": "100.500000",
"redemption_price": "100.500000",
"repurchase_price": "100.500000",
"market_price": null,
"net_assets": "1005000000.0000",
"fund_size": "1005000000.0000",
"fund_size_including_fof": "1005000000.0000",
"fund_size_excluding_fof": "1005000000.0000",
"amount_invested_by_fof": "0.0000",
"units_outstanding": "10000000.000000",
"currency": "PKR",
"pricing_mechanism_raw": "Forward pricing — illustrative",
"dealing_days_raw": "Monday to Friday — illustrative",
"dealing_time_raw": "09:00 to 14:00 Pakistan time — illustrative",
"cutoff_time_raw": "14:00 Pakistan time — illustrative",
"settlement_period_raw": "T+2 — illustrative, not an actual dealing policy",
"minimum_initial_investment": "5000.0000",
"minimum_subsequent_investment": "1000.0000",
"minimum_redemption": "1000.0000",
"unit_classes": [
"Illustrative standard units"
]
}
],
"sub_funds": [],
"reported_returns": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"period_label_raw": "1 year",
"period_key": "1Y",
"fund_return_percent": "12.00000000",
"benchmark_return_percent": "10.00000000",
"peer_return_percent": null,
"return_type": "ABSOLUTE",
"is_annualized": false,
"is_since_inception": false,
"calculation_basis_raw": "Synthetic cumulative return for the stated period"
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 2,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"period_label_raw": "Month to date",
"period_key": "MTD",
"fund_return_percent": "0.50000000",
"benchmark_return_percent": "0.40000000",
"peer_return_percent": null,
"return_type": "ABSOLUTE",
"is_annualized": false,
"is_since_inception": false,
"calculation_basis_raw": "Synthetic cumulative September return"
}
],
"allocations": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "ASSET_ALLOCATION",
"label_raw": "Equities",
"label_normalized": null,
"percent_of_total_assets": "60.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "603000000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 2,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "ASSET_ALLOCATION",
"label_raw": "Cash",
"label_normalized": null,
"percent_of_total_assets": "20.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "201000000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 3,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "ASSET_ALLOCATION",
"label_raw": "Government securities",
"label_normalized": null,
"percent_of_total_assets": "15.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "150750000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 4,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "ASSET_ALLOCATION",
"label_raw": "Other assets",
"label_normalized": null,
"percent_of_total_assets": "5.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "50250000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 5,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "SECTOR_ALLOCATION",
"label_raw": "Technology",
"label_normalized": null,
"percent_of_total_assets": "25.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "251250000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 6,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "SECTOR_ALLOCATION",
"label_raw": "Fertilizer",
"label_normalized": null,
"percent_of_total_assets": "20.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "201000000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 7,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "SECTOR_ALLOCATION",
"label_raw": "Banks",
"label_normalized": null,
"percent_of_total_assets": "15.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": "150750000.0000",
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 8,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "CREDIT_QUALITY",
"label_raw": "Government securities — illustrative bucket",
"label_normalized": null,
"percent_of_total_assets": "15.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": null,
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 9,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"allocation_type": "CREDIT_QUALITY",
"label_raw": "Unrated / no rating assigned in this example",
"label_normalized": null,
"percent_of_total_assets": "85.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"amount": null,
"current_period": null,
"previous_period": null,
"change_percent": null,
"bucket_start_days": null,
"bucket_end_days": null,
"bucket_start_years": null,
"bucket_end_years": null
}
],
"holdings": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"holding_group": "TOP_HOLDINGS",
"rank": 1,
"name_raw": "Example Technology Company",
"holding_type": "EQUITY",
"asset_class": "Equities",
"issuer_name_raw": "Example Technology Company",
"security_name_raw": "Example Technology Company ordinary shares",
"symbol_raw": "EXTECH",
"sector_raw": "Technology",
"percent_of_total_assets": "18.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"percent_held": null,
"market_value": "180900000.0000",
"value_before_provisioning": null,
"provisioning_amount": null,
"value_after_provisioning": null,
"quantity": "1000000.000000",
"units": "shares",
"credit_rating": null,
"rating_agency": null,
"instrument_type_raw": "Ordinary shares",
"coupon_rate": null,
"yield_percent": null,
"ytm_percent": null,
"issue_date": null,
"maturity_date": null,
"listed_or_unlisted": "Listed — illustrative",
"secured_or_unsecured": null,
"is_shariah_compliant": null,
"is_top_holding": true,
"is_non_compliant": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 2,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"holding_group": "TOP_HOLDINGS",
"rank": 2,
"name_raw": "Example Fertilizer Company",
"holding_type": "EQUITY",
"asset_class": "Equities",
"issuer_name_raw": "Example Fertilizer Company",
"security_name_raw": "Example Fertilizer Company ordinary shares",
"symbol_raw": "EXFERT",
"sector_raw": "Fertilizer",
"percent_of_total_assets": "12.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"percent_held": null,
"market_value": "120600000.0000",
"value_before_provisioning": null,
"provisioning_amount": null,
"value_after_provisioning": null,
"quantity": "800000.000000",
"units": "shares",
"credit_rating": null,
"rating_agency": null,
"instrument_type_raw": "Ordinary shares",
"coupon_rate": null,
"yield_percent": null,
"ytm_percent": null,
"issue_date": null,
"maturity_date": null,
"listed_or_unlisted": "Listed — illustrative",
"secured_or_unsecured": null,
"is_shariah_compliant": null,
"is_top_holding": true,
"is_non_compliant": null
},
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 3,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"holding_group": "TOP_HOLDINGS",
"rank": 3,
"name_raw": "Example Banking Company",
"holding_type": "EQUITY",
"asset_class": "Equities",
"issuer_name_raw": "Example Banking Company",
"security_name_raw": "Example Banking Company ordinary shares",
"symbol_raw": "EXBANK",
"sector_raw": "Banks",
"percent_of_total_assets": "8.000000",
"percent_of_net_assets": null,
"percent_of_gross_assets": null,
"percent_held": null,
"market_value": "80400000.0000",
"value_before_provisioning": null,
"provisioning_amount": null,
"value_after_provisioning": null,
"quantity": "500000.000000",
"units": "shares",
"credit_rating": null,
"rating_agency": null,
"instrument_type_raw": "Ordinary shares",
"coupon_rate": null,
"yield_percent": null,
"ytm_percent": null,
"issue_date": null,
"maturity_date": null,
"listed_or_unlisted": "Listed — illustrative",
"secured_or_unsecured": null,
"is_shariah_compliant": null,
"is_top_holding": true,
"is_non_compliant": null
}
],
"metrics": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"metric_key": "NUMBER_OF_HOLDINGS",
"label_raw": "Illustrative number of equity holdings",
"value": "12.00000000",
"unit": "count",
"period": "September 2026",
"benchmark_value": null
}
],
"fees": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"fee_type": "TOTAL_EXPENSE_RATIO",
"label_raw": "Illustrative annualized total expense ratio",
"value_percent": "2.000000",
"value_amount": null,
"currency": "PKR",
"period": "September 2026 — annualized illustration",
"with_government_levies": true,
"government_levy_percent": null,
"secp_fee_percent": null,
"is_actual_charged": true,
"is_maximum_allowed": false
}
],
"ratings": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"rating_type": "ILLUSTRATIVE",
"rating_raw": "Illustrative rating — not an agency opinion",
"rating_agency": "Example agency (fictional)",
"rating_date": null,
"outlook_raw": null
}
],
"parties": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"role": "FUND_MANAGER",
"name_raw": "Example Research Team",
"designation_raw": "Illustrative fund-management team",
"organization_raw": "Example Asset Management"
}
],
"special_terms": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"term_type": "INVESTMENT_OBJECTIVE",
"label_raw": "Illustrative investment objective",
"value_raw": "A fictional mixed-asset portfolio used only to demonstrate the response model.",
"value_numeric": null,
"value_percent": null,
"value_amount": null,
"value_date": null,
"currency": "PKR"
}
],
"compliance": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"compliance_type": "ILLUSTRATIVE_DISCLOSURE",
"name_raw": "Synthetic compliance disclosure",
"limit_type_raw": null,
"regulatory_limit_percent": null,
"actual_exposure_percent": null,
"excess_percent": null,
"gross_assets_percent": null,
"net_assets_percent": null,
"status_raw": "Illustrative only — no regulatory assessment has been performed"
}
],
"notes": [
{
"sub_fund_key": null,
"sub_fund_name_raw": null,
"row_order": 1,
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"note_kind": "NOTE",
"section_type": "PORTFOLIO",
"note_type": "ILLUSTRATIVE",
"text": "All figures and entities are synthetic. The three reported top holdings are a partial list. Sector percentages use total assets. Credit-quality labels and rating text are not agency opinions."
}
],
"source": [
{
"report_id": "00000000-0000-4000-8000-000000000101",
"page_number": 1,
"document": null,
"promoted_at": "2026-10-08T08:00:00Z",
"data_version": 1
}
],
"sections": {
"sub_funds": {
"status": "NOT_REPORTED",
"row_count": 0
},
"reported_returns": {
"status": "AVAILABLE",
"row_count": 2
},
"allocations": {
"status": "AVAILABLE",
"row_count": 9
},
"holdings": {
"status": "AVAILABLE",
"row_count": 3
},
"metrics": {
"status": "AVAILABLE",
"row_count": 1
},
"fees": {
"status": "AVAILABLE",
"row_count": 1
},
"ratings": {
"status": "AVAILABLE",
"row_count": 1
},
"parties": {
"status": "AVAILABLE",
"row_count": 1
},
"special_terms": {
"status": "AVAILABLE",
"row_count": 1
},
"compliance": {
"status": "AVAILABLE",
"row_count": 1
},
"notes": {
"status": "AVAILABLE",
"row_count": 1
},
"source": {
"status": "AVAILABLE",
"row_count": 1
}
},
"available_expansions": [
"allocations",
"compliance",
"fees",
"holdings",
"metrics",
"notes",
"parties",
"ratings",
"reported_returns",
"source",
"special_terms",
"sub_funds"
]
},
"meta": {
"request_id": "00000000000040008000000000000401",
"generated_at": "2026-10-08T08:00:00Z",
"data_as_of": "2026-09-30",
"data_freshness_days": 8
}
}Inspect the latest NAV model
{
"success": true,
"data": [
{
"fund_id": "00000000-0000-4000-8000-000000000201",
"fund_slug": "example-research-fund",
"fund_name": "Example Research Fund",
"mufap_fund_id": null,
"nav_date": "2026-09-30",
"nav": "100.500000",
"offer_price": "100.500000",
"repurchase_price": "100.500000",
"market_price": null,
"front_end_load_pct": "0.000000",
"back_end_load_pct": "0.000000",
"contingent_load_pct": null,
"nav_change_abs": null,
"nav_change_pct": null,
"currency": "PKR"
}
],
"meta": {
"request_id": "00000000000040008000000000000402",
"generated_at": "2026-10-08T08:00:00Z",
"data_as_of": "2026-09-30",
"data_freshness_days": 8
}
}Sources & further reading
Check the published contract for current fields and limits. Source documents describe reported facts; API availability still depends on promoted production coverage.
- ILovePSX public payout-history operation
Checked against the implemented routes and payout repository on 9 October 2026.
- ILovePSX authentication and error conventions
- MUFAP public mutual-fund payouts table
Source columns reviewed 9 October 2026; no current fund observations are reproduced in the fictional example.
Put the guide to work.
Start with the documented contract, keep your key server-side, and make dates and missing data visible in your product.
Read payout history and NAV operations