---
title: "Recurring vs services vs other revenue per month"
method: GET
path: "/companies/{companyId}/metrics/revenue-mix"
tags: ["Overview"]
---

# Recurring vs services vs other revenue per month

`GET /companies/{companyId}/metrics/revenue-mix`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/metrics/revenue-mix`
- Auth: HTTP bearer

Returns the Home revenue-mix card: posted revenue per month split into recurring / services / other, classified strictly by the billing provenance the posted books actually carry (business-event linkage, document source, processor-payout source transactions). No account-code heuristics: a revenue line with no recognizable provenance lands in `otherCents`. Window is fixed at the last 6 complete months plus the current month-to-date; entity-scoped when `entityId` is given. `available` is false with `months: []` when the window holds no posted revenue lines.

## Query parameters

- `entityId` string, uuid

## Response `200`

Revenue-mix payload

- RevenueMixResponse
  - `success` true, required
  - `data` RevenueMixData, required
    - `available` boolean, required: False when the window holds no posted revenue lines (months empty).
    - `reason` 'mixed_currencies': Present only when available is false because the company-wide read spans entities in different functional currencies (banned before consolidation). Entity-scoped reads are single-currency and never carry this.
    - `basis` 'billing-source', required
    - `months` RevenueMixMonth[], required: Ascending; the 6 complete months plus the current month-to-date, every month present (zero-filled) when available.
      - `month` string, required
      - `recurringCents` integer, required: Posted revenue with recurring billing provenance, in cents.
      - `servicesCents` integer, required: Posted revenue with services billing provenance, in cents.
      - `otherCents` integer, required: Posted revenue with no recognizable billing provenance, in cents.

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `422`: Request failed validation
- `503`: The legal-entity scope authority could not be read

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
