Plans and Contracts
Plan types, contract terms, extend, renew, and PATCH contract rules
Contract and plan information appears on customers at creation and can be changed later via PATCH /customers/{customerID}/contract.
Plan values
API value plan | Product |
|---|---|
standard | PhoneLine+ |
office | PhoneLine+ Office |
anywhere | PhoneLine+ Anywhere |
hardware_only | PhoneLine+ Hardware Only |
hardware_only_cp | PhoneLine+ Hardware Only (CP) |
On GET /customers and GET /customers/{customerID}, the current plan is returned in the plan field, along with contractLength and contractStartDate.
Contract term
Term length is expressed in months: 12, 24, or 36.
Set at creation in POST /customers → contract.term, and when extending via contract patch.
Update contract — PATCH /customers/{customerID}/contract
PATCH /customers/{customerID}/contractThis endpoint is asynchronous — it returns { "jobID": "..." } with HTTP 202.
One change per request
You cannot send
termandplanin the same request.
The API validates the body and returns 400 with message:Cannot update both term and plan at the same time.
Send exactly one of the following:
| Request body | Effect |
|---|---|
{ "term": 24 } | Extend contract (fixed term) |
{ "term": 24, "renew": true } | Renew contract |
{ "plan": "anywhere" } | Change plan type |
To change both plan and term, make two sequential requests and track both jobID values.
An empty body (neither term nor plan) returns 400: No contract updates provided.
Examples
Extend term to 24 months:
PATCH /v2/customers/550e8400-e29b-41d4-a716-446655440000/contract
Content-Type: application/json
Authorization: Bearer <token>
{
"term": 24
}Renew with a 36-month term:
{
"term": 36,
"renew": true
}Change plan:
{
"plan": "office"
}Poll for completion
GET /v2/jobs/{jobID}Or listen for the contract_updated webhook — see Webhooks.
Create-time contract
When creating a customer (POST /customers), the contract object includes:
| Field | Description |
|---|---|
term | Length in months |
type | Fixed or Rolling |
plan | One of the plan values above |
What PATCH customer does not do
PATCH /customers/{customerID} only updates company contact details. It does not change plan, contractLength, or contractStartDate.
Reference
OpenAPI operation: Update customer contract — includes field-level descriptions and constraints.
Updated 3 months ago
