---
title: "Abandon Invoice"
method: POST
path: "/orders/invoices/{id}/abandon"
tags: ["Orders::Invoice"]
---

# Abandon Invoice

`POST /orders/invoices/{id}/abandon`

## Request

- Base URL: `https://myworkspace.myclickfunnels.com/api/v2`
- URL: `https://myworkspace.myclickfunnels.com/api/v2/orders/invoices/{id}/abandon`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts.myclickfunnels.com/oauth/authorize`
    - Token URL: `https://accounts.myclickfunnels.com/oauth/token`
- TypeScript: <https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/docs/orders/invoices/:id/abandon/post.ts> (a function with typed inputs; its response is checked against the schema)

Abandon an unpaid, draft, or past-due invoice through ClickFunnels' own abandon path (the
same path the in-app "Abandon invoice" button uses) so the abandon propagates to the payment
processor and STOPS its autopay retry (dunning) schedule for this invoice.

Reach for this when the retries themselves are the problem: an insufficient-funds decline
where the right move is to hold the retry cycle for a few days rather than cancel the
subscription or refund the customer. Abandoning affects only this invoice - the order and its
future rebills are untouched.

A direct `PUT /orders/invoices/{id}` write of `status: abandoned` is not an alternative: that
action is available only for external (self-managed) orders and returns 404 for
processor-managed ones, because an invoice's `status` is a mirror ClickFunnels updates only
after the processor confirms the change.

