Inven for Excel — function reference
The Inven add-in adds six worksheet functions under the INVEN namespace. They fetch live company data from Inven into your spreadsheet.
Need help? See Support.
Before you start
Open the Inven task pane from the Inven button on the Home tab and sign in. Until you do, every INVEN. formula returns #SIGN_IN. Using the functions requires an Inven subscription with the Excel add-in enabled for your organisation.
Identifying a company
Every function takes an identifier as its first argument. This can be:
- a domain —
"kone.com", the fastest and least ambiguous; - a company name —
"KONE", which Inven resolves to a company; - an Inven company id.
Prefer domains. If you are working from a list of names, resolve them once with INVEN.COMPANY_RESOLVE and point the rest of your formulas at that column, rather than resolving the same name on every formula.
Quick start
=INVEN.COMPANY_DATA("kone.com","TOTAL_REV") Latest total revenue
=INVEN.COMPANY_DATA_ARRAY(A2:A50,"TOTAL_REV") The same field down a list
=INVEN.COMPANY_META("kone.com","TOTAL_REV") Where that number came from
=INVEN.COMPANY_RESOLVE("KONE") → kone.com
Functions
INVEN.COMPANY_DATA
=INVEN.COMPANY_DATA(identifier, item, [period], [currency])
Returns a single value for one company and one field code. This is the main function, and the one to reach for whenever a field code exists for what you want.
| Argument | Required | Description |
|---|---|---|
identifier |
Yes | Company domain, name or Inven company id |
item |
Yes | Field code, e.g. TOTAL_REV — see Field codes |
period |
No | Fiscal year or relative offset, for financial-statement items |
currency |
No | ISO currency code; when omitted, the value keeps the currency it is reported in |
period accepts a fiscal year ("2023" or "FY2023") or an offset from the latest available year ("0" for the latest, "-1" for one year back, and so on). When omitted, the latest available year is used. It has no effect on fields that are not point-in-time financials.
Leave currency out and a money figure comes back as Inven reports it: in the currency a registry filing was filed in, and in USD for a listed company's statements and for funding and valuation figures. Name a currency and the value is converted into it. See Currencies.
=INVEN.COMPANY_DATA("kone.com","TOTAL_REV")
=INVEN.COMPANY_DATA("kone.com","TOTAL_REV","-1","EUR")
=INVEN.COMPANY_DATA("acme.co.uk","EBITDA_MARGIN","2023")
Field codes are case-insensitive and accept spaces or hyphens in place of underscores, so TOTAL_REV, total rev and total-rev are the same code.
INVEN.COMPANY_DATA_ARRAY
=INVEN.COMPANY_DATA_ARRAY(identifiers, item, [period], [currency])
Fetches one field for a range of companies in a single batched call, spilling a column of values — one row per input cell, in the order they were given. Reach for this instead of filling INVEN.COMPANY_DATA down a column: it is one request for the whole range rather than one per row.
| Argument | Required | Description |
|---|---|---|
identifiers |
Yes | A range of company domains, names or Inven company ids |
item |
Yes | Field code, e.g. TOTAL_REV — see Field codes |
period |
No | Fiscal year or relative offset, for financial-statement items |
currency |
No | ISO currency code for the whole column; defaults to USD |
Unlike INVEN.COMPANY_DATA, which keeps a figure in the currency Inven reports it in, a column settles on one currency — USD unless you name another. One column carries one number format and invites reading down its length, so a filed EUR figure sitting next to a filed GBP one would look like a difference in size rather than in currency.
=INVEN.COMPANY_DATA_ARRAY(A2:A50,"TOTAL_REV")
=INVEN.COMPANY_DATA_ARRAY(A2:A50,"REVENUE","2024","GBP")
A single call is capped at 100 non-empty inputs. Inven's data agreements permit per-user, on-demand exports but not bulk extraction, and the cap keeps normal use on the right side of that line; pull longer lists in successive ranges. Blank inputs spill blank, and a row that fails carries its explanation in place of its value, because a spill cannot raise an error for one row.
INVEN.COMPANY_META
=INVEN.COMPANY_META(identifier, item, [period], [attribute], [currency])
Where a figure came from, so a number in a model can be defended.
attribute |
Returns |
|---|---|
source (default) |
The origin of the value, e.g. Companies House, Acme Ltd (2024) |
fx_rate |
USD per one unit of the value's own currency |
fx_rate_date |
The date that rate was taken, as YYYY-MM-DD |
fx_rate_source |
The provider of the rate |
=INVEN.COMPANY_META("acme.co.uk","TOTAL_REV")
=INVEN.COMPANY_META("acme.co.uk","TOTAL_REV","2023","fx_rate")
INVEN.COMPANY_META_ARRAY
=INVEN.COMPANY_META_ARRAY(identifiers, item, [period], [attribute], [currency])
The provenance behind each value INVEN.COMPANY_DATA_ARRAY fetched: the same arguments, and a column of sources rather than figures, so a fetched column can be evidenced beside itself. Takes the same optional attribute as INVEN.COMPANY_META.
=INVEN.COMPANY_META_ARRAY(A2:A50,"TOTAL_REV")
=INVEN.COMPANY_META_ARRAY(A2:A50,"REVENUE","2024","fx_rate")
INVEN.COMPANY_FIELD
=INVEN.COMPANY_FIELD(identifier, fieldName)
Generic accessor by field name. It checks the field codes first, then falls back to the raw keys of Inven's company record.
Reach for this only when no field code covers what you want — it is the escape hatch. Where a code exists, use INVEN.COMPANY_DATA, which takes a period and a currency and is what the formula-bar dropdown offers.
=INVEN.COMPANY_FIELD("kone.com","employees")
=INVEN.COMPANY_FIELD("kone.com","HQ country")
Names are matched ignoring case and separators.
INVEN.COMPANY_RESOLVE
=INVEN.COMPANY_RESOLVE(name)
Returns the canonical Inven domain for a company name. Use it to pin a lookup column once instead of resolving the same name in every formula.
=INVEN.COMPANY_RESOLVE("KONE") → kone.com
Field codes
The item argument of INVEN.COMPANY_DATA, INVEN.COMPANY_META, INVEN.COMPANY_DATA_ARRAY and INVEN.COMPANY_META_ARRAY takes one of the codes below. Excel offers them in a dropdown as you type the formula, so you rarely need this list in full.
Company profile
| Code | Meaning |
|---|---|
COMPANY_NAME | Company name |
DOMAIN | Domain |
WEBSITE | Website |
LINKEDIN | |
DESCRIPTION | Description |
HQ | Headquarters |
HQ_CITY | HQ city |
HQ_STATE | HQ state |
HQ_COUNTRY | HQ country |
FOUNDED | Founded |
OWNERSHIP | Ownership |
EMPLOYEES | Employees |
HEADCOUNT | Headcount band |
Headline figures
| Code | Meaning |
|---|---|
REVENUE | Revenue (millions) |
EBITDA | EBITDA (millions) |
GROSS_PROFIT | Gross profit |
NET_PROFIT | Net income |
EBITDA_MARGIN | EBITDA margin % |
REVENUE_ESTIMATE | Revenue estimate (USD m) |
Funding
| Code | Meaning |
|---|---|
TOTAL_FUNDING | Total funding (USD m) |
LAST_FUNDING_DATE | Last funding date |
LAST_FUNDING_TYPE | Last funding type |
LAST_FUNDING_AMOUNT | Last funding amount (USD m) |
INVESTMENT_COUNT | Investment count |
Growth signals
| Code | Meaning |
|---|---|
HC_GROWTH_3M, HC_GROWTH_6M, HC_GROWTH_1Y, HC_GROWTH_2Y, HC_GROWTH_3Y, HC_GROWTH_4Y, HC_GROWTH_5Y | Headcount growth over the period |
TRAFFIC_GROWTH_3M, TRAFFIC_GROWTH_6M, TRAFFIC_GROWTH_1Y, TRAFFIC_GROWTH_2Y | Web traffic growth over the period |
Income statement
Codes in this group accept a period.
| Code | Meaning |
|---|---|
TOTAL_REV | Total revenues |
GP | Gross profit |
OPER_INC | Operating income |
NI | Net income |
DA_SUPPL | Depreciation and amortisation |
Balance sheet
Codes in this group accept a period.
| Code | Meaning |
|---|---|
TOTAL_ASSETS | Total assets |
TOTAL_CA | Total current assets |
NPPE | Fixed assets (total, as filed) |
TOTAL_LIAB | Total liabilities |
TOTAL_CL | Total current liabilities |
NON_CURRENT_LIAB | Total non-current liabilities |
TOTAL_EQUITY | Total equity |
Ratios and margins
| Code | Meaning |
|---|---|
GROSS_MARGIN | Gross margin % |
NI_MARGIN | Net income margin % |
OPER_MARGIN | Operating margin % |
RETURN_EQUITY | Return on equity % |
RETURN_ASSETS | Return on assets % |
CURRENT_RATIO | Current ratio |
Growth rates
Growth is asked for from three different sources, and the codes are not interchangeable. Pick the row that matches the companies in your sheet.
| Code | Meaning | Answers for |
|---|---|---|
HC_GROWTH_1Y, TRAFFIC_GROWTH_1Y | Headcount and web traffic growth % | any company |
TOTAL_REV_1YR_ANN_GROWTH | Total revenues, 1 yr growth % | companies that file accounts |
EBITDA_1YR_ANN_GROWTH | EBITDA, 1 yr growth % | companies that file accounts |
GP_1YR_ANN_GROWTH | Gross profit, 1 yr growth % | companies that file accounts |
EBIT_1YR_ANN_GROWTH | EBIT, 1 yr growth % | companies that file accounts |
PUB_REV_GROWTH_1YR, PUB_REV_GROWTH_2YR, PUB_REV_GROWTH_3YR | Revenue growth, past period % | listed companies only |
PUB_REV_GROWTH_FWD_1YR, PUB_REV_GROWTH_FWD_2YR | Revenue growth, forward period % | listed companies only |
A PUB_ code on a private company returns nothing — that is the code working as intended, not a gap in the data. For a private company's revenue growth, use TOTAL_REV_1YR_ANN_GROWTH.
Listed companies
| Code | Meaning |
|---|---|
TICKER | Ticker symbol |
EXCHANGE | Stock exchange |
IPO_DATE | IPO date |
MARKET_CAP | Market capitalisation (USD) |
EV | Enterprise value (USD) |
EV_SALES | EV/revenue |
EV_EBITDA | EV/EBITDA |
EV_EBIT | EV/EBIT |
PE | Price/earnings |
PRICE_SALES | Price/sales |
PBV | Price/book value |
PUB_TOTAL_REV | Total revenues, listed (USD) |
PUB_EBITDA | EBITDA, listed (USD) |
PUB_EBIT | EBIT, listed (USD) |
PUB_NI | Net income, listed (USD) |
PUB_EBITDA_MARGIN | EBITDA margin %, listed |
PUB_EBIT_MARGIN | EBIT margin %, listed |
PUB_NI_MARGIN | Net income margin %, listed |
Currencies
currency accepts: USD, EUR, GBP, CHF, SEK, NOK, DKK, PLN, JPY, CNY, AUD, CAD, NZD, INR, BRL, ZAR.
Omit it and the figure keeps the currency it is reported in — the currency a registry filing was filed in, or USD for a listed company's statements and for funding and valuation figures. The cell's currency symbol follows the figure, so a euro filing reads €116.9M.
Name a currency and the figure is converted into it, from the currency it was filed in and at the rate Inven filed alongside it. Use INVEN.COMPANY_META with fx_rate, fx_rate_date or fx_rate_source to see the rate applied.
INVEN.COMPANY_DATA_ARRAY defaults to USD instead, because a single column — under one header, in one number format — has to name one currency for every company in it.
What a cell can return
Excel understands only seven built-in error values and a custom function cannot add an eighth, so account-level problems come back as text that reads like an error:
| Cell shows | Meaning | What to do |
|---|---|---|
#SIGN_IN |
No Inven session, or it was rejected | Sign in from the task pane |
#NO_ACCESS |
Your organisation does not have the Excel add-in, or that data is outside your subscription | Contact support |
#CREDIT_LIMIT |
Your organisation has used its data credits | Contact support |
#MONTHLY_LIMIT |
You, or your organisation, have reached this month's limit on how many new companies formulas may look up | Wait for the start of next month, or use Inven's export for a large list. Contact support to review your account's limits |
#SESSION_LIMIT |
This add-in session has looked up as many different companies as it may | Use Inven's export for a list this size |
#RATE_LIMIT |
Too many requests at once, after automatic retries | Recalculate in a moment |
#N/A |
Inven has no value for that company and field | Nothing — the value does not exist |
#VALUE! |
An argument was missing or not understood | Check the formula |
#BUSY! |
The request is still running | Nothing — it resolves itself |
#MONTHLY_LIMIT and #CREDIT_LIMIT both mean "no more data for now" and are worth telling apart: credits are something an account can buy more of, and the monthly limit is not. It resets at the start of each calendar month.
#MONTHLY_LIMIT and #SESSION_LIMIT count different companies, not formulas or recalculations. Values already in the sheet are unaffected, and existing formulas keep refreshing — it is only companies new to you that stop. See Limits.
#N/A is a real Excel error, so IFERROR and ISNA work with it as usual. The text values above are not errors to Excel, so test for them with =A1="#SIGN_IN" rather than ISERROR.
Limits
Inven limits how quickly each organisation can request company data. The add-in spaces and retries requests automatically, so an ordinary recalculation stays inside the limit. A very wide rebuild may still return #RATE_LIMIT on some cells; recalculating resolves them.
The formulas are built for models and research, not bulk extraction: Inven's data agreements permit per-user, on-demand exports but not bulk extraction. So there is also a limit on how many different companies formulas may look up — per add-in session (#SESSION_LIMIT), and per user and per organisation each calendar month (#MONTHLY_LIMIT). Only companies new to you count: recalculating a sheet you have already built costs nothing against either, so ordinary use does not come near them. For a very large list, use Inven's export rather than the formulas. If your work regularly reaches the monthly limit, contact support and we can review your account's limits with you.
