> For the complete documentation index, see [llms.txt](https://developer.paddle.com/llms.txt).

# Use customer portal links in your app

Add customer portal links to your app to hand off core billing workflows to Paddle, letting customers manage subscriptions, payments, and account information.

---

[The customer portal](https://developer.paddle.com/concepts/customer-portal.md) gives customers a centralized place to manage purchases made from your Paddle account. You can link to the customer portal to add core subscription management, billing information, and payment history to your app.

## How it works

When integrating Paddle, you need to build workflows to let customers manage their subscriptions, payments, and account information. You can do this in two ways:

- **Build your own workflows**  
  You can use the Paddle API to build your own billing management screens. For example, you can use the cancel subscription operation to [build a workflow to let customers cancel](https://developer.paddle.com/build/subscriptions/cancel-subscriptions.md) their subscription.
- **Link to the customer portal from your app**  
  You can link to [the customer portal](https://developer.paddle.com/concepts/customer-portal.md), letting Paddle handle billing management. For example, you can link to the cancel subscription page in the customer portal to let customers cancel their subscription.

While building your own workflows is great for deep integration, the customer portal is fully hosted by Paddle and includes core billing functionality out-of-the-box, making it quicker to integrate.

### Customer portal sessions

You can link directly to the customer portal, where customers can log in using their email address. However, for the best customer experience, we recommend creating a [customer portal session](https://developer.paddle.com/api-reference/customer-portals/overview.md) when linking to a customer portal from your app.

Customer portal sessions generate authenticated links that automatically sign a customer in to the customer portal. This makes sense in the context of your app, where customers are already signed in and linking to a screen that asks them to log in again might cause confusion.

Authenticated links include a `token` parameter, which Paddle uses to identify the customer and present their information in the portal. These tokens are unique and impossible to guess, restricted to a particular customer, and automatically expire. They can only be generated with the Paddle API using a valid API key.

{% callout type="info" %}
Customer portal sessions are temporary and shouldn't be cached. Create a new customer portal session each time you want to generate authenticated links to the customer portal.
{% /callout %}

### Deep links

As well as linking to the customer portal homepage, you can create links that take customers to specific pages in the portal. For example, you can create links that take customers to the cancellation page for a specific subscription. This means you can add buttons or links to your app for particular workflows, like updating payment details or canceling a subscription.

## Before you begin

Customer portal sessions are for [customers](https://developer.paddle.com/api-reference/customers/overview.md), so you'll need the Paddle ID of a customer that you want to generate authenticated links for. You can [list customers using the Paddle API](https://developer.paddle.com/api-reference/customers/list-customers.md) or search for them in the dashboard.

## Generate an authenticated link to the customer portal homepage

Create a customer portal session for a customer to generate an authenticated link to the customer portal homepage. Customers can do things like see their past payments and download invoices.

Send a `POST` request to the `/customers/{customer_id}/portal-sessions` endpoint to create a customer portal session. You don't need to include a request body.

Paddle returns an authenticated link to the customer portal homepage in `urls.general.overview`.

{% api-example method="POST" path="/customers/{customer_id}/portal-sessions" href="/api-reference/customer-portals/create-portal-session" %}

```json
{
  "data": {
    "id": "cpls_01jcgezdnnd1t0c7wdrdher9vv",
    "customer_id": "ctm_01jcdaf4zgm2fxw3nc0e4fn137",
    "urls": {
      "general": {
        "overview": "https://customer-portal.paddle.com/cpl_01gsx07ferwf96qnjz1mrc6h0q?action=overview&token=pga_eyJhbGciOiJFZERTQSIsImtpZCI6Imp3a18wMWhkazBuOHF3OG55NTJ5cGNocGNhazA1ayIsInR5cCI6IkpXVCJ9.eyJpZCI6InBnYV8wMWpjZ2V6ZG52MmpkYTk3eHR2dHF3ZjN5bSIsInNlbGxlci1pZCI6IjEwODg5IiwidHlwZSI6InN0YW5kYXJkIiwidmVyc2lvbiI6IjEiLCJ1c2FnZSI6ImN1c3RvbWVyLXBvcnRhbC1zZXNzaW9uIiwic2NvcGUiOiJjdXN0b21lci5jaGVja291dC5jcmVhdGUgY3VzdG9tZXIuY2hlY2tvdXQucmVhZCBjdXN0b21lci5jdXN0b21lci5yZWFkIGN1c3RvbWVyLmN1c3RvbWVyLnVwZGF0ZSBjdXN0b21lci5jdXN0b21lci1hZGRyZXNzLnJlYWQgY3VzdG9tZXIuY3VzdG9tZXItcGF5bWVudC1tZXRob2QucmVhZCBjdXN0b21lci5jdXN0b21lci1wYXltZW50LW1ldGhvZC5kZWxldGUgY3VzdG9tZXIuaW52b2ljZS5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1jYW5jZWwuY3JlYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1wYXltZW50LnJlYWQgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLXBheW1lbnQudXBkYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi51cGRhdGUgY3VzdG9tZXIudHJhbnNhY3Rpb24ucmVhZCBjdXN0b21lci50cmFuc2FjdGlvbi5vcmlnaW4ucmVhZCIsImlzcyI6Imd1ZXN0YWNjZXNzLXNlcnZpY2UiLCJzdWIiOiJjdG1fMDFqY2RhZjR6Z20yZnh3M25jMGU0Zm4xMzciLCJleHAiOjE3MzE1MTA4MDEsImlhdCI6MTczMTQyNDQwMX0.Wh-U6mgB77_lqrERJPU5dql4yq523CjlYT3kHIUbYll7sSG-QmJV7jRmg9pBCFPxMlCxsBI-8pe1Nt3FucOKBg"
      },
      "subscriptions": []
    },
    "created_at": "2024-11-12T15:13:21.077605273Z"
  },
  "meta": {
    "request_id": "bd45eef1-a078-421b-b5d8-281a37c40f07"
  }
}
```

{% /api-example %}

## Generate links for subscription management workflows

Pass an array of subscriptions when creating a customer portal session for a customer to generate deep links that let customers make changes to their subscriptions.

Generate deep links for a customer portal using the API in two steps:

1. **Get subscriptions**  
   List subscriptions for a customer to get the Paddle IDs for them.
2. **Create portal session**  
   Create a customer portal session for a customer, passing the Paddle IDs of the subscriptions you want to create deep links for.

### Get subscriptions {% step=true %}

Send a `GET` request to the `/subscriptions` endpoint to list subscriptions for a customer, then extract the Paddle IDs of the subscriptions you want to create deep links for.

{% api-example method="GET" path="/subscriptions?customer_id={customer_id}" href="/api-reference/subscriptions/list-subscriptions" %}

```json
{
  "data": [
    {
      "id": "sub_01jcgfqad406rsfjcgq44g9djq",
      "status": "active",
      "customer_id": "ctm_01jcdaf4zgm2fxw3nc0e4fn137",
      "address_id": "add_01jcgfpv9rn7kpb0d2yjdexbkr",
      "business_id": null,
      "currency_code": "USD",
      "created_at": "2024-11-12T15:26:24.164Z",
      "updated_at": "2024-11-12T15:26:24.164Z",
      "started_at": "2024-11-12T15:26:23.357178Z",
      "first_billed_at": "2024-11-12T15:26:23.357178Z",
      "next_billed_at": "2024-12-12T15:26:23.357178Z",
      "paused_at": null,
      "canceled_at": null,
      "collection_mode": "automatic",
      "billing_details": null,
      "current_billing_period": {
        "starts_at": "2024-11-12T15:26:23.357178Z",
        "ends_at": "2024-12-12T15:26:23.357178Z"
      },
      "billing_cycle": {
        "frequency": 1,
        "interval": "month"
      },
      "scheduled_change": null,
      "items": [
        {
          "status": "active",
          "quantity": 10,
          "recurring": true,
          "created_at": "2024-11-12T15:26:24.164Z",
          "updated_at": "2024-11-12T15:26:24.164Z",
          "previously_billed_at": "2024-11-12T15:26:23.357178Z",
          "next_billed_at": "2024-12-12T15:26:23.357178Z",
          "trial_dates": null,
          "price": {
            "id": "pri_01gsz8x8sawmvhz1pv30nge1ke",
            "product_id": "pro_01gsz4t5hdjse780zja8vvr7jg",
            "type": "standard",
            "description": "Monthly",
            "name": "Monthly (per seat)",
            "tax_mode": "account_setting",
            "billing_cycle": {
              "frequency": 1,
              "interval": "month"
            },
            "trial_period": null,
            "unit_price": {
              "amount": "3000",
              "currency_code": "USD"
            },
            "unit_price_overrides": [],
            "custom_data": null,
            "status": "active",
            "quantity": {
              "minimum": 1,
              "maximum": 999
            },
            "import_meta": null,
            "created_at": "2023-02-23T13:55:22.538367Z",
            "updated_at": "2024-04-11T13:54:52.254748Z"
          },
          "product": {
            "id": "pro_01gsz4t5hdjse780zja8vvr7jg",
            "name": "AeroEdit Pro",
            "type": "standard",
            "tax_category": "standard",
            "description": "Designed for professional pilots, including all features plus in Basic plus compliance monitoring, route optimization, and third-party integrations.",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/bT1XUOJAQhOUxGs83cbk_pro.png",
            "custom_data": {
              "features": {
                "aircraft_performance": true,
                "compliance_monitoring": true,
                "flight_log_management": true,
                "payment_by_invoice": false,
                "route_planning": true,
                "sso": false
              },
              "suggested_addons": [
                "pro_01h1vjes1y163xfj1rh1tkfb65",
                "pro_01gsz97mq9pa4fkyy0wqenepkz"
              ],
              "upgrade_description": "Move from Basic to Pro to take advantage of aircraft performance, advanced route planning, and compliance monitoring."
            },
            "status": "active",
            "import_meta": null,
            "created_at": "2023-02-23T12:43:46.605Z",
            "updated_at": "2024-04-05T15:53:44.687Z"
          }
        },
        {
          "status": "active",
          "quantity": 1,
          "recurring": true,
          "created_at": "2024-11-12T15:26:24.164Z",
          "updated_at": "2024-11-12T15:26:24.164Z",
          "previously_billed_at": "2024-11-12T15:26:23.357178Z",
          "next_billed_at": "2024-12-12T15:26:23.357178Z",
          "trial_dates": null,
          "price": {
            "id": "pri_01h1vjfevh5etwq3rb416a23h2",
            "product_id": "pro_01h1vjes1y163xfj1rh1tkfb65",
            "type": "standard",
            "description": "Monthly",
            "name": "Monthly (recurring addon)",
            "tax_mode": "account_setting",
            "billing_cycle": {
              "frequency": 1,
              "interval": "month"
            },
            "trial_period": null,
            "unit_price": {
              "amount": "10000",
              "currency_code": "USD"
            },
            "unit_price_overrides": [],
            "custom_data": null,
            "status": "active",
            "quantity": {
              "minimum": 1,
              "maximum": 100
            },
            "import_meta": null,
            "created_at": "2023-06-01T13:31:12.625056Z",
            "updated_at": "2024-04-12T10:42:45.476453Z"
          },
          "product": {
            "id": "pro_01h1vjes1y163xfj1rh1tkfb65",
            "name": "Analytics addon",
            "type": "standard",
            "tax_category": "standard",
            "description": "Unlock advanced insights into your flight data with enhanced analytics and reporting features. Includes customizable reporting templates and trend analysis across flights.",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/97dRpA6SXzcE6ekK9CAr_analytics.png",
            "custom_data": null,
            "status": "active",
            "import_meta": null,
            "created_at": "2023-06-01T13:30:50.302Z",
            "updated_at": "2024-04-05T15:47:17.163Z"
          }
        }
      ],
      "custom_data": null,
      "management_urls": {
        "update_payment_method": "https://buyer-portal.paddle.com/subscriptions/sub_01jcgfqad406rsfjcgq44g9djq/update-payment-method?token=",
        "cancel": "https://buyer-portal.paddle.com/subscriptions/sub_01jcgfqad406rsfjcgq44g9djq/cancel?token="
      },
      "discount": null,
      "import_meta": [
        {
          "id": "sub_01jcdafvpe5hm4vczfefsbwhvp",
          "status": "paused",
          "customer_id": "ctm_01jcdaf4zgm2fxw3nc0e4fn137",
          "address_id": "add_01jcdaf50ewq650z186dfywzfq",
          "business_id": null,
          "currency_code": "USD",
          "created_at": "2024-11-11T09:57:13.55Z",
          "updated_at": "2024-11-12T15:26:27.049Z",
          "started_at": "2024-11-11T09:57:12.926676Z",
          "first_billed_at": "2024-11-11T09:57:12.926676Z",
          "next_billed_at": null,
          "paused_at": "2024-11-11T10:11:39.922Z",
          "canceled_at": null,
          "collection_mode": "automatic",
          "billing_details": null,
          "current_billing_period": null,
          "billing_cycle": {
            "frequency": 1,
            "interval": "month"
          },
          "scheduled_change": null,
          "items": [
            {
              "status": "active",
              "quantity": 10,
              "recurring": true,
              "created_at": "2024-11-11T09:57:13.55Z",
              "updated_at": "2024-11-11T09:57:13.55Z",
              "previously_billed_at": "2024-11-11T09:57:12.926676Z",
              "next_billed_at": null,
              "trial_dates": null,
              "price": {
                "id": "pri_01gsz8x8sawmvhz1pv30nge1ke",
                "product_id": "pro_01gsz4t5hdjse780zja8vvr7jg",
                "type": "standard",
                "description": "Monthly",
                "name": "Monthly (per seat)",
                "tax_mode": "account_setting",
                "billing_cycle": {
                  "frequency": 1,
                  "interval": "month"
                },
                "trial_period": null,
                "unit_price": {
                  "amount": "3000",
                  "currency_code": "USD"
                },
                "unit_price_overrides": [],
                "custom_data": null,
                "status": "active",
                "quantity": {
                  "minimum": 1,
                  "maximum": 999
                },
                "import_meta": null,
                "created_at": "2023-02-23T13:55:22.538367Z",
                "updated_at": "2024-04-11T13:54:52.254748Z"
              },
              "product": {
                "id": "pro_01gsz4t5hdjse780zja8vvr7jg",
                "name": "AeroEdit Pro",
                "type": "standard",
                "tax_category": "standard",
                "description": "Designed for professional pilots, including all features plus in Basic plus compliance monitoring, route optimization, and third-party integrations.",
                "image_url": "https://paddle.s3.amazonaws.com/user/165798/bT1XUOJAQhOUxGs83cbk_pro.png",
                "custom_data": {
                  "features": {
                    "aircraft_performance": true,
                    "compliance_monitoring": true,
                    "flight_log_management": true,
                    "payment_by_invoice": false,
                    "route_planning": true,
                    "sso": false
                  },
                  "suggested_addons": [
                    "pro_01h1vjes1y163xfj1rh1tkfb65",
                    "pro_01gsz97mq9pa4fkyy0wqenepkz"
                  ],
                  "upgrade_description": "Move from Basic to Pro to take advantage of aircraft performance, advanced route planning, and compliance monitoring."
                },
                "status": "active",
                "import_meta": null,
                "created_at": "2023-02-23T12:43:46.605Z",
                "updated_at": "2024-04-05T15:53:44.687Z"
              }
            },
            {
              "status": "active",
              "quantity": 1,
              "recurring": true,
              "created_at": "2024-11-11T09:57:13.55Z",
              "updated_at": "2024-11-11T09:57:13.55Z",
              "previously_billed_at": "2024-11-11T09:57:12.926676Z",
              "next_billed_at": null,
              "trial_dates": null,
              "price": {
                "id": "pri_01h1vjfevh5etwq3rb416a23h2",
                "product_id": "pro_01h1vjes1y163xfj1rh1tkfb65",
                "type": "standard",
                "description": "Monthly",
                "name": "Monthly (recurring addon)",
                "tax_mode": "account_setting",
                "billing_cycle": {
                  "frequency": 1,
                  "interval": "month"
                },
                "trial_period": null,
                "unit_price": {
                  "amount": "10000",
                  "currency_code": "USD"
                },
                "unit_price_overrides": [],
                "custom_data": null,
                "status": "active",
                "quantity": {
                  "minimum": 1,
                  "maximum": 100
                },
                "import_meta": null,
                "created_at": "2023-06-01T13:31:12.625056Z",
                "updated_at": "2024-04-12T10:42:45.476453Z"
              },
              "product": {
                "id": "pro_01h1vjes1y163xfj1rh1tkfb65",
                "name": "Analytics addon",
                "type": "standard",
                "tax_category": "standard",
                "description": "Unlock advanced insights into your flight data with enhanced analytics and reporting features. Includes customizable reporting templates and trend analysis across flights.",
                "image_url": "https://paddle.s3.amazonaws.com/user/165798/97dRpA6SXzcE6ekK9CAr_analytics.png",
                "custom_data": null,
                "status": "active",
                "import_meta": null,
                "created_at": "2023-06-01T13:30:50.302Z",
                "updated_at": "2024-04-05T15:47:17.163Z"
              }
            }
          ],
          "custom_data": null,
          "management_urls": {
            "update_payment_method": "https://buyer-portal.paddle.com/subscriptions/sub_01jcdafvpe5hm4vczfefsbwhvp/update-payment-method?token=",
            "cancel": "https://buyer-portal.paddle.com/subscriptions/sub_01jcdafvpe5hm4vczfefsbwhvp/cancel?token="
          },
          "discount": null,
          "import_meta": null
        }
      ]
    }
  ],
  "meta": {
    "request_id": "d6eb85cf-0746-419e-9b86-0cb85d3033f3",
    "pagination": {
      "per_page": 50,
      "next": "https://api.paddle.com/subscriptions?after=sub_01jcdafvpe5hm4vczfefsbwhvp&collection_mode=automatic&customer_id=ctm_01jcdaf4zgm2fxw3nc0e4fn137&status=active&status=paused",
      "has_more": false,
      "estimated_total": 2
    }
  }
}
```

{% /api-example %}

### Create portal session {% step=true %}

Send a `POST` request to the `/customers/{customer_id}/portal-sessions` endpoint to create a customer portal session, passing a `subscription_ids` array with up to 25 subscription IDs.

Paddle generates an authenticated `cancel_subscription` and `update_subscription_payment_method` link for each subscription.

{% api-example method="POST" path="/customers/{customer_id}/portal-sessions" href="/api-reference/customer-portals/create-portal-session" %}

```json
{
  "subscription_ids": [
    "sub_01jcgfqad406rsfjcgq44g9djq",
    "sub_01jcdafvpe5hm4vczfefsbwhvp"
  ]
}
```

```json
{
  "data": {
    "id": "cpls_01jcggxbs9b4tff8zy7kfwwr1s",
    "customer_id": "ctm_01jcdaf4zgm2fxw3nc0e4fn137",
    "urls": {
      "general": {
        "overview": "https://customer-portal.paddle.com/cpl_01gsx07ferwf96qnjz1mrc6h0q?action=overview&token=pga_eyJhbGciOiJFZERTQSIsImtpZCI6Imp3a18wMWhkazBuOHF3OG55NTJ5cGNocGNhazA1ayIsInR5cCI6IkpXVCJ9.eyJpZCI6InBnYV8wMWpjZ2d4YnNmNTEzcGY1MjZyNjZrbTMxOSIsInNlbGxlci1pZCI6IjEwODg5IiwidHlwZSI6InN0YW5kYXJkIiwidmVyc2lvbiI6IjEiLCJ1c2FnZSI6ImN1c3RvbWVyLXBvcnRhbC1zZXNzaW9uIiwic2NvcGUiOiJjdXN0b21lci5jaGVja291dC5jcmVhdGUgY3VzdG9tZXIuY2hlY2tvdXQucmVhZCBjdXN0b21lci5jdXN0b21lci5yZWFkIGN1c3RvbWVyLmN1c3RvbWVyLnVwZGF0ZSBjdXN0b21lci5jdXN0b21lci1hZGRyZXNzLnJlYWQgY3VzdG9tZXIuY3VzdG9tZXItcGF5bWVudC1tZXRob2QucmVhZCBjdXN0b21lci5jdXN0b21lci1wYXltZW50LW1ldGhvZC5kZWxldGUgY3VzdG9tZXIuaW52b2ljZS5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1jYW5jZWwuY3JlYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1wYXltZW50LnJlYWQgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLXBheW1lbnQudXBkYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi51cGRhdGUgY3VzdG9tZXIudHJhbnNhY3Rpb24ucmVhZCBjdXN0b21lci50cmFuc2FjdGlvbi5vcmlnaW4ucmVhZCIsImlzcyI6Imd1ZXN0YWNjZXNzLXNlcnZpY2UiLCJzdWIiOiJjdG1fMDFqY2RhZjR6Z20yZnh3M25jMGU0Zm4xMzciLCJleHAiOjE3MzE1MTI4MzAsImlhdCI6MTczMTQyNjQzMH0.DHHFoLwIDWCt9F9hZmGTG3G-uhi9tUltTbMSY6Nf-vVplemJYrcC_PyF97Wm88bmHEO1f8LL3agMYNFDwvzADw"
      },
      "subscriptions": [
        {
          "id": "sub_01jcgfqad406rsfjcgq44g9djq",
          "cancel_subscription": "https://customer-portal.paddle.com/cpl_01gsx07ferwf96qnjz1mrc6h0q?action=cancel_subscription&subscription_id=sub_01jcgfqad406rsfjcgq44g9djq&token=pga_eyJhbGciOiJFZERTQSIsImtpZCI6Imp3a18wMWhkazBuOHF3OG55NTJ5cGNocGNhazA1ayIsInR5cCI6IkpXVCJ9.eyJpZCI6InBnYV8wMWpjZ2d4YnNmNTEzcGY1MjZyNjZrbTMxOSIsInNlbGxlci1pZCI6IjEwODg5IiwidHlwZSI6InN0YW5kYXJkIiwidmVyc2lvbiI6IjEiLCJ1c2FnZSI6ImN1c3RvbWVyLXBvcnRhbC1zZXNzaW9uIiwic2NvcGUiOiJjdXN0b21lci5jaGVja291dC5jcmVhdGUgY3VzdG9tZXIuY2hlY2tvdXQucmVhZCBjdXN0b21lci5jdXN0b21lci5yZWFkIGN1c3RvbWVyLmN1c3RvbWVyLnVwZGF0ZSBjdXN0b21lci5jdXN0b21lci1hZGRyZXNzLnJlYWQgY3VzdG9tZXIuY3VzdG9tZXItcGF5bWVudC1tZXRob2QucmVhZCBjdXN0b21lci5jdXN0b21lci1wYXltZW50LW1ldGhvZC5kZWxldGUgY3VzdG9tZXIuaW52b2ljZS5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1jYW5jZWwuY3JlYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1wYXltZW50LnJlYWQgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLXBheW1lbnQudXBkYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi51cGRhdGUgY3VzdG9tZXIudHJhbnNhY3Rpb24ucmVhZCBjdXN0b21lci50cmFuc2FjdGlvbi5vcmlnaW4ucmVhZCIsImlzcyI6Imd1ZXN0YWNjZXNzLXNlcnZpY2UiLCJzdWIiOiJjdG1fMDFqY2RhZjR6Z20yZnh3M25jMGU0Zm4xMzciLCJleHAiOjE3MzE1MTI4MzAsImlhdCI6MTczMTQyNjQzMH0.DHHFoLwIDWCt9F9hZmGTG3G-uhi9tUltTbMSY6Nf-vVplemJYrcC_PyF97Wm88bmHEO1f8LL3agMYNFDwvzADw",
          "update_subscription_payment_method": "https://customer-portal.paddle.com/cpl_01gsx07ferwf96qnjz1mrc6h0q?action=update_subscription_payment_method&subscription_id=sub_01jcgfqad406rsfjcgq44g9djq&token=pga_eyJhbGciOiJFZERTQSIsImtpZCI6Imp3a18wMWhkazBuOHF3OG55NTJ5cGNocGNhazA1ayIsInR5cCI6IkpXVCJ9.eyJpZCI6InBnYV8wMWpjZ2d4YnNmNTEzcGY1MjZyNjZrbTMxOSIsInNlbGxlci1pZCI6IjEwODg5IiwidHlwZSI6InN0YW5kYXJkIiwidmVyc2lvbiI6IjEiLCJ1c2FnZSI6ImN1c3RvbWVyLXBvcnRhbC1zZXNzaW9uIiwic2NvcGUiOiJjdXN0b21lci5jaGVja291dC5jcmVhdGUgY3VzdG9tZXIuY2hlY2tvdXQucmVhZCBjdXN0b21lci5jdXN0b21lci5yZWFkIGN1c3RvbWVyLmN1c3RvbWVyLnVwZGF0ZSBjdXN0b21lci5jdXN0b21lci1hZGRyZXNzLnJlYWQgY3VzdG9tZXIuY3VzdG9tZXItcGF5bWVudC1tZXRob2QucmVhZCBjdXN0b21lci5jdXN0b21lci1wYXltZW50LW1ldGhvZC5kZWxldGUgY3VzdG9tZXIuaW52b2ljZS5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1jYW5jZWwuY3JlYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1wYXltZW50LnJlYWQgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLXBheW1lbnQudXBkYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi51cGRhdGUgY3VzdG9tZXIudHJhbnNhY3Rpb24ucmVhZCBjdXN0b21lci50cmFuc2FjdGlvbi5vcmlnaW4ucmVhZCIsImlzcyI6Imd1ZXN0YWNjZXNzLXNlcnZpY2UiLCJzdWIiOiJjdG1fMDFqY2RhZjR6Z20yZnh3M25jMGU0Zm4xMzciLCJleHAiOjE3MzE1MTI4MzAsImlhdCI6MTczMTQyNjQzMH0.DHHFoLwIDWCt9F9hZmGTG3G-uhi9tUltTbMSY6Nf-vVplemJYrcC_PyF97Wm88bmHEO1f8LL3agMYNFDwvzADw"
        },
        {
          "id": "sub_01jcdafvpe5hm4vczfefsbwhvp",
          "cancel_subscription": "https://customer-portal.paddle.com/cpl_01gsx07ferwf96qnjz1mrc6h0q?action=cancel_subscription&subscription_id=sub_01jcdafvpe5hm4vczfefsbwhvp&token=pga_eyJhbGciOiJFZERTQSIsImtpZCI6Imp3a18wMWhkazBuOHF3OG55NTJ5cGNocGNhazA1ayIsInR5cCI6IkpXVCJ9.eyJpZCI6InBnYV8wMWpjZ2d4YnNmNTEzcGY1MjZyNjZrbTMxOSIsInNlbGxlci1pZCI6IjEwODg5IiwidHlwZSI6InN0YW5kYXJkIiwidmVyc2lvbiI6IjEiLCJ1c2FnZSI6ImN1c3RvbWVyLXBvcnRhbC1zZXNzaW9uIiwic2NvcGUiOiJjdXN0b21lci5jaGVja291dC5jcmVhdGUgY3VzdG9tZXIuY2hlY2tvdXQucmVhZCBjdXN0b21lci5jdXN0b21lci5yZWFkIGN1c3RvbWVyLmN1c3RvbWVyLnVwZGF0ZSBjdXN0b21lci5jdXN0b21lci1hZGRyZXNzLnJlYWQgY3VzdG9tZXIuY3VzdG9tZXItcGF5bWVudC1tZXRob2QucmVhZCBjdXN0b21lci5jdXN0b21lci1wYXltZW50LW1ldGhvZC5kZWxldGUgY3VzdG9tZXIuaW52b2ljZS5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1jYW5jZWwuY3JlYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1wYXltZW50LnJlYWQgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLXBheW1lbnQudXBkYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi51cGRhdGUgY3VzdG9tZXIudHJhbnNhY3Rpb24ucmVhZCBjdXN0b21lci50cmFuc2FjdGlvbi5vcmlnaW4ucmVhZCIsImlzcyI6Imd1ZXN0YWNjZXNzLXNlcnZpY2UiLCJzdWIiOiJjdG1fMDFqY2RhZjR6Z20yZnh3M25jMGU0Zm4xMzciLCJleHAiOjE3MzE1MTI4MzAsImlhdCI6MTczMTQyNjQzMH0.DHHFoLwIDWCt9F9hZmGTG3G-uhi9tUltTbMSY6Nf-vVplemJYrcC_PyF97Wm88bmHEO1f8LL3agMYNFDwvzADw",
          "update_subscription_payment_method": "https://customer-portal.paddle.com/cpl_01gsx07ferwf96qnjz1mrc6h0q?action=update_subscription_payment_method&subscription_id=sub_01jcdafvpe5hm4vczfefsbwhvp&token=pga_eyJhbGciOiJFZERTQSIsImtpZCI6Imp3a18wMWhkazBuOHF3OG55NTJ5cGNocGNhazA1ayIsInR5cCI6IkpXVCJ9.eyJpZCI6InBnYV8wMWpjZ2d4YnNmNTEzcGY1MjZyNjZrbTMxOSIsInNlbGxlci1pZCI6IjEwODg5IiwidHlwZSI6InN0YW5kYXJkIiwidmVyc2lvbiI6IjEiLCJ1c2FnZSI6ImN1c3RvbWVyLXBvcnRhbC1zZXNzaW9uIiwic2NvcGUiOiJjdXN0b21lci5jaGVja291dC5jcmVhdGUgY3VzdG9tZXIuY2hlY2tvdXQucmVhZCBjdXN0b21lci5jdXN0b21lci5yZWFkIGN1c3RvbWVyLmN1c3RvbWVyLnVwZGF0ZSBjdXN0b21lci5jdXN0b21lci1hZGRyZXNzLnJlYWQgY3VzdG9tZXIuY3VzdG9tZXItcGF5bWVudC1tZXRob2QucmVhZCBjdXN0b21lci5jdXN0b21lci1wYXltZW50LW1ldGhvZC5kZWxldGUgY3VzdG9tZXIuaW52b2ljZS5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1jYW5jZWwuY3JlYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi1wYXltZW50LnJlYWQgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLXBheW1lbnQudXBkYXRlIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5yZWFkIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi51cGRhdGUgY3VzdG9tZXIudHJhbnNhY3Rpb24ucmVhZCBjdXN0b21lci50cmFuc2FjdGlvbi5vcmlnaW4ucmVhZCIsImlzcyI6Imd1ZXN0YWNjZXNzLXNlcnZpY2UiLCJzdWIiOiJjdG1fMDFqY2RhZjR6Z20yZnh3M25jMGU0Zm4xMzciLCJleHAiOjE3MzE1MTI4MzAsImlhdCI6MTczMTQyNjQzMH0.DHHFoLwIDWCt9F9hZmGTG3G-uhi9tUltTbMSY6Nf-vVplemJYrcC_PyF97Wm88bmHEO1f8LL3agMYNFDwvzADw"
        }
      ]
    },
    "created_at": "2024-11-12T15:47:10.761048551Z"
  },
  "meta": {
    "request_id": "0936d329-68b4-4c9f-b33c-d872d3ffbaf1"
  }
}
```

{% /api-example %}