Skip to main content
GET
/
pnl-summary
Get P&L summary
curl --request GET \
  --url https://api.simcel.io/insights/v1/pnl-summary \
  --header 'Authorization: Bearer <token>'
{
  "meta": {
    "planId": "plan_9xKz2",
    "currency": "USD",
    "interval": "FY"
  },
  "scenarios": [
    {
      "scenarioId": "scen_abc",
      "scenarioName": "Optimistic 2025",
      "scenarioColor": "#6366F1",
      "pnl": {
        "grossFIESales": 5200000,
        "tradeExpenses": 312000,
        "netFIESales": 4888000,
        "cogs": 2100000,
        "cogsPercent": 0.429,
        "grossProfit": 2788000,
        "supplyChainCost": 420000,
        "storageAndHandling": 180000,
        "transport": 240000,
        "ebit": 2368000,
        "ebitPercent": 0.484,
        "dpm": 1850000,
        "dpmPercent": 0.378
      }
    }
  ]
}

When to use this

Use /pnl-summary when you want to:
  • Compare financial performance across scenarios
  • Identify the biggest cost drivers impacting EBIT
  • Monitor DPM (Distributor Profit Margin) trends
  • Automate P&L reporting into Slack, email, or a BI tool

The P&L waterfall

The response models the standard SIMCEL P&L cascade:
Gross FIE Sales
  − Trade Expenses
= Net FIE Sales
  − COGS
= Gross Profit
  − Supply Chain Costs (Storage & Handling + Transport)
  − Other Costs (Promotions, Medical Affairs, Administration)
= EBIT
  − Overhead
= DPM (Distributor Profit Margin)

Percent fields

All *Percent fields (e.g. ebitPercent, dpmPercent, cogsPercent) are expressed as a decimal ratio against Net FIE Sales:
ebitPercent = ebit / netFIESales
So ebitPercent: 0.484 means 48.4% EBIT margin.

Example: P&L variance between scenarios

resp = client.get("/pnl-summary", params={
    "planId": "plan_9xKz2",
    "scenarioIds": "scen_committed,scen_optimistic",
    "interval": "FY",
    "currency": "EUR",
})

scenarios = {s["scenarioName"]: s["pnl"] for s in resp.json()["scenarios"]}

committed = scenarios["Committed"]
optimistic = scenarios["Optimistic"]

print(f"EBIT upside:   €{optimistic['ebit'] - committed['ebit']:>12,.0f}")
print(f"Margin delta:  {(optimistic['ebitPercent'] - committed['ebitPercent']) * 100:+.1f}pp")
print(f"Net Sales gap: €{optimistic['netFIESales'] - committed['netFIESales']:>12,.0f}")
Output:
EBIT upside:     €492,000
Margin delta:   +1.5pp
Net Sales gap:   €846,000

interval support

The P&L endpoint supports M (monthly) and FY (full year). For monthly, the response contains a series array with one P&L object per month instead of a single pnl object.
For AI agents doing financial analysis, start with interval=FY to get the annual picture, then drill down to interval=M to identify which months drove the variance.

Authorizations

Authorization
string
header
required

Obtain a token via POST /auth/token using your API key and secret. Tokens expire after 1 hour.

Query Parameters

planId
string
required

The plan identifier to query data against

scenarioIds
string[]
required

Comma-separated list of scenario IDs (max 3)

Maximum array length: 3
currency
string
default:USD

ISO 4217 currency code for monetary values

interval
enum<string>
default:FY

Time aggregation level

Available options:
M,
FY
dateFrom
string<date>

Start of the date range (ISO 8601)

dateTo
string<date>

End of the date range (ISO 8601)

Response

P&L summary per scenario

meta
object
scenarios
object[]