Paddle Subscriptions API

The Subscriptions API from Paddle — 8 operation(s) for subscriptions.

Business capability
Subscription Lifecycle Management BC-4240

Operations 9

GET /subscriptions List subscriptions #
GET /subscriptions/{subscription_id} Get a subscription #
PATCH /subscriptions/{subscription_id} Update a subscription #
POST /subscriptions/{subscription_id}/activate Activate a trialing subscription #
POST /subscriptions/{subscription_id}/pause Pause a subscription #
POST /subscriptions/{subscription_id}/resume Resume a paused subscription #
POST /subscriptions/{subscription_id}/cancel Cancel a subscription #
POST /subscriptions/{subscription_id}/charge Create a one-time charge for a subscription #
GET /subscriptions/{subscription_id}/update-payment-method-transaction Get a transaction to update payment method #

Documentation

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/paddle-subscriptions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

paddle-subscriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Paddle Subscriptions API
  description: Paddle Billing API for subscription and recurring revenue management.
  termsOfService: https://www.paddle.com/legal/terms
  contact:
    name: Paddle Support
    url: https://www.paddle.com/support
  version: '1.0'
servers:
- url: https://api.paddle.com
  description: Production
- url: https://sandbox-api.paddle.com
  description: Sandbox
security:
- bearerAuth: []
tags:
- name: Subscriptions
paths:
  /subscriptions:
    get:
      operationId: list-subscriptions
      tags:
      - Subscriptions
      summary: List subscriptions
      parameters:
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/perPage'
      - name: status
        in: query
        schema:
          type: string
          enum:
          - active
          - canceled
          - past_due
          - paused
          - trialing
      responses:
        '200':
          description: Returns a paginated list of subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionCollection'
  /subscriptions/{subscription_id}:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    get:
      operationId: get-subscription
      tags:
      - Subscriptions
      summary: Get a subscription
      responses:
        '200':
          description: Returns a subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
    patch:
      operationId: update-subscription
      tags:
      - Subscriptions
      summary: Update a subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Returns the updated subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
  /subscriptions/{subscription_id}/activate:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    post:
      operationId: activate-subscription
      tags:
      - Subscriptions
      summary: Activate a trialing subscription
      responses:
        '200':
          description: Returns the activated subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
  /subscriptions/{subscription_id}/pause:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    post:
      operationId: pause-subscription
      tags:
      - Subscriptions
      summary: Pause a subscription
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Returns the paused subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
  /subscriptions/{subscription_id}/resume:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    post:
      operationId: resume-subscription
      tags:
      - Subscriptions
      summary: Resume a paused subscription
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Returns the resumed subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
  /subscriptions/{subscription_id}/cancel:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    post:
      operationId: cancel-subscription
      tags:
      - Subscriptions
      summary: Cancel a subscription
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                effective_from:
                  type: string
                  enum:
                  - next_billing_period
                  - immediately
      responses:
        '200':
          description: Returns the canceled subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
  /subscriptions/{subscription_id}/charge:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    post:
      operationId: create-one-time-charge
      tags:
      - Subscriptions
      summary: Create a one-time charge for a subscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Returns the updated subscription with the one-time charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionEntity'
  /subscriptions/{subscription_id}/update-payment-method-transaction:
    parameters:
    - $ref: '#/components/parameters/subscriptionId'
    get:
      operationId: get-update-payment-method-transaction
      tags:
      - Subscriptions
      summary: Get a transaction to update payment method
      responses:
        '200':
          description: Returns a transaction used to update the payment method.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEntity'
components:
  schemas:
    Subscription:
      type: object
      properties:
        id:
          type: string
          example: sub_01gsz4t5hdjse780zja8vvr7jg
        status:
          type: string
          enum:
          - active
          - canceled
          - past_due
          - paused
          - trialing
        customer_id:
          type: string
        address_id:
          type: string
        currency_code:
          type: string
        billing_cycle:
          type: object
        current_billing_period:
          type:
          - object
          - 'null'
        items:
          type: array
          items:
            type: object
        next_billed_at:
          type:
          - string
          - 'null'
          format: date-time
        created_at:
          type: string
          format: date-time
    SubscriptionCollection:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Subscription'
        meta:
          $ref: '#/components/schemas/Meta'
    TransactionEntity:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Transaction'
        meta:
          $ref: '#/components/schemas/Meta'
    Meta:
      type: object
      properties:
        request_id:
          type: string
        pagination:
          type: object
          properties:
            per_page:
              type: integer
            next:
              type: string
            has_more:
              type: boolean
            estimated_total:
              type: integer
    SubscriptionEntity:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Subscription'
        meta:
          $ref: '#/components/schemas/Meta'
    Transaction:
      type: object
      properties:
        id:
          type: string
          example: txn_01gsz4t5hdjse780zja8vvr7jg
        status:
          type: string
          enum:
          - draft
          - ready
          - billed
          - paid
          - completed
          - canceled
          - past_due
        customer_id:
          type:
          - string
          - 'null'
        subscription_id:
          type:
          - string
          - 'null'
        currency_code:
          type: string
        origin:
          type: string
        collection_mode:
          type: string
          enum:
          - automatic
          - manual
        items:
          type: array
          items:
            type: object
        details:
          type: object
        created_at:
          type: string
          format: date-time
  parameters:
    after:
      name: after
      in: query
      description: Return entities after the specified cursor for keyset pagination.
      schema:
        type: string
    perPage:
      name: per_page
      in: query
      description: Number of entities per page.
      schema:
        type: integer
        default: 50
        maximum: 200
    subscriptionId:
      name: subscription_id
      in: path
      required: true
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Authenticate with your Paddle API key passed in the Authorization header with the Bearer prefix, e.g. `Authorization: Bearer pdl_live_apikey_...`.'