Order

Update a specific order in the current workspace. External orders have different updateable fields than orders that have a regular payment processor like Payments AI or Stripe.

Use trial_end_at or renewal_at to adjust a processor-managed subscription's dates. Both take absolute RFC 3339 timestamps. A change whose exact requested value the processor confirmed returns 200; an accepted change whose exact requested value ClickFunnels could not confirm returns 202; a rejected or unapplied change returns 422. Updates without schedule fields return 200.

For an actual schedule change, on 200 as well as 202 the order in the response will carry the pre-change trial_end_at / renewal_at: the dates are applied at the payment processor rather than stored, and the local columns settle when its sync lands. Keep the pre-request value and poll GET /orders/{id} with backoff. After 200, wait for the timestamp you sent, comparing parsed instants at whole-second precision rather than timestamp strings. After 202, wait for the field to differ from its pre-request value, then use the returned value as the effective schedule. Choose your own timeout because there is no fixed settlement deadline. If it expires, the outcome is unknown, not failed; do not retry the PATCH blindly. A schedule change never re-dates an invoice that has already been issued, so confirm it on the order's dates rather than on an invoice period.

To stop a subscription from renewing, use POST /orders/{id}/cancel (see Cancel a subscription in the Orders Skill).

put/orders/{id}

Request

Path parameters

idstring required

Request body

Example request

{
  "order": {
    "order": {
      "notes": "Leave package at the front desk",
      "billing_status": "paid",
      "service_status": "completed",
      "external_id": "ext-order-12345",
      "shipping_address_first_name": "Jane",
      "shipping_address_last_name": "Doe",
      "shipping_address_city": "Eagle",
      "shipping_address_region": "ID",
      "shipping_address_country": "US",
      "shipping_address_postal_code": "83616"
    }
  }
}

Response

OK - for an ordinary update, the order as stored. For a schedule change, the payment processor confirmed the trial_end_at / renewal_at you sent, but the returned order will still show the pre-change values, because the dates live at the processor and the local columns settle when its sync lands. Poll GET /orders/{id} with backoff until the field equals the timestamp you sent, comparing parsed instants at whole-second precision rather than timestamp strings. Choose your own timeout because there is no fixed settlement deadline. If it expires, the outcome is unknown, not failed.

idinteger

ClickFunnels Order ID

public_idstring

ClickFunnels Order public ID

order_numberstring nullable

A sequential number for bookkeeping purposes increased by 1 for each new order in a workspace starting from

total_amountstring nullable

The total amount of the order, considering taxes and discounts.

origination_channel_idinteger

Origination Channel ID

origination_channel_typestring nullable

Origination Channel Type

notesstring nullable

Your internal note about the order. This will be visible in ClickFunnels admin orders-related sections.

live_modeboolean

Indicates if the Order will use a live payment gateway and process real credit cards.

in_trialboolean

In Trial

billing_statusstring

The billing status reflects the status of the invoice of an order. Billing status can be one of the following for Payments AI and Stripe orders: pending, draft, paid, unpaid, partially-refunded, refunded, voided, disputed, past-due. For external orders, the billing status can be one of: pending, paid, unpaid, voided and refunded.

service_statusstring

The service status reflects the activity state of the order. For external one-time orders possible service statuses are pending or completed. For external subscription orders possible statuses are pending, active, churned, canceled, completed, paused.

order_typestring

Order Type

next_charge_atstring nullable

When the next invoice on this subscription falls due. Read-only for processor-managed orders; on an external order it is a plain field you can write.

renewal_atstring nullable

When the subscription's service period rolls over and the next billing cycle begins. Distinct from next_charge_at, which is when the resulting invoice is due.

Writable on a Payments AI subscription that is pending, active, or paused - see the renewal_at note on PATCH /orders/{id}. Read-only on Stripe and external orders.

A write is applied at the payment processor rather than stored. For an actual schedule change, the order a successful PATCH hands back will carry the pre-request stored value. Follow the 200 / 202 polling conditions on PATCH /orders/{id}; a caller timeout means unknown, not failed.

trial_end_atstring nullable

When this subscription's trial ends and it converts to a paid charge. Null when the order never had a trial.

