Paddle

App · Payments & Billing · 20 actions

Manage your Paddle billing catalog end to end: build products and prices, create and update customers and their addresses, invoice them with transactions, and read, pause, resume or cancel the subscriptions billing them creates.

Actions

ActionWhat it does
Cancel subscriptionCancel a subscription.
Create customerCreate a customer.
Create customer addressAdd an address to a customer.
Create priceCreate a price for a product.
Create productCreate a product in the catalog.
Create transactionBill one price to a customer.
Get customerRead one customer: their name, email, locale and status.
Get productRead one product: its name, description, tax category, type and status.
Get subscriptionRead one subscription: its status, billing period, next charge date and items.
Get transactionRead one transaction: its status, items, billing details, invoice number once billed, and the subscription it created if its price recurs.
List customer addressesList the addresses saved on a customer.
List customersList customers.
List pricesList prices, or one product's prices when you give a product.
List productsList the products in the catalog.
List subscriptionsList subscriptions.
List transactionsList transactions (invoices and charges), newest first.
Pause subscriptionPause a subscription.
Resume subscriptionResume a paused subscription immediately.
Update customerChange a customer's name, email, locale or status.
Update productChange a product's name, description, tax category, type, image or status.

Cancel subscription

Cancel a subscription. This cannot be undone - Paddle does not allow reinstating a canceled subscription, only replacing it with a new one.

Inputs

Subscriptionsubscription_idtextRequired
The subscription's ID, from 'List subscriptions'.
Effective fromeffective_fromtext
When the cancellation takes effect. Defaults to the end of the current billing period.One of: next_billing_period (At the end of the current billing period), immediately.

Outputs

address_idtext
billing_cycleobject
business_idtext
canceled_attext
collection_modetext
created_attext
currency_codetext
current_billing_periodobject
custom_dataobject
customer_idtext
first_billed_attext
idtext
itemslist
next_billed_attext
paused_attext
scheduled_changeobject
started_attext
statustext
updated_attext
Example output
{
  "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "billing_cycle": {
    "frequency": 1,
    "interval": "month"
  },
  "business_id": null,
  "canceled_at": null,
  "collection_mode": "manual",
  "created_at": "2026-02-02T16:40:15.000Z",
  "currency_code": "USD",
  "current_billing_period": {
    "ends_at": "2026-03-02T16:40:15.000Z",
    "starts_at": "2026-02-02T16:40:15.000Z"
  },
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "first_billed_at": "2026-02-02T16:40:15.000Z",
  "id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
  "items": [
    {
      "next_billed_at": "2026-03-02T16:40:15.000Z",
      "price": {
        "billing_cycle": {
          "frequency": 1,
          "interval": "month"
        },
        "description": "Lodol QA monthly price",
        "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
        "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
        "unit_price": {
          "amount": "1000",
          "currency_code": "USD"
        }
      },
      "quantity": 1,
      "status": "active"
    }
  ],
  "next_billed_at": "2026-03-02T16:40:15.000Z",
  "paused_at": null,
  "scheduled_change": null,
  "started_at": "2026-02-02T16:40:15.000Z",
  "status": "canceled",
  "updated_at": "2026-02-02T16:40:15.000Z"
}

Create customer

Create a customer. Fill in 'Name' now if you plan to invoice them later with 'Create transaction' - Paddle requires it before a manually-collected transaction can be created.

Inputs

EmailemailtextRequired
The customer's email.
Namenametext
The customer's name.
Localelocaletext
An IETF locale tag such as 'en' or 'fr'. Defaults to 'en'.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

created_attext
custom_dataobject
emailtext
idtext
localetext
marketing_consenttrue/false
nametext
statustext
updated_attext
Example output
{
  "created_at": "2026-02-02T16:40:13.000Z",
  "custom_data": null,
  "email": "ada+lodolqa@example.com",
  "id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "locale": "en",
  "marketing_consent": false,
  "name": "Ada Lovelace",
  "status": "active",
  "updated_at": "2026-02-02T16:40:13.000Z"
}

Create customer address

Add an address to a customer. This is what Paddle uses to work out tax, and is needed before a transaction can be billed to them.

Inputs