Only invoices in `unpaid`, `draft`, or `past_due` status can be abandoned. An invoice in any
other status returns 404 rather than 422, because this API hides records the caller may not
act on. Please refer to [our Invoices
guide](https://developers.myclickfunnels.com/docs/orders/invoices) for more information about
the different types of invoices and payment processors.

## Path parameters

- `id` string, required

## Response `200`

OK - the payment processor accepted the abandon and stopped retrying this invoice. The returned invoice is the latest local snapshot and `status` is the status the processor reported back. The example below is trimmed to the fields that carry the transition; the full invoice shape is documented on `GET /orders/invoices/{id}`.

- OrdersInvoiceAttributes: Invoices
  - `id` integer: Invoice ID
  - `public_id` string: Invoice public ID
  - `order_id` integer: Order ID
  - `status` string: The billing status reflects the status of the invoice's payment. Billing status can be one of the following for Payments AI orders: `draft`, `paid`, `unpaid`, `partially-refunded`, `refunded`, `voided`, `disputed`, `past-due`. External invoice statuses of external one-time orders can be one of the following: `unpaid`, `paid`, `voided` and `refunded`, `disputed`, `past-due`. A change in status will update the `billing_status` of the parent order. If the status of a one-time order is changed to `paid`, the order's `service_status` will also be flipped to `completed`.
  - `due_amount` string, nullable: Due Amount
  - `total_amount` string, nullable: Total Amt
  - `subtotal_amount` string, nullable: Subtotal Amount
  - `tax_amount` string, nullable: Tax Amount
  - `shipping_amount` string, nullable: Invoiced shipping amount. Cannot be negative.
  - `discount_amount` string, nullable: Discount Amount
  - `currency` string, nullable: The currency for the invoice. Automatically set to the parent order's currency when creating an invoice for an external order through the API.
  - `issued_at` string, date-time, nullable: The date the invoice was issued.
  - `due_at` string, date-time, nullable: The date the invoice is due.
  - `paid_at` string, date-time, nullable: The date the invoice was paid.
  - `invoice_type` 'initial' | 'renewal' | 'interim' | 'cancellation' | 'one_time' | 'refund' | 'charge' | 'one_time_sale' | 'null', nullable: Invoice Type
  - `invoice_number` string: The number of the invoice. Usually, this is a sequential number in a certain format to be used for bookkeeping purposes.
  - `fulfillment_status` string, nullable: The fulfillment status of the invoice. This can be one of: - `not_applicable` - the invoice is not eligible for fulfillment - `unfulfilled` - the entire invoice needs to be fulfilled - `partial` - some items have been fulfilled, but some are pending or restocked - `complete` - all items are fulfilled
  - `created_at` string, date-time, nullable: Added
  - `updated_at` string, date-time, nullable: Updated
  - `external_id` string, nullable: External ID
  - `payment_processor` string, nullable: The payment processor of the invoice's order. Currently, it can be one of `payments_ai` and `external`.
  - `eligible_for_fulfillment` boolean, nullable: Invoice has been paid so is eligible for fulfillment (does not indicate if the invoice has any fulfillable items)
  - `line_items` OrdersInvoicesLineItemAttributes[]: Invoice Line Items
    - `id` integer: Line item ID
    - `public_id` string: ClickFunnels line item public ID
    - `invoice_id` integer: Invoice ID
    - `external_id` string: External
    - `payment_type` string, nullable: Payment Type
    - `description` string, nullable: Description
    - `quantity` integer, nullable: Quantity
    - `fulfillment_status` 'unfulfilled' | 'partially_fulfilled' | 'complete' | 'ignored' | 'null', nullable: Represents the current fulfillment status of the line item. This can be one of the following: - `unfulfilled` - the line item has not been fully fulfilled (fulfilled quantity is 0) - `partially_fulfilled` - the line item is partially fulfilled (fulfilled quantity is less than line item quantity) - `complete` - the line item is completely fulfilled (fulfilled quantity is equal to line item quantity) - `ignored` - the line item is marked as ignored for fulfillment
    - `external_product_id` string, nullable: External Product
    - `discount_amount` number, nullable: Discount Amount
    - `state_tax_amount` number, nullable: State Tax Amount
    - `county_tax_amount` number, nullable: County Tax Amount
    - `city_tax_amount` number, nullable: City Tax Amount
    - `district_tax_amount` number, nullable: District Tax Amount
    - `state_tax_rate` number, nullable: State Tax Rate
    - `county_tax_rate` number, nullable: County Tax Rate
    - `city_tax_rate` number, nullable: City Tax Rate
    - `district_tax_rate` number, nullable: District Tax Rate
    - `country_tax_jurisdiction` string, nullable: Country Tax Jurisdiction
    - `state_tax_jurisdiction` string, nullable: State Tax Jurisdiction
    - `county_tax_jurisdiction` string, nullable: County Tax Jurisdiction
    - `city_tax_jurisdiction` string, nullable: City Tax Jurisdiction
    - `period_start_at` string, nullable: Period Start At
    - `period_end_at` string, nullable: Period End At
    - `period_number` string, nullable: Period Number
    - `created_at` string, nullable: Added
    - `updated_at` string, nullable: Updated
    - `amount` string, nullable: Amount
    - `products_price` object, nullable: Product Price
      - `id` integer: ID
      - `public_id` string: Price public ID
      - `amount` string: Amount
      - `currency` string: Currency
      - `duration` string: Duration
      - `interval` string: Interval
      - `interval_count` string: Interval count
    - `products_variant` object, nullable: Product Variant
      - `id` integer: ID
      - `public_id` string: Variant public ID
      - `product_id` integer: Product ID
      - `name` string: Name
      - `description` string, nullable: The description of the variant. The description of the **default variant** is the user-facing description of the `Product`.
      - `sku` string, nullable: SKU
      - `fulfillment_required` boolean, nullable: Fulfillment required
  - `order` OrderBaseAttributes: Base order attributes used in nested responses (e.g., within invoice responses). This is a subset of the full OrderAttributes schema.
    - `id` integer: ClickFunnels Order ID
    - `public_id` string: ClickFunnels Order public ID
    - `order_number` string, nullable: A sequential number for bookkeeping purposes increased by 1 for each new order in a workspace starting from
    - `total_amount` string, nullable: The total amount of the order, considering taxes and discounts.
    - `origination_channel_id` integer: Origination Channel ID
    - `origination_channel_type` string, nullable: Origination Channel Type
    - `notes` string, nullable: Your internal note about the order. This will be visible in ClickFunnels admin orders-related sections.
    - `live_mode` boolean: Indicates if the Order will use a live payment gateway and process real credit cards.
    - `in_trial` boolean: In Trial
    - `billing_status` string: 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_status` string: 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_type` string: Order Type
    - `next_charge_at` string, 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_at` string, 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_at` string, 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_ids` integer[]: Order Tags
    - `activated_at` string, nullable: Date Activated
    - `canceled_at` string, nullable: Order Canceled At
    - `canceled_by` string, nullable: Order Canceled By
    - `cancel_reason` string, 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_description` string, nullable: A free-text description of the cancellation reason.
    - `churned_at` string, nullable: Churned At
    - `shipping_address_first_name` string, nullable: The first name of the recipient's shipping address.
    - `shipping_address_last_name` string, nullable: The last name of the recipient's shipping address.
    - `shipping_address_organization_name` string, nullable: The organization name of the recipient's shipping address.
    - `shipping_address_phone_number` string, nullable: The phone number of the recipient's shipping address.
    - `shipping_address_street_one` string, nullable: The main street information of the shipping address, including the street name and number.
    - `shipping_address_street_two` string, nullable: Additional street information for the shipping address, like entrance information and apartment numbers.
    - `shipping_address_city` string, nullable: The city of the shipping address.
    - `shipping_address_region` string, nullable: The region of the shipping address, like state or province.
    - `shipping_address_country` string, nullable: The country of the shipping address.
    - `shipping_address_postal_code` string, nullable: Postal Code
    - `billing_address_street_one` string, nullable: The main street information of the billing address, including the street name and number.
    - `billing_address_street_two` string, nullable: Additional street information of the billing address, like entrance information and apartment numbers.
    - `billing_address_city` string, nullable: The city of the billing address.
    - `billing_address_region` string, nullable: The region of the billing address, like state or province.
    - `billing_address_country` string, nullable: The billing address country.
    - `billing_address_postal_code` string, nullable: Billing address postal (ZIP) code.
    - `recurring_invoices_paid_count` integer: 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_name` string, nullable: Origination Channel Name
    - `origination_channel_public_id` string, nullable: The obfuscated public ID of the origination channel
    - `contact` ContactBaseAttributes: Contacts
      - `id` integer: Contact ID
      - `public_id` string: Contact public ID
      - `workspace_id` integer: Workspace ID
      - `default_shipping_address_id` integer, nullable: Read-only shipping entry ID; select it using default true on a shipping entry. Null when unset.
      - `anonymous` integer, nullable: Anonymous
      - `email_address` string, nullable: The contact's email address. It is currently not expected to be null and is the main identifier for a contact.
      - `first_name` string, nullable: First name
      - `last_name` string, nullable: Last name
      - `phone_number` string, nullable: Phone number
      - `time_zone` string, nullable: The human-readable time zone, usually set dynamically by the app for the contact, for example, during opt-in. Read more about time zones and how to map them back to the TZ standard in [our Time Zones guide.](https://dash.readme.com/project/cf2/v2/docs/timezones).
      - `uuid` string: UUID
      - `unsubscribed_at` string, nullable: Unsubscribed
      - `last_notification_email_sent_at` string, nullable: Last notification email sent
      - `email_suppression_reason` string, nullable: The reason the contact's email address is suppressed from receiving emails. Null when no suppression exists.
      - `is_active` boolean, nullable: Whether the contact is active. Can be null immediately after creation. A contact is considered active when they have a valid email address, have not unsubscribed, have not been deleted, and have no email suppression reason. Because it collapses several states into one flag, do not use it to detect deletion - check deleted_at instead.
      - `deleted_at` string, date-time, nullable: When the contact was deleted. Deleting a contact is a soft delete: the record is excluded from list endpoints but remains readable by id, so a non-null value here is the only reliable way to tell that a contact returned by this endpoint has been deleted. Null when the contact has not been deleted.
      - `fb_url` string, nullable: Facebook URL
      - `twitter_url` string, nullable: Twitter URL
      - `instagram_url` string, nullable: Instagram URL
      - `linkedin_url` string, nullable: LinkedIn URL
      - `website_url` string, nullable: Website URL
      - `created_at` string, date-time: Date added
      - `updated_at` string, date-time: Last updated
      - `tags` object[], nullable: Contact Tags
        - `id` integer: Tag ID
        - `public_id` string: Tag public ID
        - `name` string: Name
        - `color` string: Color
        - `applied_at` string, nullable: The datetime the tag was applied by creating a Contacts::AppliedTag that maps the tag to the contact.
      - `custom_attributes` object: A dynamic key-value pair object where both the key and value are strings. Custom attributes are usually added to the contact when they submit forms that contain custom contact attributes. But you can also add them via the API using the modifying endpoints like Create/Update/Upsert Contact.
      - `visits` VisitsAttributes: Collection of visit tracking records for a contact, including first visit, last visit, and last visit with UTM parameters
        - `first_visit` VisitAttributes: Visit tracking information including UTM parameters and device data
          - `uuid` string: Unique identifier for the visit
          - `utm_source` string, nullable: UTM source parameter from the visit URL
          - `utm_medium` string, nullable: UTM medium parameter from the visit URL
          - `utm_campaign` string, nullable: UTM campaign parameter from the visit URL
          - `utm_term` string, nullable: UTM term parameter from the visit URL
          - `utm_content` string, nullable: UTM content parameter from the visit URL
          - `ip` string, nullable: IP address of the visitor
          - `user_agent` string, nullable: User agent string from the visitor's browser
          - `referrer` string, nullable: HTTP referrer URL
          - `referring_domain` string, nullable: Domain extracted from the referrer URL
          - `landing_page` string, nullable: The first page URL visited in this session
          - `browser` string, nullable: Browser name detected from user agent
          - `os` string, nullable: Operating system detected from user agent
          - `device_type` string, nullable: Device type (e.g., desktop, mobile, tablet)
          - `started_at` string, date-time, nullable: Timestamp when the visit session started
          - `created_at` string, date-time: Timestamp when the visit record was created
          - `updated_at` string, date-time: Timestamp when the visit record was last updated
        - `last_visit` VisitAttributes: Visit tracking information including UTM parameters and device data
          - `uuid` string: Unique identifier for the visit
          - `utm_source` string, nullable: UTM source parameter from the visit URL
          - `utm_medium` string, nullable: UTM medium parameter from the visit URL
          - `utm_campaign` string, nullable: UTM campaign parameter from the visit URL
          - `utm_term` string, nullable: UTM term parameter from the visit URL
          - `utm_content` string, nullable: UTM content parameter from the visit URL
          - `ip` string, nullable: IP address of the visitor
          - `user_agent` string, nullable: User agent string from the visitor's browser
          - `referrer` string, nullable: HTTP referrer URL
          - `referring_domain` string, nullable: Domain extracted from the referrer URL
          - `landing_page` string, nullable: The first page URL visited in this session
          - `browser` string, nullable: Browser name detected from user agent
          - `os` string, nullable: Operating system detected from user agent
          - `device_type` string, nullable: Device type (e.g., desktop, mobile, tablet)
          - `started_at` string, date-time, nullable: Timestamp when the visit session started
          - `created_at` string, date-time: Timestamp when the visit record was created
          - `updated_at` string, date-time: Timestamp when the visit record was last updated
        - `last_visit_with_utm` VisitAttributes: Visit tracking information including UTM parameters and device data
          - `uuid` string: Unique identifier for the visit
          - `utm_source` string, nullable: UTM source parameter from the visit URL
          - `utm_medium` string, nullable: UTM medium parameter from the visit URL
          - `utm_campaign` string, nullable: UTM campaign parameter from the visit URL
          - `utm_term` string, nullable: UTM term parameter from the visit URL
          - `utm_content` string, nullable: UTM content parameter from the visit URL
          - `ip` string, nullable: IP address of the visitor
          - `user_agent` string, nullable: User agent string from the visitor's browser
          - `referrer` string, nullable: HTTP referrer URL
          - `referring_domain` string, nullable: Domain extracted from the referrer URL
          - `landing_page` string, nullable: The first page URL visited in this session
          - `browser` string, nullable: Browser name detected from user agent
          - `os` string, nullable: Operating system detected from user agent
          - `device_type` string, nullable: Device type (e.g., desktop, mobile, tablet)
          - `started_at` string, date-time, nullable: Timestamp when the visit session started
          - `created_at` string, date-time: Timestamp when the visit record was created
          - `updated_at` string, date-time: Timestamp when the visit record was last updated
    - `affiliate` object, nullable: The affiliate who will receive a commission for the order
      - `name` string: The name of the affiliate. Can be a combination of first name, last name and the affiliate email.
      - `email` string, nullable: The email address of the affiliate.
    - `referral_code` object, nullable: The referral code used to associate an order with an affiliate.
      - `code` string: The referral code value visible by users. It must be unique and can contain only letters, numbers, hyphens, and underscores.
      - `default` boolean, nullable: Whether this code is the default code for the affiliate.
    - `order_page` object, nullable: Page
      - `id` integer: Page ID
      - `public_id` string: The public identifier of the page
      - `name` string: Page name
  - `visits` OrderVisitsAttributes: Visit tracking records for orders and invoices. Contains last_visit and last_visit_with_utm only (first_visit belongs to the contact).
    - `last_visit` VisitAttributes: Visit tracking information including UTM parameters and device data
      - `uuid` string: Unique identifier for the visit
      - `utm_source` string, nullable: UTM source parameter from the visit URL
      - `utm_medium` string, nullable: UTM medium parameter from the visit URL
      - `utm_campaign` string, nullable: UTM campaign parameter from the visit URL
      - `utm_term` string, nullable: UTM term parameter from the visit URL
      - `utm_content` string, nullable: UTM content parameter from the visit URL
      - `ip` string, nullable: IP address of the visitor
      - `user_agent` string, nullable: User agent string from the visitor's browser
      - `referrer` string, nullable: HTTP referrer URL
      - `referring_domain` string, nullable: Domain extracted from the referrer URL
      - `landing_page` string, nullable: The first page URL visited in this session
      - `browser` string, nullable: Browser name detected from user agent
      - `os` string, nullable: Operating system detected from user agent
      - `device_type` string, nullable: Device type (e.g., desktop, mobile, tablet)
      - `started_at` string, date-time, nullable: Timestamp when the visit session started
      - `created_at` string, date-time: Timestamp when the visit record was created
      - `updated_at` string, date-time: Timestamp when the visit record was last updated
    - `last_visit_with_utm` VisitAttributes: Visit tracking information including UTM parameters and device data
      - `uuid` string: Unique identifier for the visit
      - `utm_source` string, nullable: UTM source parameter from the visit URL
      - `utm_medium` string, nullable: UTM medium parameter from the visit URL
      - `utm_campaign` string, nullable: UTM campaign parameter from the visit URL
      - `utm_term` string, nullable: UTM term parameter from the visit URL
      - `utm_content` string, nullable: UTM content parameter from the visit URL
      - `ip` string, nullable: IP address of the visitor
      - `user_agent` string, nullable: User agent string from the visitor's browser
      - `referrer` string, nullable: HTTP referrer URL
      - `referring_domain` string, nullable: Domain extracted from the referrer URL
      - `landing_page` string, nullable: The first page URL visited in this session
      - `browser` string, nullable: Browser name detected from user agent
      - `os` string, nullable: Operating system detected from user agent
      - `device_type` string, nullable: Device type (e.g., desktop, mobile, tablet)
      - `started_at` string, date-time, nullable: Timestamp when the visit session started
      - `created_at` string, date-time: Timestamp when the visit record was created
      - `updated_at` string, date-time: Timestamp when the visit record was last updated

## Other responses

- `401`: Unauthorized
- `404`: Not Found - the invoice does not exist, does not belong to a workspace your API key can access, is not in an abandonable status (`unpaid`, `draft`, `past_due`), or belongs to a deleted order. Fetch the invoice first and check `status` to tell these apart.
- `422`: Unprocessable Entity - the payment processor rejected the abandon or did not move the invoice to `abandoned`. The invoice keeps its previous status and its retry schedule; safe to retry.

## Changes

- **2026-11-03** `511d88b30aea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/changes/orders/invoices/:id/abandon/post.md)

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) - [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/revisions/511d88b30aea?raw)
