---
updatedAt: 2026-06-30T16:05:21.000Z
agentTools:
  projectIndex: https://docs.pelcro.com/llms.txt
---

# Update plan (legacy)

Legacy endpoint to update a plan via POST.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "core-api",
    "version": "1.88"
  },
  "servers": [
    {
      "url": "https://www.pelcro.com/api/v1/core"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "x-bearer-format": "bearer"
      },
      "sec1": {
        "type": "apiKey",
        "in": "query",
        "name": "site_id"
      }
    }
  },
  "security": [
    {
      "sec0": [],
      "sec1": []
    }
  ],
  "paths": {
    "/plans/{id}": {
      "post": {
        "summary": "Update plan (legacy)",
        "description": "Legacy endpoint to update a plan via POST.",
        "operationId": "api-core-update-plan-legacy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Plan unique identifier",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "required": true
          },
          {
            "name": "site_id",
            "in": "query",
            "description": "The unique identifier of the site associated with your account.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ***"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "_method": {
                    "type": "string",
                    "description": "Defining the method for update",
                    "default": "PUT"
                  },
                  "nickname": {
                    "type": "string",
                    "description": "The plan display name"
                  },
                  "name_internal": {
                    "type": "string",
                    "description": "Internal reference name for the plan (not visible to public)"
                  },
                  "available_online": {
                    "type": "boolean",
                    "description": "Use this key to define if plan is available \"online and offline\" or \"offline\" only"
                  },
                  "refundable": {
                    "type": "boolean",
                    "description": "Use this key to define if plan is refundable or not"
                  },
                  "description": {
                    "type": "string",
                    "description": "Plan description"
                  },
                  "entitlements": {
                    "type": "array",
                    "description": "The entitlements of articles which are available on the selected plan",
                    "items": {
                      "type": "string"
                    }
                  },
                  "trial_period_days": {
                    "type": "integer",
                    "description": "The plan trial period in days",
                    "format": "int32"
                  },
                  "shipments_per_interval": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Number of physical shipments delivered per billing interval. Used for print subscription fulfillment and shipment-based revenue recognition."
                  },
                  "auto_uncollectible_days": {
                    "type": "integer",
                    "format": "int32",
                    "description": "Days after invoice due date before the invoice is automatically marked uncollectible and the subscription is cancelled. Overrides the account-level default. See [Plans](/docs/subscription-plans) for details."
                  },
                  "renewal_strategy": {
                    "type": "string",
                    "enum": [
                      "agency",
                      "digital",
                      "regular",
                      "single_shipment"
                    ],
                    "description": "Controls renewal behavior: \"regular\" (standard auto-renew), \"agency\" (agency-managed renewal), \"digital\" (digital-only renewal), \"single_shipment\" (expires after one shipment)."
                  },
                  "renewal_trigger": {
                    "type": "string",
                    "enum": [
                      "date",
                      "shipments_exhausted"
                    ],
                    "default": "date",
                    "description": "What closes a billing cycle. \"date\" ends the cycle on its renewal date. \"shipments_exhausted\" ends it as soon as every shipment the cycle paid for has been delivered, which is what print subscriptions billed by issue count need. \"shipments_exhausted\" requires recognized_revenue_type=shipments and a shipments_per_interval, and a plan using it cannot be renewed ahead of time and never generates an advance invoice. Defaults to date."
                  },
                  "expires_at": {
                    "type": "string",
                    "description": "The free plan expiry date",
                    "format": "date"
                  },
                  "ip_addresses": {
                    "type": "array",
                    "description": "Plan IP addresses to allow plans for specific IPs",
                    "items": {
                      "type": "string"
                    }
                  },
                  "domains": {
                    "type": "array",
                    "description": "Plan domains to allow plan for specific domains",
                    "items": {
                      "type": "string"
                    }
                  },
                  "gift_description": {
                    "type": "string",
                    "description": "Description displayed to the recipient when the plan is purchased as a gift subscription. See [Plans](/docs/subscription-plans) for details."
                  },
                  "image": {
                    "type": "string",
                    "description": "Plan Image",
                    "format": "binary"
                  },
                  "apple_product_id": {
                    "type": "string",
                    "description": "Apple App Store product identifier for in-app purchase integration. See [Plans](/docs/subscription-plans) for details."
                  },
                  "countries": {
                    "type": "array",
                    "description": "Countries which plan will be available in",
                    "items": {
                      "type": "string"
                    }
                  },
                  "group_owner_plan_id": {
                    "type": "integer",
                    "description": "Group owner plan ID if plan is a child from other plan",
                    "format": "int32"
                  },
                  "original_amount": {
                    "type": "integer",
                    "description": "The plan amount before discount",
                    "format": "int32"
                  },
                  "original_discount_percentage": {
                    "type": "integer",
                    "description": "The percentage of the discount on the original amount",
                    "format": "int32"
                  },
                  "allow_send_invoice": {
                    "type": "boolean",
                    "description": "Use this key to define if we allowed to send invoices for this plan or not"
                  },
                  "is_donation": {
                    "type": "boolean",
                    "description": "Is donation specifies if plan is for donation or not"
                  },
                  "old_provider_id": {
                    "type": "string",
                    "description": "The current/old external plan ID associated with a migrated plan."
                  },
                  "invoice_upcoming_notification": {
                    "type": "integer",
                    "description": "Days before sending a reminder for any upcoming subscription sign-up or renewal invoices related to the configured plan",
                    "format": "int32"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n\t\"data\": {\n\t\t\"id\": 175,\n\t\t\"agency_id\": null,\n\t\t\"product_id\": 100,\n\t\t\"status\": \"active\",\n\t\t\"agency_remit_rate\": null,\n\t\t\"amount\": 0,\n\t\t\"apple_product_id\": null,\n\t\t\"available_online\": true,\n\t\t\"auto_renew\": true,\n\t\t\"currency\": \"usd\",\n\t\t\"countries\": null,\n\t\t\"description\": null,\n\t\t\"domains\": null,\n\t\t\"entitlements\": null,\n\t\t\"group_owner_plan_id\": null,\n\t\t\"gift_description\": null,\n\t\t\"image\": null,\n\t\t\"interval\": \"day\",\n\t\t\"interval_count\": 1,\n\t\t\"ip_addresses\": null,\n\t\t\"metadata\": {\n\t\t\t\"original_amount\": \"100\",\n\t\t\t\"original_discount_percentage\": \"10000\"\n\t\t},\n\t\t\"nickname\": \"test plan hidden\",\n\t\t\"name_internal\": null,\n\t\t\"renewal_strategy\": null,\n\t\t\"renewal_trigger\": \"date\",\n\t\t\"shipments_per_interval\": null,\n\t\t\"trial_period_days\": 0,\n\t\t\"expires_at\": null,\n\t\t\"allow_send_invoice\": false,\n\t\t\"is_donation\": false,\n\t\t\"is_hidden\": false,\n\t\t\"is_imported\": null,\n\t\t\"type\": \"regular\",\n\t\t\"member_seat_capacity\": null,\n\t\t\"refundable\": true,\n\t\t\"auto_uncollectible_days\": null,\n\t\t\"old_provider_id\": \"123\",\n    \"invoice_upcoming_notification\" : 7  \n\t}\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "example": 175,
                          "default": 0
                        },
                        "agency_id": {},
                        "product_id": {
                          "type": "integer",
                          "example": 100,
                          "default": 0
                        },
                        "status": {
                          "type": "string",
                          "example": "active"
                        },
                        "agency_remit_rate": {},
                        "amount": {
                          "type": "integer",
                          "example": 0,
                          "default": 0
                        },
                        "apple_product_id": {},
                        "available_online": {
                          "type": "boolean",
                          "example": true,
                          "default": true
                        },
                        "auto_renew": {
                          "type": "boolean",
                          "example": true,
                          "default": true
                        },
                        "currency": {
                          "type": "string",
                          "example": "usd"
                        },
                        "countries": {},
                        "description": {},
                        "domains": {},
                        "entitlements": {},
                        "group_owner_plan_id": {},
                        "gift_description": {},
                        "image": {},
                        "interval": {
                          "type": "string",
                          "example": "day"
                        },
                        "interval_count": {
                          "type": "integer",
                          "example": 1,
                          "default": 0
                        },
                        "ip_addresses": {},
                        "metadata": {
                          "type": "object",
                          "properties": {
                            "original_amount": {
                              "type": "string",
                              "example": "100"
                            },
                            "original_discount_percentage": {
                              "type": "string",
                              "example": "10000"
                            }
                          }
                        },
                        "nickname": {
                          "type": "string",
                          "example": "test plan hidden"
                        },
                        "name_internal": {},
                        "renewal_strategy": {},
                        "renewal_trigger": {
                          "type": "string",
                          "enum": [
                            "date",
                            "shipments_exhausted"
                          ],
                          "example": "date",
                          "description": "What closes a billing cycle. \"date\" ends the cycle on its renewal date. \"shipments_exhausted\" ends it as soon as every shipment the cycle paid for has been delivered, which is what print subscriptions billed by issue count need. \"shipments_exhausted\" requires recognized_revenue_type=shipments and a shipments_per_interval, and a plan using it cannot be renewed ahead of time and never generates an advance invoice. Defaults to date."
                        },
                        "shipments_per_interval": {},
                        "trial_period_days": {
                          "type": "integer",
                          "example": 0,
                          "default": 0
                        },
                        "expires_at": {},
                        "allow_send_invoice": {
                          "type": "boolean",
                          "example": false,
                          "default": true
                        },
                        "is_donation": {
                          "type": "boolean",
                          "example": false,
                          "default": true
                        },
                        "is_hidden": {
                          "type": "boolean",
                          "example": false,
                          "default": true
                        },
                        "is_imported": {},
                        "type": {
                          "type": "string",
                          "example": "regular"
                        },
                        "member_seat_capacity": {},
                        "refundable": {
                          "type": "boolean",
                          "example": true,
                          "default": true
                        },
                        "auto_uncollectible_days": {},
                        "old_provider_id": {
                          "type": "string",
                          "example": "123"
                        },
                        "invoice_upcoming_notification": {
                          "type": "integer",
                          "example": 7,
                          "default": 0
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "error": "Unauthenticated."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "error": {
                        "status": 404,
                        "message": "Not found."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```

# Sibling pages

* [List plans](https://docs.pelcro.com/reference/api-core-list-plans.md)
* [Create plan](https://docs.pelcro.com/reference/api-core-create-plan.md)
* [Get plan](https://docs.pelcro.com/reference/api-core-get-plan.md)
* [Update plan](https://docs.pelcro.com/reference/api-core-update-plan.md)
* [Delete plan](https://docs.pelcro.com/reference/api-core-delete-plan.md)