Customercustomer_idtextRequired
The customer's ID, from 'List customers' or 'Create customer'.
Countrycountry_codetextRequired
A two-letter country code, such as US, GB or DE.
Descriptiondescriptiontext
What this address is for, such as 'HQ' or 'Billing'.
Address line 1first_linetext
Street address. Optional here, but required (along with city, region and postal code) before this address can be billed on a manual-collection transaction - Paddle invoicing the customer.
Address line 2second_linetext
Apartment, suite, etc.
Citycitytext
City or town. Optional here, but required (along with address line 1, region and postal code) before this address can be billed on a manual-collection transaction - Paddle invoicing the customer.
Postal codepostal_codetext
Required for some countries before a transaction can be billed, and always required (along with address line 1, city and region) before this address can be billed on a manual-collection transaction - Paddle invoicing the customer.
Regionregiontext
State or province. Optional here, but required (along with address line 1, city and postal code) before this address can be billed on a manual-collection transaction - Paddle invoicing the customer.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

citytext
country_codetext
created_attext
custom_dataobject
customer_idtext
descriptiontext
first_linetext
idtext
postal_codetext
regiontext
second_linetext
statustext
updated_attext
Example output
{
  "city": "Astoria",
  "country_code": "US",
  "created_at": "2026-02-02T16:40:14.000Z",
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "description": "HQ",
  "first_line": "3811 Ditmars Blvd",
  "id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "postal_code": "11105",
  "region": "NY",
  "second_line": null,
  "status": "active",
  "updated_at": "2026-02-02T16:40:14.000Z"
}

Create price

Create a price for a product. Leave the billing interval and frequency empty for a one-time price; set both for a recurring one - monthly is interval 'Month', frequency 1.

Inputs

Productproduct_idtextRequired
The product's ID, from 'List products' or 'Create product'.
DescriptiondescriptiontextRequired
An internal label for this price. Never shown to a customer.
AmountamountnumberRequired
The price, as whole minor units of the currency (cents for a two-decimal one) - 1000 is ten dollars in USD.At least 0.
Currencycurrency_codetextRequired
The currency this price is denominated in.One of: USD (US Dollar), EUR (Euro), GBP (British Pound), JPY (Japanese Yen), AUD (Australian Dollar), CAD (Canadian Dollar), CHF (Swiss Franc), HKD (Hong Kong Dollar), SGD (Singapore Dollar), SEK (Swedish Krona), and 23 more.
Namenametext
Shown to the customer at checkout. Leave empty to show nothing extra.
Billing intervalbilling_intervaltext
Leave empty for a one-time price.One of: day, week, month, year.
Billing frequencybilling_frequencynumber
How many intervals between charges. 1 with 'Month' is monthly.At least 1.
Minimum quantityquantity_minimumnumber
The fewest a customer can buy at once. Defaults to 1.At least 1.
Maximum quantityquantity_maximumnumber
The most a customer can buy at once. Defaults to 100.At least 1.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

billing_cycleobject
created_attext
custom_dataobject
descriptiontext
idtext
nametext
product_idtext
quantityobject
statustext
tax_modetext
trial_periodobject
typetext
unit_priceobject
updated_attext
Example output
{
  "billing_cycle": {
    "frequency": 1,
    "interval": "month"
  },
  "created_at": "2026-02-02T16:40:12.000Z",
  "custom_data": null,
  "description": "Lodol QA monthly price",
  "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
  "name": "Monthly",
  "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
  "quantity": {
    "maximum": 100,
    "minimum": 1
  },
  "status": "active",
  "tax_mode": "account_setting",
  "trial_period": null,
  "type": "standard",
  "unit_price": {
    "amount": "1000",
    "currency_code": "USD"
  },
  "updated_at": "2026-02-02T16:40:12.000Z"
}

Create product

Create a product in the catalog. A product has no price on its own - create a price for it next with 'Create price' before billing anyone for it.

Inputs

NamenametextRequired
The product's name.
Tax categorytax_categorytextRequired
What kind of thing this is, for tax purposes. 'Standard' and 'SaaS' work on every account; every other category needs approval from Paddle > Catalog > Taxable Categories first.One of: standard (Standard (available by default)), saas (SaaS (available by default)), digital-goods (Digital goods (needs approval)), ebooks (E-books (needs approval)), implementation-services (Implementation services (needs approval)), professional-services (Professional services (needs approval)), software-programming-services (Software programming services (needs approval)), training-services (Training services (needs approval)), website-hosting (Website hosting (needs approval)).
Descriptiondescriptiontext
An internal description. Never shown to a customer.
Typeproduct_typetext
Leave as 'Standard' unless this is a one-off, workflow-generated product.One of: standard (Standard - shown in the Paddle catalog), custom (Custom - a one-off, not shown in the catalog). Default: standard.
Image URLimage_urltext
An HTTPS image shown for this product at checkout.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

