Skip to content

Generate renewal forecast

POST/revenue/contracts/{id}/renew-forecast

Triggers generation of a renewal probability and value forecast for the specified contract. The forecast is computed from contract usage, payment history, and account health signals. Use on the renewal pipeline dashboard or as part of an automated renewal workflow.

Request

Path parameters

NameTypeRequiredDescription
idintegerYes

The numeric ID of the contract to forecast renewal for.

Request body

Content type application/json.

FieldTypeRequiredDescription
forecast_datestring (date)No

Target renewal date to project toward. Defaults to the contract end_date.

include_upsellbooleanNo

Whether to include upsell opportunity signals in the forecast.

Default: false

Example

{
  "forecast_date": "2026-12-31",
  "include_upsell": true
}

Responses

201 Renewal forecast generated and stored

Content type application/json, object · RevenueRenewalForecastV1.

FieldTypeRequiredDescription
idintegerNo
contract_idintegerNo

ID of the contract this forecast was generated for.

renewal_probabilitynumber (float)No

Probability of renewal as a decimal from 0.0 to 1.0.

Minimum: 0 · Maximum: 1

forecast_valuenumber (float)No

Projected renewal contract value.

forecast_datestring (date)No

Target renewal date used in the forecast.

signalsobjectNo

Key signals used to compute the forecast (usage trend, payment history, health score, etc.).

created_atstring (date-time)No

Example

{
  "id": 7,
  "contract_id": 12,
  "renewal_probability": 0.87,
  "forecast_value": 52000.0,
  "forecast_date": "2026-12-31",
  "signals": {
    "usage_trend": "stable",
    "payment_history": "on_time",
    "health_score": 91
  },
  "created_at": "2026-04-08T09:00:00Z"
}

404 Contract not found

Example request

curl -X POST "https://{tenant}.faciotech.net/api/v1/revenue/contracts/{id}/renew-forecast" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"forecast_date": "2026-12-31", "include_upsell": true}'
Loading