Subscription (API v2)
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/
First API Call: Authentication & Prerequisites
Authentication
Subscription endpoints use standard Exsited API authentication. Follow: https://developer.exsited.com/exsited-api-authentication
Prerequisites
- Your token/credential has sufficient scope/permissions for the required resources.
- Your integration is authorized to perform standard CRUD operations required by the workflow (e.g., create subscription order, update payment method, retrieve order status, cancel subscription).
-
Use expected headers (typical examples):
-
Authorization: Bearer <token> -
Content-Type: application/json
-
Common Notes
| Topic | Notes |
|---|---|
| Currency | Default is "AUD" but can be configured. A detailed list can be found in section 6 of this documentation. |
| Payment Processor | Currently using "Cash" and "Stripe". A detailed list can be found in section 6 of this documentation. |
| Dates | Default and recommended format is "YYYY-MM-DD". Detailed list and behaviour can be found in section 5 of this documentation. |
| Family Item ID | Default is "ITEM-0001" (configurable in application.yml) |
Subscription Object and Relationships
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.
Data Types & Encoding
string
UTF-8 encoded text.
Also used to represent numeric values where precision or formatting must be preserved.
string (number)
A string containing a numeric value (e.g. "99.99", "1").
Commonly used for:
- Monetary values
- Quantities
- Identifiers originating from systems without reliable numeric types
dates
All date fields accept date-only values. Timestamps and timezones are not supported.
-
Use
YYYY-MM-DD(recommended). This, along with ISO-8601 will be how date values are returned in JSON response bodies. -
The API also accepts
YYYY-M-DandDD-MM-YYYY, provided day and month are zero-padded where required. -
Full ISO-8601 timestamps (for example,
2026-02-28T00:00:00Z) are rejected. - Timezone offsets are ignored and not supported.
Recommendation: Always send dates in
YYYY-MM-DDformat to avoid ambiguity and validation errors.
number
JSON numeric type.
Used only where integer or floating-point semantics are intentional and safe.
boolean values
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
Monetary values are:
- Represented as strings
- Accompanied by a three letter ISO currency code
Example:
{
"amount":"99.99",
"currency":"AUD"
}
Supported Currencies & Payment Processors
A detailed list of currently supported currencies and payment processors can be found below.
Please note that each currency may not work with every payment processor. Please refer to documentation of your specific payment processor to see which of our currencies are supported by them.
Supported Currencies
This list is based on ISO-4217 currency codes and includes a combination of active and legacy (withdrawn) currencies. The list is not a time-specific ISO-4217 snapshot.
Payment Processors
- Braintree
- CommWeb
- Eway
- Offline
- Offline (Offline Direct Debit)
- PayPal
- PayPal (Subscription)
- Payright
- Payrix (BPAY)
- Payrix (Direct Debit)
- Payway
- SecurePay
- Stripe
Endpoints Reference
Subscription Workflows
The workflows below describe common, end to end paths developers take when integrating with the Subscription API.
These workflows are intended to help new and novice users understand how individual endpoints fit together conceptually.
Workflow 1: Create an account and subscription in one step (Express order)
Use this when:
You want to create a customer account, attach a payment method, and start a subscription in a single request.
Steps:
-
Authenticate
-
Obtain an access token using
POST /oauth2/token. -
Include the token in the
Authorization: Bearer <token>header for all subsequent requests.
-
Obtain an access token using
-
Create account and subscription
-
Call
POST /api/v2/express. -
This endpoint creates:
- A customer account
- An initial subscription order
- Associated payment references (if provided)
account_idandorder_id.
These identifiers represent the newly created customer and their subscription order. -
Call
-
Confirm subscription state
- Inspect the returned order object to confirm the subscription status is active.
-
You may later retrieve this order using
GET /api/v2/orders/{order_id}.
Notes:
- If the request fails due to validation or permissions, review the error response before retrying.
- Express creation is recommended for first-time integrations.
Workflow 2: Create a subscription for an existing account
Use this when:
You already have a customer account and want to start a new subscription for them.
Steps:
-
Authenticate
-
Obtain an access token via
POST /oauth2/token.
-
Obtain an access token via
-
Identify the account
-
Use an existing
account_id, or retrieve one usingGET /api/v2/accounts.
-
Use an existing
-
Create the subscription order
-
Call
POST /api/v2/orderswith theaccount_idand subscription details. -
The response returns an
order_idrepresenting the new subscription.
-
Call
-
Verify subscription
-
Retrieve the order using
GET /api/v2/orders/{order_id}to confirm status and details.
-
Retrieve the order using
Notes:
- Ensure the account has a valid payment method before creating the subscription.
- Permission errors usually indicate missing scopes.
Workflow 3: Upgrade or downgrade an active subscription
Use this when:
You want to change the subscription package of an existing, active subscription.
Steps:
-
Authenticate
- Obtain an access token.
-
Identify the subscription
-
Use the
order_idof the active subscription. -
If unknown, retrieve subscriptions via
GET /api/v2/orders.
-
Use the
-
Preview the change (recommended)
- Call the relevant preview endpoint to see pricing and effective changes before committing.
-
Apply the change
- Submit the change using the appropriate subscription modification endpoint.
- The response may return an updated order object or create a scheduled event.
Notes:
- Some changes take effect immediately; others may be scheduled.
-
If scheduling is involved, an
event_uuidwill be returned.
Workflow 4: Schedule a future change (downgrade or cancellation)
Use this when:
You want a subscription change to occur at a future date.
Steps:
-
Authenticate
- Obtain an access token.
-
Identify the subscription
-
Use the
order_idof the subscription to be changed.
-
Use the
-
Create a scheduled change
- Call the relevant scheduling endpoint with an effective date.
-
The response returns an
event_uuid.
event_uuiduniquely identifies the scheduled action. -
Confirm scheduled event
-
Retrieve scheduled events using
GET /api/v2/eventsor
GET /api/v2/events/{event_uuid}.
-
Retrieve scheduled events using
Notes:
- Date formats must match accepted API formats.
- Invalid dates will result in parsing errors.
Workflow 5: Remove a scheduled change
Use this when:
You want to cancel any scheduled subscription event (cancellation, downgrade, or other future change).
Steps:
-
Authenticate
- Obtain an access token.
-
Identify the scheduled event
-
Retrieve events using
GET /api/v2/events. -
Note the
event_uuidof the scheduled event.
-
Retrieve events using
-
Remove the scheduled event
-
Call
POST /api/v2/events/{event_uuid}/remove.
-
Call
-
Verify removal
-
Confirm the event no longer appears in
GET /api/v2/events.
-
Confirm the event no longer appears in
Notes:
- Only future (unexecuted) events can be removed.
- Attempting to remove an executed event will return an error.
Workflow 6: Retrieve subscription and event state
Use this when:
You want to inspect the current or historical state of subscriptions and scheduled changes.
Steps:
-
Authenticate
- Obtain an access token.
-
Retrieve subscriptions
-
Use
GET /api/v2/ordersorGET /api/v2/orders/{order_id}.
-
Use
-
Retrieve events
-
Use
GET /api/v2/eventsto list all events. -
Use
GET /api/v2/events/{event_uuid}for a specific event.
-
Use
Notes:
- This workflow is read-only and safe to use for audits or reconciliation.
- Missing results often indicate incorrect identifiers or insufficient permissions.
Subscription Plan Alteration Behaviour (Upgrade, Downgrade & Change)
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
- Upgrade: moving from a lower rank → higher rank
Example: rank 1 → 3 is an upgrade. - Downgrade: moving from a higher rank → lower rank
Example: rank 3 → 1 is a downgrade. - Change: switching to any alternate package, including same-rank changes.
Example: rank 2 → 2 (different package, same rank) is still a Change.
Recommendation
Where available, use the Preview endpoints before applying upgrades/downgrades/changes to confirm pricing and contract adjustments.
Common Identifiers
access_token
An OAuth2 access token used in the Authorization: Bearer <token> header for all API requests. It is created by calling POST /oauth2/token. Access tokens expire, so you should re-request a token when needed and store it as {{access_token}} in your Postman environment or application configuration.
account_id (accountId)
The unique identifier for a customer account. It is returned when an account is created via POST /api/v2/accounts or when using the Express flow (POST /api/v2/express).
You can retrieve or confirm accounts later using GET /api/v2/accounts or GET /api/v2/accounts/{account_id}. You may also use other endpoints that are tied to the specific account such as: /api/v2/orders/{{order_id}}.
order_id (orderId)
The identifier for a subscription order. This is required for operations such as previewing, upgrading, downgrading, changing, or cancelling a subscription. It is returned when an order is created via POST /api/v2/orders or POST /api/v2/express.
To find it later, list or fetch the account’s orders and select the relevant subscription order (GET /api/v2/accounts/{account_id}/orders).
card_ref (cardRef)
An identifier for a saved card record, typically used when updating card details via PATCH.
It is returned when payment methods are added to or listed for an account, commonly via POST /api/v2/accounts/{accountId}/payment-methods.
To retrieve it later, list the account’s payment methods using: /api/v2/accounts/{account_id}/payment-methods
payment_ref (paymentRef)
An identifier for a payment method record used when deleting a payment method.
Like card_ref, it is returned when payment methods are added or listed for an account.
To retrieve it later, list the account’s payment methods using: /api/v2/accounts/{account_id}/payment-methods
event_uuid (uuid)
The identifier for a scheduled event, such as a future cancellation, downgrade, or change. It is created when an operation schedules a future action (for example, when an effective date is set in the future) and is returned in event-related responses.
To locate it later, use GET /api/v2/events, filter for events with execution_status = SCHEDULED, and confirm the correct event using GET /api/v2/events/{event_uuid}.
order_line_uuid (uuid within order.lines[])
The identifier for a specific order line item. This is often required when performing a change against a particular subscription line rather than the entire order.
It is returned inside the lines[] array when an order is created or fetched.
To retrieve it, fetch the order using /api/v2/orders/{order_id} . Inspect order.lines[] to locate the line’s uuid.
item_id (for example, ITEM-XXXX)
The identifier of the subscription product or plan you are upgrading, downgrading, or changing to.
Item IDs come from the catalog configuration.
They can be confirmed using GET /api/v2/items/{ITEM-...}, which also returns package metadata such as rank. These IDs are typically static and should be cached in your application configuration.
Endpoints
Express Order Creation (/express)
Purpose
Creates an account and an order within a single request. Includes an account object and an embedded order object in the request body.
Use Case
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).
Path Parameters
No path parameters required for this endpoint.
Request Body Parameters
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. |
Request Body
{
"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"
}
]
}
}
}
}
}
Request Example Via Existing Account
{
"account": {
"id": "ACC-12345",
"order": {
/* same order object as above */
}
}
}
Response Body and Return
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 Account (/accounts)
Purpose
Create an account without creating an order.
Use Case
Use this endpoint when you need to create an account first (separately), before creating any orders for it.
Path Parameters
There are no path parameters for this endpoint.
Request Body Parameters
Account
| Names | Type | Description |
|---|---|---|
| account | Object | Account payload. |
| account.name | String | Account name. |
| account.email_address | String | Account email address. |
Request Body
{
"account": {
"name": "Jane Smith",
"email_address": "jane.smith@example.com",
"accounting_code": {
"account_receivable": "Account Receivable"
}
}
}
Response Body and Return
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": []
}
}
Add Payment Method (accounts/{accountId}/payment-methods)
Purpose
Adds a payment method to an existing account.
Use Case
Add a payment method to an account so it can be used for billing.
Path Parameters
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier (example format: ACC-12345). |
Request Body Parameters
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). |
Request Body
{
"account": {
"payment_method": {
"processor_type": "DIRECT_CREDIT",
"default": true,
"payment_processor": "Stripe",
"card_type": "Visa",
"token": "tok_visa_12345",
"reference": "Visa_789456"
}
}
}
Response Body and Return
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 ******"
}
]
}
}
Update Default Payment Method (/accounts/{accountId}/payment-methods/{cardRef})
Purpose
Updates a payment method record for an account. Uses accountId and cardRef in the path. Example request updates default and includes reference.
Use Case
Update the default payment method configuration for an existing account payment method.
Path Parameters
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier. |
| cardRef | String | Payment method reference in the path (example: "Visa_789456"). |
Sample URL
"/.../v2/accounts/ACC-12345/payment-methods/Visa_789456"
Request Body Parameters
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". |
Request Body
{
"account": {
"payment_method": {
"default": "true",
"reference": "Visa_789456"
}
}
}
Response Body and Return
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": "******"
}
}
Delete Payment Method (/accounts/{accountId}/payment-methods/{paymentRef})
Purpose
Deletes a payment method for a given account.
Use Case
Remove a stored payment method from an account.
Path Parameters
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier. |
| paymentRef | String | Payment method reference (example: Visa_789456). |
Sample URL
"/.../v2/accounts/ACC-12345/payment-methods/Visa_789456"
Request Body Parameters
No request body parameters are required for this endpoint.
Request Body
No request body is required for this endpoint.
Response Body and Return
Successful responses are denoted with a "204 No Content" HTTP code. There is no response body for this endpoint.
Create Subscription Order (/orders)
Purpose
Creates a subscription-based order for an existing account.
Use Case
Create a new subscription order for an account that already exists, including contract configuration, order lines, and billing details.
Path Parameters
| Name | Type | Description |
|---|---|---|
| accountId | String | Account identifier the subscription order will be created under. |
Request Body Parameters
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. |
Request Body
{
"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
}
}
}
]
}
}
Response Body and Return
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-******-****"
}
]
}
}
Upgrade Subscription Endpoint (/orders/{orderId}/upgrade)
Purpose
Applies an upgrade action against an existing order.
Use Case
Upgrade an existing subscription order by submitting the new line item details and an effective date.
Path Parameters
| Name | Type | Description |
|---|---|---|
| orderId | String | Unique order identifier. |
Request Body Parameters
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" ). |
Request Body
{
"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"
}
}
Return Body and Return
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-******-****"
}
]
}
Preview Upgrade Pricing (/orders/{orderId}/upgrade/preview)
Purpose
Calculates a preview of upgrade pricing prior to applying an upgrade.
Use Case
- Preview the pricing impact of an upgrade before applying it.
Path Parameters
| Name | Type | Description |
|---|---|---|
| orderId | String | Unique order identifier. |
Request Body Parameters
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"). |
Request Body
{
"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"
}
}
Response Body and Return
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": []
}
Preview Contract Adjustment (/{orderId}/contract-adjustment/preview)
Purpose
Calculates a preview for a contract adjustment.
Use Case
- Use this endpoint to preview the pricing impact of a contract adjustment for an existing order, using an effective date and one or more line items.
Path Parameters
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Request Body Parameters
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"). |
Request Body
{
"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"
}
}
Response Body and Return
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": []
}
Downgrade Subscription (/orders/{orderId}/downgrade)
Purpose
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.
Use Case
Downgrade an existing subscription order by submitting the new line item details and an effective date.
Path Parameters
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Request Body Parameters
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"). |
Request Body
{
"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"
}
}
}
]
}
Response Body and Return
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": []
}
Change Subscription Plan (/orders/{orderId}/change)
Purpose
Changes the subscription plan configuration for an existing order by applying one or more line-level changes on an effective date.
Use Case
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.
Path Parameters
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Request Body Parameters
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). |
Request Body
{
"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"
}
}
Response Body and Return
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": []
}
Cancel Subscription (/orders/{orderId}/cancel)
Purpose
Cancels a subscription associated with an existing order.
Use Case
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.
Path Parameters
| Name | Type | Description |
|---|---|---|
| orderId | String | Order identifier. |
Request Body Parameters
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). |
Request Body
{
"order": {
"effective_date": "2026-02-28"
}
}
Response Body and Return
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 Scheduled Event (/events/{uuid}/remove)
Purpose
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.
Use Case
- Remove a previously scheduled subscription cancellation before it takes effect
- Cancel a scheduled contract downgrade or upgrade
- Undo a future plan or pricing change
- Clean up or correct erroneously scheduled events during testing or automation workflows
Path Parameters
| Name | Type | Description |
|---|---|---|
| uuid | String | Event UUID. |
Request Body Parameters
No data is required for the request body.
Request Body
No body is required.
Response Body and Return
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"
}
}
Deprecations & Changelog
Documentation Last Updated: 30 January 2026
API Version: v2
There are currently no deprecated functions for the subscription module.
