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 —
"stripe.com", the fastest and least ambiguous; - a company name —
"Stripe", 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.RESOLVE and point the rest of your formulas at that column, rather than resolving the same name on every formula.
Quick start
=INVEN.DATA("stripe.com","INV_TOTAL_REV") Latest total revenue
=INVEN.COMPANY("stripe.com") A table of key facts
=INVEN.COMPANIES(A2:A50) Enrich a whole list at once
=INVEN.RESOLVE("Stripe") → stripe.com
Functions
INVEN.DATA
=INVEN.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. INV_TOTAL_REV — see Field codes |
period |
No | Fiscal year or relative offset, for financial-statement items |
currency |
No | ISO currency code; defaults to USD |
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.
=INVEN.DATA("stripe.com","INV_TOTAL_REV")
=INVEN.DATA("stripe.com","INV_TOTAL_REV","-1","EUR")
=INVEN.DATA("acme.co.uk","INV_EBITDA_MARGIN","2023")
Field codes are case-insensitive and accept spaces or hyphens in place of underscores, so INV_TOTAL_REV, inv total rev and inv-total-rev are the same code.
INVEN.COMPANY
=INVEN.COMPANY(identifier, [currency])
Spills a two-column table of key facts for one company: a label in the first column, the value in the second. Give it thirteen empty rows to spill into.
The rows are: company name, domain, website, LinkedIn, headquarters, founded, ownership, employees, revenue, EBITDA, total funding, last funding date, and one-year headcount growth. Monetary rows are in millions of currency, which defaults to USD.
=INVEN.COMPANY("stripe.com")
=INVEN.COMPANY("stripe.com","EUR")
INVEN.COMPANIES
=INVEN.COMPANIES(identifiers, [currency])
Enriches a vertical range of companies in one batched call, spilling a header row followed by one row per input. This is the most credit-efficient way to enrich a list — far cheaper than one INVEN.COMPANY per row.
The columns match INVEN.COMPANY, with the input identifier in the first column.
=INVEN.COMPANIES(A2:A50)
=INVEN.COMPANIES(A2:A50,"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.
Because a spilled table cannot raise an error for one row, a row that fails carries its explanation in place of its values.
INVEN.FIELD
=INVEN.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.DATA, which takes a period and a currency and is what the formula-bar dropdown offers.
=INVEN.FIELD("stripe.com","employees")
=INVEN.FIELD("stripe.com","HQ country")
Names are matched ignoring case and separators.
INVEN.META
=INVEN.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.META("acme.co.uk","INV_TOTAL_REV")
=INVEN.META("acme.co.uk","INV_TOTAL_REV","2023","fx_rate")
INVEN.RESOLVE
=INVEN.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.RESOLVE("Stripe") → stripe.com
Field codes
The item argument of INVEN.DATA and INVEN.META 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) |
MARKET_CAP | Market capitalisation (USD) |
EV | Total enterprise value (USD) |
EV_EBITDA | TEV/EBITDA |
EV_SALES | TEV/total revenues |
EV_EBIT | TEV/EBIT |
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) |
FUNDING_STAGE | Funding stage |
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 |
|---|---|
INV_TOTAL_REV | Total revenues |
INV_GP | Gross profit |
INV_OPER_INC | Operating income |
INV_EBITDA | EBITDA |
INV_NI | Net income |
INV_DA_SUPPL | Depreciation and amortisation |
Balance sheet
Codes in this group accept a period.
| Code | Meaning |
|---|---|
INV_TOTAL_ASSETS | Total assets |
INV_TOTAL_CA | Total current assets |
INV_NPPE | Fixed assets (total, as filed) |
INV_TOTAL_LIAB | Total liabilities |
INV_TOTAL_CL | Total current liabilities |
INV_NON_CURRENT_LIAB | Total non-current liabilities |
INV_TOTAL_EQUITY | Total equity |
Ratios and margins
| Code | Meaning |
|---|---|
INV_GROSS_MARGIN | Gross margin % |
INV_EBITDA_MARGIN | EBITDA margin % |
INV_NI_MARGIN | Net income margin % |
INV_OPER_MARGIN | Operating margin % |
INV_RETURN_EQUITY | Return on equity % |
INV_RETURN_ASSETS | Return on assets % |
INV_CURRENT_RATIO | Current ratio |
Growth rates
| Code | Meaning |
|---|---|
INV_TOTAL_REV_1YR_ANN_GROWTH | Total revenues, 1 yr growth % |
INV_EBITDA_1YR_ANN_GROWTH | EBITDA, 1 yr growth % |
INV_GP_1YR_ANN_GROWTH | Gross profit, 1 yr growth % |
INV_EBIT_1YR_ANN_GROWTH | EBIT, 1 yr growth % |
INV_REV_GROWTH_1YR, INV_REV_GROWTH_2YR, INV_REV_GROWTH_3YR | Revenue growth, past period % |
INV_REV_GROWTH_FWD_1YR, INV_REV_GROWTH_FWD_2YR | Revenue growth, forward period % |
Listed companies
| Code | Meaning |
|---|---|
INV_TICKER | Ticker symbol |
INV_EXCHANGE | Stock exchange |
INV_IPO_DATE | IPO date |
INV_MARKETCAP | Market capitalisation (USD) |
INV_TEV | Total enterprise value (USD) |
INV_TEV_TOTAL_REV | TEV/total revenues |
INV_TEV_EBITDA | TEV/EBITDA |
INV_TEV_EBIT | TEV/EBIT |
INV_PE | Price/earnings |
INV_PRICE_SALES | Price/sales |
INV_PBV | Price/book value |
INV_PUB_TOTAL_REV | Total revenues, listed (USD) |
INV_PUB_EBITDA | EBITDA, listed (USD) |
INV_PUB_EBIT | EBIT, listed (USD) |
INV_PUB_NI | Net income, listed (USD) |
INV_PUB_EBITDA_MARGIN | EBITDA margin %, listed |
INV_PUB_EBIT_MARGIN | EBIT margin %, listed |
INV_PUB_NI_MARGIN | Net income margin %, listed |
Also available
INV_COMPANY_NAME, INV_BUSINESS_DESCRIPTION, INV_COMPANY_ADDRESS, INV_FULL_TIME (employees from LinkedIn) and INV_REVENUE_EST mirror profile fields under the INV_ naming.
Currencies
currency accepts: USD (default), EUR, GBP, CHF, SEK, NOK, DKK, PLN, JPY, CNY, AUD, CAD, NZD, INR, BRL, ZAR.
Figures are converted from the currency they were filed in. Use INVEN.META with fx_rate, fx_rate_date or fx_rate_source to see the rate applied.
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 |
#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 |
#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.
Rate limits
Inven allows five company-data requests per second per organisation. 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.