Writable while the order is in a trial. Payments AI also accepts it as the equal companion to a legal renewal_at move while the stored trial end is still in the future - see the trial_end_at note on PATCH /orders/{id}.

A write is applied at the payment processor rather than stored. For an actual schedule change, the order a successful PATCH hands back will carry the pre-request stored value. Follow the 200 / 202 polling conditions on PATCH /orders/{id}; a caller timeout means unknown, not failed.

tag_idsinteger[]

Order Tags

activated_atstring nullable

Date Activated

canceled_atstring nullable

Order Canceled At

canceled_bystring nullable

Order Canceled By

cancel_reasonstring nullable

The reason code for the cancelation. Possible codes for external orders are: customer_service, low_quality, missing_features, other, switched_service, too_complex, too_expensive, unused

cancel_descriptionstring nullable

A free-text description of the cancellation reason.

churned_atstring nullable

Churned At

shipping_address_first_namestring nullable

The first name of the recipient's shipping address.

shipping_address_last_namestring nullable

The last name of the recipient's shipping address.

shipping_address_organization_namestring nullable

The organization name of the recipient's shipping address.

shipping_address_phone_numberstring nullable

The phone number of the recipient's shipping address.

shipping_address_street_onestring nullable

The main street information of the shipping address, including the street name and number.

shipping_address_street_twostring nullable

Additional street information for the shipping address, like entrance information and apartment numbers.

shipping_address_citystring nullable

The city of the shipping address.

shipping_address_regionstring nullable

The region of the shipping address, like state or province.

shipping_address_countrystring nullable

The country of the shipping address.

shipping_address_postal_codestring nullable

Postal Code

billing_address_street_onestring nullable

The main street information of the billing address, including the street name and number.

billing_address_street_twostring nullable

Additional street information of the billing address, like entrance information and apartment numbers.

billing_address_citystring nullable

The city of the billing address.

billing_address_regionstring nullable

The region of the billing address, like state or province.

billing_address_countrystring nullable

The billing address country.

billing_address_postal_codestring nullable

Billing address postal (ZIP) code.

recurring_invoices_paid_countinteger

The number of paid invoices with recurring charges for this order. Useful for detecting first or renewal payments based on the payload, if you can't use webhooks. E.g., in Zapier, filter by recurring_invoices_paid_count == 1 for first payments.

origination_channel_namestring nullable

Origination Channel Name

origination_channel_public_idstring nullable

The obfuscated public ID of the origination channel

workspace_idinteger

ClickFunnels Workspace ID

contact_idinteger

The contact associated with the order.

currencystring

The currency for the order. Automatically set to the workspace's configured currency when creating an order through the API. Defaults to USD if the workspace has no currency configured.

page_idinteger nullable

Page ID

tax_amountstring nullable

Tax Amount

billing_payment_method_idstring nullable

Payment Method

funnel_namestring nullable

Funnel Name

discount_idsinteger[]

Discounts

workspace_sharing_idstring nullable

Workspace Sharing ID

paid_untilstring date-time nullable

The date until which the subscription order is paid.

resource_install_intentstring nullable

Resource install intent for the order.

created_atstring date-time nullable

Date Ordered

updated_atstring date-time nullable

Date Updated

external_idstring nullable

An external ID, e.g., a payment provider's ID or an ID managed by the client internally

payment_processorstring nullable

The payment processor of the order. Currently, it can be one of payments_ai and external.

phone_numberstring nullable

Phone Number

page_namestring nullable

Page Name. Want to filter by it? See our <i><u><a href="https://developers.myclickfunnels.com/docs/filtering-by-page" target="_blank">help guide on that topic</a><u><i>.

previous_line_itemstring nullable

An additional field, only available in outgoing subscription.upgrade and subscription.downgrade webhooks. It enables you to identify the former line item which is otherwise removed from the regular subscription line items when an upgrade or downgrade happens. Thus you can see the data of the previously active subscription. This property will be null in regular API requests.

Example response