created_attext
custom_dataobject
descriptiontext
idtext
image_urltext
nametext
statustext
tax_categorytext
typetext
updated_attext
Example output
{
  "created_at": "2026-02-02T16:40:11.123Z",
  "custom_data": null,
  "description": "A scratch product created by the Lodol QA workflow.",
  "id": "pro_01h8xce4qyjr8ka1krs6knmjys",
  "image_url": null,
  "name": "Lodol QA plan",
  "status": "active",
  "tax_category": "saas",
  "type": "standard",
  "updated_at": "2026-02-02T16:40:11.123Z"
}

Create transaction

Bill one price to a customer. With a customer, address and 'Manual' collection given, set Status to 'Billed' to invoice it immediately - Paddle emails the customer and, if the price recurs, creates a subscription for them right away, with no checkout involved. Leave Customer empty to create a draft with no one billed yet.

Inputs

Priceprice_idtextRequired
The price's ID, from 'List prices' or 'Create price'.
Customercustomer_idtext
Only records for this customer. Leave empty for everyone.
Addressaddress_idtext
The customer's address ID, from 'List customer addresses'. Needed before a transaction can be billed (Paddle uses it to work out tax).
Quantityquantitynumber
How many of the price to bill. Defaults to 1.At least 1. Default: 1.
Collection modecollection_modetext
How Paddle gets paid. 'Manual' (Paddle invoices the customer) requires the address to have address line 1, city, region and postal code all set - 'Automatic' only needs the address's country.One of: automatic (Automatic - Paddle charges the customer's saved payment method), manual (Manual - Paddle issues an invoice for the customer to pay). Default: automatic.
Payment term intervalpayment_term_intervaltext
Required for 'Manual' collection: how long the customer has to pay.One of: day, week, month, year.
Payment term frequencypayment_term_frequencynumber
Required for 'Manual' collection, alongside the interval - 14 with 'Day' is net-14.At least 1.
Statusstatustext
Leave empty to let Paddle decide. Set to 'billed' to invoice immediately.One of: draft (Draft - missing items, a customer or an address), ready (Ready - complete, but not yet billed), billed (Billed - invoiced or charged), canceled.
Currencycurrency_codetext
Overrides the price's own currency. Leave empty to use it.One of: USD (US Dollar), EUR (Euro), GBP (British Pound), JPY (Japanese Yen), AUD (Australian Dollar), CAD (Canadian Dollar), CHF (Swiss Franc), HKD (Hong Kong Dollar), SGD (Singapore Dollar), SEK (Swedish Krona), and 23 more.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

address_idtext
billed_attext
billing_detailsobject
business_idtext
checkoutobject
collection_modetext
created_attext
currency_codetext
custom_dataobject
customer_idtext
discount_idtext
idtext
invoice_idtext
invoice_numbertext
itemslist
origintext
paymentslist
statustext
subscription_idtext
updated_attext
Example output
{
  "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "billed_at": "2026-02-02T16:40:15.000Z",
  "billing_details": {
    "additional_information": null,
    "enable_checkout": false,
    "payment_terms": {
      "frequency": 14,
      "interval": "day"
    },
    "purchase_order_number": null
  },
  "business_id": null,
  "checkout": null,
  "collection_mode": "manual",
  "created_at": "2026-02-02T16:40:15.000Z",
  "currency_code": "USD",
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "discount_id": null,
  "id": "txn_01h8xd4rq9z3f7c8h9k1m2n3p4",
  "invoice_id": "inv_01h8xd6t2b4x5y6z7a8b9c0d1f",
  "invoice_number": "INV-0001",
  "items": [
    {
      "price": {
        "billing_cycle": {
          "frequency": 1,
          "interval": "month"
        },
        "description": "Lodol QA monthly price",
        "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
        "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
        "unit_price": {
          "amount": "1000",
          "currency_code": "USD"
        }
      },
      "quantity": 1
    }
  ],
  "origin": "api",
  "payments": [],
  "status": "billed",
  "subscription_id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
  "updated_at": "2026-02-02T16:40:15.000Z"
}

Get customer

Read one customer: their name, email, locale and status.

Inputs

Customercustomer_idtextRequired
The customer's ID, from 'List customers' or 'Create customer'.

Outputs

created_attext
custom_dataobject
emailtext
idtext
localetext
marketing_consenttrue/false
nametext
statustext
updated_attext
Example output
{
  "created_at": "2026-02-02T16:40:13.000Z",
  "custom_data": null,
  "email": "ada+lodolqa@example.com",
  "id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "locale": "en",
  "marketing_consent": false,
  "name": "Ada Lovelace",
  "status": "active",
  "updated_at": "2026-02-02T16:40:13.000Z"
}

Get product

Read one product: its name, description, tax category, type and status.

Inputs

Productproduct_idtextRequired
The product's ID, from 'List products' or 'Create product'.

Outputs

created_attext
custom_dataobject
descriptiontext
idtext
image_urltext
nametext
statustext
tax_categorytext
typetext
updated_attext
Example output
{
  "created_at": "2026-02-02T16:40:11.123Z",
  "custom_data": null,
  "description": "A scratch product created by the Lodol QA workflow.",
  "id": "pro_01h8xce4qyjr8ka1krs6knmjys",
  "image_url": null,
  "name": "Lodol QA plan",
  "status": "active",
  "tax_category": "saas",
  "type": "standard",
  "updated_at": "2026-02-02T16:40:11.123Z"
}

Get subscription

Read one subscription: its status, billing period, next charge date and items.

Inputs

Subscriptionsubscription_idtextRequired
The subscription's ID, from 'List subscriptions'.

Outputs

address_idtext
billing_cycleobject
business_idtext
canceled_attext
collection_modetext
created_attext
currency_codetext
current_billing_periodobject
custom_dataobject
customer_idtext
first_billed_attext
idtext
itemslist
next_billed_attext
paused_attext
scheduled_changeobject
started_attext
statustext
updated_attext
Example output
{
  "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "billing_cycle": {
    "frequency": 1,
    "interval": "month"
  },
  "business_id": null,
  "canceled_at": null,
  "collection_mode": "manual",
  "created_at": "2026-02-02T16:40:15.000Z",
  "currency_code": "USD",
  "current_billing_period": {
    "ends_at": "2026-03-02T16:40:15.000Z",
    "starts_at": "2026-02-02T16:40:15.000Z"
  },
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "first_billed_at": "2026-02-02T16:40:15.000Z",
  "id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
  "items": [
    {
      "next_billed_at": "2026-03-02T16:40:15.000Z",
      "price": {
        "billing_cycle": {
          "frequency": 1,
          "interval": "month"
        },
        "description": "Lodol QA monthly price",
        "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
        "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
        "unit_price": {
          "amount": "1000",
          "currency_code": "USD"
        }
      },
      "quantity": 1,
      "status": "active"
    }
  ],
  "next_billed_at": "2026-03-02T16:40:15.000Z",
  "paused_at": null,
  "scheduled_change": null,
  "started_at": "2026-02-02T16:40:15.000Z",
  "status": "active",
  "updated_at": "2026-02-02T16:40:15.000Z"
}

Get transaction

Read one transaction: its status, items, billing details, invoice number once billed, and the subscription it created if its price recurs.

Inputs

Transactiontransaction_idtextRequired
The transaction's ID, from 'List transactions' or 'Create transaction'.

Outputs

address_idtext
billed_attext
billing_detailsobject
business_idtext
checkoutobject
collection_modetext
created_attext
currency_codetext
custom_dataobject
customer_idtext
discount_idtext
idtext
invoice_idtext
invoice_numbertext
itemslist
origintext
paymentslist
statustext
subscription_idtext
updated_attext
Example output
{
  "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "billed_at": "2026-02-02T16:40:15.000Z",
  "billing_details": {
    "additional_information": null,
    "enable_checkout": false,
    "payment_terms": {
      "frequency": 14,
      "interval": "day"
    },
    "purchase_order_number": null
  },
  "business_id": null,
  "checkout": null,
  "collection_mode": "manual",
  "created_at": "2026-02-02T16:40:15.000Z",
  "currency_code": "USD",
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "discount_id": null,
  "id": "txn_01h8xd4rq9z3f7c8h9k1m2n3p4",
  "invoice_id": "inv_01h8xd6t2b4x5y6z7a8b9c0d1f",
  "invoice_number": "INV-0001",
  "items": [
    {
      "price": {
        "billing_cycle": {
          "frequency": 1,
          "interval": "month"
        },
        "description": "Lodol QA monthly price",
        "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
        "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
        "unit_price": {
          "amount": "1000",
          "currency_code": "USD"
        }
      },
      "quantity": 1
    }
  ],
  "origin": "api",
  "payments": [],
  "status": "billed",
  "subscription_id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
  "updated_at": "2026-02-02T16:40:15.000Z"
}

