Skip to main content

Get Purchase Order Cash Flow Schedule

GET 

/api/purchase-orders/cash-flow-schedule

Get the purchasing cash-flow schedule — expected vendor payments derived from all open, non-archived purchase orders.

Required scope: purchase-orders:read

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Each expected payment row is built from the best available source, reported as forecast_source:

  • invoiced — an actual outstanding supplier invoice or landed-cost bill. When an invoice is linked to an inbound shipment on a per-shipment payment term, it is listed as one row per installment it settles (e.g. "40% on Shipment" and "40% net 30 on Receipt"), each on its payment-term due date, with purchase_invoice_id set and milestone_label reading Invoice <number> · <milestone>. Payments already made on the invoice are taken off its earliest-due installments first.
  • scheduled — the PO's own payment-term deposit schedule (high confidence)
  • inferred — the supplier's default payment-term schedule or default deposit percentage (medium confidence)
  • heuristic — a due date estimated from PO/shipment ETD or ETA
  • unscheduled — no schedule and no usable date; rows with a null due_date are always included regardless of the date window

Goods on a per-shipment term that are not on any inbound shipment yet appear as Unplanned shipment remainder rows dated from the purchase order's ETD / Available ETA; with neither set, their due_date and basis_date are null.

Rows dated from an estimate rather than the event itself (e.g. an invoice installment due 30 days after receipt, while the shipment is still in transit) report is_trigger_reached: false, name the estimate in basis_source_label (e.g. IS-00085 Shipment Available ETA) with its date in basis_date, and carry medium confidence. Every row has is_estimate_passed: true when its date rests on such an estimate (or, for heuristic rows, on an ETA for goods not yet received) and that estimate is already in the past, meaning the forecast cash date is out of date until the ETA/ETD is updated. The summary reports these as estimate_passed_row_count and estimate_passed_exposure_in_tenant_currency.

Outstanding supplier invoices with no due date and no payment schedule, on a purchase order that is no longer open, are combined into a single invoiced row (is_undated_invoice_summary: true, undated_invoice_count, the total in amount_in_tenant_currency, due_date null) rather than listed one by one.

If a milestone already has a linked vendor deposit, the row amount reflects that deposit's remaining open exposure and the deposit's own due date takes precedence. Fully settled milestones are omitted.

The response contains time buckets (by the chosen granularity), per-source sections with full rows, a per-source summary, and overall exposure totals including overdue and due-in-7/30-day figures.

Read-only. Requires the purchase-orders:read token scope.

Request​

Responses​

OK

Response Headers
    Content-Type