All Posts
ProductETF Custodian APIService Provider HistorySEC Form N-CEN

ETF Custodian and Service Provider API: Beyond the Holdings List

Look up which bank actually custodies an ETF's assets: custodian, administrator, transfer agent, and lending agent from SEC Form N-CEN as JSON.

Published August 17, 202612 min readStockFit Engineering
ETF Custodian and Service Provider API: Beyond the Holdings List

Ask a holdings API what an ETF owns and you get an answer in seconds. Ask who actually holds those assets in custody, who administers the fund, or who is on file as the transfer agent, and almost nothing on the market can tell you. That information is not secret. It is disclosed every year in the fund's own SEC filings, alongside the securities-lending agent, the pricing services, and the full roster of authorized participants and brokers the fund used. No holdings feed or expense-ratio comparison tool touches it, because it does not live in the same filing as holdings or fees. It lives in Form N-CEN, the fund's annual operational census, and until now there was no API built to query it directly by ticker.

Every figure in this post is pulled from the live StockFit production API as of 2026-08-17, from each fund's most recently filed N-CEN, with the exact reporting date attached to every row. Nothing here is estimated.

Why the custodian and service provider matter

The custodian is the institution actually holding a fund's cash and securities, the counterparty an investor is trusting alongside the fund's own advisor. A custodian that is thinly capitalized, poorly rated, or an affiliate cutting corners on independent oversight is counterparty risk sitting directly under every dollar in the fund, and it has nothing to do with what the fund owns. The administrator, transfer agent, and securities-lending agent carry parallel operational risk: whoever miscalculates NAV, mishandles the shareholder register, or lends out portfolio securities carelessly can cost an investor money without a single holding ever changing. None of that shows up in a holdings feed, an expense ratio, or a price chart, because it is not portfolio data, it is who the fund does business with, disclosed once a year in Form N-CEN, and until now there was no API built to query it directly by ticker.

That is why a change in custodian, administrator, or the roster of authorized participants able to create and redeem shares is a real operational event, the kind of thing a due-diligence team, a fund complex benchmarking its own vendors, or a competitor tracking the ETF industry's infrastructure would want to know about the moment it is disclosed, not months later by accident. Today that means reading the raw N-CEN filing by hand; a comparison site built entirely on holdings and price data, which is most of them, structurally cannot answer the question, because the answer was never in the file it parsed.

What SEC Form N-CEN discloses about service providers

Form N-CEN is the annual operational census every registered fund, ETFs and mutual funds alike, files with the SEC within 75 days of its fiscal year end. Unlike the holdings-focused Form N-PORT, N-CEN is built around the fund's own operations: securities lending, derivatives usage, borrowing arrangements, and a full roster of the entities the fund does business with. The SEC's own N-CEN data sets page and the Form N-CEN instructions lay out the full schema; the service-provider section alone covers eight distinct roles: custodian, administrator, transfer agent, adviser and sub-adviser, securities-lending agent, pricing service, authorized participant, and broker.

Each role means something different operationally. The custodian physically (or electronically) holds the fund's assets. The admin handles fund accounting and NAV calculation. The transfer-agent maintains the shareholder record. The lending-agent runs the fund's securities-lending program on its behalf. authorized-participant entries are the institutions permitted to create and redeem creation units directly with the fund, the mechanism that keeps an ETF's market price tracking its net asset value. broker entries, filed with each counterparty's aggregate commission for the year, are who the fund actually traded through. None of it is inferred; every name, LEI, and CRD number on the roster comes straight from the filing.

Service provider API walkthrough: live JSON

Here is JEPI's custodian entry from its most recently filed N-CEN, via /api/fund/service-providers:

bash
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.stockfit.io/v1/api/fund/service-providers?symbol=JEPI&limit=1"
json
{
  "providersByYear": [
    {
      "reportDate": "2025-06-30",
      "providers": [
        { "providerRole": "custodian", "providerName": "Barclays Capital, Inc.",
          "isAffiliated": false, "lei": "AC28XWWI3WIBK2824319" },
        { "providerRole": "custodian", "providerName": "Citigroup Global Markets Inc.",
          "isAffiliated": false, "lei": "MBNUM2BPBDO7JBLYG310" },
        { "providerRole": "custodian", "providerName": "JPMorgan Chase Bank, N.A.",
          "isAffiliated": true, "lei": "7H6GLXDRUGQFU57RNE97" },
        { "providerRole": "transfer-agent", "providerName": "JPMorgan Chase Bank, N.A.",
          "isAffiliated": true, "lei": "7H6GLXDRUGQFU57RNE97" },
        { "providerRole": "lending-agent", "providerName": "Citibank N.A.",
          "isAffiliated": false, "lei": "E57ODZWZ7FF32TWEFA76" }
      ]
    }
  ]
}