List customer addresses

List the addresses saved on a customer.

Inputs

Customercustomer_idtextRequired
The customer's ID, from 'List customers' or 'Create customer'.
Statusstatustext
Only addresses with this status. Leave empty for both.One of: active, archived.
Afteraftertext
Read the page after this ID. Leave empty for the first page; use the 'next_after' this action returned to read the next one.
Results per pageper_pagenumber
How many to return. Defaults to 50, up to 200.From 1 to 200. Default: 50.

Outputs

The customer's addresses

countnumber
Records on this page
estimated_totalnumber
Paddle's estimate of the total matching records
has_moretrue/false
Whether Paddle has another page
itemslist
next_aftertext
The 'after' value to pass to read the next page
per_pagenumber
The page size used
Example output
{
  "count": 1,
  "estimated_total": 1,
  "has_more": false,
  "items": [
    {
      "city": "Astoria",
      "country_code": "US",
      "created_at": "2026-02-02T16:40:14.000Z",
      "custom_data": null,
      "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
      "description": "HQ",
      "first_line": "3811 Ditmars Blvd",
      "id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
      "postal_code": "11105",
      "region": "NY",
      "second_line": null,
      "status": "active",
      "updated_at": "2026-02-02T16:40:14.000Z"
    }
  ],
  "next_after": null,
  "per_page": 50
}

List customers

List customers. Search matches a customer's ID, name or email; leave every filter empty to list everyone.

Inputs

Emailemailtext
Only the customer(s) with this exact email.
Searchsearchtext
Match against a customer's ID, name or email.
Statusstatustext
Only customers with this status. Leave empty for both.One of: active, archived.
Afteraftertext
Read the page after this ID. Leave empty for the first page; use the 'next_after' this action returned to read the next one.
Results per pageper_pagenumber
How many to return. Defaults to 50, up to 200.From 1 to 200. Default: 50.

Outputs

The customers, newest first

countnumber
Records on this page
estimated_totalnumber
Paddle's estimate of the total matching records
has_moretrue/false
Whether Paddle has another page
itemslist
next_aftertext
The 'after' value to pass to read the next page
per_pagenumber
The page size used
Example output
{
  "count": 1,
  "estimated_total": 1,
  "has_more": false,
  "items": [
    {
      "created_at": "2026-02-02T16:40:13.000Z",
      "custom_data": null,
      "email": "ada+lodolqa@example.com",
      "id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
      "locale": "en",
      "marketing_consent": false,
      "name": "Ada Lovelace",
      "status": "active",
      "updated_at": "2026-02-02T16:40:13.000Z"
    }
  ],
  "next_after": null,
  "per_page": 50
}

List prices

List prices, or one product's prices when you give a product.

Inputs

Productproduct_idtext
Only prices for this product. Leave empty for every price.
Statusstatustext
Only prices with this status. Leave empty for both.One of: active, archived.
Afteraftertext
Read the page after this ID. Leave empty for the first page; use the 'next_after' this action returned to read the next one.
Results per pageper_pagenumber
How many to return. Defaults to 50, up to 200.From 1 to 200. Default: 50.

Outputs

The prices, newest first

countnumber
Records on this page
estimated_totalnumber
Paddle's estimate of the total matching records
has_moretrue/false
Whether Paddle has another page
itemslist
next_aftertext
The 'after' value to pass to read the next page
per_pagenumber
The page size used
Example output
{
  "count": 1,
  "estimated_total": 1,
  "has_more": false,
  "items": [
    {
      "billing_cycle": {
        "frequency": 1,
        "interval": "month"
      },
      "created_at": "2026-02-02T16:40:12.000Z",
      "custom_data": null,
      "description": "Lodol QA monthly price",
      "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
      "name": "Monthly",
      "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
      "quantity": {
        "maximum": 100,
        "minimum": 1
      },
      "status": "active",
      "tax_mode": "account_setting",
      "trial_period": null,
      "type": "standard",
      "unit_price": {
        "amount": "1000",
        "currency_code": "USD"
      },
      "updated_at": "2026-02-02T16:40:12.000Z"
    }
  ],
  "next_after": null,
  "per_page": 50
}

