---
updatedAt: 2026-08-18T07:14:03.000Z
agentTools:
  projectIndex: https://developers.intandem.tech/llms.txt
---

# Get all PaymentPlans

## Overview
Get a list of PaymentPlans for the business, newest updated first. Use `payment_request_uid` to find the plan collecting against a specific invoice, and `status` to list only running plans.

Available for **Staff and Client tokens**.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Sales",
    "description": "Unified OpenAPI specification for sales domain",
    "version": "3.0",
    "x-generated": {
      "sourceFiles": [
        "payment_plans.json",
        "payments.json",
        "legacy_v1_sales.json",
        "payment_gateway.json",
        "legacy_v2_settings_services.json",
        "legacy_v2_settings_categories.json",
        "client_cards.json",
        "client_payment_cards.json",
        "sales_reports.json",
        "creditNote.json",
        "estimates.json",
        "coupons.json",
        "invoice.json",
        "coupon.json"
      ],
      "pathNormalizations": [
        {
          "file": "payments.json",
          "basePath": "/business/payments",
          "transformations": [
            {
              "original": "/v1/card_requests",
              "normalized": "/business/payments/v1/card_requests",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/card_requests/{client_uid}",
              "normalized": "/business/payments/v1/card_requests/{client_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/cards/{uid}",
              "normalized": "/business/payments/v1/cards/{uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/carts",
              "normalized": "/business/payments/v1/carts",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/carts/{uid}",
              "normalized": "/business/payments/v1/carts/{uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/carts/{uid}/cancel",
              "normalized": "/business/payments/v1/carts/{uid}/cancel",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/carts/{uid}/cart_completed",
              "normalized": "/business/payments/v1/carts/{uid}/cart_completed",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/client_packages/{uid}",
              "normalized": "/business/payments/v1/client_packages/{uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/deposits",
              "normalized": "/business/payments/v1/deposits",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/deposits/{uid}",
              "normalized": "/business/payments/v1/deposits/{uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/estimates",
              "normalized": "/business/payments/v1/estimates",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/estimates/{estimate_uid}",
              "normalized": "/business/payments/v1/estimates/{estimate_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/invoices",
              "normalized": "/business/payments/v1/invoices",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/invoices/{invoice_uid}",
              "normalized": "/business/payments/v1/invoices/{invoice_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/invoices/{invoice_uid}/cancel",
              "normalized": "/business/payments/v1/invoices/{invoice_uid}/cancel",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/packages/reorder",
              "normalized": "/business/payments/v1/packages/reorder",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payment_requests",
              "normalized": "/business/payments/v1/payment_requests",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payment_requests/{payment_request_uid}/send_link",
              "normalized": "/business/payments/v1/payment_requests/{payment_request_uid}/send_link",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payment_requests/{payment_request_uid}",
              "normalized": "/business/payments/v1/payment_requests/{payment_request_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payments",
              "normalized": "/business/payments/v1/payments",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payments/{payment_uid}",
              "normalized": "/business/payments/v1/payments/{payment_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payouts",
              "normalized": "/business/payments/v1/payouts",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/payouts/{provider_payout_id}",
              "normalized": "/business/payments/v1/payouts/{provider_payout_id}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/product_orders",
              "normalized": "/business/payments/v1/product_orders",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/product_orders/{product_order_uid}",
              "normalized": "/business/payments/v1/product_orders/{product_order_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/products",
              "normalized": "/business/payments/v1/products",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/products/{product_uid}",
              "normalized": "/business/payments/v1/products/{product_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/refunds",
              "normalized": "/business/payments/v1/refunds",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/scheduled_payments_rules",
              "normalized": "/business/payments/v1/scheduled_payments_rules",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/scheduled_payments_rules/{uid}/cancel",
              "normalized": "/business/payments/v1/scheduled_payments_rules/{uid}/cancel",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/scheduled_payments_rules/{uid}",
              "normalized": "/business/payments/v1/scheduled_payments_rules/{uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/tax_bulk",
              "normalized": "/business/payments/v1/tax_bulk",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/tax_bulk/apply_defaults",
              "normalized": "/business/payments/v1/tax_bulk/apply_defaults",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/taxes",
              "normalized": "/business/payments/v1/taxes",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/taxes/{tax_uid}",
              "normalized": "/business/payments/v1/taxes/{tax_uid}",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/transactions",
              "normalized": "/business/payments/v1/transactions",
              "basePath": "/business/payments"
            },
            {
              "original": "/v1/transactions/{provider_transaction_id}",
              "normalized": "/business/payments/v1/transactions/{provider_transaction_id}",
              "basePath": "/business/payments"
            }
          ]
        },
        {
          "file": "legacy_v1_sales.json",
          "basePath": "/platform/v1",
          "transformations": [
            {
              "original": "/leadgen",
              "normalized": "/platform/v1/leadgen",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payments",
              "normalized": "/platform/v1/payments",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payments/{payment_uid}",
              "normalized": "/platform/v1/payments/{payment_uid}",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payments/{payment_uid}/match",
              "normalized": "/platform/v1/payments/{payment_uid}/match",
              "basePath": "/platform/v1"
            },
            {
              "original": "/invoices",
              "normalized": "/platform/v1/invoices",
              "basePath": "/platform/v1"
            },
            {
              "original": "/invoices/{invoice_id}",
              "normalized": "/platform/v1/invoices/{invoice_id}",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/cards/sync_card",
              "normalized": "/platform/v1/payment/cards/sync_card",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/cards/{card_id}",
              "normalized": "/platform/v1/payment/cards/{card_id}",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/checkout/",
              "normalized": "/platform/v1/payment/checkout/",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/checkout/{url_key}",
              "normalized": "/platform/v1/payment/checkout/{url_key}",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/client_packages",
              "normalized": "/platform/v1/payment/client_packages",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/client_packages/cancel_redemption",
              "normalized": "/platform/v1/payment/client_packages/cancel_redemption",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/client_packages/update_usage",
              "normalized": "/platform/v1/payment/client_packages/update_usage",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/packages",
              "normalized": "/platform/v1/payment/packages",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/packages/{package_id}",
              "normalized": "/platform/v1/payment/packages/{package_id}",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/settings",
              "normalized": "/platform/v1/payment/settings",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment/settings/update_default_currency",
              "normalized": "/platform/v1/payment/settings/update_default_currency",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment_statuses/{id}/apply_coupon",
              "normalized": "/platform/v1/payment_statuses/{id}/apply_coupon",
              "basePath": "/platform/v1"
            },
            {
              "original": "/payment_statuses/{id}/validate_coupon",
              "normalized": "/platform/v1/payment_statuses/{id}/validate_coupon",
              "basePath": "/platform/v1"
            },
            {
              "original": "/services",
              "normalized": "/platform/v1/services",
              "basePath": "/platform/v1"
            },
            {
              "original": "/services/availability",
              "normalized": "/platform/v1/services/availability",
              "basePath": "/platform/v1"
            },
            {
              "original": "/services/{service_uid}",
              "normalized": "/platform/v1/services/{service_uid}",
              "basePath": "/platform/v1"
            },
            {
              "original": "/services/{service_uid}/availability",
              "normalized": "/platform/v1/services/{service_uid}/availability",
              "basePath": "/platform/v1"
            }
          ]
        },
        {
          "file": "estimates.json",
          "basePath": "/platform/v1",
          "transformations": [
            {
              "original": "/estimates",
              "normalized": "/platform/v1/estimates",
              "basePath": "/platform/v1"
            }
          ]
        }
      ],
      "pathConflicts": [],
      "componentConflicts": [
        {
          "type": "schema",
          "name": "ErrorResponse",
          "resolution": "Renamed to ErrorResponse_client_cards",
          "files": [
            "merged",
            "client_cards.json"
          ]
        }
      ],
      "totalPaths": 86,
      "totalComponents": 11
    }
  },
  "servers": [
    {
      "url": "https://api.vcita.biz",
      "description": "Unified API Gateway server"
    }
  ],
  "paths": {
    "/v3/sales/payment_plans": {
      "get": {
        "operationId": "listPaymentPlans",
        "summary": "Get all PaymentPlans",
        "description": "## Overview\nGet a list of PaymentPlans for the business, newest updated first. Use `payment_request_uid` to find the plan collecting against a specific invoice, and `status` to list only running plans.\n\nAvailable for **Staff and Client tokens**.",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number of results.",
            "schema": {
              "minimum": 1,
              "maximum": 10000,
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "per_page",
            "required": false,
            "in": "query",
            "description": "How many items to return per page. Max: 100",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Sort by fields. Example: sort=next_payment_date:asc,created_at:desc",
            "schema": {
              "default": "updated_at:desc",
              "type": "string"
            }
          },
          {
            "name": "payment_request_uid",
            "required": false,
            "in": "query",
            "description": "Return only plans linked to this payment request. Combine with `status=active` to check whether an invoice already has a running plan.",
            "schema": {
              "type": "string"
            },
            "example": "k3nv8qr2tw9fdx15"
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Return only plans in this status. A plan whose scheduled installment failed to charge is `paused`. A plan that was cancelled and will collect nothing further is `cancelled`; read `cancel_reason` for why.",
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "paused",
                "completed",
                "cancelled"
              ]
            },
            "example": "active"
          },
          {
            "name": "matter_uid",
            "required": false,
            "in": "query",
            "description": "Return only plans belonging to this matter.",
            "schema": {
              "type": "string"
            },
            "example": "z7hbm4ps6ctj20ve"
          },
          {
            "name": "client_uid",
            "required": false,
            "in": "query",
            "description": "Return only plans belonging to matters of this client. **Required when using a Client Token**, and must match the client associated with your authentication token.",
            "schema": {
              "type": "string"
            },
            "example": "q9wd5xkn3rb8ylt6"
          },
          {
            "name": "payment_method_type",
            "required": false,
            "in": "query",
            "description": "Return only plans charging this kind of payment method (e.g., \"card\").",
            "schema": {
              "type": "string",
              "enum": [
                "card"
              ]
            },
            "example": "card"
          },
          {
            "name": "payment_method_uid",
            "required": false,
            "in": "query",
            "description": "Return only plans charging this payment method. Combine with `status=active` to check whether a card is still in use before removing it.",
            "schema": {
              "type": "string"
            },
            "example": "v2jcf7mz8qhs4npd"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of PaymentPlans",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "success": {
                          "type": "boolean",
                          "description": "Indicates whether the API request was successful (true) or failed (false)."
                        },
                        "data": {
                          "type": "object",
                          "description": "The response payload. Present on successful responses (success: true)."
                        },
                        "error": {
                          "type": "string",
                          "description": "Error message for simple error responses. Used in some legacy endpoints."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Array of error objects for detailed error responses. Present on error responses (success: false).",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string",
                                "description": "Machine-readable error code (e.g., 'already_exists', 'invalid', 'not_found')."
                              },
                              "message": {
                                "type": "string",
                                "description": "Human-readable error message."
                              },
                              "field": {
                                "type": "string",
                                "description": "The field that caused the error (for validation errors)."
                              }
                            },
                            "required": [
                              "code",
                              "message"
                            ]
                          }
                        }
                      },
                      "required": [
                        "success"
                      ],
                      "description": "Generic wrapper object for API responses. Success responses contain 'data', while error responses contain 'errors' array or 'error' string."
                    },
                    {
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/PaymentPlansList"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing, expired or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "success": false,
                  "errors": [
                    {
                      "message": "Authentication is required to access this resource"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The token is valid but not permitted to perform this action on this business.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "success": false,
                  "errors": [
                    {
                      "message": "You are not allowed to perform this action"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Validation failed. Errors use the standard envelope, with `field` naming the offending parameter and `code` a machine-readable reason (e.g., `missing_field`, `invalid`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "success": false,
                  "errors": [
                    {
                      "field": "amount",
                      "code": "invalid",
                      "message": "amount must be greater than 0"
                    }
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "Payment Plan"
        ],
        "security": [
          {
            "PaymentPlans": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "PaymentPlansList": {
        "type": "object",
        "properties": {
          "payment_plans": {
            "description": "List of PaymentPlans",
            "type": "array",
            "items": {
              "type": "object",
              "description": "A PaymentPlan collects a fixed amount from a client's saved payment method on a recurring schedule. A plan is either **standalone**, where every installment is an independent charge unrelated to any payable, or **linked**, where every installment is collected against an existing payment request (an open invoice) and reduces its balance until it is fully paid. The two are distinguished by `payment_request_uid`.",
              "properties": {
                "uid": {
                  "type": "string",
                  "description": "The unique identifier of the PaymentPlan (e.g., \"7gilictbt12jir3v\")",
                  "readOnly": true
                },
                "name": {
                  "type": "string",
                  "description": "A short name for the plan, shown to the staff member and to the client (e.g., \"Kitchen remodel plan\")"
                },
                "description": {
                  "type": "string",
                  "description": "A free-text description of the plan (e.g., \"3 monthly installments for invoice #1042\")"
                },
                "payment_request_uid": {
                  "type": "string",
                  "nullable": true,
                  "description": "The payment request this plan collects against.\n\n* **When set** — the plan is **linked**: each installment is charged against that payable's open balance instead of creating a standalone charge, reducing the invoice balance until it is paid.\n* **When null** — the plan is **standalone**: each installment is an independent charge, unconnected to any invoice.\n\nOnly an open invoice's payment request may be linked, and the value is immutable after creation. Treat it as an opaque identifier — the length varies by payable type. Obtain it from `GET /business/payments/v1/payment_requests` (e.g., \"a1b2c3d4e5f6g7h8\")"
                },
                "amount": {
                  "type": "number",
                  "description": "The amount charged per installment, in the plan's currency. Must be greater than 0. For a linked plan this is the per-installment amount the client calculated by dividing the invoice balance across `cycles` and **rounding up** to two decimals; the last installment is then clamped down to the remaining balance, so the amount actually collected on the final cycle may be lower than this value. (e.g., 333.34)"
                },
                "amount_paid": {
                  "type": "number",
                  "description": "The total amount collected by this plan so far, across all completed installments (e.g., 666.68)",
                  "readOnly": true
                },
                "currency": {
                  "type": "string",
                  "description": "Three-letter ISO 4217 currency code. For a linked plan this must equal the currency of the linked payment request (e.g., \"USD\", \"EUR\", \"GBP\")"
                },
                "cycles": {
                  "type": "integer",
                  "description": "The total number of installments the plan will collect. Must be between 1 and 100. Required unless `frequency_type` is `one_time`, in which case it is ignored and stored as 1 (e.g., 3)",
                  "minimum": 1,
                  "maximum": 100
                },
                "cycles_count": {
                  "type": "integer",
                  "description": "The number of installments already collected. When it reaches `cycles`, the plan's `status` becomes `completed` (e.g., 2)",
                  "readOnly": true
                },
                "frequency_type": {
                  "type": "string",
                  "description": "How often the plan collects an installment.\n\n* `one_time` - A single payment on `start_date`.\n* `weekly` - Every week.\n* `bi_weekly` - Every two weeks.\n* `monthly` - Every month.",
                  "enum": [
                    "one_time",
                    "weekly",
                    "bi_weekly",
                    "monthly"
                  ]
                },
                "start_date": {
                  "type": "string",
                  "format": "date-time",
                  "description": "When the first installment is collected, in ISO 8601 format (e.g., \"2026-09-01T09:00:00Z\")"
                },
                "end_date": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "When the last installment is scheduled to be collected, derived from `start_date`, `frequency_type` and `cycles` (e.g., \"2026-11-01T09:00:00Z\")",
                  "readOnly": true
                },
                "next_payment_date": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "When the next installment is due to be collected. Carries a full timestamp, not just a calendar date. Null while the plan is `paused`, and once it is `completed` or `cancelled` (e.g., \"2026-10-01T09:00:00Z\")",
                  "readOnly": true
                },
                "status": {
                  "type": "string",
                  "description": "The current state of the plan.\n\n* `active` - The plan is running and will collect its next installment at `next_payment_date`.\n* `paused` - A scheduled installment failed to charge, so collection stopped. The plan is kept as it is and will collect nothing further while paused. Setting `status` to `active` resumes it (see Update a PaymentPlan). It can also be cancelled.\n* `completed` - Every cycle was collected (`cycles_count` reached `cycles`). Set by the system only.\n* `cancelled` - The plan stopped before completing and will collect nothing further. Read `cancel_reason` for why and `canceled_by` for who.\n\nThe only transitions a client may request are `paused` → `active` and `active` or `paused` → `cancelled`.",
                  "enum": [
                    "active",
                    "paused",
                    "completed",
                    "cancelled"
                  ]
                },
                "matter_uid": {
                  "type": "string",
                  "description": "The unique identifier of the client's matter this plan belongs to. For a linked plan this must be the same matter the payment request sits on (e.g., \"m1m2m3m4m5m6m7m8\")",
                  "x-reference-to": "clients.matter"
                },
                "staff_uid": {
                  "type": "string",
                  "description": "The unique identifier of the staff member who created the plan (e.g., \"1c3ab579d2d31fbb\")",
                  "readOnly": true
                },
                "send_receipt": {
                  "type": "boolean",
                  "description": "Whether a receipt is emailed to the client after each collected installment. For a linked plan the receipt's subject is the invoice.\n\nRequired when creating a plan, but **not returned in responses** (e.g., true)",
                  "writeOnly": true
                },
                "payment_method_type": {
                  "type": "string",
                  "description": "The kind of saved payment method charged on every installment. Only a saved card is supported today (e.g., \"card\")",
                  "enum": [
                    "card"
                  ]
                },
                "payment_method_uid": {
                  "type": "string",
                  "description": "The unique identifier of the saved payment method to charge. It must belong to the matter's client and use the same payment provider as the business's payment gateway. For `card`, obtain it from `GET /platform/v1/clients/{client_id}/payment/cards` (e.g., \"c1c2c3c4c5c6c7c8\")",
                  "maxLength": 16
                },
                "canceled_by": {
                  "type": "string",
                  "description": "The display name of the staff member who cancelled the plan (e.g., \"Dana Levi\"). Empty when the plan was not cancelled by a person — either it is still running, or the system stopped it. Use `cancel_reason` to tell those apart.",
                  "readOnly": true
                },
                "canceled_date": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "When the plan was cancelled. Null while the plan was never cancelled (e.g., \"2026-10-15T12:04:11Z\")",
                  "readOnly": true
                },
                "cancel_reason": {
                  "type": "string",
                  "nullable": true,
                  "description": "Why the plan stopped. Present whenever `status` is `cancelled`, null otherwise.\n\n* `canceled_by_staff` - A staff member cancelled the plan. `canceled_by` holds their name.\n* `charge_failed` - A charge was declined or the gateway failed. The specific reason is on the failed `Payment` record, which carries this plan's uid in `scheduled_payments_rule_uid`.\n* `payment_request_settled` - The linked payment request reached a zero balance through another route, so there is nothing left to collect.\n* `payment_request_cancelled` - The linked payment request was cancelled, waived or deleted.",
                  "enum": [
                    "canceled_by_staff",
                    "charge_failed",
                    "payment_request_settled",
                    "payment_request_cancelled"
                  ],
                  "readOnly": true
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "When the plan was created (e.g., \"2026-08-20T10:15:00Z\")",
                  "readOnly": true
                },
                "updated_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "When the plan was last updated (e.g., \"2026-10-01T09:00:12Z\")",
                  "readOnly": true
                }
              },
              "required": [
                "uid",
                "name",
                "amount",
                "currency",
                "cycles",
                "frequency_type",
                "start_date",
                "status",
                "matter_uid",
                "payment_method_type",
                "payment_method_uid"
              ],
              "example": {
                "uid": "7gilictbt12jir3v",
                "name": "Kitchen remodel plan",
                "description": "3 monthly installments for invoice #1042",
                "payment_request_uid": "a1b2c3d4e5f6g7h8",
                "amount": 333.34,
                "amount_paid": 666.68,
                "currency": "USD",
                "cycles": 3,
                "cycles_count": 2,
                "frequency_type": "monthly",
                "start_date": "2026-09-01T09:00:00Z",
                "end_date": "2026-11-01T09:00:00Z",
                "next_payment_date": "2026-11-01T09:00:00Z",
                "status": "active",
                "matter_uid": "m1m2m3m4m5m6m7m8",
                "staff_uid": "1c3ab579d2d31fbb",
                "payment_method_type": "card",
                "payment_method_uid": "c1c2c3c4c5c6c7c8",
                "canceled_by": "",
                "canceled_date": null,
                "cancel_reason": null,
                "created_at": "2026-08-20T10:15:00Z",
                "updated_at": "2026-10-01T09:00:12Z"
              }
            }
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              false
            ]
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string",
                  "description": "The name of the field that caused the error (e.g., \"payment_request_uid\", \"amount\")."
                },
                "code": {
                  "type": "string",
                  "description": "A machine-readable error code (e.g., \"invalid\", \"missing\", \"missing_field\")."
                },
                "message": {
                  "type": "string",
                  "description": "A human-readable error message describing the issue."
                }
              }
            }
          }
        },
        "required": [
          "success",
          "errors"
        ]
      }
    },
    "securitySchemes": {
      "PaymentPlans": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Provide a valid bearer token in the Authorization header. Example: 'Authorization: Bearer {token}'"
      }
    }
  }
}
```