Visit Main Site
Join Partner Program
Login
     
Introduction
Authentication
Documentation
Account
GET
POST
PUT
PATCH
DELETE
Item
GET
POST
DELETE
PATCH
Item Fulfillment
GET
POST
PATCH
Item Receipts
GET
POST
PATCH
DELETE
Order
GET
POST
PATCH
PUT
DELETE
Subscription
Usage
GET
POST
PATCH
PUT
DELETE
Express
POST
Invoice
GET
POST
PATCH
DELETE
Payment
GET
POST
PATCH
DELETE
Credit Note
GET
PATCH
Refund
GET
POST
PATCH
DELETE
Purchase Order
GET
POST
DELETE
PATCH
Purchase Invoice
GET
POST
PATCH
DELETE
Purchase Payment
GET
POST
DELETE
PATCH
Purchase Credit Note Applications
GET
PATCH
Purchase Refund
GET
POST
DELETE
Gift Certificate
GET
POST
PATCH
DELETE
Return Merchandise Authorizations
GET
POST
RVA
GET
POST
Settings
GET
POST
PATCH
Integration
GET
POST
PATCH
DELETE
Portal
POST
Communications
GET
POST
Reports
GET
Proforma
GET
POST
Labour
GET
POST
PATCH
DELETE
Workflow
GET
POST
PATCH
Labour Profiles
GET
POST
PATCH
DELETE
Custom Development
Custom Component
GET
POST
PATCH
DELETE
Custom Attribute
GET
PATCH
Custom Object
GET
POST
PATCH
Custom Database
GET
POST
Custom Component Notes
GET
POST
» Subscriptions API Documentation

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

TopicNotes
CurrencyDefault is "AUD" but can be configured. 
A detailed list can be found in section 6 of this documentation.
Payment ProcessorCurrently using "Cash" and "Stripe".
A detailed list can be found in section 6 of this documentation.
DatesDefault and recommended format is "YYYY-MM-DD".
Detailed list and behaviour can be found in section 5 of this documentation.
Family Item IDDefault 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-D and DD-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-DD format 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:

    JSON
    {
    "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.
    • Create account and subscription
      • Call POST /api/v2/express.
      • This endpoint creates:
        • A customer account
        • An initial subscription order
        • Associated payment references (if provided)
      The response includes an account_id and order_id.
      These identifiers represent the newly created customer and their subscription order.
    • 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.
    • Identify the account
      • Use an existing account_id, or retrieve one using GET /api/v2/accounts.
    • Create the subscription order
      • Call POST /api/v2/orders with the account_id and subscription details.
      • The response returns an order_id representing the new subscription.
    • Verify subscription
      • Retrieve the order using GET /api/v2/orders/{order_id} to confirm status and details.

    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_id of the active subscription.
      • If unknown, retrieve subscriptions via GET /api/v2/orders.
    • 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_uuid will 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_id of the subscription to be changed.
    • Create a scheduled change
      • Call the relevant scheduling endpoint with an effective date.
      • The response returns an event_uuid.
      The event_uuid uniquely identifies the scheduled action.
    • Confirm scheduled event
      • Retrieve scheduled events using GET /api/v2/events or
        GET /api/v2/events/{event_uuid}.

    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_uuid of the scheduled event.
    • Remove the scheduled event
      • Call POST /api/v2/events/{event_uuid}/remove.
    • Verify removal
      • Confirm the event no longer appears in GET /api/v2/events.

    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/orders or GET /api/v2/orders/{order_id}.
    • Retrieve events
      • Use GET /api/v2/events to list all events.
      • Use GET /api/v2/events/{event_uuid} for a specific event.

    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)

    POST
    https://dev-api.exsited.com/api/v2/express
    Try It Out
    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

    NamesTypeDescription
    account.order.contract_propertiesObjectContract properties container.
    account.order.contract_properties.require_customer_acceptanceStringWhether contract requires customer acceptance.
    account.order.contract_properties.requires_payment_methodStringWhether contract requires a payment method.
    account.order.contract_properties.initial_contract_termStringInitial contract term (example: "10 Year").
    account.order.contract_properties.renew_automaticallyStringWhether the contract renews automatically.
    account.order.contract_properties.auto_renewal_termStringRenewal term applied on auto-renew (example: "1 Week").
    account.order.contract_properties.allow_early_terminationStringWhether early termination is allowed.
    account.order.contract_properties.early_termination_minimum_periodStringMinimum period before early termination is allowed (example: "1 Day").
    account.order.contract_properties.apply_early_termination_chargeStringWhether early termination charge applies.
    account.order.contract_properties.allow_postponementStringWhether postponement is allowed.
    account.order.contract_properties.maximum_duration_per_postponementStringMaximum duration allowed per postponement (example: "1 Day").
    account.order.contract_properties.maximum_postponement_countIntegerMaximum number of postponements allowed.
    account.order.contract_properties.allow_trialStringWhether trial is allowed.
    account.order.contract_properties.start_contract_after_trial_endsStringWhether contract starts after trial ends.
    account.order.contract_properties.trial_periodStringTrial period length (example: "1 day").
    account.order.contract_properties.allow_downgradeStringWhether downgrade is allowed.
    account.order.contract_properties.period_before_downgradeStringPeriod before downgrade is allowed (example: "1 Day").
    account.order.contract_properties.allow_downgrade_chargeStringWhether downgrade charge applies.
    account.order.contract_properties.downgrade_charge_typeStringDowngrade charge type (example: "Fixed").
    account.order.contract_properties.downgrade_charge_fixedNumberFixed downgrade charge amount (example: 1.0).
    account.order.contract_properties.allow_upgradeStringWhether upgrade is allowed.

    Order Properties

    NamesTypeDescription
    account.order.propertiesObjectOrder properties container.
    account.order.properties.billing_periodStringBilling 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
    JSON
    {
      "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
    JSON
    {
      "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.

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/accounts
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/accounts/{accountId}/payment-methods
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
      "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})

    PATCH
    https://dev-api.exsited.com/api/v2/accounts/{accountId}/payment-methods/{cardRef}
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
      "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})

    DELETE
    https://dev-api.exsited.com/api/v2/accounts/{accountId}/payment-methods/{paymentRef}
    Try It Out
    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)

    POST
    https://dev-api.exsited.com/api/v2/orders
    Try It Out
    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
    JSON
    {
      "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.).

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/orders/{orderId}/upgrade
    Try It Out
    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
    JSON
    {
      "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).

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/orders/{orderId}/upgrade/preview
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/{orderId}/contract-adjustment/preview
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
        "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)

    POST
    https://dev-api.exsited.com/api/v2/orders/{orderId}/downgrade
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/orders/{orderId}/change
    Try It Out
    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
    JSON
    {
      "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.

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/orders/{orderId}/cancel
    Try It Out
    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
    JSON
    {
      "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).

    JSON
    {
      "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)

    POST
    https://dev-api.exsited.com/api/v2/events/{uuid}/remove
    Try It Out
    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).

    JSON
    {
      "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.

    Related Content

    • Orders API v2 reference
    • Accounts API v2 reference

    Looking to build next big project?

    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.

    Join Our Partner Program
    APIs
    SDK
    Help Center
    Community
    Contact Us

    ©2026 Exsited. All rights reserved.

    Terms and Conditions | Privacy Policy

    Follow Us: