---
title: "Update subscription"
method: PATCH
path: "/customers/{customerId}/subscriptions/{subscriptionId}"
tags: ["Subscriptions API"]
---

# Update subscription

`PATCH /customers/{customerId}/subscriptions/{subscriptionId}`

Update an existing subscription.

Canceled subscriptions cannot be updated.

For an in-depth explanation of each parameter, refer to the [Create subscription](create-subscription) endpoint.

> 🔑 Access with
>
> [API key](/reference/authentication)
>
> [Advanced access token with **subscriptions.write**](/reference/authentication)
>
> [OAuth access with **subscriptions.write**](/reference/authentication)

## Request body

- object
  - `amount` object — Update the amount for future payments of this subscription.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `description` string — The subscription's description will be used as the description of the resulting individual payments and so showing up on the bank statement of the consumer. **Please note:** the description needs to be unique for the Customer in case it has multiple active subscriptions.
  - `interval` string — Interval to wait between payments, for example `1 month` or `14 days`. The maximum interval is one year (`12 months`, `52 weeks`, or `365 days`). Possible values: `... days`, `... weeks`, `... months`.
  - `startDate` string — The start date of the subscription in `YYYY-MM-DD` format.
  - `times` integer — Total number of payments for the subscription. Once this number of payments is reached, the subscription is considered completed. Test mode subscriptions will get canceled automatically after 10 payments.
  - `metadata` union — Provide any data you like, for example a string or a JSON object. We will save the data alongside the entity. Whenever you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB. Any metadata added to the subscription will be automatically forwarded to the payments generated for it.
    - string
    - number
    - object
    - string[]
  - `webhookUrl` string — We will call this URL for any payment status changes of payments resulting from this subscription. This webhook will receive **all** events for the subscription's payments. This may include payment failures as well. Be sure to verify the payment's subscription ID and its status.
  - `mandateId` string — The mandate used for this subscription, if any.
  - `testmode` boolean — Whether the entity was created in test mode or live mode. This field does not update the mode of the entity. Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.

## Response `200`

The updated subscription object.

## Other responses

- `404` — No entity with this ID exists.
- `429` — Rate Limit has been reached.

---

[API](https://skmtc.net/mollie/apis/accepting-payments.md) · [All operations](https://skmtc.net/mollie/apis/accepting-payments/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mollie/accepting-payments/revisions/4b45df3039ef/schema)