Every row carries isAffiliated: JPMorgan Chase Bank shows up twice, once as an affiliated custodian and once as JEPI's transfer agent, both flagged true because the fund's advisor is a JPMorgan entity. Citibank, the securities-lending agent, and the two non-JPMorgan custodians are flagged false, independent third parties. That single boolean tells you at a glance which relationships are in-house and which are arm's-length, a distinction a raw holdings or price feed has no field for at all.

Pull the full year instead of one role and JEPI's N-CEN filing for 2025-06-30 carries 44 individually named entities:

JEPI's full N-CEN service-provider roster, by role
GET /api/fund/service-providers?symbol=JEPI, reportDate 2025-06-30. 44 named entities across 8 operational roles from one annual filing. Verified 2026-08-17.

Twenty-two authorized participants and eleven brokers dominate the count, the competitive execution layer behind every creation, redemption, and portfolio trade. Three custodians, an administrator, a transfer agent, a lending agent, and an adviser round out the operational core. That is the roster of a $44 billion ETF's entire service-provider network, disclosed once a year, in one filing, and returned as one structured API call.

Catching a custodian change

Because the endpoint groups by reportDate, a change in the roster year over year is a diff, not a scrape-and-compare exercise. JEPI's custodian list held steady at three names from 2024-06-30 through most of its history, then changed between 2024-06-30 and 2025-06-30:

JEPI custodian, 2024-06-30 to 2025-06-30
2024-06-30
BofA Securities, Inc., Citigroup Global Markets Inc., JPMorgan Chase Bank, N.A.
2025-06-30
Barclays Capital, Inc., Citigroup Global Markets Inc., JPMorgan Chase Bank, N.A.
BofA Securities, Inc. dropped off the roster; Barclays Capital, Inc. was added. Citigroup and JPMorgan Chase were unchanged custodians across all six years on file.

A custodian change like this is not, by itself, a verdict on the fund. It is a prompt to look. A dropped custodian can mean the fund complex renegotiated better terms, ended a relationship it was unhappy with, or the custodian itself exited a line of business, distinctions the roster alone cannot make. What it tells an investor for certain is that the fund's operational plumbing changed at a specific point in time, worth checking alongside the same filing's other disclosures, payment errors, valuation changes, a shift in securities lending, before writing it off as routine.

ARKK shows the same kind of change on a slower cadence. Its custodian was a single name, The Bank of New York Mellon, for years, briefly joined by The Depository Trust Company from 2020 through 2023, then in its most recent filing a second custodian was added again, this time CIBC Mellon Trust Company:

ARKK custodian, 2024-07-31 to 2025-07-31
2024-07-31
The Bank of New York Mellon
2025-07-31
CIBC Mellon Trust Company, The Bank of New York Mellon
CIBC Mellon Trust Company was added alongside the long-standing custodian, The Bank of New York Mellon.

A single-custodian roster, which ARKK carried for most of its history, concentrates all custodial risk in one institution; adding a second custodian spreads that risk across two counterparties, the kind of shift a risk-focused investor would want to flag even though the fund's holdings did not change at all. Whether it reflects a deliberate diversification decision or an operational need specific to the fund's assets is exactly the kind of question the roster raises rather than answers, one more reason to treat the disclosure as a starting point for due diligence rather than the end of it.

Neither change is disclosed anywhere near JEPI's or ARKK's holdings page, expense ratio, or price chart. It surfaces only by reading the N-CEN filing itself, which is exactly what /api/fund/service-providers does, one call per ticker, every year on file. Beyond custodians, the same endpoint's operational flags catch smaller, still real, events: JEPI's N-CEN for the 2021-06-30 period is the only one of its six years on file with hasPaymentErrors flagged true, and the fund did not actually lend securities under its standing lending authorization until the 2022-06-30 filing, two full years after the authorization first appears. Both are the kind of one-line operational history that a fund's own filings preserve and a resold aggregate feed has no reason to carry forward.

Fund structure and classification API

Service providers answer who runs the fund; /api/fund/structure answers what kind of fund it legally is. It joins the same N-CEN census with N-PORT holdings to return sector and industry allocation by quarter, geographic exposure, balance-sheet trajectory, short positions, and a set of classification flags: whether the fund is an index fund or actively managed, whether it is diversified under the Investment Company Act, and whether it is an in-kind or cash-creation ETF. JEPI reports isIndexFund: false and isNonDiversified: false in every filing on record, consistent with its identity as an actively managed, diversified option-overlay strategy rather than a benchmark tracker, a distinction that matters for anyone screening funds by mandate rather than by name.

