---
title: "The plan side of the Open to buy ledger for one plan's fiscal year"
method: GET
path: "/api/v1/mfp/{mfp_id}/plan-side"
tags: ["mfp"]
---

# The plan side of the Open to buy ledger for one plan's fiscal year

`GET /api/v1/mfp/{mfp_id}/plan-side`

## Request

- Base URL: `https://api.app.tightly.io`
- URL: `https://api.app.tightly.io/api/v1/mfp/{mfp_id}/plan-side`
- Auth: HTTP bearer

The plan side of the Open to buy ledger, the weekly sales and stock intake sheet, for one plan's fiscal year, at category by calendar month, and the same figure set at three levels: each cell, each category's year, and the whole year.

EVERY FIGURE CARRIES ITS OWN BASIS. `sales_plan` and `sales_plan_last_year` are at net sales; `cogs_plan`, the three intake lines, `budget`, `chase_reserve` and the four plan-of-record lines are at unit cost. A retail figure and a cost figure are both dollars and are not the same dollars, so nothing here is divided into anything else without reading the two bases first.

AN ABSENCE IS NOT A ZERO. A figure that cannot be expressed carries `cents: null` with a `reason` saying why, and it is still present at every level: `budget` has no category dimension, and `chase_reserve` has no month because planned depth carries no delivery date. `plan_receipts_cost` is the only derived line and carries its own reason, because the identity behind it needs all four of its terms or none.

A plan that was never published still answers: the sales plan reads absent with its reason and every other line is served.

Scope: `planning:read`.

## Path parameters

- `mfp_id` string, required

## Query parameters

- `include_plan_of_record` boolean

## Headers

- `Tightly-Version` string

## Response `200`

The plan side, by category and calendar month

- GetPlanSideResponse
  - `data` union
    - PlanSideData
      - `baselines` PlanSideBaselines, required
        - `buying_budget` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `comparable` string, required
        - `forecast` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `single_baseline_reason` string, required
      - `basis_notes` PlanSideBasisNotes, required
        - `budget` string, required
        - `chase_reserve` string, required
        - `cost_comparison` string, nullable
        - `intake` string, required
        - `plan_of_record` string, required
        - `plan_sales` string, required
        - `sales_plan` string, required
      - `buy_plan` union
        - BuyPlanData
          - `cost_basis` object, nullable
          - `cost_comparison` object, nullable
          - `identity` BuyPlanIdentityOut, required
            - `converged` boolean, required
            - `cover_wrapped_months` string[], required
            - `cover_wrapped_note` string, nullable
            - `open_to_buy_note` string, required
            - `overstocked_months` string[], required
            - `overstocked_note` string, required
            - `profile` string, required
          - `months` BuyPlanMonthOut[], required
            - `end_exclusive` string, required
            - `fiscal_month` integer, required
            - `key` string, required
            - `label` string, required
            - `month` integer, required
            - `start` string, required
            - `weeks` integer, required
            - `year` integer, required
          - `profile` string, required
          - `rows` BuyPlanRowOut[], required
            - `absence` string, nullable
            - `aggregation` string, required
            - `basis` string, required
            - `cell_basis` string[], required
            - `cells` number[], required
            - `definition` string, required
            - `label` string, required
            - `measure` string, required
            - `unit` string, required
            - `year` number, nullable
            - `year_rule` string, required
          - `terms` BuyPlanTermsOut, required
            - `cover_target_weeks` BuyPlanTermOut, required
              - …
            - `markdown_rate` BuyPlanTermOut, required
              - …
            - `opening_stock` BuyPlanTermOut, required
              - …
        - object, nullable
      - `calendar` string, required
      - `categories` PlanSideCategory[]
        - `budget` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `category` string
        - `chase_reserve` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `closing_stock_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `cogs_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_committed` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_received` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_reserved` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `markdown_plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `opening_stock_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_closing_stock_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_markdown_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_receipts_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_sales_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `receipts_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `sales_plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `sales_plan_last_year` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `standard_cost_evidence` object, nullable
      - `cost_comparison` object, nullable
      - `coverage` PlanSideCoverage, required
        - `attributed_intake` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `categories` PlanSideCount, required
          - `grain` string, required
          - `population` string, required
          - `reason` string, nullable
          - `value` integer, nullable
        - `cells` PlanSideCount, required
          - `grain` string, required
          - `population` string, required
          - `reason` string, nullable
          - `value` integer, nullable
        - `chase_reserve_cost_estimated` boolean
        - `months` PlanSideCount, required
          - `grain` string, required
          - `population` string, required
          - `reason` string, nullable
          - `value` integer, nullable
        - `months_budgeted` PlanSideCount, required
          - `grain` string, required
          - `population` string, required
          - `reason` string, nullable
          - `value` integer, nullable
        - `months_planned` PlanSideCount, required
          - `grain` string, required
          - `population` string, required
          - `reason` string, nullable
          - `value` integer, nullable
        - `plan_channels` PlanSideCount, required
          - `grain` string, required
          - `population` string, required
          - `reason` string, nullable
          - `value` integer, nullable
        - `unattributed_intake` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `unattributed_intake_reason` string, nullable
        - `window_intake` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
      - `declared_terms` PlanSideDeclaredTerms, required
        - `declared` integer, required
        - `fiscal_year` integer, nullable
        - `note` string, required
        - `terms` PlanSideDeclaredTerm[]
          - `declared_at` string, nullable
          - `declared_by` string, nullable
          - `key` string, required
          - `label` string, nullable
          - `reason` string, nullable
          - `unit` string, nullable
          - `value` integer, nullable
        - `total` integer, required
      - `full_year` PlanSideFigures, required
        - `budget` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `chase_reserve` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `closing_stock_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `cogs_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_committed` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_received` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_reserved` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `markdown_plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `opening_stock_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_closing_stock_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_markdown_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_receipts_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_sales_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `receipts_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `sales_plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `sales_plan_last_year` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `standard_cost_evidence` object, nullable
      - `grain` string, required
      - `months` string[]
      - `months_detail` PlanSideMonthDetail[]
        - `budget` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `period` string, required
      - `non_merchandise_categories` string[]
      - `plan` PlanSidePlan, required
        - `cost_basis` object, nullable
        - `fiscal_year` integer, required
        - `fiscal_year_start_month` integer, required
        - `live_version_id` integer, nullable
        - `mfp_id` string, required
        - `name` string, nullable
        - `published` boolean, required
        - `window` PlanSideWindow, required
          - `end_exclusive` string, required
          - `start` string, required
      - `plan_of_record` PlanSidePlanOfRecord, required
        - `budget_note` string, required
        - `calendar` string, nullable
        - `commitments` PlanSidePlanOfRecordCommitment[], required
          - `budget` object, nullable
          - `budget_reason` string, nullable
          - `categories` string[], nullable
          - `commitment_id` string, required
          - `folded` boolean, required
          - `forecast_source` union
            - PlanSideForecastSource
              - …
            - object, nullable
          - `months` string[], nullable
          - `name` string, required
          - `reason` string, nullable
          - `season_id` string, nullable
          - `window` object, required
        - `coverage` PlanSidePlanOfRecordCoverage, required
          - `cap` integer, nullable
          - `commitments` integer, nullable
          - `cost_comparable` boolean, nullable
          - `folded` integer, nullable
          - `months_dropped` integer, nullable
          - `reason` string, nullable
        - `forecast_note` string, nullable
      - `rows` PlanSideCell[]
        - `budget` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `category` string
        - `chase_reserve` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `closing_stock_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `cogs_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_committed` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_received` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `intake_reserved` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `markdown_plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `opening_stock_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `period` string
        - `plan_closing_stock_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_markdown_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_receipts_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `plan_sales_cost` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `receipts_plan` PlanSideMoneyAtCost, required
          - `basis` string
          - `cents` integer, nullable
          - `cost_basis` object, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `sales_plan` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `sales_plan_last_year` PlanSideMoneyAtNetSales, required
          - `basis` string
          - `cents` integer, nullable
          - `reason` string, nullable
          - `usd` number, nullable
        - `standard_cost_evidence` object, nullable
      - `year_over_year` PlanSideYearOverYear, required
        - `actuals_note` string, required
        - `actuals_read` string, required
        - `actuals_shift_days` integer, required
        - `plan_shift` string, required
        - `prior_fiscal_year` integer, required
        - `prior_plan_mfp_id` string, nullable
        - `prior_plan_reason` string, nullable
    - object, nullable
  - `message` MFPApiMessage
    - `desc` string
    - `service` string
    - `severity` 'SUCCESS' | 'INFO' | 'ERROR' | 'WARNING'

## Other responses

- `401`: No usable key: malformed, unknown, revoked, expired or stopped. One refusal covers all five, telling a caller which is which maps the surface for them. A request with no Authorization header at all is refused 400 before any key is looked for.
- `403`: The key may not reach this operation. `scope_missing` when the key does not hold Planning; `organization_mismatch` when the path names an organisation that is not the key's; `ip_not_allowed` when the caller's address is outside the key's allowlist.
- `404`: Plan not found
- `429`: The key has spent its allowance for this minute. 600 reads and 120 writes a minute, counted per key, refused calls included. `Retry-After` says how long to wait.
- `503`: The database is briefly out of reach, which is what a failover or a full connection pool looks like from outside. Wait the seconds `Retry-After` names and send the request again. A read is safe to repeat. A write is not, because the connection was lost in the middle of it, so read the object back before sending it a second time. Branch on the status rather than on `code`, which is `POSTGRES_UNAVAILABLE` from one of the two seams that raise this and `SERVICE_UNAVAILABLE` from the other.

---

[API](https://skmtc.dev/tightly/apis/tightly-api.md) · [All operations](https://skmtc.dev/tightly/apis/tightly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tightly/apis/tightly-api/revisions/199f7eb35afb?raw)
