---
title: "Update a subscription with a new product / amount to pay - replacing the existing product"
method: PUT
path: "/recurring-payments/{reference}"
tags: ["Recurring Payments"]
---

# Update a subscription with a new product / amount to pay - replacing the existing product

`PUT /recurring-payments/{reference}`

If the new subscription amount is higher than the existing amount, a pro-rata charge will be made to cover the cost of the new price up until the next billing date. 

**This endpoint requires prior approval - please contact your account manager.**

## Path parameters

- `reference` string, required

## Request body

- object
  - `items` object[] — An array containing the items to be added to the recurring payment. **Only 1 item is supported at this time.**
    - `type` 'single' | 'subscription' — The type of payment, either `single` for one-time payments or `subscription`.
    - `qty` number
    - `revenue_share` object[], nullable
    - `package` Package
      - `name` string — The name of the item being purchased. This should be user-friendly as it is shown to the customer on checkout and receipts.
      - `price` number, float — A float (decimal describing the price of the package in your account currency)
      - `type` 'single' | 'subscription'
      - `qty` integer
      - `expiry_period` 'day' | 'month' | 'year' — The renewal period of this item
      - `expiry_length` integer — An integer representing the number of `expiry_periods` that make up the renewal period.
      - `custom` object — A map of data that is passed back to you via the webhook (for example, a tracking ID)

## Response `200`

Successfully updated subscription. The updated `RecurringPayment` is returned.

- RecurringPayment
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `paused_at` string, date-time, nullable
  - `paused_until` string, date-time, nullable
  - `next_payment_date` string
  - `reference` string
  - `account_id` integer
  - `interval` string
  - `cancelled_at` string, date-time, nullable
  - `cancellation_requested_at` string, date-time, nullable
  - `status` object
    - `id` integer
    - `class` string
    - `description` string
    - `active` integer
  - `amount` object
    - `amount` number, float
    - `tax` number, float
    - `period` string
  - `cancel_reason` string, nullable
  - `links` object
    - `initial_payment` string
    - `payment_history` string[]

## Other responses

- `400` — Bad Request.
- `404` — Recurring payment not found.

---

[API](https://skmtc.net/tebex/apis/tebex-checkout-api.md) · [All operations](https://skmtc.net/tebex/apis/tebex-checkout-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tebex/tebex-checkout-api/revisions/a52c87b9a2b9/schema)
