Skip to content

Create revenue contract

POST/revenue/contracts

Creates a new revenue contract defining the term, total value, currency, and billing frequency for a customer engagement. Contracts must be created before billing schedules or subscriptions can be attached to them.

Request

Request body

Content type application/json (required).

FieldTypeRequiredDescription
namestringYes

Human-readable contract title.

Max length: 255

statusstringNo

One of: "draft", "active", "amended", "expired", "terminated" · Default: "draft"

start_datestring (date)No
end_datestring (date), nullableNo
total_valuenumber (float)No

Total contract value in the specified currency.

currencystringNo

ISO 4217 currency code.

Max length: 3

billing_frequencystringNo

One of: "monthly", "quarterly", "annually", "one_off"

customer_idintegerNo
notesstringNo

Example

{
  "name": "Acme Corp Enterprise Agreement 2026",
  "status": "draft",
  "start_date": "2026-01-01",
  "end_date": "2026-12-31",
  "total_value": 48000.0,
  "currency": "USD",
  "billing_frequency": "monthly",
  "customer_id": 88,
  "notes": "Annual enterprise plan with quarterly review checkpoints."
}

Responses

201 Contract created in draft status

Content type application/json, object · RevenueContractV1.

FieldTypeRequiredDescription
idintegerNo

Auto-incremented primary key.

namestringNo

Descriptive name of the contract.

statusstringNo

Current lifecycle status of the contract.

One of: "draft", "active", "amended", "expired", "terminated"

start_datestring (date)No

Contract commencement date.

end_datestring (date), nullableNo

Contract expiry date. Null for open-ended contracts.

total_valuenumber (float)No

Total contract value in the specified currency.

currencystringNo

ISO 4217 three-letter currency code (e.g. USD, GHS, EUR).

Max length: 3

billing_frequencystringNo

How often billing events are generated for this contract.

One of: "monthly", "quarterly", "annually", "one_off"

customer_idinteger, nullableNo

ID of the associated customer record.

notesstring, nullableNo
created_atstring (date-time)No
updated_atstring (date-time)No

422 Validation failed — check date format, currency code, or customer_id

Example request

curl -X POST "https://{tenant}.faciotech.net/api/v1/revenue/contracts" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Corp Enterprise Agreement 2026", "status": "draft", "start_date": "2026-01-01", "end_date": "2026-12-31", "total_value": 48000.0, "currency": "USD", "billing_frequency": "monthly", "customer_id": 88, "notes": "Annual enterprise plan with quarterly review checkpoints."}'
Loading