List products

List the products in the catalog. Each one reports its name, description, tax category, type and status. Narrow by status or tax category.

Inputs

Statusstatustext
Only products with this status. Leave empty for both.One of: active, archived.
Tax categorytax_categorytext
Only products in this tax category.One of: standard (Standard (available by default)), saas (SaaS (available by default)), digital-goods (Digital goods (needs approval)), ebooks (E-books (needs approval)), implementation-services (Implementation services (needs approval)), professional-services (Professional services (needs approval)), software-programming-services (Software programming services (needs approval)), training-services (Training services (needs approval)), website-hosting (Website hosting (needs approval)).
Afteraftertext
Read the page after this ID. Leave empty for the first page; use the 'next_after' this action returned to read the next one.
Results per pageper_pagenumber
How many to return. Defaults to 50, up to 200.From 1 to 200. Default: 50.

Outputs

The products, newest first

countnumber
Records on this page
estimated_totalnumber
Paddle's estimate of the total matching records
has_moretrue/false
Whether Paddle has another page
itemslist
next_aftertext
The 'after' value to pass to read the next page
per_pagenumber
The page size used
Example output
{
  "count": 1,
  "estimated_total": 1,
  "has_more": false,
  "items": [
    {
      "created_at": "2026-02-02T16:40:11.123Z",
      "custom_data": null,
      "description": "A scratch product created by the Lodol QA workflow.",
      "id": "pro_01h8xce4qyjr8ka1krs6knmjys",
      "image_url": null,
      "name": "Lodol QA plan",
      "status": "active",
      "tax_category": "saas",
      "type": "standard",
      "updated_at": "2026-02-02T16:40:11.123Z"
    }
  ],
  "next_after": null,
  "per_page": 50
}

List subscriptions

List subscriptions. Paddle has no action to create one directly - billing a manually-collected transaction whose price recurs (or a completed checkout) creates one automatically.

Inputs

Customercustomer_idtext
Only records for this customer. Leave empty for everyone.
Statusstatustext
Only subscriptions with this status.One of: active, canceled, past_due (Past due), paused, trialing.
Afteraftertext
Read the page after this ID. Leave empty for the first page; use the 'next_after' this action returned to read the next one.
Results per pageper_pagenumber
How many to return. Defaults to 50, up to 200.From 1 to 200. Default: 50.

Outputs

The subscriptions, newest first

countnumber
Records on this page
estimated_totalnumber
Paddle's estimate of the total matching records
has_moretrue/false
Whether Paddle has another page
itemslist
next_aftertext
The 'after' value to pass to read the next page
per_pagenumber
The page size used
Example output
{
  "count": 1,
  "estimated_total": 1,
  "has_more": false,
  "items": [
    {
      "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
      "billing_cycle": {
        "frequency": 1,
        "interval": "month"
      },
      "business_id": null,
      "canceled_at": null,
      "collection_mode": "manual",
      "created_at": "2026-02-02T16:40:15.000Z",
      "currency_code": "USD",
      "current_billing_period": {
        "ends_at": "2026-03-02T16:40:15.000Z",
        "starts_at": "2026-02-02T16:40:15.000Z"
      },
      "custom_data": null,
      "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
      "first_billed_at": "2026-02-02T16:40:15.000Z",
      "id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
      "items": [
        {
          "next_billed_at": "2026-03-02T16:40:15.000Z",
          "price": {
            "billing_cycle": {
              "frequency": 1,
              "interval": "month"
            },
            "description": "Lodol QA monthly price",
            "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
            "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
            "unit_price": {
              "amount": "1000",
              "currency_code": "USD"
            }
          },
          "quantity": 1,
          "status": "active"
        }
      ],
      "next_billed_at": "2026-03-02T16:40:15.000Z",
      "paused_at": null,
      "scheduled_change": null,
      "started_at": "2026-02-02T16:40:15.000Z",
      "status": "active",
      "updated_at": "2026-02-02T16:40:15.000Z"
    }
  ],
  "next_after": null,
  "per_page": 50
}

List transactions

List transactions (invoices and charges), newest first.

Inputs

