This page documents the API v2 endpoints used for subscription workflows, including account creation, payment method management, creating subscription orders, and subscription plan changes (upgrade/downgrade/change), previews, cancellations, and removing scheduled cancellation events.
Subscriptions created or managed via the API may also be visible and editable in the UI. The UI and API operate on the same underlying subscription objects.
Base URL: https://dev-api.exsited.com/
Authentication
Subscription endpoints use standard Exsited API authentication. Follow: https://developer.exsited.com/exsited-api-authentication
Prerequisites
Authorization: Bearer <token>
Content-Type: application/json | Topic | Notes |
|---|---|
| Currency | Default is "AUD" but can be configured |
| Payment Processor | Currently using "Cash" and "Stripe" |
| Dates | Format is "YYYY-MM-DD" |
| Family Item ID | Default is "ITEM-0001" (configurable in application.yml) |
The Subscription object represents a recurring billing agreement between an account and the platform. It defines how, when, and under what conditions charges are generated over time.
A subscription encapsulates:
The billing cadence (monthly / annual)
The pricing configuration applied to each billing cycle
The lifecycle state governing whether charges are currently being generated
The association to an account or underlying order
Subscriptions are stateful objects. Their behaviour over time is determined not only by their current fields, but also by historical actions such as updates, pauses, cancellations, and renewals.
UTF-8 encoded text.
Also used to represent numeric values where precision or formatting must be preserved.
A string containing a numeric value (e.g. "99.99", "1").
Commonly used for:
Format is "YYYY-MM-DD"
JSON numeric type.
Used only where integer or floating-point semantics are intentional and safe.
Boolean fields may appear in multiple representations:
true / false (JSON boolean)"true" / "false" (string-encoded)"True" / "False" (capitalised string)Integration note: Clients should pay special attention to boolean values.
Monetary values are:
Example:
{
"amount":"99.99",
"currency":"AUD"
}Current processors referenced in this flow include "Cash" and "Stripe".
Create a subscription
Standard flow:
Express flow: Use the express order creation endpoint to create; account, payment method and subscription order all at once.
Modify subscription (recommended flow)
package_details.rank)
Cancel subscription
Remove Scheduled Event
The removal endpoint can remove any scheduled event (something with an event_uuid), not only cancellation events.
Plan changes are classified using the rank of each package in the subscription type. Rank is defined inside package_details for a subscription package.
To view rank (and other package metadata like name/status), retrieve the item:
{{base_url}}/api/v2/items/ITEM-XXXX
Then read:
item.package_details
Classification rules
Recommendation
Where available, use the Preview endpoints before applying upgrades/downgrades/changes to confirm pricing and contract adjustments.
Creates an account and an order within a single request. Includes an account object and an embedded order object in the request body.
Create a new customer account and place an order for that customer in one API call (instead of creating the account first, then creating the order).
No path parameters required for this endpoint.
Account Field Names
| Names | Type | Description |
|---|---|---|
| account | Object | Account payload container. |
| account.name | String | Account name (example: "John Doe"). |
| account.email_address | String | Account email address (example: "john.doe@example.com"). |
| account.currency | String | Account currency code (example: "AUD"). |
Account Addresses Names
| Names | Type | Description |
|---|---|---|
| account.addresses | Array | List of address records associated with the account. |
| account.addresses[] | Object | Address record entry. |
| account.addresses[].address_line_1 | String | Primary street address line (example: "123 Main Street"). |
| account.addresses[].address_line_2 | String | Secondary address line (example: "Suite 100"). |
| account.addresses[].post_code | String (Number) | Postal code encoded as a string (example: "2000"). |
| account.addresses[].city | String | City/locality (example: "Sydney"). |
| account.addresses[].state | String | State/region (example: "NSW"). |
| account.addresses[].country | String | Country name (example: "Australia"). |
| account.addresses[].isDefaultBilling | Boolean | Whether this address is the default billing address. |
| account.addresses[].isDefaultShipping | Boolean | Whether this address is the default shipping address. |
Other Field Names
| Names | Type | Description |
|---|---|---|
| account.order | Object | Embedded order payload. |
| account.order.allow_contract | String | Enables contract logic for this order. |
| account.order.price_tax_inclusive | String | Whether price values include tax. |
Contract Properties Names
| Names | Type | Description |
|---|---|---|
| account.order.contract_properties | Object | Contract properties container. |
| account.order.contract_properties.require_customer_acceptance | String | Whether contract requires customer acceptance. |
| account.order.contract_properties.requires_payment_method | String | Whether contract requires a payment method. |
| account.order.contract_properties.initial_contract_term | String | Initial contract term (example: "10 Year"). |
| account.order.contract_properties.renew_automatically | String | Whether the contract renews automatically. |
| account.order.contract_properties.auto_renewal_term | String | Renewal term applied on auto-renew (example: "1 Week"). |
| account.order.contract_properties.allow_early_termination | String | Whether early termination is allowed. |
| account.order.contract_properties.early_termination_minimum_period | String | Minimum period before early termination is allowed (example: "1 Day"). |
| account.order.contract_properties.apply_early_termination_charge | String | Whether early termination charge applies. |
| account.order.contract_properties.allow_postponement | String | Whether postponement is allowed. |
| account.order.contract_properties.maximum_duration_per_postponement | String | Maximum duration allowed per postponement (example: "1 Day"). |
| account.order.contract_properties.maximum_postponement_count | Integer | Maximum number of postponements allowed. |
| account.order.contract_properties.allow_trial | String | Whether trial is allowed. |
| account.order.contract_properties.start_contract_after_trial_ends | String | Whether contract starts after trial ends. |
| account.order.contract_properties.trial_period | String | Trial period length (example: "1 day"). |
| account.order.contract_properties.allow_downgrade | String | Whether downgrade is allowed. |
| account.order.contract_properties.period_before_downgrade | String | Period before downgrade is allowed (example: "1 Day"). |
| account.order.contract_properties.allow_downgrade_charge | String | Whether downgrade charge applies. |
| account.order.contract_properties.downgrade_charge_type | String | Downgrade charge type (example: "Fixed"). |
| account.order.contract_properties.downgrade_charge_fixed | Number | Fixed downgrade charge amount (example: 1.0). |
| account.order.contract_properties.allow_upgrade | String | Whether upgrade is allowed. |
Order Properties
| Names | Type | Description |
|---|---|---|
| account.order.properties | Object | Order properties container. |
| account.order.properties.billing_period | String | Billing period for the order (example: "1 Month"). |
Order Lines
| Names | Type | Description |
|---|---|---|
| account.order.lines | Array | List of order lines. |
| account.order.lines[] | Object | Order line entry. |
| account.order.lines[].item_id | String | Item identifier. |
| account.order.lines[].item_order_quantity | Integer | Quantity of the item ordered. |
| account.order.lines[].package_name | String | Package name label. |
Item Price Snapshot
| Names | Type | Description |
|---|---|---|
| account.order.lines[].item_price_snapshot | Object | Item price snapshot container. |
| account.order.lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container. |
| account.order.lines[].item_price_snapshot.pricing_rule.price | Number | Item unit price. |
Invoice Payment
| Names | Type | Description |
|---|---|---|
| account.order.invoice | Object | Invoice container. |
| account.order.invoice.payment | Object | Payment container. |
| account.order.invoice.payment.payment_applied | Array | Payments applied to the invoice. |
| account.order.invoice.payment.payment_applied[] | Object | Payment application entry. |
| account.order.invoice.payment.payment_applied[].processor | String | Payment processor (example: "cash"). |
| account.order.invoice.payment.payment_applied[].amount | Number | Amount applied. |
{
"account": {
"name": "John Doe",
"email_address": "john.doe@example.com",
"currency": "AUD",
"accounting_code": {
"account_receivable": "Account Receivable"
},
"addresses": [
{
"address_line_1": "123 Main Street",
"address_line_2": "Suite 100",
"post_code": "2000",
"city": "Sydney",
"state": "NSW",
"country": "Australia",
"isDefaultBilling": true,
"isDefaultShipping": false
}
],
"order": {
"allow_contract": "True",
"price_tax_inclusive": "true",
"contract_properties": {
"require_customer_acceptance": false,
"requires_payment_method": false,
"initial_contract_term": "10 Year",
"renew_automatically": true,
"auto_renewal_term": "1 Week",
"allow_early_termination": true,
"early_termination_minimum_period": "1 Day",
"apply_early_termination_charge": false,
"allow_postponement": true,
"maximum_duration_per_postponement": "1 Day",
"maximum_postponement_count": 1,
"allow_trial": false,
"start_contract_after_trial_ends": true,
"trial_period": "1 day",
"allow_downgrade": true,
"period_before_downgrade": "1 Day",
"allow_downgrade_charge": false,
"downgrade_charge_type": "Fixed",
"downgrade_charge_fixed": 1.0,
"allow_upgrade": true
},
"properties": {
"billing_period": "1 Month"
},
"lines": [
{
"item_id": "ITEM-0001",
"item_order_quantity": 1,
"package_name": "Premium_Plan",
"item_price_snapshot": {
"pricing_rule": {
"price": "29.99"
}
}
}
],
"invoice": {
"payment": {
"payment_applied": [
{
"processor": "Cash",
"amount": "29.99"
}
]
}
}
}
}
}
{
"account": {
"id": "ACC-12345",
"order": {
/* same order object as above */
}
}
}
Returns an order object for the newly created subscription order, including identifiers, status, customer/account context, pricing, and line details.
{
"order": {
"status": "ACTIVE",
"id": "ORD-******-****",
"pre_order": "false",
"quote_order": "false",
"quote_converted": "false",
"order_type": "REGULAR",
"name": "Example - API Subscription Test",
"display_name": "Example - API Subscription Test",
"description": "",
"referral_account": "",
"customer_purchase_order_id": "",
"shipping_profile": {},
"shipping_cost": "0.000000",
"discount_profile": null,
"origin": "",
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Order"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v1/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v1/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invoice_note": "",
"billing_start_date": "ORDER_START_DATE",
"order_start_date": "2026-02-02T00:00:00Z",
"next_billing_from_date": "2026-03-02 00:00:00.000000",
"next_billing_from_date_utc": "2026-03-01T13:00:00Z",
"price_tax_inclusive": "true",
"billing_address": {},
"shipping_address": {},
"created_by": "API User",
"created_on": "2026-02-02T01:43:25Z",
"last_updated_by": "",
"last_updated_on": "",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"account_id": "******",
"account_name": "John Doe",
"allow_contract": "true",
"contract_properties": {
"require_customer_acceptance": "false",
"requires_payment_method": "false",
"initial_contract_term": "10 Year",
"renew_automatically": "true",
"auto_renewal_ends_on": "",
"auto_renewal_term": "1 Week",
"auto_renewal_require_customer_acceptance": "false",
"allow_early_termination": "true",
"early_termination_minimum_period": "1 Day",
"apply_early_termination_charge": "false",
"early_termination_charge_type": "Fixed",
"termination_fixed_charge": "",
"termination_accounting_code": "",
"allow_postponement": "true",
"maximum_duration_per_postponement": "1 Day",
"maximum_postponement_count": "1",
"allow_trial": "false",
"allow_downgrade": "true",
"period_before_downgrade": "1 Day",
"allow_downgrade_charge": "false",
"downgrade_charge_type": "Fixed",
"downgrade_charge_fixed": "",
"allow_upgrade": "true",
"termination_notice_period": ""
},
"custom_attributes": [],
"custom_objects": [],
"currency_id": "1",
"properties": {
"communication_profile": "",
"invoice_mode": "AUTOMATIC",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"consolidate_invoice": "false",
"payment_processor": "Cash",
"payment_mode": "MANUAL",
"payment_term": "Net 30",
"payment_term_alignment": "BILLING_DATE",
"fulfillment_mode": "MANUAL",
"fulfillment_term": "Immediately",
"proforma_properties": {
"acceptance_required": "false",
"payment_required": "false",
"acceptance_term": "",
"acceptance_date": "",
"terms_and_conditions": ""
}
},
"invoice_id": "INV-******-****",
"lines": [
{
"item_serial_or_batch_number": "N/A",
"charge_item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_id": "ITEM-****",
"item_name": "API Subscription Test - Premium Package",
"item_order_quantity": "1.000000",
"shipping_cost": "0.00",
"item_invoice_note": "",
"item_description": "",
"item_type": "FAMILY",
"item_charge_type": "RECURRING",
"item_custom_attributes": [],
"item_properties": {
"billing_mode": "IN_ADVANCE",
"charging_period": "Same as billing period",
"charging_start_date": "SUBSCRIPTION_START_DATE",
"fixed_start_date": "",
"charging_and_billing_alignment": "false",
"pro_rata_partial_charging_period": "true",
"pro_rata_partial_pricing_period": "false",
"pro_rata_partial_unit": "false"
},
"item_price_snapshot": {
"pricing_rule": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"price_type": "PER_UNIT_PRICING",
"price": "20.000000",
"uom": "",
"price_period": "",
"pricing_schedule": "",
"pricing_level": "",
"pricing_method": "0.000000",
"warehouse": "BareHouse"
}
},
"item_sale_tax_configuration": {
"sale_price_is_based_on": "",
"tax_code": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
}
},
"isTaxExemptWhenSold": "false",
"item_price_tax": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"code": "No Tax",
"rate": 0,
"link": "https://dev-api.exsited.com/api/v3/settings/taxes/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"item_accounting_code": {
"sales_revenue": ""
},
"version": "1",
"expected_delivery_date": "",
"package_name": "Premium Package",
"purchase_order_id": "",
"purchase_invoice_id": "",
"discount": 0,
"newTaxCodeSet": null,
"total": "20",
"subtotal": "20",
"tax": "0"
}
],
"total": "20",
"subtotal": "20",
"tax": "0",
"kpis": {
"start_date": "",
"estimated_total": 0,
"total_revenue": 0,
"monthly_recurring_revenue": 0,
"total_collected": 0,
"total_outstanding": 0,
"total_due": 0,
"last_invoice_issue_date": "",
"last_invoice_total": 0,
"total_invoice": 0,
"next_invoice_issueDate": "",
"last_reactivated_on": "",
"last_cancelled_on": "",
"last_changed_on": "",
"last_deleted_on": ""
},
"line_items": [],
"activity_logs": [
{
"activity": "API User created Order ORD-******-****"
}
]
}
}
Create an account without creating an order.
Use this endpoint when you need to create an account first (separately), before creating any orders for it.
There are no path parameters for this endpoint.
Account
| Names | Type | Description |
|---|---|---|
| account | Object | Account payload. |
| account.name | String | Account name. |
| account.email_address | String | Account email address. |
{
"account": {
"name": "Jane Smith",
"email_address": "jane.smith@example.com",
"accounting_code": {
"account_receivable": "Account Receivable"
}
}
}
Returns an account object containing the created account’s identifiers, status, contact fields (e.g., email), and related metadata.
{
"account": {
"status": "ACTIVE",
"id": "******",
"name": "Jane Smith",
"display_name": "Jane Smith",
"description": "",
"parent_account": "",
"invoice_parent_account": "false",
"type": "CUSTOMER",
"email_address": "jane.smith@example.com",
"user_team": {},
"image_uri": "",
"group": {},
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Account"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v2/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v2/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"grant_portal_access": "false",
"tax": {},
"accounting_code": {
"account_receivable": "Account Receivable"
},
"pricing_level": {},
"communication_preference": "",
"addresses": [],
"website": "",
"linkedin": "",
"twitter": "",
"facebook": "",
"kpis": {},
"created_by": "API User",
"created_on": "2026-02-02T08:11:24Z",
"last_updated_by": "",
"last_updated_on": "",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"custom_attributes": [],
"custom_objects": [],
"billing_preferences": {
"communication_profile": "<Default Communication Profile>",
"invoice_mode": "Automatic",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"billing_start_date": "Order Start Date",
"billing_start_day_of_month": "1st of The Month",
"charging_and_billing_alignment": "No",
"payment_processor": "<Default Payment Processor>",
"payment_mode": "Manual",
"payment_term": "Net 30",
"payment_term_alignment": "Billing Date"
},
"contacts": [],
"payment_methods": [
{
"processor_type": "OTHER",
"status": "",
"default": "false",
"processor": {},
"reference": "",
"payment_count": "",
"last_used_on": "",
"created_by": "",
"created_on": "",
"last_updated_by": "",
"last_updated_on": "",
"uuid": "",
"version": "",
"use_for_specified_orders": "false",
"specified_orders": ""
}
],
"discount_profiles": [],
"activity_logs": []
}
}
Adds a payment method to an existing account.
Add a payment method to an account so it can be used for billing.
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier (example format: ACC-12345). |
Account
| Names | Type | Description |
|---|---|---|
| account | Object | Account payload container. |
Payment Method
| Names | Type | Description |
|---|---|---|
| account.payment_method | Object | Payment method payload associated with the account. |
| account.payment_method.processor_type | String | Processor type identifier (example: DIRECT_CREDIT). |
| account.payment_method.default | JSON Boolean | Indicates whether this payment method is marked as the default. |
| account.payment_method.payment_processor | String | Payment processor name (example: Stripe). |
| account.payment_method.card_type | String | Card type associated with the payment method (example: Visa). |
| account.payment_method.token | String | Token value representing the payment method in the processor system (example: tok_visa_12345). |
| account.payment_method.reference | String | Reference identifier associated with the payment method (example: Visa_789456). |
{
"account": {
"payment_method": {
"processor_type": "DIRECT_CREDIT",
"default": true,
"payment_processor": "Stripe",
"card_type": "Visa",
"token": "tok_visa_12345",
"reference": "Visa_789456"
}
}
}
Returns an account.payment_method object showing the stored payment method (processor info, card type, masked number, expiry, token/reference) and whether it’s the default.
{
"account": {
"payment_method": {
"processor_type": "DIRECT_CREDIT",
"status": "ACTIVE",
"default": "true",
"processor": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Stripe - AUD",
"link": "https://dev-api.exsited.com/api/v2/payment_processors/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"card_type": "VISA",
"token": "************",
"card_number": "****",
"expiry_month": "**",
"expiry_year": "**",
"card_cvv": "***",
"name_on_card": "",
"reference": "Visa_**********",
"payment_count": "0",
"last_used_on": "",
"last_used_result": "",
"error_count_since_last_success": "",
"created_by": "API User",
"created_on": "2026-02-02T02:53:32Z",
"last_updated_by": "",
"last_updated_on": "",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"use_for_specified_orders": "false",
"specified_orders": ""
},
"id": "******",
"activity_logs": [
{
"activity": "API User added payment method for Account ******"
}
]
}
}
Updates a payment method record for an account. Uses accountId and cardRef in the path. Example request updates default and includes reference.
Update the default payment method configuration for an existing account payment method.
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier. |
| cardRef | String | Payment method reference in the path (example: "Visa_789456"). |
"/.../v2/accounts/ACC-12345/payment-methods/Visa_789456"
Account
| Names | Type | Description |
|---|---|---|
| account | Object | Container for payment method updates. |
Payment Method
| Names | Type | Description |
|---|---|---|
| account.payment_method | Object | Payment method update payload. |
| account.payment_method.default | String (JSON Boolean) | Example shows "true". |
| account.payment_method.reference | String | Example: "Visa_789456". |
{
"account": {
"payment_method": {
"default": "true",
"reference": "Visa_789456"
}
}
}
Returns an updated account.payment_method object, reflecting the new default payment method selection and its stored details.
{
"account": {
"payment_method": {
"processor_type": "DIRECT_CREDIT",
"status": "ACTIVE",
"default": "true",
"processor": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Stripe - AUD",
"link": "https://dev-api.exsited.com/api/v2/payment_processors/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"card_type": "VISA",
"token": "************",
"card_number": "****",
"expiry_month": "**",
"expiry_year": "**",
"card_cvv": "***",
"name_on_card": "",
"reference": "Visa_**********",
"payment_count": "0",
"last_used_on": "",
"last_used_result": "",
"error_count_since_last_success": "",
"created_by": "API User",
"created_on": "2026-02-02T02:53:32Z",
"last_updated_by": "API User",
"last_updated_on": "2026-02-02T03:15:00Z",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "2",
"use_for_specified_orders": "false",
"specified_orders": ""
},
"id": "******"
}
}
Deletes a payment method for a given account.
Remove a stored payment method from an account.
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier. |
| paymentRef | String | Payment method reference (example: Visa_789456). |
"/.../v2/accounts/ACC-12345/payment-methods/Visa_789456"
No request body parameters are required for this endpoint.
No request body is required for this endpoint.
Successful responses are denoted with a "204 No Content" HTTP code. There is no response body for this endpoint.
Creates a subscription-based order for an existing account.
Create a new subscription order for an account that already exists, including contract configuration, order lines, and billing details.
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier the subscription order will be created under. |
Order
| Names | Type | Description |
|---|---|---|
| order | Object | Subscription order payload container. |
| order.allow_contract | String | Enables contract functionality. |
| order.price_tax_inclusive | String | Indicates whether prices include tax. |
Contract Properties
| Names | Type | Description |
|---|---|---|
| order.contract_properties | Object | Subscription contract configuration container. |
| order.contract_properties.require_customer_acceptance | String | Indicates whether customer acceptance is required. |
| order.contract_properties.requires_payment_method | String | Indicates whether a payment method is required. |
| order.contract_properties.initial_contract_term | String | Initial subscription contract duration (example: P1Y). |
| order.contract_properties.renew_automatically | String | Indicates whether the contract auto-renews. |
| order.contract_properties.auto_renewal_term | String | Auto-renewal term duration (example: P1Y). |
| order.contract_properties.allow_trial | String | Indicates whether a trial period is enabled. |
| order.contract_properties.trial_period | String | Trial duration (example: P1M). |
Order Properties
| Names | Type | Description |
|---|---|---|
| order.properties | Object | Order-level properties container. |
| order.properties.billing_period | String | Billing period interval (example: P1M). |
Order Lines
| Names | Type | Description |
|---|---|---|
| order.lines | Array | Collection of order line items. |
| order.lines[] | Object | Individual order line. |
| order.lines[].item_id | String | Item identifier. |
| order.lines[].item_order_quantity | Integer | Quantity ordered. |
| order.lines[].package_name | String | Package name label. |
Item Price Snapshot
| Names | Type | Description |
|---|---|---|
| order.lines[].item_price_snapshot | Object | Snapshot of item pricing at order time. |
| order.lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container. |
| order.lines[].item_price_snapshot.pricing_rule.price | Number | Item unit price. |
{
"order": {
"allow_contract": "true",
"price_tax_inclusive": "true",
"contract_properties": {
"require_customer_acceptance": "true",
"requires_payment_method": "true",
"initial_contract_term": "P1Y",
"renew_automatically": "true",
"auto_renewal_term": "P1Y",
"allow_trial": "true",
"trial_period": "P1M"
},
"properties": {
"billing_period": "P1M"
},
"lines": [
{
"item_id": "ITEM-12345",
"item_order_quantity": 1,
"package_name": "Base Plan",
"item_price_snapshot": {
"pricing_rule": {
"price": 99.99
}
}
}
]
}
}
Returns an order object representing the created subscription order, including status/IDs plus the full order snapshot (lines, totals, currency, etc.).
{
"order": {
"status": "ACTIVE",
"id": "ORD-******-****",
"pre_order": "false",
"quote_order": "false",
"quote_converted": "false",
"order_type": "REGULAR",
"name": "Jane Smith - API Subscription Test",
"display_name": "Jane Smith - API Subscription Test",
"description": "",
"referral_account": "",
"customer_purchase_order_id": "",
"shipping_profile": {},
"shipping_cost": "0.000000",
"discount_profile": null,
"origin": "",
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Order"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v1/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v1/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invoice_note": "",
"billing_start_date": "ORDER_START_DATE",
"order_start_date": "2026-02-02T00:00:00Z",
"next_billing_from_date": "2026-03-02 00:00:00.000000",
"next_billing_from_date_utc": "2026-03-01T13:00:00Z",
"price_tax_inclusive": "false",
"billing_address": {},
"shipping_address": {},
"created_by": "API User",
"created_on": "2026-02-02T08:16:25Z",
"last_updated_by": "",
"last_updated_on": "",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"account_id": "******",
"account_name": "Jane Smith",
"allow_contract": "false",
"custom_attributes": [],
"custom_objects": [],
"currency_id": "1",
"properties": {
"communication_profile": "",
"invoice_mode": "AUTOMATIC",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"consolidate_invoice": "false",
"payment_processor": "Cash",
"payment_mode": "MANUAL",
"payment_term": "Net 30",
"payment_term_alignment": "BILLING_DATE",
"fulfillment_mode": "MANUAL",
"fulfillment_term": "Immediately",
"proforma_properties": {
"acceptance_required": "false",
"payment_required": "false",
"acceptance_term": "",
"acceptance_date": "",
"terms_and_conditions": ""
}
},
"invoice_id": "INV-******-****",
"lines": [
{
"item_serial_or_batch_number": "N/A",
"charge_item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_id": "ITEM-****",
"item_name": "API Subscription Test - Premium Package",
"item_order_quantity": "1.000000",
"shipping_cost": "0.00",
"item_invoice_note": "",
"item_description": "",
"item_type": "FAMILY",
"item_charge_type": "RECURRING",
"item_custom_attributes": [],
"item_properties": {
"billing_mode": "IN_ADVANCE",
"charging_period": "Same as billing period",
"charging_start_date": "SUBSCRIPTION_START_DATE",
"fixed_start_date": "",
"charging_and_billing_alignment": "false",
"pro_rata_partial_charging_period": "true",
"pro_rata_partial_pricing_period": "false",
"pro_rata_partial_unit": "false"
},
"item_price_snapshot": {
"pricing_rule": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"price_type": "PER_UNIT_PRICING",
"price": "100.000000",
"uom": "",
"price_period": "",
"pricing_schedule": "",
"pricing_level": "",
"pricing_method": "0.000000",
"warehouse": "BareHouse"
}
},
"item_sale_tax_configuration": {
"sale_price_is_based_on": "",
"tax_code": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
}
},
"isTaxExemptWhenSold": "false",
"item_price_tax": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"code": "No Tax",
"rate": 0,
"link": "https://dev-api.exsited.com/api/v3/settings/taxes/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"item_accounting_code": {
"sales_revenue": ""
},
"version": "1",
"expected_delivery_date": "",
"package_name": "Premium Package",
"purchase_order_id": "",
"purchase_invoice_id": "",
"discount": 0,
"newTaxCodeSet": null,
"total": "100",
"subtotal": "100",
"tax": "0"
}
],
"total": "100",
"subtotal": "100",
"tax": "0",
"kpis": {
"start_date": "",
"estimated_total": 0,
"total_revenue": 0,
"monthly_recurring_revenue": 0,
"total_collected": 0,
"total_outstanding": 0,
"total_due": 0,
"last_invoice_issue_date": "",
"last_invoice_total": 0,
"total_invoice": 0,
"next_invoice_issueDate": "",
"last_reactivated_on": "",
"last_cancelled_on": "",
"last_changed_on": "",
"last_deleted_on": ""
},
"line_items": [],
"activity_logs": [
{
"activity": "API User created Order ORD-******-****"
}
]
}
}
Applies an upgrade action against an existing order.
Upgrade an existing subscription order by submitting the new line item details and an effective date.
| Name | Type | Description |
|---|---|---|
| orderId | String | Unique order identifier. |
Upgrade Request Fields
| Names | Type | Description |
|---|---|---|
| effective_date | String | Date on which the changes described in this request take effect (example: "2026-01-15" ). |
| lines | Array | Collection of line entries representing items affected by this request. |
| payment_information | Object | Payment information container associated with this operation. |
Upgrade Line Fields
| Names | Type | Description |
|---|---|---|
| lines[] | Object | Individual line entry. |
| lines[].item_uuid | String | Unique identifier of the item being referenced (example: "ITEM-UUID-123" ). |
| lines[].charge_item_uuid | String | Unique identifier of the charge item associated with the subscription plan variant (example: "CHARGE-UUID-456" ). |
| lines[].package_name | String | Package or plan name associated with the line entry (example: "Enterprise_Plan" ). |
| lines[].item_quantity | String (Number) | Quantity value encoded as a numeric string (example: "1" ). |
| lines[].item_price_snapshot | Object | Price snapshot container applied to this line entry. |
Upgrade Line Price Snapshot Fields
| Names | Type | Description |
|---|---|---|
| lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container used to derive the snapshot price. |
| lines[].item_price_snapshot.pricing_rule.price | String (Number) | Price value encoded as a numeric string (example: "99.99" ). |
Payment Information Fields
| Names | Type | Description |
|---|---|---|
| payment_information.payment_processor | String | Payment processor identifier used for this operation (example: "Cash" ). |
| payment_information.amount | String (Number) | Payment amount encoded as a numeric string (example: "99.99" ). |
{
"effective_date": "2026-01-15",
"lines": [
{
"item_uuid": "ITEM-UUID-123",
"charge_item_uuid": "CHARGE-UUID-456",
"package_name": "Enterprise_Plan",
"item_quantity": "1",
"item_price_snapshot": {
"pricing_rule": {
"price": "99.99"
}
}
}
],
"payment_information": {
"payment_processor": "Cash",
"amount": "99.99"
}
}
Returns an operation (e.g., "UPGRADE") plus the updated order object after the upgrade is applied (or scheduled, if applicable).
{
"operation": "UPGRADE",
"order": {
"status": "ACTIVE",
"id": "ORD-******-****",
"pre_order": "false",
"quote_order": "false",
"quote_converted": "false",
"order_type": "REGULAR",
"name": "Example - API Subscription Test",
"display_name": "Example - API Subscription Test",
"description": "",
"referral_account": "",
"customer_purchase_order_id": "",
"shipping_profile": {},
"shipping_cost": "0.000000",
"discount_profile": null,
"origin": "",
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Order"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v1/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v1/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invoice_note": "",
"billing_start_date": "ORDER_START_DATE",
"order_start_date": "2026-02-02T00:00:00Z",
"next_billing_from_date": "2026-03-02 00:00:00.000000",
"next_billing_from_date_utc": "2026-03-01T13:00:00Z",
"price_tax_inclusive": "true",
"billing_address": {},
"shipping_address": {},
"created_by": "API User",
"created_on": "2026-02-02T01:43:25Z",
"last_updated_by": "API User",
"last_updated_on": "2026-02-02T07:31:57Z",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "2",
"account_id": "******",
"account_name": "John Doe",
"allow_contract": "true",
"contract_properties": {
"require_customer_acceptance": "false",
"requires_payment_method": "false",
"initial_contract_term": "10 Year",
"renew_automatically": "true",
"auto_renewal_ends_on": "",
"auto_renewal_term": "1 Week",
"auto_renewal_require_customer_acceptance": "false",
"allow_early_termination": "true",
"early_termination_minimum_period": "1 Day",
"apply_early_termination_charge": "false",
"early_termination_charge_type": "Fixed",
"termination_fixed_charge": "",
"termination_accounting_code": "",
"allow_postponement": "true",
"maximum_duration_per_postponement": "1 Day",
"maximum_postponement_count": "1",
"allow_trial": "false",
"allow_downgrade": "true",
"period_before_downgrade": "1 Day",
"allow_downgrade_charge": "false",
"downgrade_charge_type": "Fixed",
"downgrade_charge_fixed": "",
"allow_upgrade": "true",
"termination_notice_period": ""
},
"custom_attributes": [],
"custom_objects": [],
"currency_id": "1",
"properties": {
"communication_profile": "",
"invoice_mode": "AUTOMATIC",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"consolidate_invoice": "false",
"payment_processor": "Cash",
"payment_mode": "MANUAL",
"payment_term": "Net 30",
"payment_term_alignment": "BILLING_DATE",
"fulfillment_mode": "MANUAL",
"fulfillment_term": "Immediately",
"proforma_properties": {
"acceptance_required": "false",
"payment_required": "false",
"acceptance_term": "",
"acceptance_date": "",
"terms_and_conditions": ""
}
},
"invoice_id": "INV-******-****",
"lines": [
{
"item_serial_or_batch_number": "N/A",
"charge_item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_id": "ITEM-****",
"item_name": "API Subscription Test - Saver Package",
"item_order_quantity": "1.000000",
"shipping_cost": "0.00",
"item_invoice_note": "",
"item_description": "",
"item_type": "FAMILY",
"item_charge_type": "RECURRING",
"item_custom_attributes": [],
"item_properties": {
"billing_mode": "IN_ADVANCE",
"charging_period": "Same as billing period",
"charging_start_date": "SUBSCRIPTION_START_DATE",
"fixed_start_date": "",
"charging_and_billing_alignment": "false",
"pro_rata_partial_charging_period": "false",
"pro_rata_partial_pricing_period": "false",
"pro_rata_partial_unit": "false"
},
"item_price_snapshot": {
"pricing_rule": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"price_type": "PER_UNIT_PRICING",
"price": "20.000000",
"uom": "",
"price_period": "",
"pricing_schedule": "",
"pricing_level": "",
"pricing_method": "0.000000",
"warehouse": "BareHouse"
}
},
"item_sale_tax_configuration": {
"sale_price_is_based_on": "",
"tax_code": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
}
},
"isTaxExemptWhenSold": "false",
"item_price_tax": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
},
"item_accounting_code": {
"sales_revenue": ""
},
"version": "1",
"expected_delivery_date": "",
"package_name": "Saver Package",
"purchase_order_id": "",
"purchase_invoice_id": "",
"discount": 0,
"newTaxCodeSet": null,
"total": "20",
"subtotal": "20",
"tax": "0"
}
],
"total": "20",
"subtotal": "20",
"tax": "0",
"kpis": {
"start_date": "",
"estimated_total": 0,
"total_revenue": 0,
"monthly_recurring_revenue": 0,
"total_collected": 0,
"total_outstanding": 0,
"total_due": 0,
"last_invoice_issue_date": "",
"last_invoice_total": 0,
"total_invoice": 0,
"next_invoice_issueDate": "",
"last_reactivated_on": "",
"last_cancelled_on": "",
"last_changed_on": "",
"last_deleted_on": ""
},
"line_items": []
},
"activity_logs": [
{
"activity": "API User upgraded contract of Order ORD-******-****"
}
]
}
Calculates a preview of upgrade pricing prior to applying an upgrade.
| Name | Type | Description |
|---|---|---|
| orderId | String | Unique order identifier. |
Upgrade Request Fields
| Names | Type | Description |
|---|---|---|
| effective_date | String | Date on which the changes described in this request take effect (example: "2026-01-15"). |
| lines | Array | Collection of line entries representing items affected by this request. |
| payment_information | Object | Payment information container associated with the request. |
Upgrade Line Fields
| Names | Type | Description |
|---|---|---|
| lines[] | Object | Individual line entry. |
| lines[].item_uuid | String | Unique identifier of the item being referenced (example: "ITEM-UUID-123"). |
| lines[].charge_item_uuid | String | Unique identifier of the charge item associated with the line (example: "CHARGE-UUID-456"). |
| lines[].package_name | String | Package or plan name associated with the line (example: "Enterprise_Plan"). |
| lines[].item_quantity | String (Number) | Quantity value encoded as a numeric string (example: "1"). |
| lines[].item_price_snapshot | Object | Price snapshot container applied to this line at the time of the request. |
Upgrade Line Price Snapshot Fields
| Names | Type | Description |
|---|---|---|
| lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container used to derive the snapshot price. |
| lines[].item_price_snapshot.pricing_rule.price | String (Number) | Price value encoded as a numeric string (example: "99.99"). |
Payment Information Fields
| Names | Type | Description |
|---|---|---|
| payment_information.payment_processor | String | Payment processor identifier used for this operation (example: "Cash"). |
| payment_information.amount | String (Number) | Payment amount encoded as a numeric string (example: "99.99"). |
{
"effective_date": "2026-01-15",
"lines": [
{
"item_uuid": "ITEM-UUID-123",
"charge_item_uuid": "CHARGE-UUID-456",
"package_name": "Enterprise_Plan",
"item_quantity": "1",
"item_price_snapshot": {
"pricing_rule": {
"price": "99.99"
}
}
}
],
"payment_information": {
"payment_processor": "Cash",
"amount": "99.99"
}
}
Returns an operation and a preview totals breakdown (subtotal/tax/discount/shipping/old vs new totals, total due, currency), plus activity_logs.
{
"operation": "UPGRADE",
"preview": {
"subTotal": "20",
"taxTotal": "0",
"discountTotal": "0",
"shippingTotal": "0",
"oldTotal": "20",
"total": "20",
"totalChanged": "0",
"totalDue": "0",
"currency": "AUD"
},
"activity_logs": []
}
Calculates a preview for a contract adjustment.
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Root fields
| Names | Type | Description |
|---|---|---|
| effective_date | String | Date on which the changes described in this request take effect (example: "2026-01-16"). |
| lines | Array | Collection of line entries representing items affected by this request. |
| payment_information | Object | Payment information container associated with the request. |
Lines fields
| Names | Type | Description |
|---|---|---|
| lines[] | Object | Individual line entry. |
| lines[].item_uuid | String | Unique identifier of the item being referenced (example: "ITEM-UUID-123"). |
| lines[].charge_item_uuid | String | Unique identifier of the charge item associated with the line (example: "CHARGE-UUID-456"). |
| lines[].package_name | String | Package or plan name associated with the line (example: "Pro_Plan"). |
| lines[].quantity | String (Number) | Quantity value encoded as a numeric string (example: "1"). |
| lines[].item_price_snapshot | Object | Price snapshot container applied to this line at the time of the request. |
Item price snapshot fields
| Names | Type | Description |
|---|---|---|
| lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container used to derive the snapshot price. |
| lines[].item_price_snapshot.pricing_rule.price | String (Number) | Price value encoded as a numeric string (example: "79.99"). |
Payment information fields
| Names | Type | Description |
|---|---|---|
| payment_information.payment_processor | String | Payment processor identifier used for this operation (example: "Cash"). |
| payment_information.amount | String (Number) | Payment amount encoded as a numeric string (example: "79.99"). |
{
"effective_date": "2026-01-16",
"lines": [
{
"item_uuid": "ITEM-UUID-123",
"charge_item_uuid": "CHARGE-UUID-456",
"package_name": "Pro_Plan",
"quantity": "1",
"item_price_snapshot": {
"pricing_rule": {
"price": "79.99"
}
}
}
],
"payment_information": {
"payment_processor": "Cash",
"amount": "79.99"
}
}
Returns an operation and a preview totals breakdown showing the projected pricing impact (old/new totals and due amounts), plus activity_logs.
{
"operation": "DOWNGRADE",
"preview": {
"subTotal": "40",
"taxTotal": "0",
"discountTotal": "0",
"shippingTotal": "0",
"oldTotal": "20",
"total": "40",
"totalChanged": "20",
"totalDue": "20",
"currency": "AUD"
},
"activity_logs": []
}
Applies a downgrade action against an existing order. A “lower tier” is determined by a pre-defined priority order set when the subscription plan variants themselves were made.
Downgrade an existing subscription order by submitting the new line item details and an effective date.
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Root fields
| Names | Type | Description |
|---|---|---|
| effective_date | String | Date on which the changes described in this request take effect (example: "2026-02-01"). |
| lines | Array | Collection of line entries representing items affected by this request. |
Lines fields
| Names | Type | Description |
|---|---|---|
| lines[] | Object | Individual line entry. |
| lines[].item_uuid | String | Unique identifier of the item being referenced (example: "ITEM-UUID-123"). |
| lines[].charge_item_uuid | String | Unique identifier of the charge item associated with the line (example: "CHARGE-UUID-456"). |
| lines[].package_name | String | Package or plan name associated with the line (example: "Basic_Plan"). |
| lines[].quantity | String (Number) | Quantity value encoded as a numeric string (example: "1"). |
| lines[].item_price_snapshot | Object | Price snapshot container applied to this line at the time of the request. |
Item price snapshot fields
| Names | Type | Description |
|---|---|---|
| lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container used to derive the snapshot price. |
| lines[].item_price_snapshot.pricing_rule.price | String (Number) | Price value encoded as a numeric string (example: "19.99"). |
{
"effective_date": "2026-02-01",
"lines": [
{
"item_uuid": "ITEM-UUID-123",
"charge_item_uuid": "CHARGE-UUID-456",
"package_name": "Basic_Plan",
"quantity": "1",
"item_price_snapshot": {
"pricing_rule": {
"price": "19.99"
}
}
}
]
}
Returns an event_uuid for the scheduled/created change, an operation (e.g., "DOWNGRADE"), and the affected order object snapshot.
{
"event_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"operation": "DOWNGRADE",
"order": {
"status": "ACTIVE",
"id": "ORD-******-****",
"pre_order": "false",
"quote_order": "false",
"quote_converted": "false",
"order_type": "REGULAR",
"name": "Example - API Subscription Test",
"display_name": "Example - API Subscription Test",
"description": "",
"referral_account": "",
"customer_purchase_order_id": "",
"shipping_profile": {},
"shipping_cost": "0.000000",
"discount_profile": null,
"origin": "",
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Order"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v1/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v1/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invoice_note": "",
"billing_start_date": "ORDER_START_DATE",
"order_start_date": "2026-02-02T00:00:00Z",
"next_billing_from_date": "2026-03-02 00:00:00.000000",
"next_billing_from_date_utc": "2026-03-01T13:00:00Z",
"price_tax_inclusive": "true",
"billing_address": {},
"shipping_address": {},
"created_by": "API User",
"created_on": "2026-02-02T01:43:25Z",
"last_updated_by": "API User",
"last_updated_on": "2026-02-02T07:31:57Z",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "2",
"account_id": "******",
"account_name": "John Doe",
"allow_contract": "true",
"contract_properties": {
"require_customer_acceptance": "false",
"requires_payment_method": "false",
"initial_contract_term": "10 Year",
"renew_automatically": "true",
"auto_renewal_ends_on": "",
"auto_renewal_term": "1 Week",
"auto_renewal_require_customer_acceptance": "false",
"allow_early_termination": "true",
"early_termination_minimum_period": "1 Day",
"apply_early_termination_charge": "false",
"early_termination_charge_type": "Fixed",
"termination_fixed_charge": "",
"termination_accounting_code": "",
"allow_postponement": "true",
"maximum_duration_per_postponement": "1 Day",
"maximum_postponement_count": "1",
"allow_trial": "false",
"allow_downgrade": "true",
"period_before_downgrade": "1 Day",
"allow_downgrade_charge": "false",
"downgrade_charge_type": "Fixed",
"downgrade_charge_fixed": "",
"allow_upgrade": "true",
"termination_notice_period": ""
},
"custom_attributes": [],
"custom_objects": [],
"currency_id": "1",
"properties": {
"communication_profile": "",
"invoice_mode": "AUTOMATIC",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"consolidate_invoice": "false",
"payment_processor": "Cash",
"payment_mode": "MANUAL",
"payment_term": "Net 30",
"payment_term_alignment": "BILLING_DATE",
"fulfillment_mode": "MANUAL",
"fulfillment_term": "Immediately",
"proforma_properties": {
"acceptance_required": "false",
"payment_required": "false",
"acceptance_term": "",
"acceptance_date": "",
"terms_and_conditions": ""
}
},
"invoice_id": "INV-******-****",
"lines": [
{
"item_serial_or_batch_number": "N/A",
"charge_item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_id": "ITEM-****",
"item_name": "API Subscription Test - Saver Package",
"item_order_quantity": "1.000000",
"shipping_cost": "0.00",
"item_invoice_note": "",
"item_description": "",
"item_type": "FAMILY",
"item_charge_type": "RECURRING",
"item_custom_attributes": [],
"item_properties": {
"billing_mode": "IN_ADVANCE",
"charging_period": "Same as billing period",
"charging_start_date": "SUBSCRIPTION_START_DATE",
"fixed_start_date": "",
"charging_and_billing_alignment": "false",
"pro_rata_partial_charging_period": "false",
"pro_rata_partial_pricing_period": "false",
"pro_rata_partial_unit": "false"
},
"item_price_snapshot": {
"pricing_rule": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"price_type": "PER_UNIT_PRICING",
"price": "20.000000",
"uom": "",
"price_period": "",
"pricing_schedule": "",
"pricing_level": "",
"pricing_method": "0.000000",
"warehouse": "BareHouse"
}
},
"item_sale_tax_configuration": {
"sale_price_is_based_on": "",
"tax_code": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
}
},
"isTaxExemptWhenSold": "false",
"item_price_tax": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
},
"item_accounting_code": {
"sales_revenue": ""
},
"version": "1",
"expected_delivery_date": "",
"package_name": "Saver Package",
"purchase_order_id": "",
"purchase_invoice_id": "",
"discount": 0,
"newTaxCodeSet": null,
"total": "20",
"subtotal": "20",
"tax": "0"
}
],
"total": "20",
"subtotal": "20",
"tax": "0",
"kpis": {
"start_date": "",
"estimated_total": 0,
"total_revenue": 0,
"monthly_recurring_revenue": 0,
"total_collected": 0,
"total_outstanding": 0,
"total_due": 0,
"last_invoice_issue_date": "",
"last_invoice_total": 0,
"total_invoice": 0,
"next_invoice_issueDate": "",
"last_reactivated_on": "",
"last_cancelled_on": "",
"last_changed_on": "",
"last_deleted_on": ""
},
"line_items": []
},
"activity_logs": []
}
Changes the subscription plan configuration for an existing order by applying one or more line-level changes on an effective date.
Use this endpoint when you need to change an existing subscription plan for an order (for example, switching the plan variant represented by a line), effective from a specific date, while providing the updated pricing snapshot and any associated payment information.
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Root fields
| Names | Type | Description |
|---|---|---|
| effective_date | String | Date on which the changes described in this request take effect (example: 2026-01-20). |
| lines | Array | Collection of line entries representing items affected by this request. |
| properties | Object | Properties container associated with this request. |
| payment_information | Object | Payment information container associated with the request. |
Lines fields
| Names | Type | Description |
|---|---|---|
| lines[] | Object | Individual line entry. |
| lines[].op | String | Operation to apply to the referenced item (example: change). |
| lines[].uuid | String | Unique identifier of the charge or item being modified (example: CHARGE-UUID-456). |
| lines[].item_order_quantity | String (Number) | Quantity value encoded as a numeric string (example: 1). |
| lines[].item_price_snapshot | Object | Price snapshot container applied to this line at the time of the request. |
Item price snapshot fields
| Names | Type | Description |
|---|---|---|
| lines[].item_price_snapshot.pricing_rule | Object | Pricing rule container used to derive the snapshot price. |
| lines[].item_price_snapshot.pricing_rule.price | String (Number) | Price value encoded as a numeric string (example: 59.99). |
Properties fields
| Names | Type | Description |
|---|---|---|
| properties.billing_period | String | Billing period value applied to the request (example: 1 Month). |
| properties.consolidate_invoice | String (JSON Boolean) | Invoice consolidation flag encoded as a string (example: false). |
Payment information fields
| Names | Type | Description |
|---|---|---|
| payment_information.payment_processor | String | Payment processor identifier used for this operation (example: Cash). |
| payment_information.amount | String (Number) | Payment amount encoded as a numeric string (example: 59.99). |
{
"effective_date": "2026-01-20",
"lines": [
{
"op": "change",
"uuid": "CHARGE-UUID-456",
"item_order_quantity": "1",
"item_price_snapshot": {
"pricing_rule": {
"price": "59.99"
}
}
}
],
"properties": {
"billing_period": "1 Month",
"consolidate_invoice": "false"
},
"payment_information": {
"payment_processor": "Cash",
"amount": "59.99"
}
}
Returns an event_uuid (for the scheduled plan change) plus the updated/current order object snapshot.
{
"event_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"order": {
"status": "ACTIVE",
"id": "ORD-******-****",
"pre_order": "false",
"quote_order": "false",
"quote_converted": "false",
"order_type": "REGULAR",
"name": "Jane Smith - API Subscription Test",
"display_name": "Jane Smith - API Subscription Test",
"description": "",
"referral_account": "",
"customer_purchase_order_id": "",
"shipping_profile": {},
"shipping_cost": "0.000000",
"discount_profile": null,
"origin": "",
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Order"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v1/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v1/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invoice_note": "",
"billing_start_date": "ORDER_START_DATE",
"order_start_date": "2026-02-02T00:00:00Z",
"next_billing_from_date": "2026-03-02 00:00:00.000000",
"next_billing_from_date_utc": "2026-03-01T13:00:00Z",
"price_tax_inclusive": "false",
"billing_address": {},
"shipping_address": {},
"created_by": "API User",
"created_on": "2026-02-02T08:16:25Z",
"last_updated_by": "",
"last_updated_on": "",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"account_id": "******",
"account_name": "Jane Smith",
"allow_contract": "false",
"custom_attributes": [],
"custom_objects": [],
"currency_id": "1",
"properties": {
"communication_profile": "",
"invoice_mode": "AUTOMATIC",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"consolidate_invoice": "false",
"payment_processor": "Cash",
"payment_mode": "MANUAL",
"payment_term": "Net 30",
"payment_term_alignment": "BILLING_DATE",
"fulfillment_mode": "MANUAL",
"fulfillment_term": "Immediately",
"proforma_properties": {
"acceptance_required": "false",
"payment_required": "false",
"acceptance_term": "",
"acceptance_date": "",
"terms_and_conditions": ""
}
},
"invoice_id": "INV-******-****",
"lines": [
{
"item_serial_or_batch_number": "N/A",
"charge_item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_id": "ITEM-****",
"item_name": "API Subscription Test - Premium Package",
"item_order_quantity": "1.000000",
"shipping_cost": "0.00",
"item_invoice_note": "",
"item_description": "",
"item_type": "FAMILY",
"item_charge_type": "RECURRING",
"item_custom_attributes": [],
"item_properties": {
"billing_mode": "IN_ADVANCE",
"charging_period": "Same as billing period",
"charging_start_date": "SUBSCRIPTION_START_DATE",
"fixed_start_date": "",
"charging_and_billing_alignment": "false",
"pro_rata_partial_charging_period": "true",
"pro_rata_partial_pricing_period": "false",
"pro_rata_partial_unit": "false"
},
"item_price_snapshot": {
"pricing_rule": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"price_type": "PER_UNIT_PRICING",
"price": "100.000000",
"uom": "",
"price_period": "",
"pricing_schedule": "",
"pricing_level": "",
"pricing_method": "0.000000",
"warehouse": "BareHouse"
}
},
"item_sale_tax_configuration": {
"sale_price_is_based_on": "",
"tax_code": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
}
},
"isTaxExemptWhenSold": "false",
"item_price_tax": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"code": "No Tax",
"rate": 0,
"link": "https://dev-api.exsited.com/api/v3/settings/taxes/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"item_accounting_code": {
"sales_revenue": ""
},
"version": "1",
"expected_delivery_date": "",
"package_name": "Premium Package",
"purchase_order_id": "",
"purchase_invoice_id": "",
"discount": 0,
"newTaxCodeSet": null,
"total": "100",
"subtotal": "100",
"tax": "0"
}
],
"total": "100",
"subtotal": "100",
"tax": "0",
"kpis": {
"start_date": "",
"estimated_total": 0,
"total_revenue": 0,
"monthly_recurring_revenue": 0,
"total_collected": 0,
"total_outstanding": 0,
"total_due": 0,
"last_invoice_issue_date": "",
"last_invoice_total": 0,
"total_invoice": 0,
"next_invoice_issueDate": "",
"last_reactivated_on": "",
"last_cancelled_on": "",
"last_changed_on": "",
"last_deleted_on": ""
},
"line_items": []
},
"activity_logs": []
}
Cancels a subscription associated with an existing order.
Use this endpoint to cancel a subscription for an existing order. The request includes an effective date for when the cancellation should take place, using date format YYYY-MM-DD.
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Order
| Names | Type | Description |
|---|---|---|
| order | Object | Container for cancellation payload. |
| order.effective_date | String | Cancellation effective date in YYYY-MM-DD (example: 2026-02-28). |
{
"order": {
"effective_date": "2026-02-28"
}
}
Returns an event_uuid for the scheduled cancellation and the corresponding order object snapshot (status/IDs and related order fields).
{
"event_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"order": {
"status": "ACTIVE",
"id": "ORD-******-****",
"pre_order": "false",
"quote_order": "false",
"quote_converted": "false",
"order_type": "REGULAR",
"name": "Example - API Subscription Test",
"display_name": "Example - API Subscription Test",
"description": "",
"referral_account": "",
"customer_purchase_order_id": "",
"shipping_profile": {},
"shipping_cost": "0.000000",
"discount_profile": null,
"origin": "",
"custom_forms": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Default for Order"
},
"currency": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "AUD",
"link": "https://dev-api.exsited.com/api/v1/currencies/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"time_zone": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Australia/Sydney",
"link": "https://dev-api.exsited.com/api/v1/time_zones/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invoice_note": "",
"billing_start_date": "ORDER_START_DATE",
"order_start_date": "2026-02-02T00:00:00Z",
"next_billing_from_date": "2026-03-02 00:00:00.000000",
"next_billing_from_date_utc": "2026-03-01T13:00:00Z",
"price_tax_inclusive": "true",
"billing_address": {},
"shipping_address": {},
"created_by": "API User",
"created_on": "2026-02-02T01:43:25Z",
"last_updated_by": "API User",
"last_updated_on": "2026-02-02T07:31:57Z",
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "2",
"account_id": "******",
"account_name": "John Doe",
"allow_contract": "true",
"contract_properties": {
"require_customer_acceptance": "false",
"requires_payment_method": "false",
"initial_contract_term": "10 Year",
"renew_automatically": "true",
"auto_renewal_ends_on": "",
"auto_renewal_term": "1 Week",
"auto_renewal_require_customer_acceptance": "false",
"allow_early_termination": "true",
"early_termination_minimum_period": "1 Day",
"apply_early_termination_charge": "false",
"early_termination_charge_type": "Fixed",
"termination_fixed_charge": "",
"termination_accounting_code": "",
"allow_postponement": "true",
"maximum_duration_per_postponement": "1 Day",
"maximum_postponement_count": "1",
"allow_trial": "false",
"allow_downgrade": "true",
"period_before_downgrade": "1 Day",
"allow_downgrade_charge": "false",
"downgrade_charge_type": "Fixed",
"downgrade_charge_fixed": "",
"allow_upgrade": "true",
"termination_notice_period": ""
},
"custom_attributes": [],
"custom_objects": [],
"currency_id": "1",
"properties": {
"communication_profile": "",
"invoice_mode": "AUTOMATIC",
"invoice_term": "Billing Start Date",
"billing_period": "1 Month",
"consolidate_invoice": "false",
"payment_processor": "Cash",
"payment_mode": "MANUAL",
"payment_term": "Net 30",
"payment_term_alignment": "BILLING_DATE",
"fulfillment_mode": "MANUAL",
"fulfillment_term": "Immediately",
"proforma_properties": {
"acceptance_required": "false",
"payment_required": "false",
"acceptance_term": "",
"acceptance_date": "",
"terms_and_conditions": ""
}
},
"invoice_id": "INV-******-****",
"lines": [
{
"item_serial_or_batch_number": "N/A",
"charge_item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"item_id": "ITEM-****",
"item_name": "API Subscription Test - Saver Package",
"item_order_quantity": "1.000000",
"shipping_cost": "0.00",
"item_invoice_note": "",
"item_description": "",
"item_type": "FAMILY",
"item_charge_type": "RECURRING",
"item_custom_attributes": [],
"item_properties": {
"billing_mode": "IN_ADVANCE",
"charging_period": "Same as billing period",
"charging_start_date": "SUBSCRIPTION_START_DATE",
"fixed_start_date": "",
"charging_and_billing_alignment": "false",
"pro_rata_partial_charging_period": "false",
"pro_rata_partial_pricing_period": "false",
"pro_rata_partial_unit": "false"
},
"item_price_snapshot": {
"pricing_rule": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "1",
"price_type": "PER_UNIT_PRICING",
"price": "20.000000",
"uom": "",
"price_period": "",
"pricing_schedule": "",
"pricing_level": "",
"pricing_method": "0.000000",
"warehouse": "BareHouse"
}
},
"item_sale_tax_configuration": {
"sale_price_is_based_on": "",
"tax_code": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
}
},
"isTaxExemptWhenSold": "false",
"item_price_tax": {
"uuid": "",
"code": "",
"rate": "",
"link": ""
},
"item_accounting_code": {
"sales_revenue": ""
},
"version": "1",
"expected_delivery_date": "",
"package_name": "Saver Package",
"purchase_order_id": "",
"purchase_invoice_id": "",
"discount": 0,
"newTaxCodeSet": null,
"total": "20",
"subtotal": "20",
"tax": "0"
}
],
"total": "20",
"subtotal": "20",
"tax": "0",
"kpis": {
"start_date": "",
"estimated_total": 0,
"total_revenue": 0,
"monthly_recurring_revenue": 0,
"total_collected": 0,
"total_outstanding": 0,
"total_due": 0,
"last_invoice_issue_date": "",
"last_invoice_total": 0,
"total_invoice": 0,
"next_invoice_issueDate": "",
"last_reactivated_on": "",
"last_cancelled_on": "",
"last_changed_on": "",
"last_deleted_on": ""
},
"line_items": []
},
"activity_logs": []
}
Remove a scheduled, future event for a subscription or order by its event UUID.
This endpoint is used when a scheduled event needs to be removed (unscheduled) before it takes effect.
| Name | Type | Description |
|---|---|---|
| uuid | String | Event UUID. |
No data is required for the request body.
No body is required.
Returns an event object describing the scheduled event that’s being removed (uuid, name/type, created/scheduled/executed dates, resource info, execution status).
{
"event": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"parent_event": "",
"event_name": "Contract Downgrade",
"created_on": "2026-02-02",
"scheduled_to_execute_on": "",
"executed_on": "2026-02-02",
"resource_type": "saleOrderContractDowngrade",
"resource_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"execution_status": "SCHEDULED"
}
}
Documentation Last Updated: 30 January 2026
API Version: v2
There are currently no deprecated functions for the subscription module.
With our robust set of tools and resources, you can create custom solutions that integrate seamlessly with our system and take your business to the next level.
©2026 Exsited. All rights reserved.