/api/fund/fund-health pairs naturally with both: it layers in fair-value hierarchy (how much of the portfolio is priced at observable Level 1 quotes versus modeled Level 2 inputs), liquidity classification, and the same operational red flags (material weakness, legal proceedings, valuation changes, payment errors) alongside a service-provider summary from the latest filing, so a single call can answer "is this fund operationally healthy" as well as "who runs it." The on-ramp for all three is /api/fund/profile, free-tier and Starter-accessible, which resolves a ticker to its fund series before the deeper N-CEN endpoints are called.

Why aggregator feeds don't carry this layer

Most ETF data vendors resell an aggregated holdings or performance feed, correct for what it covers, but built on the fund's portfolio, not its operations. Custodian, transfer agent, and securities-lending agent are not fields in a holdings file; they exist only in the N-CEN operational census, which is why they are absent from most ETF APIs on the market. Parsing that census correctly, and preserving the year-over-year history rather than overwriting it with the latest snapshot, is what turns an annual regulatory filing into a queryable operational record. For the rest of what N-CEN discloses beyond service providers, our ETF deep-lens tour covers the fuller picture, and for the cost side of the same operational layer, see our ETF fee analysis API post. Service providers are keyed to a specific fund series, not the parent trust; for how a trust's CIK relates to the tickers of the series inside it, see our guide to mapping a fund's CIK to its ticker. The full StockFit ETF and fund data API brings the operational layer, holdings, fees, flows, and performance together under one token.

FAQ

Q.How do I find out who custodies an ETF's assets?
Call /api/fund/service-providers with the fund's ticker. The response groups every named entity from the fund's SEC Form N-CEN filings by reporting year and role, and the custodian role rows are the institutions actually holding the fund's cash and securities. Most ETFs disclose two or three custodians per year; the roster and any changes to it are preserved across every year on file, not just the latest one.
Q.What is SEC Form N-CEN and what does it disclose about a fund's service providers?
Form N-CEN is the annual operational census every registered fund files with the SEC within 75 days of its fiscal year end. Its service-provider section discloses eight roles: custodian, administrator, transfer agent, adviser and sub-adviser, securities-lending agent, pricing service, authorized participant, and broker, each with the provider's name and, where applicable, its LEI, CRD number, and whether it is affiliated with the fund's own advisor.
Q.How do I detect when an ETF changes custodians?
Compare the custodian role entries between two consecutive years in the /api/fund/service-providers response. JEPI's custodian roster held at Citigroup, JPMorgan Chase, and BofA Securities for four consecutive N-CEN filings, then BofA Securities dropped off and Barclays Capital was added in the fund's most recent filing. Because every year is preserved rather than overwritten, the change is a direct diff between two rows rather than something that requires re-reading the raw filing by hand.
Q.What is the difference between a fund's custodian and its transfer agent?
The custodian holds the fund's actual assets, cash and securities, in safekeeping. The transfer agent maintains the official record of who owns the fund's shares and processes ownership changes. They are frequently the same institution wearing two hats, as with JEPI, where JPMorgan Chase Bank appears as both an affiliated custodian and the transfer agent, but they are legally distinct roles and N-CEN discloses each separately.
Q.Why does an ETF's authorized-participant roster matter?
Authorized participants are the institutions permitted to create and redeem an ETF's shares directly with the fund in bulk creation units, the mechanism that keeps the fund's market price tied to its net asset value. A large, active AP roster, JEPI lists 22, means more competition to keep that arbitrage tight; a shrinking roster over time is an operational signal worth watching, since it means fewer institutions are willing or able to make markets in the fund's shares.
Q.Does the service-provider API cover mutual funds too, or only ETFs?
Both. Form N-CEN is filed by open-end funds, closed-end funds, and unit investment trusts generally, not ETFs alone, so /api/fund/service-providers and /api/fund/structure resolve mutual fund tickers and CUSIPs the same way they resolve ETF tickers. The response shape does not change by fund type.
Q.How current is the N-CEN service-provider data?
As current as the fund's own annual filing cadence. Form N-CEN is filed within 75 days of each fund's fiscal year end, once a year, so reportDate on each row tells you exactly which filing year a given roster reflects. StockFit ingests each N-CEN filing as it lands on EDGAR; there is no batch delay beyond what the SEC itself takes to publish the filing.
Q.Which subscription tiers include the ETF service-provider and structure API?
/api/fund/service-providers, /api/fund/structure, and /api/fund/fund-health are on the ETF plan ($59/mo, $39/mo billed annually) and the Professional plan ($99/mo, $69/mo billed annually). /api/fund/profile, the fund-identity on-ramp, is on the free tier. You can get a token from the StockFit dashboard and call it immediately, no credit card required to sign up.

Ready to build?

Free API key, no credit card. Every endpoint mentioned in this post is available on the free tier.