Customercustomer_idtext
Only records for this customer. Leave empty for everyone.
Subscriptionsubscription_idtext
Only transactions billed by this subscription.
Statusstatustext
Only transactions with this status.One of: draft (Draft - missing items, a customer or an address), ready (Ready - complete, but not yet billed), billed (Billed - invoiced or charged), canceled.
Afteraftertext
Read the page after this ID. Leave empty for the first page; use the 'next_after' this action returned to read the next one.
Results per pageper_pagenumber
How many to return, up to 30 (Paddle's own ceiling for transactions).From 1 to 30. Default: 30.

Outputs

The transactions, newest first

countnumber
Records on this page
estimated_totalnumber
Paddle's estimate of the total matching records
has_moretrue/false
Whether Paddle has another page
itemslist
next_aftertext
The 'after' value to pass to read the next page
per_pagenumber
The page size used
Example output
{
  "count": 1,
  "estimated_total": 1,
  "has_more": false,
  "items": [
    {
      "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
      "billed_at": "2026-02-02T16:40:15.000Z",
      "billing_details": {
        "additional_information": null,
        "enable_checkout": false,
        "payment_terms": {
          "frequency": 14,
          "interval": "day"
        },
        "purchase_order_number": null
      },
      "business_id": null,
      "checkout": null,
      "collection_mode": "manual",
      "created_at": "2026-02-02T16:40:15.000Z",
      "currency_code": "USD",
      "custom_data": null,
      "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
      "discount_id": null,
      "id": "txn_01h8xd4rq9z3f7c8h9k1m2n3p4",
      "invoice_id": "inv_01h8xd6t2b4x5y6z7a8b9c0d1f",
      "invoice_number": "INV-0001",
      "items": [
        {
          "price": {
            "billing_cycle": {
              "frequency": 1,
              "interval": "month"
            },
            "description": "Lodol QA monthly price",
            "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
            "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
            "unit_price": {
              "amount": "1000",
              "currency_code": "USD"
            }
          },
          "quantity": 1
        }
      ],
      "origin": "api",
      "payments": [],
      "status": "billed",
      "subscription_id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
      "updated_at": "2026-02-02T16:40:15.000Z"
    }
  ],
  "next_after": null,
  "per_page": 50
}

Pause subscription

Pause a subscription. Billing stops; resume it later with 'Resume subscription'.

Inputs

Subscriptionsubscription_idtextRequired
The subscription's ID, from 'List subscriptions'.
Effective fromeffective_fromtext
When the pause takes effect. Defaults to the end of the current billing period.One of: next_billing_period (At the end of the current billing period), immediately.

Outputs

address_idtext
billing_cycleobject
business_idtext
canceled_attext
collection_modetext
created_attext
currency_codetext
current_billing_periodobject
custom_dataobject
customer_idtext
first_billed_attext
idtext
itemslist
next_billed_attext
paused_attext
scheduled_changeobject
started_attext
statustext
updated_attext
Example output
{
  "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "billing_cycle": {
    "frequency": 1,
    "interval": "month"
  },
  "business_id": null,
  "canceled_at": null,
  "collection_mode": "manual",
  "created_at": "2026-02-02T16:40:15.000Z",
  "currency_code": "USD",
  "current_billing_period": {
    "ends_at": "2026-03-02T16:40:15.000Z",
    "starts_at": "2026-02-02T16:40:15.000Z"
  },
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "first_billed_at": "2026-02-02T16:40:15.000Z",
  "id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
  "items": [
    {
      "next_billed_at": "2026-03-02T16:40:15.000Z",
      "price": {
        "billing_cycle": {
          "frequency": 1,
          "interval": "month"
        },
        "description": "Lodol QA monthly price",
        "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
        "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
        "unit_price": {
          "amount": "1000",
          "currency_code": "USD"
        }
      },
      "quantity": 1,
      "status": "active"
    }
  ],
  "next_billed_at": "2026-03-02T16:40:15.000Z",
  "paused_at": null,
  "scheduled_change": null,
  "started_at": "2026-02-02T16:40:15.000Z",
  "status": "paused",
  "updated_at": "2026-02-02T16:40:15.000Z"
}

Resume subscription

Resume a paused subscription immediately.

Inputs

Subscriptionsubscription_idtextRequired
The subscription's ID, from 'List subscriptions'.

Outputs