{
  "id": 22642,
  "public_id": "JmRRyN",
  "order_number": "#2146",
  "workspace_id": 4,
  "contact_id": 22440,
  "live_mode": true,
  "total_amount": "396.00",
  "currency": "USD",
  "origination_channel_id": 11,
  "origination_channel_type": "Platform::Application",
  "shipping_address_first_name": "Caroll",
  "shipping_address_last_name": "Kirlin",
  "shipping_address_organization_name": "Testing, Inc.",
  "shipping_address_phone_number": "+19053871234",
  "shipping_address_street_one": "3443 W Bavaria St",
  "shipping_address_street_two": "",
  "shipping_address_city": "Eagle",
  "shipping_address_region": "ID",
  "shipping_address_country": "US",
  "shipping_address_postal_code": "83616",
  "billing_address_street_one": "3443 W Bavaria St",
  "billing_address_street_two": "",
  "billing_address_city": "Eagle",
  "billing_address_region": "ID",
  "billing_address_country": "US",
  "billing_address_postal_code": "83616",
  "recurring_invoices_paid_count": 1,
  "page_id": null,
  "notes": "For Fulfillment",
  "in_trial": false,
  "billing_status": "pending",
  "service_status": "completed",
  "order_type": "one-time-order",
  "next_charge_at": null,
  "renewal_at": null,
  "tax_amount": "0.00",
  "trial_end_at": null,
  "billing_payment_method_id": null,
  "funnel_name": null,
  "tag_ids": [],
  "discount_ids": [],
  "activated_at": null,
  "workspace_sharing_id": null,
  "canceled_at": null,
  "canceled_by": null,
  "cancel_reason": null,
  "cancel_description": null,
  "churned_at": null,
  "paid_until": null,
  "resource_install_intent": null,
  "created_at": "2026-01-10T20:15:01.524Z",
  "updated_at": "2026-01-10T20:15:01.524Z",
  "external_id": "cjnoxnqv1b",
  "payment_processor": "external",
  "phone_number": null,
  "page_name": null,
  "origination_channel_name": "Default API Client",
  "origination_channel_public_id": "vNWWMb",
  "order_page": null,
  "contact": {
    "id": 24359,
    "public_id": "vQxYMj",
    "workspace_id": 4,
    "default_shipping_address_id": null,
    "anonymous": 0,
    "email_address": "jane.doe@example.com",
    "first_name": "Jane",
    "last_name": "Doe",
    "phone_number": "+18005550199",
    "time_zone": "Madrid",
    "uuid": "80b7f903-76cd-4edf-94bf-fc34c13ee654",
    "unsubscribed_at": null,
    "last_notification_email_sent_at": null,
    "email_suppression_reason": null,
    "is_active": true,
    "deleted_at": null,
    "fb_url": null,
    "twitter_url": null,
    "instagram_url": null,
    "linkedin_url": null,
    "website_url": null,
    "created_at": "2026-01-09T15:27:56.647Z",
    "updated_at": "2026-01-09T15:28:08.075Z",
    "tags": [],
    "custom_attributes": {},
    "visits": {
      "first_visit": {
        "uuid": "9f2e8a22-1b65-4414-95f3-5caf0bbd11da",
        "utm_source": "google",
        "utm_medium": "cpc",
        "utm_campaign": "spring_sale",
        "utm_term": "running shoes",
        "utm_content": "ad_variant_a",
        "ip": "192.168.1.1",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
        "referrer": "https://www.google.com/search?q=example",
        "referring_domain": "google.com",
        "landing_page": "https://example.com/products/shoes",
        "browser": "Chrome",
        "os": "Mac OS X",
        "device_type": "desktop",
        "started_at": "2026-01-09T14:23:45.123Z",
        "created_at": "2026-01-09T14:23:45.123Z",
        "updated_at": "2026-01-09T14:23:45.123Z"
      },
      "last_visit": null,
      "last_visit_with_utm": {
        "uuid": "9f2e8a22-1b65-4414-95f3-5caf0bbd11da",
        "utm_source": "google",
        "utm_medium": "cpc",
        "utm_campaign": "spring_sale",
        "utm_term": "running shoes",
        "utm_content": "ad_variant_a",
        "ip": "192.168.1.1",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
        "referrer": "https://www.google.com/search?q=example",
        "referring_domain": "google.com",
        "landing_page": "https://example.com/products/shoes",
        "browser": "Chrome",
        "os": "Mac OS X",
        "device_type": "desktop",
        "started_at": "2026-01-09T14:23:45.123Z",
        "created_at": "2026-01-09T14:23:45.123Z",
        "updated_at": "2026-01-09T14:23:45.123Z"
      }
    }
  },
  "contact_groups": [
    {
      "id": 3,
      "public_id": "KekAjm",
      "name": "Default Group"
    }
  ],
  "workspace": {
    "id": 4,
    "public_id": "WjrGvk",
    "team_id": 4,
    "name": "My Team",
    "subdomain": "myteam",
    "created_at": "2025-05-26T09:56:16.307Z",
    "updated_at": "2026-01-08T17:40:21.676Z"
  },
  "segments": [],
  "line_items": [
    {
      "id": 674,
      "public_id": "GjPVnN",
      "order_id": 22642,
      "quantity": 2,
      "prorated": null,
      "created_at": "2026-01-10T20:15:01.536Z",
      "updated_at": "2026-01-10T20:15:01.536Z",
      "original_product": {
        "id": 6512,
        "public_id": "YRnzRY",
        "name": "Seinfeld In Your Pocket - Comedy Joke Machine (Black Premium)"
      },
      "products_price": {
        "id": 22229,
        "public_id": "YqEWxY",
        "amount": "198.00",
        "currency": "usd",
        "duration": null,
        "interval": null,
        "interval_count": null,
        "key": null
      },
      "products_variant": {
        "id": 22228,
        "public_id": "JdknyN",
        "name": "Seinfeld In Your Pocket - Comedy Joke Machine (Black Premium)",
        "description": null,
        "sku": "SIYP-BLACK-PREMIUM-001"
      }
    }
  ],
  "previous_line_item": null,
  "visits": {
    "last_visit": {
      "uuid": "7a3f9c11-2d45-4e23-88d2-1bef9acd44fa",
      "utm_source": null,
      "utm_medium": null,
      "utm_campaign": null,
      "utm_term": null,
      "utm_content": null,
      "ip": "192.168.1.1",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
      "referrer": "https://www.clickfunnels.com/products",
      "referring_domain": "clickfunnels.com",
      "landing_page": "https://example.com/checkout",
      "browser": "Chrome",
      "os": "Mac OS X",
      "device_type": "desktop",
      "started_at": "2026-01-10T20:10:15.234Z",
      "created_at": "2026-01-10T20:10:15.234Z",
      "updated_at": "2026-01-10T20:10:15.234Z"
    },
    "last_visit_with_utm": {
      "uuid": "9f2e8a22-1b65-4414-95f3-5caf0bbd11da",
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "spring_sale",
      "utm_term": "running shoes",
      "utm_content": "ad_variant_a",
      "ip": "192.168.1.1",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
      "referrer": "https://www.google.com/search?q=example",
      "referring_domain": "google.com",
      "landing_page": "https://example.com/products/shoes",
      "browser": "Chrome",
      "os": "Mac OS X",
      "device_type": "desktop",
      "started_at": "2026-01-09T14:23:45.123Z",
      "created_at": "2026-01-09T14:23:45.123Z",
      "updated_at": "2026-01-09T14:23:45.123Z"
    }
  },
  "affiliate": null,
  "referral_code": null
}

Changes

    • breaking

      the response property /// became nullable for the status

    • info

      added the new optional request property /

    • info

      added the new optional request property /

    • info

      added the non-success response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      removed from the ///// response property allOf list for the response status

    • info

      removed from the ///// response property allOf list for the response status

    • info

      removed from the ///// response property allOf list for the response status

    • info

      removed from the /// response property allOf list for the response status

    • info

      removed from the /// response property allOf list for the response status

    • info

      added subschema #2 to the ///// response property anyOf list for the response status

    • info

      added subschema #2 to the ///// response property anyOf list for the response status

    • info

      added subschema #2 to the ///// response property anyOf list for the response status

    • info

      added subschema #2 to the /// response property anyOf list for the response status

    • info

      added subschema #2 to the /// response property anyOf list for the response status

    • info

      added the success response with the status