The open buy on each supplier's terms clock
Fifty-two retail weeks of merchandise cash: what comes in from what sold and, on the weeks ahead, from the plan of record; what goes out as the open buy lands on each supplier's own billing lag; the balance walked against a declared floor; and the levers that would move the tightest weeks.
IT IS MERCHANDISE CASH AND NOT A CASH-FLOW STATEMENT. Nothing here knows about payroll, rent, tax or financing. It answers one question: can the coming weeks pay for the buy we intend.
TWO CASH-OUT LINES, AND ADDING THEM DOUBLE-COUNTS. contracted_out is the placed open buy moved onto the week each supplier actually bills, measured from that supplier's own bills and falling back to its declared terms. planned_out is what the plan of record still implies before a purchase order exists. They overlap by construction, because a placed order is already subtracted from the plan's need.
Weeks are numbered on the organisation's own 4-5-4 grid (fiscal_week, FY26-W36) with the ISO week of the same Sunday beside it. A term that is not on file is null with its reason and never a guess; where the two declarations the ladder walks against are missing, not_measured names them.
THE FORWARD LEG CAN BE SERVED UNREAD. On a big enough book, projecting the weeks ahead can run past the time this read gives it; that leg alone is then dropped, projected_in_source is null and projected_in_reason says why. Read that field rather than inferring it from a run of nulls.
Scope: cash:read.
Request
- Base URL: https://api.app.tightly.io
- URL: https://api.app.tightly.io/api/v1/commitments/cash-gate
- Auth: HTTP bearer
Query parameters
Set false for a buying-plan-only read. The cash projection is explicitly absent; realised cash, purchase orders and planned/worked buying figures retain their full computation. Cash impact requires the default complete read.
Narrows NOTHING. The company's ladder is served whole and each group gains commitment_draw_usd, the part of its weekly draw carried by purchase orders stamped with this Commitment (the same placement over the same rows, so no week can exceed weekly_draw_usd), plus a top-level commitment block naming the commitment the request named (with a reason where no commitment on this book carries the id). Without the parameter neither key is served.
How many weeks of the ladder to serve, from the first. Narrows the ROWS and never the arithmetic: the ladder is computed over the whole year either way, because a week's balance stands on every week before it, and the slice is taken on the way out. So the figures a caller asking for four weeks sees are identical to the ones it would see asking for all of them. The saving is the payload and not the work, so a narrow window is not a cheaper read. served_weeks says what was served out of what. The levers, the coverage block and the whole-year totals speak for the whole year whatever was served, and TWO SERIES DO NOT: each group's weekly_draw_usd, and its commitment_draw_usd where commitment_id was named, are cut to the served weeks so they stay week-for-week with the ladder. Under a slice they therefore stop summing to that group's open_buy_usd, which is a whole-year scalar beside them. The number is bounded rather than refused. A nought or a negative reads as one week, a number past the end of the ladder reads as the whole ladder, and a value that is not a whole number reads as though the parameter had not been sent. There is no 400 on it. Omitted, the whole ladder is served. served_weeks.computed is the ladder's length, currently 52 weeks.
A company scenario's id. The same ladder is served with ONE line moved: planned_out becomes what that scenario's plan still has to buy, worked out by re-running the money grid's own identity over driver-moved terms, and the scenario's receipt shift re-dates it by whole weeks. Nothing else changes, so contracted_out, the freight, the cash in and the levers are what they are without it, and the two lines still overlap by construction. A top-level scenario block names the scenario, its state and the shift, so a ladder read under one is never taken for the plan's own. An id no scenario on this book carries is refused.
summary serves the same ladder without the drill-down rows: planned_out_coverage drops otb_breakdown and otb_product_coverage, and worked_out_coverage drops breakdown. Every other field and every figure is the one the default read serves, and the ladder is computed the same way, so the saving is the payload and not the work. Omitted, or any other value, serves the full read.
Headers
The date train to answer on. One train exists today, 2026-11, the one this reference describes and the one every key is minted on, so the call answers on it with or without this header. Send it anyway, so a client built now names its train from the start.
Response
opening_balance_usd and cash_floor_usd (both DECLARED, null where nobody has said, and named in not_measured); as_of (the day the ladder stands on) and computed_at (the instant it was worked out); weeks as [{fiscal_week, iso_week, begins, settled_in, basis, committed_in, contracted_out, planned_out, planned_out_lag_source}] where fiscal_week is the org's 4-5-4 retail week (FY26-W36) and iso_week the ISO week of the same Sunday (2026-W35), and planned_out is null wherever the plan side was not read, no plan cell places money into the week, or the identity did not fire, and planned_out_lag_source is measured | declared | unmeasured (the weakest word of everything placed into that week); served_weeks as {served, computed, note}, on every answer whether or not weeks was sent, so the window is read off the payload rather than off the length of a list; groups as [{key, name, open_buy_usd, terms_days, terms_source, terms_measured_from, weekly_draw_usd}] largest exposure first, each weekly_draw_usd in weeks order and null where the terms are unknown (a row of zeros means terms that pay after the window); levers as [{key, name, why, reversible, releases, buy_effect_usd, reason}] with releases [{group_key, cash_usd}] or null; unlagged_open_buy_usd and undated_open_buy_usd (open buy with no terms, and with no delivery date: said, never absorbed); projected_through; unpriced_projected_units; committed_in_source; projected_in_source (forward_curve where the projection was read, null where it was not) and projected_in_reason (the sentence beside an unread projection, null where it was read, so the two are never both set); contracted_out_source (placed | freight | placed+freight | no_open_buy, and null where NEITHER leg behind contracted_out could speak for the year -- every dollar of the open buy behind a house with no terms on file and no container plan quoting freight; every week's contracted_out is then null too, because fifty-two zeros beside an open buy of millions say the book takes nothing out of the bank all year. no_open_buy is the opposite reading and a measured zero: the order pad is empty); unpriced_committed_units; planned_out_coverage (commitments / planned / folded / measured / cap / months_dropped / cells / cells_incomplete / calendar / commitments_read / categories / reason; a capped total is never presented as the whole plan. measured is what the cap bounds -- the money reads this read PERFORMED, which is folded plus the ones that ran and then failed -- so it is never smaller than folded); planned_out_before_window_usd and planned_out_after_window_usd (planned money the ladder cannot hold, said apart: what bills before its first week, a month underway on terms shorter than the days of it already gone, and what bills past the served year)
Changes
No recorded changes to this operation across all 1 revision of this API.