address_idtext
billing_cycleobject
business_idtext
canceled_attext
collection_modetext
created_attext
currency_codetext
current_billing_periodobject
custom_dataobject
customer_idtext
first_billed_attext
idtext
itemslist
next_billed_attext
paused_attext
scheduled_changeobject
started_attext
statustext
updated_attext
Example output
{
  "address_id": "add_01h8xd1n8v0j3g2n7bqf6q3z9y",
  "billing_cycle": {
    "frequency": 1,
    "interval": "month"
  },
  "business_id": null,
  "canceled_at": null,
  "collection_mode": "manual",
  "created_at": "2026-02-02T16:40:15.000Z",
  "currency_code": "USD",
  "current_billing_period": {
    "ends_at": "2026-03-02T16:40:15.000Z",
    "starts_at": "2026-02-02T16:40:15.000Z"
  },
  "custom_data": null,
  "customer_id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "first_billed_at": "2026-02-02T16:40:15.000Z",
  "id": "sub_01h8xd6t2b4x5y6z7a8b9c0d1e",
  "items": [
    {
      "next_billed_at": "2026-03-02T16:40:15.000Z",
      "price": {
        "billing_cycle": {
          "frequency": 1,
          "interval": "month"
        },
        "description": "Lodol QA monthly price",
        "id": "pri_01h8xcmy7v3ktcq4f7v5v9w3ke",
        "product_id": "pro_01h8xce4qyjr8ka1krs6knmjys",
        "unit_price": {
          "amount": "1000",
          "currency_code": "USD"
        }
      },
      "quantity": 1,
      "status": "active"
    }
  ],
  "next_billed_at": "2026-03-02T16:40:15.000Z",
  "paused_at": null,
  "scheduled_change": null,
  "started_at": "2026-02-02T16:40:15.000Z",
  "status": "active",
  "updated_at": "2026-02-02T16:40:15.000Z"
}

Update customer

Change a customer's name, email, locale or status. Only the fields you fill in are sent. Setting status to 'Archived' is Paddle's only way to remove a customer - their past transactions and subscriptions are kept.

Inputs

Customercustomer_idtextRequired
The customer's ID, from 'List customers' or 'Create customer'.
Namenametext
A new name.
Emailemailtext
A new email.
Localelocaletext
A new locale tag.
Statusstatustext
Archive or reactivate this customer.One of: active, archived.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

created_attext
custom_dataobject
emailtext
idtext
localetext
marketing_consenttrue/false
nametext
statustext
updated_attext
Example output
{
  "created_at": "2026-02-02T16:40:13.000Z",
  "custom_data": null,
  "email": "ada+lodolqa@example.com",
  "id": "ctm_01h8xcyq5y3z1e3x9y4nq6z0dw",
  "locale": "en",
  "marketing_consent": false,
  "name": "Ada Lovelace",
  "status": "active",
  "updated_at": "2026-02-02T16:40:13.000Z"
}

Update product

Change a product's name, description, tax category, type, image or status. Only the fields you fill in are sent. Setting status to 'Archived' is Paddle's only way to remove a product - there is no delete operation.

Inputs

Productproduct_idtextRequired
The product's ID, from 'List products' or 'Create product'.
Namenametext
A new name.
Descriptiondescriptiontext
A new internal description.
Tax categorytax_categorytext
A new tax category.One of: standard (Standard (available by default)), saas (SaaS (available by default)), digital-goods (Digital goods (needs approval)), ebooks (E-books (needs approval)), implementation-services (Implementation services (needs approval)), professional-services (Professional services (needs approval)), software-programming-services (Software programming services (needs approval)), training-services (Training services (needs approval)), website-hosting (Website hosting (needs approval)).
Typeproduct_typetext
A new type.One of: standard (Standard - shown in the Paddle catalog), custom (Custom - a one-off, not shown in the catalog).
Image URLimage_urltext
A new HTTPS image URL.
Statusstatustext
Archive or reactivate this product.One of: active, archived.
Custom datacustom_dataobject
Arbitrary JSON to attach, such as {"internal_id": "123"}. Leave empty for none.

Outputs

created_attext
custom_dataobject
descriptiontext
idtext
image_urltext
nametext
statustext
tax_categorytext
typetext
updated_attext
Example output
{
  "created_at": "2026-02-02T16:40:11.123Z",
  "custom_data": null,
  "description": "A scratch product created by the Lodol QA workflow.",
  "id": "pro_01h8xce4qyjr8ka1krs6knmjys",
  "image_url": null,
  "name": "Lodol QA plan",
  "status": "active",
  "tax_category": "saas",
  "type": "standard",
  "updated_at": "2026-02-02T16:40:11.123Z"
}

On this page