Update Order
Changed onUpdate 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).
Request
- Base URLhttps://myworkspace.myclickfunnels.com/api/v2
- Auth
- HTTP bearer
- or OAuth 2Authorization codehttps://accounts.myclickfunnels.com/oauth/authorizeToken URLhttps://accounts.myclickfunnels.com/oauth/token
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
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.
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 propertyallOflist for the response status - info
removed from the
/////response propertyallOflist for the response status - info
removed from the
/////response propertyallOflist for the response status - info
removed from the
///response propertyallOflist for the response status - info
removed from the
///response propertyallOflist for the response status - info
added
subschema #2to the/////response propertyanyOflist for the response status - info
added
subschema #2to the/////response propertyanyOflist for the response status - info
added
subschema #2to the/////response propertyanyOflist for the response status - info
added
subschema #2to the///response propertyanyOflist for the response status - info
added
subschema #2to the///response propertyanyOflist for the response status - info
added the success response with the status
- breaking